renderer/native: Flag when explicit sync between GPUs is required

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3304>
This commit is contained in:
Daniel van Vugt 2023-10-03 17:39:49 +08:00 committed by Marge Bot
parent 8c6aabb9ca
commit 5edb22d7d7
2 changed files with 7 additions and 0 deletions

View File

@ -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;

View File

@ -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);