summaryrefslogtreecommitdiff
path: root/sdm/libs/core/fb/hw_device.cpp
diff options
context:
space:
mode:
authorArun Kumar K.R <akumarkr@codeaurora.org>2016-10-03 22:38:16 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-12-16 11:25:23 -0800
commitbc0addf5ac20638adb383e89a7f3d204464aecd6 (patch)
tree173600566706a43f67d700abc6f7aad972084bdf /sdm/libs/core/fb/hw_device.cpp
parentbd5a8c7595e63560bf96bf6e3d7bdb27f7d57d97 (diff)
downloaddisplay-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/hw_device.cpp')
-rw-r--r--sdm/libs/core/fb/hw_device.cpp27
1 files changed, 20 insertions, 7 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;
}
}