mirror of
https://github.com/brl/mutter.git
synced 2024-11-28 11:00:54 -05:00
c9259c2b15
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 |
||
---|---|---|
.. | ||
dbus-utils.c | ||
dbus-utils.h | ||
gen-default-modes.py | ||
meta-backend-native-private.h | ||
meta-backend-native.c | ||
meta-backend-native.h | ||
meta-barrier-native.c | ||
meta-barrier-native.h | ||
meta-clutter-backend-native.c | ||
meta-clutter-backend-native.h | ||
meta-crtc-kms.c | ||
meta-crtc-kms.h | ||
meta-cursor-renderer-native.c | ||
meta-cursor-renderer-native.h | ||
meta-default-modes.h | ||
meta-gpu-kms.c | ||
meta-gpu-kms.h | ||
meta-idle-monitor-native.c | ||
meta-idle-monitor-native.h | ||
meta-input-settings-native.c | ||
meta-input-settings-native.h | ||
meta-launcher.c | ||
meta-launcher.h | ||
meta-monitor-manager-kms.c | ||
meta-monitor-manager-kms.h | ||
meta-output-kms.c | ||
meta-output-kms.h | ||
meta-renderer-native-gles3.c | ||
meta-renderer-native-gles3.h | ||
meta-renderer-native.c | ||
meta-renderer-native.h | ||
meta-stage-native.c | ||
meta-stage-native.h |