mutter/src/backends/native
Piotr Łopatka 33529426a9 backend: Copy damage rectangles to secondary GPU when available
Systems with AMD GPUs do not take advantage of Mutter's zero-copy path
when driving DisplayLink screens. This is due to a very slow CPU access
to the zero-copy texture. Instead they fall back on primary GPU doing a
copy of the texture for fast CPU access. This commit accelerates texture
copy by working through damage regions only.

Tests on a 4K screen with windowed applications show significant
reduction of GPU utilisation.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2033>
2021-11-17 08:24:15 +00:00
..
dbus-utils.c Clean up include macros mess 2018-11-06 17:17:36 +01:00
dbus-utils.h launcher: Replace mutter-launch with logind integration 2014-05-19 15:09:23 -04:00
gen-default-modes.py Fix incorrect 'is' in gen_default_modes 2020-02-10 20:35:05 +01:00
meta-backend-native-private.h native: Add device pool for tracking device file descriptors 2021-07-07 21:03:25 +02:00
meta-backend-native-types.h render-device: Add API to allocate DMA buffers 2021-10-18 17:34:31 +02:00
meta-backend-native.c backends/native: Use rtkit to get realtime priority 2021-10-22 08:35:15 +00:00
meta-backend-native.h tests: Add headless native backend test 2021-03-12 15:09:45 +00:00
meta-barrier-native.c src: Stop using GSlice 2021-02-22 13:52:27 +01:00
meta-barrier-native.h backends/native: Add a bunch of "_in_impl" suffixes to functions 2020-11-27 15:14:34 +00:00
meta-clutter-backend-native.c clutter/backend/native: Keep a pointer to the actual backend 2021-10-18 14:36:15 +00:00
meta-clutter-backend-native.h clutter/backend/native: Keep a pointer to the actual backend 2021-10-18 14:36:15 +00:00
meta-cogl-utils.c native/cogl-utils: Fix license header 2021-01-28 20:33:01 +00:00
meta-cogl-utils.h native/cogl-utils: Minor macro cleanup 2021-01-28 20:33:01 +00:00
meta-crtc-kms.c onscreen/native: Pass damage rectangles when page flipping 2021-09-03 21:37:56 +01:00
meta-crtc-kms.h onscreen/native: Pass damage rectangles when page flipping 2021-09-03 21:37:56 +01:00
meta-crtc-mode-kms.c crtc-mode-info: Add vblank duration field 2021-07-13 08:09:42 +00:00
meta-crtc-mode-kms.h crtc-mode-kms: Wrap MetaKmsMode instead of drmModeModeInfo 2021-01-22 16:47:08 +00:00
meta-crtc-mode-virtual.c Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-crtc-mode-virtual.h Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-crtc-native.c crtc/kms: Make the 'transform-handled' API pass through MetaCrtcNative 2021-03-12 15:09:45 +00:00
meta-crtc-native.h crtc/kms: Make the 'transform-handled' API pass through MetaCrtcNative 2021-03-12 15:09:45 +00:00
meta-crtc-virtual.c Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-crtc-virtual.h Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-cursor-renderer-native.c drm-buffer: Replace 'use-modifier' boolean with flags 2021-10-18 17:33:33 +02:00
meta-cursor-renderer-native.h cursor-renderer/native: Update HW state during frames 2021-01-22 16:47:08 +00:00
meta-device-pool-private.h native: Add device pool for tracking device file descriptors 2021-07-07 21:03:25 +02:00
meta-device-pool.c device-pool: Add debug logging 2021-07-16 18:17:04 +02:00
meta-device-pool.h native: Release output device files that are unused 2021-07-07 21:10:30 +02:00
meta-drm-buffer-dumb.c drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-drm-buffer-dumb.h drm-buffer: Create from MetaDeviceFile instead of MetaKmsDevice 2021-07-07 21:03:26 +02:00
meta-drm-buffer-gbm.c drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-drm-buffer-gbm.h drm-buffer: Replace 'use-modifier' boolean with flags 2021-10-18 17:33:33 +02:00
meta-drm-buffer-import.c drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-drm-buffer-import.h drm-buffer: Create from MetaDeviceFile instead of MetaKmsDevice 2021-07-07 21:03:26 +02:00
meta-drm-buffer-private.h drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-drm-buffer.c drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-drm-buffer.h drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-gpu-kms.c kms: Remove now unused API to get file descriptor 2021-07-07 21:03:26 +02:00
meta-gpu-kms.h kms: Only emit resources-changed signal if we recorded a change 2021-09-20 15:37:59 +00:00
meta-input-device-native.c backends/native: Fix logic error 2021-07-07 18:37:54 +02:00
meta-input-device-native.h backends/native: Dispose the libinput device in the input thread 2020-12-16 17:09:58 +01:00
meta-input-device-tool-native.c backends/native: Add distinct meta-input-thread.h header 2020-11-27 15:14:34 +00:00
meta-input-device-tool-native.h backends/native: Add distinct meta-input-thread.h header 2020-11-27 15:14:34 +00:00
meta-input-settings-native.c backends: Drop MetaInputSettings::seat property 2021-05-05 19:07:26 +00:00
meta-input-settings-native.h backends/native: Add distinct meta-input-thread.h header 2020-11-27 15:14:34 +00:00
meta-input-thread.h backends/native: Add distinct meta-input-thread.h header 2020-11-27 15:14:34 +00:00
meta-keymap-native.c clutter/keymap: Make caps and num lock state properties 2021-03-04 17:39:08 +00:00
meta-keymap-native.h clutter/keymap: Make caps and num lock state properties 2021-03-04 17:39:08 +00:00
meta-kms-connector-private.h kms: Only emit resources-changed signal if we recorded a change 2021-09-20 15:37:59 +00:00
meta-kms-connector.c kms/connector: Use utility function to get the property ID 2021-09-20 15:37:59 +00:00
meta-kms-connector.h kms/connector: Don't use MetaConnectorType for connector type 2021-03-12 15:09:45 +00:00
meta-kms-crtc-private.h kms: Only emit resources-changed signal if we recorded a change 2021-09-20 15:37:59 +00:00
meta-kms-crtc.c kms: Only emit resources-changed signal if we recorded a change 2021-09-20 15:37:59 +00:00
meta-kms-crtc.h kms/crtc: Make MetaKmsCrtcGamma reusable 2021-01-22 16:47:08 +00:00
meta-kms-device-private.h kms/impl-device: Only update crtc/connector whose ID has changed 2021-09-20 15:37:59 +00:00
meta-kms-device.c kms/impl-device: Only update crtc/connector whose ID has changed 2021-09-20 15:37:59 +00:00
meta-kms-device.h kms: Remove now unused API to get file descriptor 2021-07-07 21:03:26 +02:00
meta-kms-impl-device-atomic.c drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-kms-impl-device-atomic.h kms: Add atomic MetaKmsImplDevice backend 2021-01-22 16:47:08 +00:00
meta-kms-impl-device-dummy.c kms: Have the device impl open device files themself 2021-07-07 21:03:25 +02:00
meta-kms-impl-device-dummy.h kms: Add way to run without mode setting 2021-03-12 15:09:45 +00:00
meta-kms-impl-device-simple.c drm-buffer: Don't always generate fb_id on construction 2021-10-18 17:33:33 +02:00
meta-kms-impl-device-simple.h kms: Move impl backend inherit MetaKmsImplDevice instead of MetaKmsImpl 2021-01-22 16:47:08 +00:00
meta-kms-impl-device.c kms/impl-device: Only update crtc/connector whose ID has changed 2021-09-20 15:37:59 +00:00
meta-kms-impl-device.h kms/impl-device: Only update crtc/connector whose ID has changed 2021-09-20 15:37:59 +00:00
meta-kms-impl.c native: Release output device files that are unused 2021-07-07 21:10:30 +02:00
meta-kms-impl.h native: Release output device files that are unused 2021-07-07 21:10:30 +02:00
meta-kms-mode-private.h kms/mode: Recreate blob id each mode set 2021-07-07 21:03:25 +02:00
meta-kms-mode.c kms: Only emit resources-changed signal if we recorded a change 2021-09-20 15:37:59 +00:00
meta-kms-mode.h kms: Only emit resources-changed signal if we recorded a change 2021-09-20 15:37:59 +00:00
meta-kms-page-flip-private.h kms/page-flip: Pass ownership of listener user data along with closure 2021-01-22 16:47:08 +00:00
meta-kms-page-flip.c kms: Gracefully handle page flipping direct scanouts failing 2021-07-02 13:29:54 +00:00
meta-kms-plane-private.h kms: Allow passing framebuffer damage metadata 2021-09-03 21:10:35 +01:00
meta-kms-plane.c kms: Allow passing framebuffer damage metadata 2021-09-03 21:10:35 +01:00
meta-kms-plane.h kms-impl-simple: Add fake cursor planes if no real ones 2020-03-07 21:40:50 +00:00
meta-kms-private.h backends/native: Remove unused meta_gpu_kms_wait_for_flip and more 2020-08-04 08:57:06 +00:00
meta-kms-types.h kms: Return a more specific change if there are no devices 2021-09-20 15:37:59 +00:00
meta-kms-update-private.h kms: Allow passing framebuffer damage metadata 2021-09-03 21:10:35 +01:00
meta-kms-update.c kms: Allow passing framebuffer damage metadata 2021-09-03 21:10:35 +01:00
meta-kms-update.h kms: Allow passing framebuffer damage metadata 2021-09-03 21:10:35 +01:00
meta-kms-utils.c backends/native: Add meta_calculate_drm_mode_vblank_duration_us() 2021-07-13 08:09:42 +00:00
meta-kms-utils.h backends/native: Add meta_calculate_drm_mode_vblank_duration_us() 2021-07-13 08:09:42 +00:00
meta-kms.c backends/kms: Always perform full changes on KMS resume 2021-09-20 15:37:59 +00:00
meta-kms.h native: Release output device files that are unused 2021-07-07 21:10:30 +02:00
meta-launcher.c backends/native: Remove unused includes 2021-09-20 15:37:59 +00:00
meta-launcher.h launcher: Remove open/close restricted file API 2021-07-13 12:19:14 +00:00
meta-monitor-manager-native.c backends/native: Remove unused includes 2021-09-20 15:37:59 +00:00
meta-monitor-manager-native.h native: Rename MetaMonitorManagerKms to MetaMonitorManagerNative 2021-03-12 15:09:45 +00:00
meta-onscreen-native.c backend: Copy damage rectangles to secondary GPU when available 2021-11-17 08:24:15 +00:00
meta-onscreen-native.h onscreen/native: Move function declaration to the correct header file 2021-02-09 08:27:11 +00:00
meta-output-kms.c output/kms: Add back common modes on non-single mode outputs 2021-04-27 16:12:18 +00:00
meta-output-kms.h output/kms: Make EDID be read via MetaOutputNative object 2021-03-12 15:09:45 +00:00
meta-output-native.c output/kms: Make EDID be read via MetaOutputNative object 2021-03-12 15:09:45 +00:00
meta-output-native.h output/kms: Make EDID be read via MetaOutputNative object 2021-03-12 15:09:45 +00:00
meta-output-virtual.c Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-output-virtual.h Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-pointer-constraint-native.c clutter: Drop clutter_input_device_get_coords() method 2020-11-27 15:14:33 +00:00
meta-pointer-constraint-native.h backends: Delegate pointer confinements to an impl object 2020-11-27 15:14:33 +00:00
meta-render-device-egl-stream.c Introduce MetaRenderDevice{Gbm,EglStream,Surfaceless} 2021-10-18 17:33:32 +02:00
meta-render-device-egl-stream.h Introduce MetaRenderDevice{Gbm,EglStream,Surfaceless} 2021-10-18 17:33:32 +02:00
meta-render-device-gbm.c render-device: Add API to import other buffers 2021-10-18 17:35:26 +02:00
meta-render-device-gbm.h render-device/gbm: Add getter for gbm_device 2021-10-18 17:33:33 +02:00
meta-render-device-private.h render-device: Add API to import other buffers 2021-10-18 17:35:26 +02:00
meta-render-device-surfaceless.c Introduce MetaRenderDevice{Gbm,EglStream,Surfaceless} 2021-10-18 17:33:32 +02:00
meta-render-device-surfaceless.h Introduce MetaRenderDevice{Gbm,EglStream,Surfaceless} 2021-10-18 17:33:32 +02:00
meta-render-device.c render-device: Add API to allocate dumb buffers 2021-10-18 17:36:17 +02:00
meta-render-device.h render-device: Add API to allocate dumb buffers 2021-10-18 17:36:17 +02:00
meta-renderer-native-gles3.c *: Fix spelling mistakes found by codespell 2020-08-29 09:10:31 +00:00
meta-renderer-native-gles3.h renderer/native: remove meta_renderer_native_gles3_read_pixels 2018-11-19 22:53:13 +00:00
meta-renderer-native-private.h renderer/native: Use MetaRenderDevice 2021-10-18 17:36:18 +02:00
meta-renderer-native.c wayland: Only init EGLStream controller if we didn't end up with gbm 2021-10-20 13:08:06 +00:00
meta-renderer-native.h wayland: Only init EGLStream controller if we didn't end up with gbm 2021-10-20 13:08:06 +00:00
meta-seat-impl.c backends/native: Remove unused array definition 2021-07-16 19:08:06 +02:00
meta-seat-impl.h launcher: Remove now unused file management API 2021-07-07 21:03:25 +02:00
meta-seat-native.c seat-impl: Open/close files via device pool 2021-07-07 21:03:25 +02:00
meta-seat-native.h backends/native: Remove unused includes 2021-09-20 15:37:59 +00:00
meta-stage-native.c backends: Rename ClutterStage[View]Cogl API and types 2021-07-16 19:08:06 +02:00
meta-stage-native.h backends: Rename ClutterStage[View]Cogl API and types 2021-07-16 19:08:06 +02:00
meta-udev.c backends/native: Ignore udev events while we're paused 2021-09-20 15:37:59 +00:00
meta-udev.h backends/native: Ignore udev events while we're paused 2021-09-20 15:37:59 +00:00
meta-virtual-input-device-native.c virtual-input-device/native: Verify device cleanup in impl_state_free() 2021-02-23 10:05:32 +00:00
meta-virtual-input-device-native.h clutter: Move evdev input to src/backends/native 2019-08-24 08:59:08 +00:00
meta-virtual-monitor-native.c Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-virtual-monitor-native.h Introduce virtual monitors 2021-03-12 15:09:45 +00:00
meta-xkb-utils.c backends/native: Update keyboard a11y status in seat impl 2020-11-27 15:14:34 +00:00
meta-xkb-utils.h backends/native: Update keyboard a11y status in seat impl 2020-11-27 15:14:34 +00:00