diff --git a/msm8996/sdm/libs/hwc2/hwc_display.cpp b/msm8996/sdm/libs/hwc2/hwc_display.cpp index 507eff5e..97652d16 100644 --- a/msm8996/sdm/libs/hwc2/hwc_display.cpp +++ b/msm8996/sdm/libs/hwc2/hwc_display.cpp @@ -135,7 +135,8 @@ HWC2::Error HWCColorMode::HandleColorModeTransform(android_color_mode_t mode, // if the mode count is 1, then only native mode is supported, so just apply matrix w/o // setting mode - if (color_mode_transform_map_.size() > 1U) { + if ((color_mode_transform_map_.size() > 1U && current_color_mode_ != mode) || + (current_color_transform_ != hint)) { color_mode_transform = color_mode_transform_map_[mode][transform_hint]; DisplayError error = display_intf_->SetColorMode(color_mode_transform); if (error != kErrorNone) { @@ -143,7 +144,10 @@ HWC2::Error HWCColorMode::HandleColorModeTransform(android_color_mode_t mode, // failure to force client composition return HWC2::Error::Unsupported; } + DLOGI("Setting Color Mode = %d Transform Hint = %d Success", mode, hint); } + current_color_mode_ = mode; + current_color_transform_ = hint; if (use_matrix) { DisplayError error = display_intf_->SetColorTransform(kColorTransformMatrixCount, matrix); @@ -154,10 +158,7 @@ HWC2::Error HWCColorMode::HandleColorModeTransform(android_color_mode_t mode, } } - current_color_mode_ = mode; - current_color_transform_ = hint; CopyColorTransformMatrix(matrix, color_matrix_); - DLOGV_IF(kTagQDCM, "Setting Color Mode = %d Transform Hint = %d Success", mode, hint); return HWC2::Error::None; } diff --git a/msm8996/sdm/libs/hwc2/hwc_display.h b/msm8996/sdm/libs/hwc2/hwc_display.h index 9343209b..b8fef4fe 100644 --- a/msm8996/sdm/libs/hwc2/hwc_display.h +++ b/msm8996/sdm/libs/hwc2/hwc_display.h @@ -79,7 +79,10 @@ class HWCColorMode { android_color_transform_t current_color_transform_ = HAL_COLOR_TRANSFORM_IDENTITY; typedef std::map TransformMap; std::map color_mode_transform_map_ = {}; - double color_matrix_[kColorTransformMatrixCount] = {0}; + double color_matrix_[kColorTransformMatrixCount] = { 1.0, 0.0, 0.0, 0.0, \ + 0.0, 1.0, 0.0, 0.0, \ + 0.0, 0.0, 1.0, 0.0, \ + 0.0, 0.0, 0.0, 1.0 }; }; class HWCDisplay : public DisplayEventHandler {