[Freedreno] [PATCH] drm/msm/dpu: set preferred mode for writeback connector

Abhinav Kumar quic_abhinavk at quicinc.com
Thu Jun 16 15:49:26 UTC 2022



On 6/16/2022 1:36 AM, Dmitry Baryshkov wrote:
> On 16/06/2022 02:23, Abhinav Kumar wrote:
>> After [1] was merged to IGT, we use either the first supported
>> mode in the list OR the preferred mode to determine the primary
>> plane to use for the sub-test due to the IGT API [2].
>>
>> Since writeback does not set any preferred mode, this was
>> selecting 4k as that was the first entry in the list.
>>
>> We use maxlinewidth to add the list of supported modes for
>> the writeback connector which is the right thing to do, however
>> since we do not have dual-SSPP support yet for DPU, this fails
>> the bandwidth check in dpu_core_perf_crtc_check().
>>
>> Till we have dual-SSPP support, workaround this mismatch between
>> the list of supported modes and maxlinewidth limited modes by
>> marking 640x480 as the preferred mode for DPU writeback because
>> kms_writeback tests 640x480 mode only [3].
> 
> Telling that we support modes up to 4k, failing to set 4k mode and then 
> using the preferred mode to force IGT to lower resolution sounds like a 
> hack.
> 
> As adding wide dual-SSPP support will take some time. I'd suggest 
> dropping support for 4k modes for now and using DEFAULT_DPU_LINE_WIDTH 
> instead (or hw_wb->caps->maxlinewidth). A comment in the source code 
> that the check should be removed/modified once dual-SSPP is supported 
> would be helpful.
> 
Yes, I am planning to drop this one and use max_mixerwidth instead as i 
posted on IRC.
> 
>> [1]: https://patchwork.freedesktop.org/patch/486441/
>> [2]: 
>> https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/blob/master/lib/igt_kms.c#L1562 
>>
>> [3]: 
>> https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/blob/master/tests/kms_writeback.c#L68 
>>
>>
>> Signed-off-by: Abhinav Kumar <quic_abhinavk at quicinc.com>
> 
> Any Fixes tags?
Yes, will add it in the new patch.
> 
>> ---
>>   drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c | 7 ++++++-
>>   1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c 
>> b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
>> index 399115e4e217..104cc59d6466 100644
>> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
>> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_writeback.c
>> @@ -10,9 +10,14 @@ static int dpu_wb_conn_get_modes(struct 
>> drm_connector *connector)
>>       struct drm_device *dev = connector->dev;
>>       struct msm_drm_private *priv = dev->dev_private;
>>       struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms);
>> +    int count;
>> -    return drm_add_modes_noedid(connector, 
>> dpu_kms->catalog->caps->max_linewidth,
>> +    count = drm_add_modes_noedid(connector, 
>> dpu_kms->catalog->caps->max_linewidth,
>>               dev->mode_config.max_height);
>> +
>> +    drm_set_preferred_mode(connector, 640, 480);
>> +
>> +    return count;
>>   }
>>   static const struct drm_connector_funcs dpu_wb_conn_funcs = {
> 
> 


More information about the dri-devel mailing list