onscreen/native: Finish primary GPU rendering before copying to secondary
As mentioned in the OES_EGL_image_external spec, there is no implicit sync between the EGLImage producer and consumer. And in this code path we don't have meta_drm_buffer_gbm_new_lock_front on the primary GPU to do it for us either. So synchronization has to be done manually or else the secondary GPU is likely to get an unfinished image. This problem has only been observed when the secondary GPU is using the Nvidia proprietary driver. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3304>
This commit is contained in:
parent
5edb22d7d7
commit
af98776224
@ -840,6 +840,9 @@ copy_shared_framebuffer_gpu (CoglOnscreen *onscreen,
|
||||
COGL_TRACE_BEGIN_SCOPED (CopySharedFramebufferSecondaryGpu,
|
||||
"copy_shared_framebuffer_gpu()");
|
||||
|
||||
if (renderer_gpu_data->secondary.needs_explicit_sync)
|
||||
cogl_framebuffer_finish (COGL_FRAMEBUFFER (onscreen));
|
||||
|
||||
render_device = renderer_gpu_data->render_device;
|
||||
egl_display = meta_render_device_get_egl_display (render_device);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user