diff --git a/hwc/HwcDisplay.cpp b/hwc/HwcDisplay.cpp index 460413a..70cec76 100644 --- a/hwc/HwcDisplay.cpp +++ b/hwc/HwcDisplay.cpp @@ -202,6 +202,12 @@ const HwcDisplayConfig *HwcDisplay::GetNextConfig() const { } void HwcDisplay::SetOutputType(OutputType hdr_output_type) { + if (Properties::DisableHdr()) { + hdr_metadata_.reset(); + min_bpc_ = 6; + colorspace_ = Colorspace::kDefault; + return; + } switch (hdr_output_type) { case OutputType::kHdr10: { SetHdrOutputMetadata(ui::Hdr::HDR10); diff --git a/utils/properties.cpp b/utils/properties.cpp index 39e56e6..5c15d28 100644 --- a/utils/properties.cpp +++ b/utils/properties.cpp @@ -150,4 +150,8 @@ auto Properties::GetForceMode() -> std::string { return {force_mode}; } +auto Properties::DisableHdr() -> bool { + return (property_get_bool("vendor.hwc.drm.disable_hdr", 0) != 0); +} + } // namespace android::drm_hwcomposer diff --git a/utils/properties.h b/utils/properties.h index 1c5e290..8b288e3 100644 --- a/utils/properties.h +++ b/utils/properties.h @@ -37,6 +37,7 @@ class Properties { static auto GetBackendOverride() -> std::string; static auto GetDevicePath() -> std::string; static auto GetForceMode() -> std::string; + static auto DisableHdr() -> bool; }; } // namespace android::drm_hwcomposer