From 257b2050790ab3b1eb389e0f8bdc400eb9510139 Mon Sep 17 00:00:00 2001 From: UjinT34 <41110182+UjinT34@users.noreply.github.com> Date: Sun, 2 Feb 2025 03:42:56 +0300 Subject: [PATCH] drm/output: add api to set drm content type property (#140) --- include/aquamarine/output/Output.hpp | 2 ++ src/backend/drm/impl/Atomic.cpp | 3 +-- src/output/Output.cpp | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/aquamarine/output/Output.hpp b/include/aquamarine/output/Output.hpp index 5f5301e..c09f29b 100644 --- a/include/aquamarine/output/Output.hpp +++ b/include/aquamarine/output/Output.hpp @@ -78,6 +78,7 @@ namespace Aquamarine { Hyprutils::Math::Mat3x3 ctm; bool wideColorGamut = false; hdr_output_metadata hdrMetadata; + uint16_t contentType = DRM_MODE_CONTENT_TYPE_GRAPHICS; }; const SInternalState& state(); @@ -99,6 +100,7 @@ namespace Aquamarine { void setCTM(const Hyprutils::Math::Mat3x3& ctm); void setWideColorGamut(bool wcg); void setHDRMetadata(const hdr_output_metadata& metadata); + void setContentType(const uint16_t drmContentType); private: SInternalState internalState; diff --git a/src/backend/drm/impl/Atomic.cpp b/src/backend/drm/impl/Atomic.cpp index da920a2..2ca4b01 100644 --- a/src/backend/drm/impl/Atomic.cpp +++ b/src/backend/drm/impl/Atomic.cpp @@ -105,9 +105,8 @@ void Aquamarine::CDRMAtomicRequest::addConnector(Hyprutils::Memory::CSharedPoint add(connector->id, connector->props.crtc_id, enable ? connector->crtc->id : 0); - // TODO: allow to send aq a content type, maybe? Wayland has a protocol for this. if (enable && connector->props.content_type) - add(connector->id, connector->props.content_type, DRM_MODE_CONTENT_TYPE_GRAPHICS); + add(connector->id, connector->props.content_type, STATE.contentType); add(connector->crtc->id, connector->crtc->props.active, enable); diff --git a/src/output/Output.cpp b/src/output/Output.cpp index 9aa34cf..00262b2 100644 --- a/src/output/Output.cpp +++ b/src/output/Output.cpp @@ -138,6 +138,10 @@ void Aquamarine::COutputState::setHDRMetadata(const hdr_output_metadata& metadat internalState.committed |= AQ_OUTPUT_STATE_HDR; } +void Aquamarine::COutputState::setContentType(const uint16_t drmContentType) { + internalState.contentType = drmContentType; +} + void Aquamarine::COutputState::onCommit() { internalState.committed = 0; internalState.damage.clear();