mutter/src/backends/native
Jonas Ådahl c9259c2b15 renderer-native: Add hybrid GPU system support
A hybrid GPU system is a system where more than one GPU is connected to
connectors. A common configuration is having a integrated GPU (iGPU)
connected to a laptop panel, and a dedicated GPU (dGPU) connected to
one or more external connector (such as HDMI).

This commit adds support for rendering the compositor stage using the
iGPU, then copying the framebuffer content onto a secondary framebuffer
that will be page flipped on the CRTC of the dGPU.

This can work in two different ways: GPU accelerated using Open GL ES
3, or CPU unaccelerated.

When supported, GPU accelerated copying works by exporting the iGPU
onscreen framebuffer as a DMA-BUF, importing it as a texture on a
separate dGPU EGL context, then using glBlitFramebuffer(), blitting it
onto a framebuffer on the dGPU that can then be page flipped on the dGPU
CRTC.

When GPU acceleration is not available, copying works by creating two
dumb buffers, and each frame glReadPixels() from the iGPU EGL render
context directly into the dumb buffer. The dumb buffer is then page
flipped on the dGPU CRTC.

https://bugzilla.gnome.org/show_bug.cgi?id=785381
2017-10-06 13:18:12 -04:00
..
dbus-utils.c
dbus-utils.h
gen-default-modes.py backends/native: Move output code to its own file 2017-10-05 16:18:43 -04:00
meta-backend-native-private.h backends/native: Implement support for pointer barriers 2015-01-19 02:27:59 -08:00
meta-backend-native.c backends/native: Stop supporting stage views being disabled 2017-10-05 18:08:09 -04:00
meta-backend-native.h backends/native: Move KMS fd management to monitor manager 2017-10-05 16:18:43 -04:00
meta-barrier-native.c Move out generic math parts out of the native barrier implementation 2016-02-16 19:02:48 +08:00
meta-barrier-native.h backends/native: Implement support for pointer barriers 2015-01-19 02:27:59 -08:00
meta-clutter-backend-native.c Introduce regional stage rendering 2016-07-20 14:23:48 +08:00
meta-clutter-backend-native.h Introduce regional stage rendering 2016-07-20 14:23:48 +08:00
meta-crtc-kms.c crtc-kms: Don't set normal transform when no transforms are supported 2017-10-05 18:08:09 -04:00
meta-crtc-kms.h backends: Split out CRTC/output management to MetaGpu 2017-10-05 18:05:20 -04:00
meta-cursor-renderer-native.c cursor-rendere-native: Don't declare HW cursors broken on EACCES 2017-10-05 18:08:09 -04:00
meta-cursor-renderer-native.h native/cursor-renderer: Cleanup construction 2017-10-05 16:18:43 -04:00
meta-default-modes.h backends/native: Move output code to its own file 2017-10-05 16:18:43 -04:00
meta-gpu-kms.c gpu-kms: Pass GPU on page flip callbacks 2017-10-05 18:17:26 -04:00
meta-gpu-kms.h gpu-kms: poll() on KMS fd on EAGAIN 2017-10-05 18:08:09 -04:00
meta-idle-monitor-native.c MetaIdleMonitorNative: initialize last event timestamp 2016-10-17 13:47:20 +02:00
meta-idle-monitor-native.h
meta-input-settings-native.c Add tag-and-drag setting from libinput into mutter 2017-08-20 09:27:28 +08:00
meta-input-settings-native.h backends/native: Add libinput-based MetaInputSettings implementation 2015-01-18 13:32:28 -08:00
meta-launcher.c backends/native: Move KMS fd management to monitor manager 2017-10-05 16:18:43 -04:00
meta-launcher.h backends/native: Move KMS fd management to monitor manager 2017-10-05 16:18:43 -04:00
meta-monitor-manager-kms.c monitor-manager-kms: Add all GPUs with connectors 2017-10-05 18:17:26 -04:00
meta-monitor-manager-kms.h backends: Split out CRTC/output management to MetaGpu 2017-10-05 18:05:20 -04:00
meta-output-kms.c backends: Split out CRTC/output management to MetaGpu 2017-10-05 18:05:20 -04:00
meta-output-kms.h backends: Split out CRTC/output management to MetaGpu 2017-10-05 18:05:20 -04:00
meta-renderer-native-gles3.c renderer-native: Add hybrid GPU system support 2017-10-06 13:18:12 -04:00
meta-renderer-native-gles3.h renderer-native: Add hybrid GPU system support 2017-10-06 13:18:12 -04:00
meta-renderer-native.c renderer-native: Add hybrid GPU system support 2017-10-06 13:18:12 -04:00
meta-renderer-native.h backends: Split out CRTC/output management to MetaGpu 2017-10-05 18:05:20 -04:00
meta-stage-native.c backends/native: Stop supporting stage views being disabled 2017-10-05 18:08:09 -04:00
meta-stage-native.h backends/native: Stop supporting stage views being disabled 2017-10-05 18:08:09 -04:00