disp: msm: add support for variable compression ratios
Currently the compression ratio is hard-coded to either 2:1 or 3:1 in several places. This is not sufficient for new compression algorithms as they can support higher compression ratios. Add support for calculating the compression ratios from the source and target bpp thereby eliminating hard-coding. Change-Id: I6383f3d0c781193d0a9ed74df5a95d8e856edb3d Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
27844b7b60
commit
e3f23771ba
@@ -472,6 +472,8 @@ int dsi_conn_get_mode_info(struct drm_connector *connector,
|
||||
{
|
||||
struct dsi_display_mode dsi_mode;
|
||||
struct dsi_mode_info *timing;
|
||||
int chroma_format;
|
||||
int src_bpp, tar_bpp;
|
||||
|
||||
if (!drm_mode || !mode_info)
|
||||
return -EINVAL;
|
||||
@@ -498,17 +500,25 @@ int dsi_conn_get_mode_info(struct drm_connector *connector,
|
||||
|
||||
mode_info->comp_info.comp_type = MSM_DISPLAY_COMPRESSION_NONE;
|
||||
if (dsi_mode.priv_info->dsc_enabled) {
|
||||
chroma_format = dsi_mode.priv_info->dsc.chroma_format;
|
||||
mode_info->comp_info.comp_type = MSM_DISPLAY_COMPRESSION_DSC;
|
||||
memcpy(&mode_info->comp_info.dsc_info, &dsi_mode.priv_info->dsc,
|
||||
sizeof(dsi_mode.priv_info->dsc));
|
||||
mode_info->comp_info.comp_ratio =
|
||||
MSM_DISPLAY_COMPRESSION_RATIO_3_TO_1;
|
||||
tar_bpp = dsi_mode.priv_info->dsc.config.bits_per_pixel >> 4;
|
||||
src_bpp = msm_get_src_bpc(chroma_format,
|
||||
dsi_mode.priv_info->dsc.config.bits_per_component);
|
||||
mode_info->comp_info.comp_ratio = mult_frac(1, src_bpp,
|
||||
tar_bpp);
|
||||
} else if (dsi_mode.priv_info->vdc_enabled) {
|
||||
chroma_format = dsi_mode.priv_info->vdc.chroma_format;
|
||||
mode_info->comp_info.comp_type = MSM_DISPLAY_COMPRESSION_VDC;
|
||||
memcpy(&mode_info->comp_info.vdc_info, &dsi_mode.priv_info->vdc,
|
||||
sizeof(dsi_mode.priv_info->vdc));
|
||||
mode_info->comp_info.comp_ratio =
|
||||
MSM_DISPLAY_COMPRESSION_RATIO_4_TO_1;
|
||||
tar_bpp = dsi_mode.priv_info->vdc.bits_per_pixel >> 4;
|
||||
src_bpp = msm_get_src_bpc(chroma_format,
|
||||
dsi_mode.priv_info->vdc.bits_per_component);
|
||||
mode_info->comp_info.comp_ratio = mult_frac(1, src_bpp,
|
||||
tar_bpp);
|
||||
}
|
||||
|
||||
if (dsi_mode.priv_info->roi_caps.enabled) {
|
||||
|
Reference in New Issue
Block a user