diff --git a/sdm/include/private/color_params.h b/sdm/include/private/color_params.h index 40089b05..8608c162 100644 --- a/sdm/include/private/color_params.h +++ b/sdm/include/private/color_params.h @@ -247,7 +247,7 @@ struct SDEDitherCfg { }; struct SDEPADitherData { - uint32_t data_flags; + uint64_t data_flags; uint32_t matrix_size; uint64_t matrix_data_addr; uint32_t strength; diff --git a/sdm/libs/core/fb/hw_color_manager.cpp b/sdm/libs/core/fb/hw_color_manager.cpp index 27116a05..a6c78b01 100644 --- a/sdm/libs/core/fb/hw_color_manager.cpp +++ b/sdm/libs/core/fb/hw_color_manager.cpp @@ -153,9 +153,13 @@ DisplayError HWColorManager::SetGamut(const PPFeatureInfo &feature, msmfb_mdp_pp DisplayError HWColorManager::SetPADither(const PPFeatureInfo &feature, msmfb_mdp_pp *kernel_params) { DisplayError ret = kErrorNone; - - // TODO(user): Kernel IOCTL preparation - +#ifdef PA_DITHER + kernel_params->op = mdp_op_pa_dither_cfg; + kernel_params->data.dither_cfg_data.version = feature.feature_version_; + kernel_params->data.dither_cfg_data.block = MDP_LOGICAL_BLOCK_DISP_0 + feature.disp_id_; + kernel_params->data.dither_cfg_data.flags = feature.enable_flags_; + kernel_params->data.dither_cfg_data.cfg_payload = feature.GetConfigData(); +#endif return ret; } diff --git a/sdm/libs/core/fb/hw_primary.cpp b/sdm/libs/core/fb/hw_primary.cpp index da37c04b..3c3b4646 100644 --- a/sdm/libs/core/fb/hw_primary.cpp +++ b/sdm/libs/core/fb/hw_primary.cpp @@ -587,7 +587,12 @@ DisplayError HWPrimary::SetAutoRefresh(bool enable) { DisplayError HWPrimary::GetPPFeaturesVersion(PPFeatureVersion *vers) { mdp_pp_feature_version version = {}; +#ifdef PA_DITHER + uint32_t feature_id_mapping[kMaxNumPPFeatures] = { PCC, IGC, GC, GC, PA, + DITHER, GAMUT, PA_DITHER }; +#else uint32_t feature_id_mapping[kMaxNumPPFeatures] = { PCC, IGC, GC, GC, PA, DITHER, GAMUT }; +#endif for (int i(0); i < kMaxNumPPFeatures; i++) { version.pp_feature = feature_id_mapping[i];