From 41bfabad96ee7c829ed17b585a752f3e676f6ab4 Mon Sep 17 00:00:00 2001 From: Daniel van Vugt Date: Fri, 18 Mar 2022 18:23:29 +0800 Subject: [PATCH] onscreen/native: Don't try rendering on a secondary GPU without EGL We rather confusingly still call a secondary display card that is GPU-less (DisplayLink or other basic KMS device) a "secondary GPU", so just because secondary_gpu_state is non-NULL doesn't mean we can use it for rendering. The clearest indication of this is when there is no EGL surface. Part-of: --- src/backends/native/meta-onscreen-native.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c index 3eb550319..f2c2090dd 100644 --- a/src/backends/native/meta-onscreen-native.c +++ b/src/backends/native/meta-onscreen-native.c @@ -757,6 +757,10 @@ copy_shared_framebuffer_primary_gpu (CoglOnscreen *onscre COGL_TRACE_BEGIN_SCOPED (CopySharedFramebufferPrimaryGpu, "FB Copy (primary GPU)"); + if (!secondary_gpu_state || + secondary_gpu_state->egl_surface == EGL_NO_SURFACE) + return FALSE; + primary_gpu = meta_renderer_native_get_primary_gpu (renderer_native); primary_gpu_data = meta_renderer_native_get_gpu_data (renderer_native, primary_gpu);