hwc2: Initialize transform matrix correctly
* Initialize transform matrix with an identity matrix
* Use matrix when mode map is empty
Change-Id: Ief8a00ae0b8202ec58318d4042435abd377be6b7
CRs-Fixed: 2037400
diff --git a/sdm/libs/hwc2/hwc_display.cpp b/sdm/libs/hwc2/hwc_display.cpp
index 7756020..cbad3d2 100644
--- a/sdm/libs/hwc2/hwc_display.cpp
+++ b/sdm/libs/hwc2/hwc_display.cpp
@@ -156,10 +156,11 @@
bool use_matrix = false;
if (hint != HAL_COLOR_TRANSFORM_ARBITRARY_MATRIX) {
// if the mode + transfrom request from HWC matches one mode in SDM, set that
- color_mode_transform = color_mode_transform_map_[mode][hint];
if (color_mode_transform.empty()) {
transform_hint = HAL_COLOR_TRANSFORM_IDENTITY;
use_matrix = true;
+ } else {
+ color_mode_transform = color_mode_transform_map_[mode][hint];
}
} else {
use_matrix = true;
diff --git a/sdm/libs/hwc2/hwc_display.h b/sdm/libs/hwc2/hwc_display.h
index 276bee8..c428ba2 100644
--- a/sdm/libs/hwc2/hwc_display.h
+++ b/sdm/libs/hwc2/hwc_display.h
@@ -83,7 +83,10 @@
android_color_transform_t current_color_transform_ = HAL_COLOR_TRANSFORM_IDENTITY;
typedef std::map<android_color_transform_t, std::string> TransformMap;
std::map<android_color_mode_t, TransformMap> 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 {