diff options
author | Arun Kumar K.R <akumarkr@codeaurora.org> | 2018-04-26 19:47:44 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2018-04-30 11:23:35 -0700 |
commit | d761c1a87b407cadc30200e82b7ee8575a46d7e4 (patch) | |
tree | 963fdc1e5e1b04d1d7ff9fe486c9b4b17add48d7 /sdm/libs/hwc2/hwc_layers.cpp | |
parent | 653f810b7735be2df5a75156ac52c36337962b05 (diff) |
display: Add support for legacy Wide Color Gamut
- Add extended range in ColorMetadata.
- Send ColorPrimaryTransfer info from color modes to Strategy,
which will be used in determining the blend color space.
- Remove handling color primaries or gamut in HWC2.
- Handle invalid format or unsupported range in SDM.
- Remove FEATURE_WIDE_COLOR and enable by default.
Change-Id: If429e9fffdcdc59c18f1b5ef5d074efddd97f2af
Crs-fixed: 2215125
Diffstat (limited to 'sdm/libs/hwc2/hwc_layers.cpp')
-rw-r--r-- | sdm/libs/hwc2/hwc_layers.cpp | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/sdm/libs/hwc2/hwc_layers.cpp b/sdm/libs/hwc2/hwc_layers.cpp index 20978d0f..a9be2bcb 100644 --- a/sdm/libs/hwc2/hwc_layers.cpp +++ b/sdm/libs/hwc2/hwc_layers.cpp @@ -86,7 +86,7 @@ bool GetColorPrimary(const int32_t &dataspace, ColorPrimaries *color_primary) { *color_primary = ColorPrimaries_BT2020; break; default: - DLOGV_IF(kTagClient, "Unsupported Standard Request = %d", standard); + DLOGE("Unsupported Standard Request = %d", standard); supported_csc = false; } return supported_csc; @@ -124,7 +124,7 @@ bool GetTransfer(const int32_t &dataspace, GammaTransfer *gamma_transfer) { return supported_transfer; } -void GetRange(const int32_t &dataspace, ColorRange *color_range) { +bool GetRange(const int32_t &dataspace, ColorRange *color_range) { auto range = dataspace & HAL_DATASPACE_RANGE_MASK; switch (range) { case HAL_DATASPACE_RANGE_FULL: @@ -133,10 +133,14 @@ void GetRange(const int32_t &dataspace, ColorRange *color_range) { case HAL_DATASPACE_RANGE_LIMITED: *color_range = Range_Limited; break; - default: - DLOGV_IF(kTagClient, "Unsupported Range Request = %d", range); + case HAL_DATASPACE_RANGE_EXTENDED: + *color_range = Range_Extended; break; + default: + DLOGE("Unsupported Range Request = %d", range); + return false; } + return true; } bool IsBT2020(const ColorPrimaries &color_primary) { @@ -153,16 +157,14 @@ bool IsBT2020(const ColorPrimaries &color_primary) { bool GetSDMColorSpace(const int32_t &dataspace, ColorMetaData *color_metadata) { bool valid = false; valid = GetColorPrimary(dataspace, &(color_metadata->colorPrimaries)); - if (!valid) { - return valid; + if (valid) { + valid = GetTransfer(dataspace, &(color_metadata->transfer)); } - valid = GetTransfer(dataspace, &(color_metadata->transfer)); - if (!valid) { - return valid; + if (valid) { + valid = GetRange(dataspace, &(color_metadata->range)); } - GetRange(dataspace, &(color_metadata->range)); - return true; + return valid; } // Layer operations @@ -799,16 +801,6 @@ DisplayError HWCLayer::SetIGC(IGC_t source, LayerIGC *target) { return kErrorNone; } - - -bool HWCLayer::SupportLocalConversion(ColorPrimaries working_primaries) { - if (layer_->input_buffer.color_metadata.colorPrimaries <= ColorPrimaries_BT601_6_525 && - working_primaries <= ColorPrimaries_BT601_6_525) { - return true; - } - return false; -} - bool HWCLayer::ValidateAndSetCSC() { if (client_requested_ != HWC2::Composition::Device && client_requested_ != HWC2::Composition::Cursor) { @@ -818,7 +810,6 @@ bool HWCLayer::ValidateAndSetCSC() { LayerBuffer *layer_buffer = &layer_->input_buffer; bool use_color_metadata = true; -#ifdef FEATURE_WIDE_COLOR ColorMetaData csc = {}; if (dataspace_ != HAL_DATASPACE_UNKNOWN) { use_color_metadata = false; @@ -831,7 +822,6 @@ bool HWCLayer::ValidateAndSetCSC() { layer_buffer->color_metadata.colorPrimaries = csc.colorPrimaries; layer_buffer->color_metadata.range = csc.range; } -#endif if (IsBT2020(layer_buffer->color_metadata.colorPrimaries)) { // android_dataspace_t doesnt support mastering display and light levels |