diff options
author | Arun Kumar K.R <akumarkr@codeaurora.org> | 2016-10-03 22:38:16 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-12-16 11:25:23 -0800 |
commit | bc0addf5ac20638adb383e89a7f3d204464aecd6 (patch) | |
tree | 173600566706a43f67d700abc6f7aad972084bdf /sdm/libs/core/fb | |
parent | bd5a8c7595e63560bf96bf6e3d7bdb27f7d57d97 (diff) | |
download | display-bc0addf5ac20638adb383e89a7f3d204464aecd6.tar.gz |
sdm: Use ColorMetadata in SDM
- Replace LayerCSC with ColorMetadata which has other
color parameters such as range, matrix co-effs and
HDR info.
- Add appropriate mapping in SetCSC.
Change-Id: Ic21b285e0828b25bcb719372351f685bd92cec26
Crs-fixed: 1085366
Diffstat (limited to 'sdm/libs/core/fb')
-rw-r--r-- | sdm/libs/core/fb/hw_device.cpp | 27 | ||||
-rw-r--r-- | sdm/libs/core/fb/hw_device.h | 2 | ||||
-rw-r--r-- | sdm/libs/core/fb/hw_primary.cpp | 2 |
3 files changed, 22 insertions, 9 deletions
diff --git a/sdm/libs/core/fb/hw_device.cpp b/sdm/libs/core/fb/hw_device.cpp index f7aebe2b..399a9402 100644 --- a/sdm/libs/core/fb/hw_device.cpp +++ b/sdm/libs/core/fb/hw_device.cpp @@ -287,7 +287,7 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) { SetRect(pipe_info->src_roi, &mdp_layer.src_rect); SetRect(pipe_info->dst_roi, &mdp_layer.dst_rect); SetMDPFlags(layer, is_rotator_used, is_cursor_pipe_used, &mdp_layer.flags); - SetCSC(layer->input_buffer->csc, &mdp_layer.color_space); + SetCSC(layer->input_buffer->color_metadata, &mdp_layer.color_space); if (pipe_info->flags & kIGC) { SetIGC(layer->input_buffer, mdp_layer_count); } @@ -336,7 +336,7 @@ DisplayError HWDevice::Validate(HWLayers *hw_layers) { mdp_out_layer_.buffer.comp_ratio.denom = 1000; mdp_out_layer_.buffer.comp_ratio.numer = UINT32(hw_layers->output_compression * 1000); #ifdef OUT_LAYER_COLOR_SPACE - SetCSC(output_buffer->csc, &mdp_out_layer_.color_space); + SetCSC(output_buffer->color_metadata, &mdp_out_layer_.color_space); #endif SetFormat(output_buffer->format, &mdp_out_layer_.buffer.format); @@ -1070,11 +1070,24 @@ void HWDevice::ResetDisplayParams() { mdp_disp_commit_.commit_v1.dest_scaler = mdp_dest_scalar_data_.data(); } -void HWDevice::SetCSC(LayerCSC source, mdp_color_space *color_space) { - switch (source) { - case kCSCLimitedRange601: *color_space = MDP_CSC_ITU_R_601; break; - case kCSCFullRange601: *color_space = MDP_CSC_ITU_R_601_FR; break; - case kCSCLimitedRange709: *color_space = MDP_CSC_ITU_R_709; break; +void HWDevice::SetCSC(const ColorMetaData &color_metadata, mdp_color_space *color_space) { + switch (color_metadata.colorPrimaries) { + case ColorPrimaries_BT601_6_525: + case ColorPrimaries_BT601_6_625: + *color_space = ((color_metadata.range == Range_Full) ? MDP_CSC_ITU_R_601_FR : + MDP_CSC_ITU_R_601); + break; + case ColorPrimaries_BT709_5: + *color_space = MDP_CSC_ITU_R_709; + break; +#if defined MDP_CSC_ITU_R_2020 && defined MDP_CSC_ITU_R_2020_FR + case ColorPrimaries_BT2020: + *color_space = static_cast<mdp_color_space>((color_metadata.range == Range_Full) ? + MDP_CSC_ITU_R_2020_FR : MDP_CSC_ITU_R_2020); + break; +#endif + default: + break; } } diff --git a/sdm/libs/core/fb/hw_device.h b/sdm/libs/core/fb/hw_device.h index 72c7a132..aa73177d 100644 --- a/sdm/libs/core/fb/hw_device.h +++ b/sdm/libs/core/fb/hw_device.h @@ -129,7 +129,7 @@ class HWDevice : public HWInterface { int ParseLine(const char *input, const char *delim, char *tokens[], const uint32_t max_token, uint32_t *count); void ResetDisplayParams(); - void SetCSC(const LayerCSC source, mdp_color_space *color_space); + void SetCSC(const ColorMetaData &color_metadata, mdp_color_space *color_space); void SetIGC(const LayerBuffer *layer_buffer, uint32_t index); bool EnableHotPlugDetection(int enable); diff --git a/sdm/libs/core/fb/hw_primary.cpp b/sdm/libs/core/fb/hw_primary.cpp index cf474ec6..21939200 100644 --- a/sdm/libs/core/fb/hw_primary.cpp +++ b/sdm/libs/core/fb/hw_primary.cpp @@ -404,7 +404,7 @@ DisplayError HWPrimary::Validate(HWLayers *hw_layers) { mdp_out_layer_.buffer.comp_ratio.numer = UINT32(hw_layers->output_compression * 1000); mdp_out_layer_.buffer.fence = -1; #ifdef OUT_LAYER_COLOR_SPACE - SetCSC(output_buffer->csc, &mdp_out_layer_.color_space); + SetCSC(output_buffer->color_metadata, &mdp_out_layer_.color_space); #endif SetFormat(output_buffer->format, &mdp_out_layer_.buffer.format); mdp_commit.flags |= MDP_COMMIT_CWB_EN; |