[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