Re: [Freedreno] [PATCH v3 06/10] drm/msm/dsi: Migrate to drm_dsc_compute_rc_parameters()

From: Abhinav Kumar
Date: Thu Oct 13 2022 - 12:03:08 EST




On 10/13/2022 2:36 AM, Marijn Suijten wrote:
On 2022-10-12 16:03:06, Abhinav Kumar wrote:


On 10/9/2022 11:50 AM, Marijn Suijten wrote:
As per the FIXME this code is entirely duplicate with what is already
provided inside drm_dsc_compute_rc_parameters(), and it is yet unknown
why this comment was put in place instead of resolved from the get-go.
Not only does it save on duplication, it would have also spared certain
issues.

For example, this code from downstream assumed dsc->bits_per_pixel to
contain an integer value, whereas the upstream drm_dsc_config struct has
it with 4 fractional bits. drm_dsc_compute_rc_parameters() already
accounts for this feat, and the sole remaining use of
dsc->bits_per_pixel inside dsi_populate_dsc_params() will be addressed
in a separate patch.


This is a nice cleanup! Thanks for doing this. I would actually like to
move towards the drm_dsc_compute_rc_parameters() API.

But I would like to hold back this change till Vinod clarifies because
Vinod had mentioned that with drm_dsc_compute_rc_parameters() he was
seeing a mismatch in the computation of two values.

slice_bpg_offset and the final_offset.

Unsurprisingly so because final_offset, and slice_bpg_offset through
initial_offset depend directly on bits_per_pixel. The main takeaway of
this series is that Vinod was interpreting this field as integer instead
of containing 4 fractional bits. If he updates his the panel driver [1]
to set bits_per_pixel = 8 << 4 instead of just 8 to account for this,
the values should check out once again.

[1]: https://git.linaro.org/people/vinod.koul/kernel.git/commit/?h=topic/pixel3_5.18-rc1&id=1d7d98ad564f1ec69e7525e07418918d90f247a1

Once Vinod (or someone else in the posession of a Pixel 3) confirms
this, I can respin this series and more explicitly explain why the FIXME
was put in place, instead of being resolved outright?

- Marijn

Makes perfect sense to me.

Will just wait for Vinod's tested-by.



The difference between the upstream drm_dsc_compute_rc_parameters() and
dsi_populate_dsc_params() causing this was not clear to me from his
explanation earlier.

So this was left as a to-do item.

I would like this to be re-tested on pixel3 and check if this works for
vinod. If not, i think its the right time to debug why and not delay
this more.

Thanks

Abhinav