mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
panfrost: Only allow AFBC(RGB) and AFBC(BGR) on v7
The AFBC texture/sample reswizzle will not work for formats with component orders that are not canonical or RB-swapped, as moving the alpha channel breaks opaque black border-colors. Disable AFBC for formats with other component orders than RGB and BGR on v7. Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32515>
This commit is contained in:
parent
1aa3bb4e22
commit
afbcf675c5
1 changed files with 8 additions and 4 deletions
|
|
@ -67,7 +67,7 @@
|
|||
*/
|
||||
|
||||
static enum pipe_format
|
||||
unswizzled_format(enum pipe_format format)
|
||||
unswizzled_format(unsigned arch, enum pipe_format format)
|
||||
{
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_A8_UNORM:
|
||||
|
|
@ -84,11 +84,13 @@ unswizzled_format(enum pipe_format format)
|
|||
case PIPE_FORMAT_R8G8B8X8_UNORM:
|
||||
case PIPE_FORMAT_B8G8R8A8_UNORM:
|
||||
case PIPE_FORMAT_B8G8R8X8_UNORM:
|
||||
return PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
case PIPE_FORMAT_A8R8G8B8_UNORM:
|
||||
case PIPE_FORMAT_X8R8G8B8_UNORM:
|
||||
case PIPE_FORMAT_X8B8G8R8_UNORM:
|
||||
case PIPE_FORMAT_A8B8G8R8_UNORM:
|
||||
return PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
/* v7 can only support AFBC for RGB and BGR */
|
||||
return arch == 7 ? format : PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
|
||||
case PIPE_FORMAT_B5G6R5_UNORM:
|
||||
return PIPE_FORMAT_R5G6B5_UNORM;
|
||||
|
|
@ -101,9 +103,11 @@ unswizzled_format(enum pipe_format format)
|
|||
case PIPE_FORMAT_B10G10R10X2_UNORM:
|
||||
return PIPE_FORMAT_R10G10B10A2_UNORM;
|
||||
|
||||
case PIPE_FORMAT_A4B4G4R4_UNORM:
|
||||
case PIPE_FORMAT_B4G4R4A4_UNORM:
|
||||
return PIPE_FORMAT_R4G4B4A4_UNORM;
|
||||
case PIPE_FORMAT_A4B4G4R4_UNORM:
|
||||
/* v7 can only support AFBC for RGB and BGR */
|
||||
return arch == 7 ? format : PIPE_FORMAT_R4G4B4A4_UNORM;
|
||||
|
||||
default:
|
||||
return format;
|
||||
|
|
@ -140,7 +144,7 @@ panfrost_afbc_format(unsigned arch, enum pipe_format format)
|
|||
}
|
||||
|
||||
/* We handle swizzling orthogonally to AFBC */
|
||||
format = unswizzled_format(format);
|
||||
format = unswizzled_format(arch, format);
|
||||
|
||||
/* clang-format off */
|
||||
switch (format) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue