[PATCH] etnaviv: fix 16bpp clears

Christian Gmeiner christian.gmeiner at gmail.com
Fri Sep 22 13:28:00 UTC 2017


2017-09-22 11:24 GMT+02:00 Lucas Stach <l.stach at pengutronix.de>:
> util_pack_color may leave undefined values in the upper half of the packed
> integer. As our hardware needs the upper 16 bits to mirror the lower 16bits,
> this breaks clears of those formats if the undefined values aren't masked off.
>
> I've only observed the issue with R5G6B5_UNORM surfaces, other 16bpp
> formats seem to work fine.
>
> Fixes: d6aa2ba2b2 (etnaviv: replace translate_clear_color with util_pack_color)
> Cc: mesa-stable at lists.freedesktop.org
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>

Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>

> ---
>  src/gallium/drivers/etnaviv/etnaviv_clear_blit.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
> index 971403c45476..c85ada926699 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_clear_blit.c
> @@ -106,7 +106,7 @@ pack_rgba(enum pipe_format format, const float *rgba)
>     union util_color uc;
>     util_pack_color(rgba, format, &uc);
>     if (util_format_get_blocksize(format) == 2)
> -      return uc.ui[0] << 16 | uc.ui[0];
> +      return uc.ui[0] << 16 | (uc.ui[0] & 0xffff);
>     else
>        return uc.ui[0];
>  }
> --
> 2.11.0
>
> _______________________________________________
> etnaviv mailing list
> etnaviv at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/etnaviv

greets
--
Christian Gmeiner, MSc

https://christian-gmeiner.info


More information about the etnaviv mailing list