summaryrefslogtreecommitdiff
path: root/sdm/libs/hwc2/hwc_layers.cpp
diff options
context:
space:
mode:
authorArun Kumar K.R <akumarkr@codeaurora.org>2018-04-26 19:47:44 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2018-04-30 11:23:35 -0700
commitd761c1a87b407cadc30200e82b7ee8575a46d7e4 (patch)
tree963fdc1e5e1b04d1d7ff9fe486c9b4b17add48d7 /sdm/libs/hwc2/hwc_layers.cpp
parent653f810b7735be2df5a75156ac52c36337962b05 (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.cpp36
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