Nvidia secondary GPU copy acceleration
This fixes three issues that were preventing GPU copies on the Nvidia proprietary driver:
-
gbm_surface_create
fails withENOSYS
(Function not implemented
) unless you remove all flags. - Missing call to
glViewport
inmeta-renderer-native-gles3.c
. - Checking for
GL_OES_EGL_image_external
but then usingGL_OES_EGL_image
semantics which Nvidia does not support.
Measurements from !3314:
Driver | Before | After |
---|---|---|
nvidia-drm | 32.5 FPS, 23 ms | 65.0 FPS, 11 ms |
nouveau | 65.0 FPS, 9 ms | 65.0 FPS, 9 ms |
amdgpu [1] | 60.0 FPS, 10 ms | 60.0 FPS, 10 ms |
amdgpu [2] | 30.0 FPS | 30.0 FPS |
- nvidia-drm and nouveau are the same NVIDIA GTX 1650 card plugged into 2.5K 130 Hz. Hence the decimation to 65 FPS and 32.5 FPS.
- amdgpu is a Radeon PRO WX 2100 card plugged into 4K 60 Hz.
- amdgpu [1] is
CLUTTER_SHOW_FPS=1 COGL_DEBUG=sync-frame
which seems to be a workaround for #3070 (closed). - amdgpu [2] is
CLUTTER_SHOW_FPS=1
and slower presumably due to #3070 (closed).
Closes: gnome-shell#6221 (closed), #2247 (closed), #2551 (closed), https://launchpad.net/bugs/1970291
Mutter 46 requires a fix for #3235 (closed) before this works. Mutter 45 has no such problem.
Edited by Daniel van Vugt