[Mesa-dev] [PATCH] panfrost: Fix stride check when mipmapping
Tomeu Vizoso
tomeu.vizoso at collabora.com
Mon Jun 10 08:23:25 UTC 2019
On Sat, 8 Jun 2019 at 02:15, Alyssa Rosenzweig
<alyssa.rosenzweig at collabora.com> wrote:
>
> Now that we support custom strides on mipmapped lines textures
> (theoretically, at least), extend the stride check to support mipmaps.
> Fixes incorrect strides of linear windows in Weston.
>
> Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Looks good too me!
Reviewed-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Thanks,
Tomeu
> ---
> src/gallium/drivers/panfrost/pan_context.c | 22 +++++++++++++++-------
> 1 file changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
> index 90f60f35581..c5e49805872 100644
> --- a/src/gallium/drivers/panfrost/pan_context.c
> +++ b/src/gallium/drivers/panfrost/pan_context.c
> @@ -2002,15 +2002,23 @@ panfrost_create_sampler_view(
>
> /* Check if we need to set a custom stride by computing the "expected"
> * stride and comparing it to what the BO actually wants. Only applies
> - * to linear textures TODO: Mipmap? */
> + * to linear textures, since tiled/compressed textures have strict
> + * alignment requirements for their strides as it is */
>
> - unsigned actual_stride = prsrc->bo->slices[0].stride;
> + unsigned first_level = template->u.tex.first_level;
> + unsigned last_level = template->u.tex.last_level;
>
> - if (prsrc->bo->layout == PAN_LINEAR &&
> - template->u.tex.last_level == 0 &&
> - template->u.tex.first_level == 0 &&
> - (texture->width0 * bytes_per_pixel) != actual_stride) {
> - usage2_layout |= MALI_TEX_MANUAL_STRIDE;
> + if (prsrc->bo->layout == PAN_LINEAR) {
> + for (unsigned l = first_level; l <= last_level; ++l) {
> + unsigned actual_stride = prsrc->bo->slices[l].stride;
> + unsigned width = u_minify(texture->width0, l);
> + unsigned comp_stride = width * bytes_per_pixel;
> +
> + if (comp_stride != actual_stride) {
> + usage2_layout |= MALI_TEX_MANUAL_STRIDE;
> + break;
> + }
> + }
> }
>
> struct mali_texture_descriptor texture_descriptor = {
> --
> 2.20.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list