hwc2: Night light causes major stuttering.
- Initialize transform matrix with an identity matrix. - Use matrix when mode map is empty. - Do not reapply mode if it is the same as before. - Do not reapply hint if it is the same as before. Bug: 68721781 Change-Id: Iac6d76ceded65b8527abf0b0f26ffc76479e5db9
This commit is contained in:
parent
37d3c4fab0
commit
0296371991
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -79,7 +79,10 @@ class HWCColorMode {
|
|||
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 {
|
||||
|
|
Loading…
Reference in New Issue