From 5edb22d7d78018ad55e84520dbee9e9b0f558ceb Mon Sep 17 00:00:00 2001 From: Daniel van Vugt Date: Tue, 3 Oct 2023 17:39:49 +0800 Subject: [PATCH] renderer/native: Flag when explicit sync between GPUs is required Part-of: --- src/backends/native/meta-renderer-native-private.h | 1 + src/backends/native/meta-renderer-native.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/backends/native/meta-renderer-native-private.h b/src/backends/native/meta-renderer-native-private.h index 997fe6f69..2d3fe1971 100644 --- a/src/backends/native/meta-renderer-native-private.h +++ b/src/backends/native/meta-renderer-native-private.h @@ -60,6 +60,7 @@ typedef struct _MetaRendererNativeGpuData struct { MetaSharedFramebufferCopyMode copy_mode; gboolean has_EGL_EXT_image_dma_buf_import_modifiers; + gboolean needs_explicit_sync; /* For GPU blit mode */ EGLContext egl_context; diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c index 5ffbafb58..e150ba260 100644 --- a/src/backends/native/meta-renderer-native.c +++ b/src/backends/native/meta-renderer-native.c @@ -1806,6 +1806,7 @@ init_secondary_gpu_data_gpu (MetaRendererNativeGpuData *renderer_gpu_data, CoglContext *cogl_context; CoglDisplay *cogl_display; const char **missing_gl_extensions; + const char *egl_vendor; egl_display = meta_render_device_get_egl_display (render_device); if (egl_display == EGL_NO_DISPLAY) @@ -1872,6 +1873,11 @@ init_secondary_gpu_data_gpu (MetaRendererNativeGpuData *renderer_gpu_data, meta_egl_has_extensions (egl, egl_display, NULL, "EGL_EXT_image_dma_buf_import_modifiers", NULL); + + egl_vendor = meta_egl_query_string (egl, egl_display, EGL_VENDOR); + if (!g_strcmp0 (egl_vendor, "NVIDIA")) + renderer_gpu_data->secondary.needs_explicit_sync = TRUE; + ret = TRUE; out: maybe_restore_cogl_egl_api (renderer_native);