diff options
3 files changed, 7 insertions, 0 deletions
diff --git a/src/platformsupport/kmsconvenience/qkmsdevice.cpp b/src/platformsupport/kmsconvenience/qkmsdevice.cpp index d477d12d72..71422b469b 100644 --- a/src/platformsupport/kmsconvenience/qkmsdevice.cpp +++ b/src/platformsupport/kmsconvenience/qkmsdevice.cpp @@ -824,6 +824,8 @@ void QKmsDevice::discoverPlanes() plane.crtcXPropertyId = prop->prop_id; } else if (!strcasecmp(prop->name, "crtc_y")) { plane.crtcYPropertyId = prop->prop_id; + } else if (!strcasecmp(prop->name, "zpos")) { + plane.zposPropertyId = prop->prop_id; } }); diff --git a/src/platformsupport/kmsconvenience/qkmsdevice_p.h b/src/platformsupport/kmsconvenience/qkmsdevice_p.h index 5465cad941..403972fbb8 100644 --- a/src/platformsupport/kmsconvenience/qkmsdevice_p.h +++ b/src/platformsupport/kmsconvenience/qkmsdevice_p.h @@ -177,6 +177,7 @@ struct QKmsPlane uint32_t srcheightPropertyId = 0; uint32_t crtcwidthPropertyId = 0; uint32_t crtcheightPropertyId = 0; + uint32_t zposPropertyId = 0; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QKmsPlane::Rotations) diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp index c3151e1fd0..0cbb494c2f 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp @@ -311,6 +311,10 @@ void QEglFSKmsGbmScreen::flip() m_output.modes[m_output.mode].hdisplay); drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->crtcheightPropertyId, m_output.modes[m_output.mode].vdisplay); + + static int zpos = qEnvironmentVariableIntValue("QT_QPA_EGLFS_KMS_ZPOS"); + if (zpos) + drmModeAtomicAddProperty(request, op.eglfs_plane->id, op.eglfs_plane->zposPropertyId, zpos); } #endif } else { |