drm/amd/display: Check scaling ration not viewports params.
authorYongqiang Sun <yongqiang.sun@amd.com>
Fri, 8 Jun 2018 18:07:53 +0000 (13:07 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 5 Jul 2018 21:38:43 +0000 (16:38 -0500)
In case of roation, width and height in viewport is difference
between viewport and h_active and v_active, while this is not scaling.
The right way is check ratios in scaling data,
to determine it is a scaling case or not.

Signed-off-by: Yongqiang Sun <yongqiang.sun@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp.c

index c69fa4bfab0af125974e18fcc6f9adc798edfd2f..742fd497ed006c92846a93d35e842511bd7bf8fb 100644 (file)
@@ -145,10 +145,10 @@ static bool dpp_get_optimal_number_of_taps(
                pixel_width = scl_data->viewport.width;
 
        /* Some ASICs does not support  FP16 scaling, so we reject modes require this*/
-       if (scl_data->viewport.width  != scl_data->h_active &&
-               scl_data->viewport.height != scl_data->v_active &&
+       if (scl_data->format == PIXEL_FORMAT_FP16 &&
                dpp->caps->dscl_data_proc_format == DSCL_DATA_PRCESSING_FIXED_FORMAT &&
-               scl_data->format == PIXEL_FORMAT_FP16)
+               scl_data->ratios.horz.value != dc_fixpt_one.value &&
+               scl_data->ratios.vert.value != dc_fixpt_one.value)
                return false;
 
        if (scl_data->viewport.width > scl_data->h_active &&