panfrost: Split out v6/v7 format tables

Midgard (v4, v5) and Bifrost v6 have swizzles on every pixel format
descriptor, allowing for arbitrary component reordering. With v7,
reordering is limited to a fixed set of common swizzles, which
simplifies the hardware but to some extent limits the formats available.

To handle, we split out the format tables, with the correct table for
the current hardware loaded as dev->formats.

v2: Switch sRGB flag from T/F to S/L per icecream's suggestion

v3: Add back Z16_UNORM formats to fix trace changes.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tested-by: Christian Hewitt <christianshewitt@gmail.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7352>
This commit is contained in:
Alyssa Rosenzweig 2020-08-12 17:45:05 -04:00 committed by Marge Bot
parent 29bb2812c1
commit c6bdd976e6
8 changed files with 571 additions and 347 deletions

View File

@ -584,27 +584,13 @@ panfrost_create_vertex_elements_state(
for (int i = 0; i < num_elements; ++i) {
enum pipe_format fmt = elements[i].src_format;
const struct util_format_description *desc = util_format_description(fmt);
unsigned swizzle = 0;
if (dev->quirks & HAS_SWIZZLES)
swizzle = panfrost_translate_swizzle_4(desc->swizzle);
else
swizzle = panfrost_bifrost_swizzle(desc->nr_channels);
enum mali_format hw_format = panfrost_pipe_format_table[desc->format].hw;
so->formats[i] = (hw_format << 12) | swizzle;
assert(hw_format);
so->formats[i] = dev->formats[desc->format].hw;
assert(so->formats[i]);
}
/* Let's also prepare vertex builtins */
if (dev->quirks & HAS_SWIZZLES)
so->formats[PAN_VERTEX_ID] = (MALI_R32UI << 12) | panfrost_get_default_swizzle(1);
else
so->formats[PAN_VERTEX_ID] = (MALI_R32UI << 12) | panfrost_bifrost_swizzle(1);
if (dev->quirks & HAS_SWIZZLES)
so->formats[PAN_INSTANCE_ID] = (MALI_R32UI << 12) | panfrost_get_default_swizzle(1);
else
so->formats[PAN_INSTANCE_ID] = (MALI_R32UI << 12) | panfrost_bifrost_swizzle(1);
so->formats[PAN_VERTEX_ID] = dev->formats[PIPE_FORMAT_R32_UINT].hw;
so->formats[PAN_INSTANCE_ID] = dev->formats[PIPE_FORMAT_R32_UINT].hw;
return so;
}

View File

@ -487,19 +487,20 @@ panfrost_is_format_supported( struct pipe_screen *screen,
( PIPE_BIND_DEPTH_STENCIL | PIPE_BIND_RENDER_TARGET
| PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_SAMPLER_VIEW);
struct panfrost_format fmt = panfrost_pipe_format_table[format];
struct panfrost_format fmt = dev->formats[format];
enum mali_format indexed = MALI_EXTRACT_INDEX(fmt.hw);
/* Also check that compressed texture formats are supported on this
* particular chip. They may not be depending on system integration
* differences. RGTC can be emulated so is always supported. */
bool is_rgtc = format_desc->layout == UTIL_FORMAT_LAYOUT_RGTC;
bool supported = panfrost_supports_compressed_format(dev, fmt.hw);
bool supported = panfrost_supports_compressed_format(dev, indexed);
if (!is_rgtc && !supported)
return false;
return fmt.hw && ((relevant_bind & ~fmt.bind) == 0);
return indexed && ((relevant_bind & ~fmt.bind) == 0);
}
/* We always support linear and tiled operations, both external and internal.

View File

@ -283,11 +283,7 @@ panfrost_load_emit_varying(struct pan_pool *pool, struct MALI_DRAW *draw,
pan_pack(varying.cpu, ATTRIBUTE, cfg) {
cfg.buffer_index = 0;
cfg.offset_enable = !is_bifrost;
cfg.format = (MALI_RGBA32F << 12);
if (pool->dev->quirks & HAS_SWIZZLES)
cfg.format |= panfrost_get_default_swizzle(2);
else
cfg.format |= panfrost_bifrost_swizzle(2);
cfg.format = pool->dev->formats[PIPE_FORMAT_R32G32_FLOAT].hw;
}
draw->varyings = varying.gpu;

View File

@ -89,6 +89,13 @@ struct pan_blit_shaders {
struct pan_blit_shader loads[PAN_BLIT_NUM_TARGETS][PAN_BLIT_NUM_TYPES][2];
};
typedef uint32_t mali_pixel_format;
struct panfrost_format {
mali_pixel_format hw;
unsigned bind;
};
struct panfrost_device {
/* For ralloc */
void *memctx;
@ -102,6 +109,9 @@ struct panfrost_device {
unsigned thread_tls_alloc;
unsigned quirks;
/* Table of formats, indexed by a PIPE format */
const struct panfrost_format *formats;
/* Bitmask of supported compressed texture formats */
uint32_t compressed_formats;

View File

@ -87,306 +87,548 @@ panfrost_blend_format(enum pipe_format format)
#define _T PIPE_BIND_SAMPLER_VIEW
#define _R PIPE_BIND_RENDER_TARGET
#define _Z PIPE_BIND_DEPTH_STENCIL
#define _VT (_V | _T)
#define _VTR (_V | _T | _R)
#define _TZ (_T | _Z)
struct panfrost_format panfrost_pipe_format_table[PIPE_FORMAT_COUNT] = {
[PIPE_FORMAT_ETC1_RGB8] = { MALI_ETC2_RGB8, _T },
[PIPE_FORMAT_ETC2_RGB8] = { MALI_ETC2_RGB8, _T },
[PIPE_FORMAT_ETC2_SRGB8] = { MALI_ETC2_RGB8, _T },
[PIPE_FORMAT_ETC2_R11_UNORM] = { MALI_ETC2_R11_UNORM, _T },
[PIPE_FORMAT_ETC2_RGBA8] = { MALI_ETC2_RGBA8, _T },
[PIPE_FORMAT_ETC2_SRGBA8] = { MALI_ETC2_RGBA8, _T },
[PIPE_FORMAT_ETC2_RG11_UNORM] = { MALI_ETC2_RG11_UNORM, _T },
[PIPE_FORMAT_ETC2_R11_SNORM] = { MALI_ETC2_R11_SNORM, _T },
[PIPE_FORMAT_ETC2_RG11_SNORM] = { MALI_ETC2_RG11_SNORM, _T },
[PIPE_FORMAT_ETC2_RGB8A1] = { MALI_ETC2_RGB8A1, _T },
[PIPE_FORMAT_ETC2_SRGB8A1] = { MALI_ETC2_RGB8A1, _T },
#define FLAGS_V___ (_V)
#define FLAGS__T__ (_T)
#define FLAGS_VTR_ (_V | _T | _R)
#define FLAGS_VT__ (_V | _T)
#define FLAGS__T_Z (_T | _Z)
[PIPE_FORMAT_DXT1_RGB] = { MALI_BC1_UNORM, _T },
[PIPE_FORMAT_DXT1_RGBA] = { MALI_BC1_UNORM, _T },
[PIPE_FORMAT_DXT1_SRGB] = { MALI_BC1_UNORM, _T },
[PIPE_FORMAT_DXT1_SRGBA] = { MALI_BC1_UNORM, _T },
[PIPE_FORMAT_DXT3_RGBA] = { MALI_BC2_UNORM, _T },
[PIPE_FORMAT_DXT3_SRGBA] = { MALI_BC2_UNORM, _T },
[PIPE_FORMAT_DXT5_RGBA] = { MALI_BC3_UNORM, _T },
[PIPE_FORMAT_DXT5_SRGBA] = { MALI_BC3_UNORM, _T },
#define V6_000R PAN_V6_SWIZZLE(0, 0, 0, R)
#define V6_A001 PAN_V6_SWIZZLE(A, 0, 0, 1)
#define V6_ABG1 PAN_V6_SWIZZLE(A, B, G, 1)
#define V6_ABGR PAN_V6_SWIZZLE(A, B, G, R)
#define V6_BGR1 PAN_V6_SWIZZLE(B, G, R, 1)
#define V6_BGRA PAN_V6_SWIZZLE(B, G, R, A)
#define V6_GBA1 PAN_V6_SWIZZLE(G, B, A, 1)
#define V6_GBAR PAN_V6_SWIZZLE(G, B, A, R)
#define V6_R000 PAN_V6_SWIZZLE(R, 0, 0, 0)
#define V6_R001 PAN_V6_SWIZZLE(R, 0, 0, 1)
#define V6_RG01 PAN_V6_SWIZZLE(R, G, 0, 1)
#define V6_RGB1 PAN_V6_SWIZZLE(R, G, B, 1)
#define V6_RGBA PAN_V6_SWIZZLE(R, G, B, A)
#define V6_RRR1 PAN_V6_SWIZZLE(R, R, R, 1)
#define V6_RRRG PAN_V6_SWIZZLE(R, R, R, G)
#define V6_RRRR PAN_V6_SWIZZLE(R, R, R, R)
[PIPE_FORMAT_RGTC1_UNORM] = { MALI_BC4_UNORM, _T },
[PIPE_FORMAT_RGTC1_SNORM] = { MALI_BC4_SNORM, _T },
[PIPE_FORMAT_RGTC2_UNORM] = { MALI_BC5_UNORM, _T },
[PIPE_FORMAT_RGTC2_SNORM] = { MALI_BC5_SNORM, _T },
#define SRGB_L (0)
#define SRGB_S (1)
[PIPE_FORMAT_BPTC_RGB_FLOAT] = { MALI_BC6H_SF16, _T },
[PIPE_FORMAT_BPTC_RGB_UFLOAT] = { MALI_BC6H_UF16, _T },
[PIPE_FORMAT_BPTC_RGBA_UNORM] = { MALI_BC7_UNORM, _T },
[PIPE_FORMAT_BPTC_SRGBA] = { MALI_BC7_UNORM, _T },
#define PAN_V6(pipe, mali, swizzle, srgb, flags) \
[PIPE_FORMAT_ ## pipe] = { \
.hw = ( V6_ ## swizzle ) | \
(( MALI_ ## mali ) << 12) | \
((( SRGB_ ## srgb)) << 20), \
.bind = FLAGS_ ## flags \
}
[PIPE_FORMAT_ASTC_4x4] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_5x4] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_5x5] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_6x5] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_6x6] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_8x5] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_8x6] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_8x8] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_10x5] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_10x6] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_10x8] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_10x10] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_12x10] = { MALI_ASTC_2D_HDR, _T },
[PIPE_FORMAT_ASTC_12x12] = { MALI_ASTC_2D_HDR, _T },
#define PAN_V7(pipe, mali, swizzle, srgb, flags) \
[PIPE_FORMAT_ ## pipe] = { \
.hw = ( MALI_RGB_COMPONENT_ORDER_ ## swizzle ) | \
(( MALI_ ## mali ) << 12) | \
((( SRGB_ ## srgb)) << 20), \
.bind = FLAGS_ ## flags \
}
[PIPE_FORMAT_ASTC_4x4_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_5x4_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_5x5_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_6x5_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_6x6_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_8x5_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_8x6_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_8x8_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_10x5_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_10x6_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_10x8_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_10x10_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_12x10_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_ASTC_12x12_SRGB] = { MALI_ASTC_2D_LDR, _T },
[PIPE_FORMAT_B5G6R5_UNORM] = { MALI_RGB565, _VTR },
[PIPE_FORMAT_B5G5R5X1_UNORM] = { MALI_RGB5_X1_UNORM, _VT },
[PIPE_FORMAT_R5G5B5A1_UNORM] = { MALI_RGB5_A1_UNORM, _VTR },
[PIPE_FORMAT_R10G10B10X2_UNORM] = { MALI_RGB10_A2_UNORM, _VTR },
[PIPE_FORMAT_B10G10R10X2_UNORM] = { MALI_RGB10_A2_UNORM, _VTR },
[PIPE_FORMAT_R10G10B10A2_UNORM] = { MALI_RGB10_A2_UNORM, _VTR },
[PIPE_FORMAT_B10G10R10A2_UNORM] = { MALI_RGB10_A2_UNORM, _VTR },
[PIPE_FORMAT_R10G10B10X2_SNORM] = { MALI_RGB10_A2_SNORM, _VT },
[PIPE_FORMAT_R10G10B10A2_SNORM] = { MALI_RGB10_A2_SNORM, _VT },
[PIPE_FORMAT_B10G10R10A2_SNORM] = { MALI_RGB10_A2_SNORM, _VT },
[PIPE_FORMAT_R10G10B10A2_UINT] = { MALI_RGB10_A2UI, _VTR },
[PIPE_FORMAT_B10G10R10A2_UINT] = { MALI_RGB10_A2UI, _VTR },
[PIPE_FORMAT_R10G10B10A2_USCALED] = { MALI_RGB10_A2UI, _VTR },
[PIPE_FORMAT_B10G10R10A2_USCALED] = { MALI_RGB10_A2UI, _VTR },
[PIPE_FORMAT_R10G10B10A2_SINT] = { MALI_RGB10_A2I, _VTR},
[PIPE_FORMAT_B10G10R10A2_SINT] = { MALI_RGB10_A2I, _VTR },
[PIPE_FORMAT_R10G10B10A2_SSCALED] = { MALI_RGB10_A2I, _VTR },
[PIPE_FORMAT_B10G10R10A2_SSCALED] = { MALI_RGB10_A2I, _VTR },
[PIPE_FORMAT_R8_SSCALED] = { MALI_R8I, _V },
[PIPE_FORMAT_R8G8_SSCALED] = { MALI_RG8I, _V },
[PIPE_FORMAT_R8G8B8_SSCALED] = { MALI_RGB8I, _V },
[PIPE_FORMAT_B8G8R8_SSCALED] = { MALI_RGB8I, _V },
[PIPE_FORMAT_R8G8B8A8_SSCALED] = { MALI_RGBA8I, _V },
[PIPE_FORMAT_B8G8R8A8_SSCALED] = { MALI_RGBA8I, _V },
[PIPE_FORMAT_A8B8G8R8_SSCALED] = { MALI_RGBA8I, _V },
[PIPE_FORMAT_R8_USCALED] = { MALI_R8UI, _V },
[PIPE_FORMAT_R8G8_USCALED] = { MALI_RG8UI, _V },
[PIPE_FORMAT_R8G8B8_USCALED] = { MALI_RGB8UI, _V },
[PIPE_FORMAT_B8G8R8_USCALED] = { MALI_RGB8UI, _V },
[PIPE_FORMAT_R8G8B8A8_USCALED] = { MALI_RGBA8UI, _V },
[PIPE_FORMAT_B8G8R8A8_USCALED] = { MALI_RGBA8UI, _V },
[PIPE_FORMAT_A8B8G8R8_USCALED] = { MALI_RGBA8UI, _V },
[PIPE_FORMAT_R16_USCALED] = { MALI_R16UI, _V },
[PIPE_FORMAT_R16G16_USCALED] = { MALI_RG16UI, _V },
[PIPE_FORMAT_R16G16B16_USCALED] = { MALI_RGB16UI, _V },
[PIPE_FORMAT_R16G16B16A16_USCALED] = { MALI_RGBA16UI, _V },
[PIPE_FORMAT_R16_SSCALED] = { MALI_R16I, _V },
[PIPE_FORMAT_R16G16_SSCALED] = { MALI_RG16I, _V },
[PIPE_FORMAT_R16G16B16_SSCALED] = { MALI_RGB16I, _V },
[PIPE_FORMAT_R16G16B16A16_SSCALED] = { MALI_RGBA16I, _V },
[PIPE_FORMAT_R32_USCALED] = { MALI_R32UI, _V },
[PIPE_FORMAT_R32G32_USCALED] = { MALI_RG32UI, _V },
[PIPE_FORMAT_R32G32B32_USCALED] = { MALI_RGB32UI, _V },
[PIPE_FORMAT_R32G32B32A32_USCALED] = { MALI_RGBA32UI, _V },
[PIPE_FORMAT_R32_SSCALED] = { MALI_R32I, _V },
[PIPE_FORMAT_R32G32_SSCALED] = { MALI_RG32I, _V },
[PIPE_FORMAT_R32G32B32_SSCALED] = { MALI_RGB32I, _V },
[PIPE_FORMAT_R32G32B32A32_SSCALED] = { MALI_RGBA32I, _V },
[PIPE_FORMAT_R3G3B2_UNORM] = { MALI_RGB332_UNORM, _VT },
[PIPE_FORMAT_Z16_UNORM] = { MALI_R16_UNORM, _TZ },
[PIPE_FORMAT_Z24_UNORM_S8_UINT] = { MALI_Z24X8_UNORM, _TZ },
[PIPE_FORMAT_Z24X8_UNORM] = { MALI_Z24X8_UNORM, _TZ },
[PIPE_FORMAT_Z32_FLOAT] = { MALI_R32F, _TZ },
[PIPE_FORMAT_Z32_FLOAT_S8X24_UINT] = { MALI_R32F, _TZ },
[PIPE_FORMAT_X32_S8X24_UINT] = { MALI_R8UI, _T },
[PIPE_FORMAT_X24S8_UINT] = { MALI_RGBA8UI, _TZ },
[PIPE_FORMAT_S8_UINT] = { MALI_R8UI, _T },
[PIPE_FORMAT_R32_FIXED] = { MALI_R32_FIXED, _V },
[PIPE_FORMAT_R32G32_FIXED] = { MALI_RG32_FIXED, _V },
[PIPE_FORMAT_R32G32B32_FIXED] = { MALI_RGB32_FIXED, _V },
[PIPE_FORMAT_R32G32B32A32_FIXED] = { MALI_RGBA32_FIXED, _V },
[PIPE_FORMAT_R11G11B10_FLOAT] = { MALI_R11F_G11F_B10F, _VTR},
[PIPE_FORMAT_R9G9B9E5_FLOAT] = { MALI_R9F_G9F_B9F_E5F, _VT },
[PIPE_FORMAT_R8_SNORM] = { MALI_R8_SNORM, _VT },
[PIPE_FORMAT_R16_SNORM] = { MALI_R16_SNORM, _VT },
[PIPE_FORMAT_R32_SNORM] = { MALI_R32_SNORM, _VT },
[PIPE_FORMAT_R8G8_SNORM] = { MALI_RG8_SNORM, _VT },
[PIPE_FORMAT_R16G16_SNORM] = { MALI_RG16_SNORM, _VT },
[PIPE_FORMAT_R32G32_SNORM] = { MALI_RG32_SNORM, _VT },
[PIPE_FORMAT_R8G8B8_SNORM] = { MALI_RGB8_SNORM, _VT },
[PIPE_FORMAT_R16G16B16_SNORM] = { MALI_RGB16_SNORM, _VT },
[PIPE_FORMAT_R32G32B32_SNORM] = { MALI_RGB32_SNORM, _VT },
[PIPE_FORMAT_R8G8B8A8_SNORM] = { MALI_RGBA8_SNORM, _VT },
[PIPE_FORMAT_R16G16B16A16_SNORM] = { MALI_RGBA16_SNORM, _VT },
[PIPE_FORMAT_R32G32B32A32_SNORM] = { MALI_RGBA32_SNORM, _VT },
[PIPE_FORMAT_A8_SINT] = { MALI_R8I, _VTR },
[PIPE_FORMAT_I8_SINT] = { MALI_R8I, _VTR },
[PIPE_FORMAT_L8_SINT] = { MALI_R8I, _VTR },
[PIPE_FORMAT_L8A8_SINT] = { MALI_RG8I, _VTR },
[PIPE_FORMAT_A8_UINT] = { MALI_R8UI, _VTR },
[PIPE_FORMAT_I8_UINT] = { MALI_R8UI, _VTR },
[PIPE_FORMAT_L8_UINT] = { MALI_R8UI, _VTR },
[PIPE_FORMAT_L8A8_UINT] = { MALI_RG8UI, _VTR },
[PIPE_FORMAT_A16_SINT] = { MALI_R16I, _VTR },
[PIPE_FORMAT_I16_SINT] = { MALI_R16I, _VTR },
[PIPE_FORMAT_L16_SINT] = { MALI_R16I, _VTR },
[PIPE_FORMAT_L16A16_SINT] = { MALI_RG16I, _VTR },
[PIPE_FORMAT_A16_UINT] = { MALI_R16UI, _VTR },
[PIPE_FORMAT_I16_UINT] = { MALI_R16UI, _VTR },
[PIPE_FORMAT_L16_UINT] = { MALI_R16UI, _VTR },
[PIPE_FORMAT_L16A16_UINT] = { MALI_RG16UI, _VTR },
[PIPE_FORMAT_A32_SINT] = { MALI_R32I, _VTR },
[PIPE_FORMAT_I32_SINT] = { MALI_R32I, _VTR },
[PIPE_FORMAT_L32_SINT] = { MALI_R32I, _VTR },
[PIPE_FORMAT_L32A32_SINT] = { MALI_RG32I, _VTR },
[PIPE_FORMAT_A32_UINT] = { MALI_R32UI, _VTR },
[PIPE_FORMAT_I32_UINT] = { MALI_R32UI, _VTR },
[PIPE_FORMAT_L32_UINT] = { MALI_R32UI, _VTR },
[PIPE_FORMAT_L32A32_UINT] = { MALI_RG32UI, _VTR },
[PIPE_FORMAT_B8G8R8_UINT] = { MALI_RGB8UI, _VTR },
[PIPE_FORMAT_B8G8R8A8_UINT] = { MALI_RGBA8UI, _VTR },
[PIPE_FORMAT_B8G8R8_SINT] = { MALI_RGB8I, _VTR },
[PIPE_FORMAT_B8G8R8A8_SINT] = { MALI_RGBA8I, _VTR },
[PIPE_FORMAT_A8R8G8B8_UINT] = { MALI_RGBA8UI, _VTR },
[PIPE_FORMAT_A8B8G8R8_UINT] = { MALI_RGBA8UI, _VTR },
[PIPE_FORMAT_R8_UINT] = { MALI_R8UI, _VTR },
[PIPE_FORMAT_R16_UINT] = { MALI_R16UI, _VTR },
[PIPE_FORMAT_R32_UINT] = { MALI_R32UI, _VTR },
[PIPE_FORMAT_R8G8_UINT] = { MALI_RG8UI, _VTR },
[PIPE_FORMAT_R16G16_UINT] = { MALI_RG16UI, _VTR },
[PIPE_FORMAT_R32G32_UINT] = { MALI_RG32UI, _VTR },
[PIPE_FORMAT_R8G8B8_UINT] = { MALI_RGB8UI, _VTR },
[PIPE_FORMAT_R16G16B16_UINT] = { MALI_RGB16UI, _VTR },
[PIPE_FORMAT_R32G32B32_UINT] = { MALI_RGB32UI, _VTR },
[PIPE_FORMAT_R8G8B8A8_UINT] = { MALI_RGBA8UI, _VTR },
[PIPE_FORMAT_R16G16B16A16_UINT] = { MALI_RGBA16UI, _VTR },
[PIPE_FORMAT_R32G32B32A32_UINT] = { MALI_RGBA32UI, _VTR },
[PIPE_FORMAT_R32_FLOAT] = { MALI_R32F, _VTR },
[PIPE_FORMAT_R32G32_FLOAT] = { MALI_RG32F, _VTR },
[PIPE_FORMAT_R32G32B32_FLOAT] = { MALI_RGB32F, _VTR },
[PIPE_FORMAT_R32G32B32A32_FLOAT] = { MALI_RGBA32F, _VTR },
[PIPE_FORMAT_R8_UNORM] = { MALI_R8_UNORM, _VTR },
[PIPE_FORMAT_R16_UNORM] = { MALI_R16_UNORM, _VTR },
[PIPE_FORMAT_R32_UNORM] = { MALI_R32_UNORM, _VTR },
[PIPE_FORMAT_R8G8_UNORM] = { MALI_RG8_UNORM, _VTR },
[PIPE_FORMAT_R16G16_UNORM] = { MALI_RG16_UNORM, _VTR },
[PIPE_FORMAT_R32G32_UNORM] = { MALI_RG32_UNORM, _VTR },
[PIPE_FORMAT_R8G8B8_UNORM] = { MALI_RGB8_UNORM, _VTR },
[PIPE_FORMAT_R16G16B16_UNORM] = { MALI_RGB16_UNORM, _VTR },
[PIPE_FORMAT_R32G32B32_UNORM] = { MALI_RGB32_UNORM, _VTR },
[PIPE_FORMAT_R4G4B4A4_UNORM] = { MALI_RGBA4_UNORM, _VTR },
[PIPE_FORMAT_R16G16B16A16_UNORM] = { MALI_RGBA16_UNORM, _VTR },
[PIPE_FORMAT_R32G32B32A32_UNORM] = { MALI_RGBA32_UNORM, _VTR },
[PIPE_FORMAT_B8G8R8A8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_B8G8R8X8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_A8R8G8B8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_X8R8G8B8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_A8B8G8R8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_X8B8G8R8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_R8G8B8X8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_R8G8B8A8_UNORM] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_R8G8B8X8_SNORM] = { MALI_RGBA8_SNORM, _VT },
[PIPE_FORMAT_R8G8B8X8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_R8G8B8X8_UINT] = { MALI_RGBA8UI, _VTR },
[PIPE_FORMAT_R8G8B8X8_SINT] = { MALI_RGBA8I, _VTR },
[PIPE_FORMAT_L8_UNORM] = { MALI_R8_UNORM, _VTR },
[PIPE_FORMAT_A8_UNORM] = { MALI_R8_UNORM, _VTR },
[PIPE_FORMAT_I8_UNORM] = { MALI_R8_UNORM, _VTR },
[PIPE_FORMAT_L8A8_UNORM] = { MALI_RG8_UNORM, _VTR },
[PIPE_FORMAT_L16_UNORM] = { MALI_R16_UNORM, _VTR },
[PIPE_FORMAT_A16_UNORM] = { MALI_R16_UNORM, _VTR },
[PIPE_FORMAT_I16_UNORM] = { MALI_R16_UNORM, _VTR },
[PIPE_FORMAT_L16A16_UNORM] = { MALI_RG16_UNORM, _VTR },
[PIPE_FORMAT_L8_SNORM] = { MALI_R8_SNORM, _VT },
[PIPE_FORMAT_A8_SNORM] = { MALI_R8_SNORM, _VT },
[PIPE_FORMAT_I8_SNORM] = { MALI_R8_SNORM, _VT },
[PIPE_FORMAT_L8A8_SNORM] = { MALI_RG8_SNORM, _VT },
[PIPE_FORMAT_L16_SNORM] = { MALI_R16_SNORM, _VT },
[PIPE_FORMAT_A16_SNORM] = { MALI_R16_SNORM, _VT },
[PIPE_FORMAT_I16_SNORM] = { MALI_R16_SNORM, _VT },
[PIPE_FORMAT_L16A16_SNORM] = { MALI_RG16_SNORM, _VT },
[PIPE_FORMAT_L16_FLOAT] = { MALI_R16F, _VTR },
[PIPE_FORMAT_A16_FLOAT] = { MALI_R16F, _VTR },
[PIPE_FORMAT_I16_FLOAT] = { MALI_RG16F, _VTR },
[PIPE_FORMAT_L16A16_FLOAT] = { MALI_RG16F, _VTR },
[PIPE_FORMAT_L8_SRGB] = { MALI_R8_UNORM, _VTR },
[PIPE_FORMAT_R8_SRGB] = { MALI_R8_UNORM, _VTR },
[PIPE_FORMAT_L8A8_SRGB] = { MALI_RG8_UNORM, _VTR },
[PIPE_FORMAT_R8G8_SRGB] = { MALI_RG8_UNORM, _VTR },
[PIPE_FORMAT_R8G8B8_SRGB] = { MALI_RGB8_UNORM, _VTR },
[PIPE_FORMAT_B8G8R8_SRGB] = { MALI_RGB8_UNORM, _VTR },
[PIPE_FORMAT_R8G8B8A8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_A8B8G8R8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_X8B8G8R8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_B8G8R8A8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_B8G8R8X8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_A8R8G8B8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_X8R8G8B8_SRGB] = { MALI_RGBA8_UNORM, _VTR },
[PIPE_FORMAT_R8_SINT] = { MALI_R8I, _VTR },
[PIPE_FORMAT_R16_SINT] = { MALI_R16I, _VTR },
[PIPE_FORMAT_R32_SINT] = { MALI_R32I, _VTR },
[PIPE_FORMAT_R16_FLOAT] = { MALI_R16F, _VTR },
[PIPE_FORMAT_R8G8_SINT] = { MALI_RG8I, _VTR },
[PIPE_FORMAT_R16G16_SINT] = { MALI_RG16I, _VTR },
[PIPE_FORMAT_R32G32_SINT] = { MALI_RG32I, _VTR },
[PIPE_FORMAT_R16G16_FLOAT] = { MALI_RG16F, _VTR },
[PIPE_FORMAT_R8G8B8_SINT] = { MALI_RGB8I, _VTR },
[PIPE_FORMAT_R16G16B16_SINT] = { MALI_RGB16I, _VTR },
[PIPE_FORMAT_R32G32B32_SINT] = { MALI_RGB32I, _VTR },
[PIPE_FORMAT_R16G16B16_FLOAT] = { MALI_RGB16F, _VTR },
[PIPE_FORMAT_R8G8B8A8_SINT] = { MALI_RGBA8I, _VTR },
[PIPE_FORMAT_R16G16B16A16_SINT] = { MALI_RGBA16I, _VTR },
[PIPE_FORMAT_R32G32B32A32_SINT] = { MALI_RGBA32I, _VTR },
[PIPE_FORMAT_R16G16B16A16_FLOAT] = { MALI_RGBA16F, _VTR },
[PIPE_FORMAT_R16G16B16X16_UNORM] = { MALI_RGBA16_UNORM, _VTR },
[PIPE_FORMAT_R16G16B16X16_SNORM] = { MALI_RGBA16_SNORM, _VT },
[PIPE_FORMAT_R16G16B16X16_FLOAT] = { MALI_RGBA16F, _VTR },
[PIPE_FORMAT_R16G16B16X16_UINT] = { MALI_RGBA16UI, _VTR },
[PIPE_FORMAT_R16G16B16X16_SINT] = { MALI_RGBA16I, _VTR },
[PIPE_FORMAT_R32G32B32X32_FLOAT] = { MALI_RGBA32F, _VTR },
[PIPE_FORMAT_R32G32B32X32_UINT] = { MALI_RGBA32UI, _VTR },
[PIPE_FORMAT_R32G32B32X32_SINT] = { MALI_RGBA32I, _VTR },
const struct panfrost_format panfrost_pipe_format_v6[PIPE_FORMAT_COUNT] = {
PAN_V6(ETC1_RGB8, ETC2_RGB8, RGB1, L, _T__),
PAN_V6(ETC2_RGB8, ETC2_RGB8, RGB1, L, _T__),
PAN_V6(ETC2_SRGB8, ETC2_RGB8, RGB1, S, _T__),
PAN_V6(ETC2_R11_UNORM, ETC2_R11_UNORM, R001, L, _T__),
PAN_V6(ETC2_RGBA8, ETC2_RGBA8, RGBA, L, _T__),
PAN_V6(ETC2_SRGBA8, ETC2_RGBA8, RGBA, S, _T__),
PAN_V6(ETC2_RG11_UNORM, ETC2_RG11_UNORM, RG01, L, _T__),
PAN_V6(ETC2_R11_SNORM, ETC2_R11_SNORM, R001, L, _T__),
PAN_V6(ETC2_RG11_SNORM, ETC2_RG11_SNORM, RG01, L, _T__),
PAN_V6(ETC2_RGB8A1, ETC2_RGB8A1, RGBA, L, _T__),
PAN_V6(ETC2_SRGB8A1, ETC2_RGB8A1, RGBA, S, _T__),
PAN_V6(DXT1_RGB, BC1_UNORM, RGB1, L, _T__),
PAN_V6(DXT1_RGBA, BC1_UNORM, RGBA, L, _T__),
PAN_V6(DXT1_SRGB, BC1_UNORM, RGB1, S, _T__),
PAN_V6(DXT1_SRGBA, BC1_UNORM, RGBA, S, _T__),
PAN_V6(DXT3_RGBA, BC2_UNORM, RGBA, L, _T__),
PAN_V6(DXT3_SRGBA, BC2_UNORM, RGBA, S, _T__),
PAN_V6(DXT5_RGBA, BC3_UNORM, RGBA, L, _T__),
PAN_V6(DXT5_SRGBA, BC3_UNORM, RGBA, S, _T__),
PAN_V6(RGTC1_UNORM, BC4_UNORM, R001, L, _T__),
PAN_V6(RGTC1_SNORM, BC4_SNORM, R001, L, _T__),
PAN_V6(RGTC2_UNORM, BC5_UNORM, RG01, L, _T__),
PAN_V6(RGTC2_SNORM, BC5_SNORM, RG01, L, _T__),
PAN_V6(BPTC_RGB_FLOAT, BC6H_SF16, RGB1, L, _T__),
PAN_V6(BPTC_RGB_UFLOAT, BC6H_UF16, RGB1, L, _T__),
PAN_V6(BPTC_RGBA_UNORM, BC7_UNORM, RGBA, L, _T__),
PAN_V6(BPTC_SRGBA, BC7_UNORM, RGBA, S, _T__),
PAN_V6(ASTC_4x4, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_5x4, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_5x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_6x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_6x6, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_8x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_8x6, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_8x8, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_10x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_10x6, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_10x8, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_10x10, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_12x10, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_12x12, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V6(ASTC_4x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_5x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_5x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_6x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_6x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_8x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_8x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_8x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_10x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_10x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_10x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_10x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_12x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(ASTC_12x12_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V6(B5G6R5_UNORM, RGB565, BGR1, L, VTR_),
PAN_V6(B5G5R5X1_UNORM, RGB5_X1_UNORM, BGR1, L, VT__),
PAN_V6(R5G5B5A1_UNORM, RGB5_A1_UNORM, RGBA, L, VTR_),
PAN_V6(R10G10B10X2_UNORM, RGB10_A2_UNORM, RGB1, L, VTR_),
PAN_V6(B10G10R10X2_UNORM, RGB10_A2_UNORM, BGR1, L, VTR_),
PAN_V6(R10G10B10A2_UNORM, RGB10_A2_UNORM, RGBA, L, VTR_),
PAN_V6(B10G10R10A2_UNORM, RGB10_A2_UNORM, BGRA, L, VTR_),
PAN_V6(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, VT__),
PAN_V6(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, VT__),
PAN_V6(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, VT__),
PAN_V6(R10G10B10A2_UINT, RGB10_A2UI, RGBA, L, VTR_),
PAN_V6(B10G10R10A2_UINT, RGB10_A2UI, BGRA, L, VTR_),
PAN_V6(R10G10B10A2_USCALED, RGB10_A2UI, RGBA, L, VTR_),
PAN_V6(B10G10R10A2_USCALED, RGB10_A2UI, BGRA, L, VTR_),
PAN_V6(R10G10B10A2_SINT, RGB10_A2I, RGBA, L, VTR_),
PAN_V6(B10G10R10A2_SINT, RGB10_A2I, BGRA, L, VTR_),
PAN_V6(R10G10B10A2_SSCALED, RGB10_A2I, RGBA, L, VTR_),
PAN_V6(B10G10R10A2_SSCALED, RGB10_A2I, BGRA, L, VTR_),
PAN_V6(R8_SSCALED, R8I, R001, L, V___),
PAN_V6(R8G8_SSCALED, RG8I, RG01, L, V___),
PAN_V6(R8G8B8_SSCALED, RGB8I, RGB1, L, V___),
PAN_V6(B8G8R8_SSCALED, RGB8I, BGR1, L, V___),
PAN_V6(R8G8B8A8_SSCALED, RGBA8I, RGBA, L, V___),
PAN_V6(B8G8R8A8_SSCALED, RGBA8I, BGRA, L, V___),
PAN_V6(A8B8G8R8_SSCALED, RGBA8I, ABGR, L, V___),
PAN_V6(R8_USCALED, R8UI, R001, L, V___),
PAN_V6(R8G8_USCALED, RG8UI, RG01, L, V___),
PAN_V6(R8G8B8_USCALED, RGB8UI, RGB1, L, V___),
PAN_V6(B8G8R8_USCALED, RGB8UI, BGR1, L, V___),
PAN_V6(R8G8B8A8_USCALED, RGBA8UI, RGBA, L, V___),
PAN_V6(B8G8R8A8_USCALED, RGBA8UI, BGRA, L, V___),
PAN_V6(A8B8G8R8_USCALED, RGBA8UI, ABGR, L, V___),
PAN_V6(R16_USCALED, R16UI, R001, L, V___),
PAN_V6(R16G16_USCALED, RG16UI, RG01, L, V___),
PAN_V6(R16G16B16_USCALED, RGB16UI, RGB1, L, V___),
PAN_V6(R16G16B16A16_USCALED, RGBA16UI, RGBA, L, V___),
PAN_V6(R16_SSCALED, R16I, R001, L, V___),
PAN_V6(R16G16_SSCALED, RG16I, RG01, L, V___),
PAN_V6(R16G16B16_SSCALED, RGB16I, RGB1, L, V___),
PAN_V6(R16G16B16A16_SSCALED, RGBA16I, RGBA, L, V___),
PAN_V6(R32_USCALED, R32UI, R001, L, V___),
PAN_V6(R32G32_USCALED, RG32UI, RG01, L, V___),
PAN_V6(R32G32B32_USCALED, RGB32UI, RGB1, L, V___),
PAN_V6(R32G32B32A32_USCALED, RGBA32UI, RGBA, L, V___),
PAN_V6(R32_SSCALED, R32I, R001, L, V___),
PAN_V6(R32G32_SSCALED, RG32I, RG01, L, V___),
PAN_V6(R32G32B32_SSCALED, RGB32I, RGB1, L, V___),
PAN_V6(R32G32B32A32_SSCALED, RGBA32I, RGBA, L, V___),
PAN_V6(R3G3B2_UNORM, RGB332_UNORM, RGB1, L, VT__),
PAN_V6(Z16_UNORM, R16_UNORM, R000, L, _T_Z),
PAN_V6(Z24_UNORM_S8_UINT, Z24X8_UNORM, R000, L, _T_Z),
PAN_V6(Z24X8_UNORM, Z24X8_UNORM, R000, L, _T_Z),
PAN_V6(Z32_FLOAT, R32F, R000, L, _T_Z),
PAN_V6(Z32_FLOAT_S8X24_UINT, R32F, R000, L, _T_Z),
PAN_V6(X32_S8X24_UINT, R32UI, R001, L, _T__),
PAN_V6(X24S8_UINT, RGBA8UI, A001, L, _T_Z),
PAN_V6(S8_UINT, R8UI, R001, L, _T__),
PAN_V6(R32_FIXED, R32_FIXED, R001, L, V___),
PAN_V6(R32G32_FIXED, RG32_FIXED, RG01, L, V___),
PAN_V6(R32G32B32_FIXED, RGB32_FIXED, RGB1, L, V___),
PAN_V6(R32G32B32A32_FIXED, RGBA32_FIXED, RGBA, L, V___),
PAN_V6(R11G11B10_FLOAT, R11F_G11F_B10F, RGB1, L, VTR_),
PAN_V6(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, VT__),
PAN_V6(R8_SNORM, R8_SNORM, R001, L, VT__),
PAN_V6(R16_SNORM, R16_SNORM, R001, L, VT__),
PAN_V6(R32_SNORM, R32_SNORM, R001, L, VT__),
PAN_V6(R8G8_SNORM, RG8_SNORM, RG01, L, VT__),
PAN_V6(R16G16_SNORM, RG16_SNORM, RG01, L, VT__),
PAN_V6(R32G32_SNORM, RG32_SNORM, RG01, L, VT__),
PAN_V6(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VT__),
PAN_V6(R16G16B16_SNORM, RGB16_SNORM, RGB1, L, VT__),
PAN_V6(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, VT__),
PAN_V6(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VT__),
PAN_V6(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VT__),
PAN_V6(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, VT__),
PAN_V6(A8_SINT, R8I, 000R, L, VTR_),
PAN_V6(I8_SINT, R8I, RRRR, L, VTR_),
PAN_V6(L8_SINT, R8I, RRR1, L, VTR_),
PAN_V6(A8_UINT, R8UI, 000R, L, VTR_),
PAN_V6(I8_UINT, R8UI, RRRR, L, VTR_),
PAN_V6(L8_UINT, R8UI, RRR1, L, VTR_),
PAN_V6(A16_SINT, R16I, 000R, L, VTR_),
PAN_V6(I16_SINT, R16I, RRRR, L, VTR_),
PAN_V6(L16_SINT, R16I, RRR1, L, VTR_),
PAN_V6(A16_UINT, R16UI, 000R, L, VTR_),
PAN_V6(I16_UINT, R16UI, RRRR, L, VTR_),
PAN_V6(L16_UINT, R16UI, RRR1, L, VTR_),
PAN_V6(A32_SINT, R32I, 000R, L, VTR_),
PAN_V6(I32_SINT, R32I, RRRR, L, VTR_),
PAN_V6(L32_SINT, R32I, RRR1, L, VTR_),
PAN_V6(A32_UINT, R32UI, 000R, L, VTR_),
PAN_V6(I32_UINT, R32UI, RRRR, L, VTR_),
PAN_V6(L32_UINT, R32UI, RRR1, L, VTR_),
PAN_V6(B8G8R8_UINT, RGB8UI, BGR1, L, VTR_),
PAN_V6(B8G8R8A8_UINT, RGBA8UI, BGRA, L, VTR_),
PAN_V6(B8G8R8_SINT, RGB8I, BGR1, L, VTR_),
PAN_V6(B8G8R8A8_SINT, RGBA8I, BGRA, L, VTR_),
PAN_V6(A8R8G8B8_UINT, RGBA8UI, GBAR, L, VTR_),
PAN_V6(A8B8G8R8_UINT, RGBA8UI, ABGR, L, VTR_),
PAN_V6(R8_UINT, R8UI, R001, L, VTR_),
PAN_V6(R16_UINT, R16UI, R001, L, VTR_),
PAN_V6(R32_UINT, R32UI, R001, L, VTR_),
PAN_V6(R8G8_UINT, RG8UI, RG01, L, VTR_),
PAN_V6(R16G16_UINT, RG16UI, RG01, L, VTR_),
PAN_V6(R32G32_UINT, RG32UI, RG01, L, VTR_),
PAN_V6(R8G8B8_UINT, RGB8UI, RGB1, L, VTR_),
PAN_V6(R16G16B16_UINT, RGB16UI, RGB1, L, VTR_),
PAN_V6(R32G32B32_UINT, RGB32UI, RGB1, L, VTR_),
PAN_V6(R8G8B8A8_UINT, RGBA8UI, RGBA, L, VTR_),
PAN_V6(R16G16B16A16_UINT, RGBA16UI, RGBA, L, VTR_),
PAN_V6(R32G32B32A32_UINT, RGBA32UI, RGBA, L, VTR_),
PAN_V6(R32_FLOAT, R32F, R001, L, VTR_),
PAN_V6(R32G32_FLOAT, RG32F, RG01, L, VTR_),
PAN_V6(R32G32B32_FLOAT, RGB32F, RGB1, L, VTR_),
PAN_V6(R32G32B32A32_FLOAT, RGBA32F, RGBA, L, VTR_),
PAN_V6(R8_UNORM, R8_UNORM, R001, L, VTR_),
PAN_V6(R16_UNORM, R16_UNORM, R001, L, VTR_),
PAN_V6(R32_UNORM, R32_UNORM, R001, L, VTR_),
PAN_V6(R8G8_UNORM, RG8_UNORM, RG01, L, VTR_),
PAN_V6(R16G16_UNORM, RG16_UNORM, RG01, L, VTR_),
PAN_V6(R32G32_UNORM, RG32_UNORM, RG01, L, VTR_),
PAN_V6(R8G8B8_UNORM, RGB8_UNORM, RGB1, L, VTR_),
PAN_V6(R16G16B16_UNORM, RGB16_UNORM, RGB1, L, VTR_),
PAN_V6(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, VTR_),
PAN_V6(R4G4B4A4_UNORM, RGBA4_UNORM, RGBA, L, VTR_),
PAN_V6(R16G16B16A16_UNORM, RGBA16_UNORM, RGBA, L, VTR_),
PAN_V6(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, VTR_),
PAN_V6(B8G8R8A8_UNORM, RGBA8_UNORM, BGRA, L, VTR_),
PAN_V6(B8G8R8X8_UNORM, RGBA8_UNORM, BGR1, L, VTR_),
PAN_V6(A8R8G8B8_UNORM, RGBA8_UNORM, GBAR, L, VTR_),
PAN_V6(X8R8G8B8_UNORM, RGBA8_UNORM, GBA1, L, VTR_),
PAN_V6(A8B8G8R8_UNORM, RGBA8_UNORM, ABGR, L, VTR_),
PAN_V6(X8B8G8R8_UNORM, RGBA8_UNORM, ABG1, L, VTR_),
PAN_V6(R8G8B8X8_UNORM, RGBA8_UNORM, RGB1, L, VTR_),
PAN_V6(R8G8B8A8_UNORM, RGBA8_UNORM, RGBA, L, VTR_),
PAN_V6(R8G8B8X8_SNORM, RGBA8_SNORM, RGB1, L, VT__),
PAN_V6(R8G8B8X8_SRGB, RGBA8_UNORM, RGB1, S, VTR_),
PAN_V6(R8G8B8X8_UINT, RGBA8UI, RGB1, L, VTR_),
PAN_V6(R8G8B8X8_SINT, RGBA8I, RGB1, L, VTR_),
PAN_V6(L8_UNORM, R8_UNORM, RRR1, L, VTR_),
PAN_V6(A8_UNORM, R8_UNORM, 000R, L, VTR_),
PAN_V6(I8_UNORM, R8_UNORM, RRRR, L, VTR_),
PAN_V6(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_),
PAN_V6(L16_UNORM, R16_UNORM, RRR1, L, VTR_),
PAN_V6(A16_UNORM, R16_UNORM, 000R, L, VTR_),
PAN_V6(I16_UNORM, R16_UNORM, RRRR, L, VTR_),
PAN_V6(L8_SNORM, R8_SNORM, RRR1, L, VT__),
PAN_V6(A8_SNORM, R8_SNORM, 000R, L, VT__),
PAN_V6(I8_SNORM, R8_SNORM, RRRR, L, VT__),
PAN_V6(L16_SNORM, R16_SNORM, RRR1, L, VT__),
PAN_V6(A16_SNORM, R16_SNORM, 000R, L, VT__),
PAN_V6(I16_SNORM, R16_SNORM, RRRR, L, VT__),
PAN_V6(L16_FLOAT, R16F, RRR1, L, VTR_),
PAN_V6(A16_FLOAT, R16F, 000R, L, VTR_),
PAN_V6(I16_FLOAT, RG16F, RRRR, L, VTR_),
PAN_V6(L8_SRGB, R8_UNORM, RRR1, S, VTR_),
PAN_V6(R8_SRGB, R8_UNORM, R001, S, VTR_),
PAN_V6(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_),
PAN_V6(R8G8_SRGB, RG8_UNORM, RG01, S, VTR_),
PAN_V6(R8G8B8_SRGB, RGB8_UNORM, RGB1, S, VTR_),
PAN_V6(B8G8R8_SRGB, RGB8_UNORM, BGR1, S, VTR_),
PAN_V6(R8G8B8A8_SRGB, RGBA8_UNORM, RGBA, S, VTR_),
PAN_V6(A8B8G8R8_SRGB, RGBA8_UNORM, ABGR, S, VTR_),
PAN_V6(X8B8G8R8_SRGB, RGBA8_UNORM, ABG1, S, VTR_),
PAN_V6(B8G8R8A8_SRGB, RGBA8_UNORM, BGRA, S, VTR_),
PAN_V6(B8G8R8X8_SRGB, RGBA8_UNORM, BGR1, S, VTR_),
PAN_V6(A8R8G8B8_SRGB, RGBA8_UNORM, GBAR, S, VTR_),
PAN_V6(X8R8G8B8_SRGB, RGBA8_UNORM, GBA1, S, VTR_),
PAN_V6(R8_SINT, R8I, R001, L, VTR_),
PAN_V6(R16_SINT, R16I, R001, L, VTR_),
PAN_V6(R32_SINT, R32I, R001, L, VTR_),
PAN_V6(R16_FLOAT, R16F, R001, L, VTR_),
PAN_V6(R8G8_SINT, RG8I, RG01, L, VTR_),
PAN_V6(R16G16_SINT, RG16I, RG01, L, VTR_),
PAN_V6(R32G32_SINT, RG32I, RG01, L, VTR_),
PAN_V6(R16G16_FLOAT, RG16F, RG01, L, VTR_),
PAN_V6(R8G8B8_SINT, RGB8I, RGB1, L, VTR_),
PAN_V6(R16G16B16_SINT, RGB16I, RGB1, L, VTR_),
PAN_V6(R32G32B32_SINT, RGB32I, RGB1, L, VTR_),
PAN_V6(R16G16B16_FLOAT, RGB16F, RGB1, L, VTR_),
PAN_V6(R8G8B8A8_SINT, RGBA8I, RGBA, L, VTR_),
PAN_V6(R16G16B16A16_SINT, RGBA16I, RGBA, L, VTR_),
PAN_V6(R32G32B32A32_SINT, RGBA32I, RGBA, L, VTR_),
PAN_V6(R16G16B16A16_FLOAT, RGBA16F, RGBA, L, VTR_),
PAN_V6(R16G16B16X16_UNORM, RGBA16_UNORM, RGB1, L, VTR_),
PAN_V6(R16G16B16X16_SNORM, RGBA16_SNORM, RGB1, L, VT__),
PAN_V6(R16G16B16X16_FLOAT, RGBA16F, RGB1, L, VTR_),
PAN_V6(R16G16B16X16_UINT, RGBA16UI, RGB1, L, VTR_),
PAN_V6(R16G16B16X16_SINT, RGBA16I, RGB1, L, VTR_),
PAN_V6(R32G32B32X32_FLOAT, RGBA32F, RGB1, L, VTR_),
PAN_V6(R32G32B32X32_UINT, RGBA32UI, RGB1, L, VTR_),
PAN_V6(R32G32B32X32_SINT, RGBA32I, RGB1, L, VTR_),
};
#undef _VTR
#undef _VT
#undef _V
#undef _T
#undef _R
const struct panfrost_format panfrost_pipe_format_v7[PIPE_FORMAT_COUNT] = {
PAN_V7(ETC1_RGB8, ETC2_RGB8, RGB1, L, _T__),
PAN_V7(ETC2_RGB8, ETC2_RGB8, RGB1, L, _T__),
PAN_V7(ETC2_SRGB8, ETC2_RGB8, RGB1, S, _T__),
PAN_V7(ETC2_R11_UNORM, ETC2_R11_UNORM, RGB1, L, _T__),
PAN_V7(ETC2_RGBA8, ETC2_RGBA8, RGBA, L, _T__),
PAN_V7(ETC2_SRGBA8, ETC2_RGBA8, RGBA, S, _T__),
PAN_V7(ETC2_RG11_UNORM, ETC2_RG11_UNORM, RGB1, L, _T__),
PAN_V7(ETC2_R11_SNORM, ETC2_R11_SNORM, RGB1, L, _T__),
PAN_V7(ETC2_RG11_SNORM, ETC2_RG11_SNORM, RGB1, L, _T__),
PAN_V7(ETC2_RGB8A1, ETC2_RGB8A1, RGBA, L, _T__),
PAN_V7(ETC2_SRGB8A1, ETC2_RGB8A1, RGBA, S, _T__),
PAN_V7(DXT1_RGB, BC1_UNORM, RGB1, L, _T__),
PAN_V7(DXT1_RGBA, BC1_UNORM, RGBA, L, _T__),
PAN_V7(DXT1_SRGB, BC1_UNORM, RGB1, S, _T__),
PAN_V7(DXT1_SRGBA, BC1_UNORM, RGBA, S, _T__),
PAN_V7(DXT3_RGBA, BC2_UNORM, RGBA, L, _T__),
PAN_V7(DXT3_SRGBA, BC2_UNORM, RGBA, S, _T__),
PAN_V7(DXT5_RGBA, BC3_UNORM, RGBA, L, _T__),
PAN_V7(DXT5_SRGBA, BC3_UNORM, RGBA, S, _T__),
PAN_V7(RGTC1_UNORM, BC4_UNORM, RGB1, L, _T__),
PAN_V7(RGTC1_SNORM, BC4_SNORM, RGB1, L, _T__),
PAN_V7(RGTC2_UNORM, BC5_UNORM, RGB1, L, _T__),
PAN_V7(RGTC2_SNORM, BC5_SNORM, RGB1, L, _T__),
PAN_V7(BPTC_RGB_FLOAT, BC6H_SF16, RGB1, L, _T__),
PAN_V7(BPTC_RGB_UFLOAT, BC6H_UF16, RGB1, L, _T__),
PAN_V7(BPTC_RGBA_UNORM, BC7_UNORM, RGBA, L, _T__),
PAN_V7(BPTC_SRGBA, BC7_UNORM, RGBA, S, _T__),
PAN_V7(ASTC_4x4, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_5x4, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_5x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_6x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_6x6, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_8x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_8x6, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_8x8, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_10x5, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_10x6, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_10x8, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_10x10, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_12x10, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_12x12, ASTC_2D_HDR, RGBA, L, _T__),
PAN_V7(ASTC_4x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_5x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_5x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_6x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_6x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_8x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_8x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_8x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_10x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_10x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_10x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_10x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_12x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(ASTC_12x12_SRGB, ASTC_2D_LDR, RGBA, S, _T__),
PAN_V7(B5G6R5_UNORM, RGB565, BGR1, L, VTR_),
PAN_V7(B5G5R5X1_UNORM, RGB5_X1_UNORM, BGR1, L, VT__),
PAN_V7(R5G5B5A1_UNORM, RGB5_A1_UNORM, RGBA, L, VTR_),
PAN_V7(R10G10B10X2_UNORM, RGB10_A2_UNORM, RGB1, L, VTR_),
PAN_V7(B10G10R10X2_UNORM, RGB10_A2_UNORM, BGR1, L, VTR_),
PAN_V7(R10G10B10A2_UNORM, RGB10_A2_UNORM, RGBA, L, VTR_),
PAN_V7(B10G10R10A2_UNORM, RGB10_A2_UNORM, BGRA, L, VTR_),
PAN_V7(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, VT__),
PAN_V7(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, VT__),
PAN_V7(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, VT__),
PAN_V7(R10G10B10A2_UINT, RGB10_A2UI, RGBA, L, VTR_),
PAN_V7(B10G10R10A2_UINT, RGB10_A2UI, BGRA, L, VTR_),
PAN_V7(R10G10B10A2_USCALED, RGB10_A2UI, RGBA, L, VTR_),
PAN_V7(B10G10R10A2_USCALED, RGB10_A2UI, BGRA, L, VTR_),
PAN_V7(R10G10B10A2_SINT, RGB10_A2I, RGBA, L, VTR_),
PAN_V7(B10G10R10A2_SINT, RGB10_A2I, BGRA, L, VTR_),
PAN_V7(R10G10B10A2_SSCALED, RGB10_A2I, RGBA, L, VTR_),
PAN_V7(B10G10R10A2_SSCALED, RGB10_A2I, BGRA, L, VTR_),
PAN_V7(R8_SSCALED, R8I, RGB1, L, V___),
PAN_V7(R8G8_SSCALED, RG8I, RGB1, L, V___),
PAN_V7(R8G8B8_SSCALED, RGB8I, RGB1, L, V___),
PAN_V7(B8G8R8_SSCALED, RGB8I, BGR1, L, V___),
PAN_V7(R8G8B8A8_SSCALED, RGBA8I, RGBA, L, V___),
PAN_V7(B8G8R8A8_SSCALED, RGBA8I, BGRA, L, V___),
PAN_V7(A8B8G8R8_SSCALED, RGBA8I, ABGR, L, V___),
PAN_V7(R8_USCALED, R8UI, RGB1, L, V___),
PAN_V7(R8G8_USCALED, RG8UI, RGB1, L, V___),
PAN_V7(R8G8B8_USCALED, RGB8UI, RGB1, L, V___),
PAN_V7(B8G8R8_USCALED, RGB8UI, BGR1, L, V___),
PAN_V7(R8G8B8A8_USCALED, RGBA8UI, RGBA, L, V___),
PAN_V7(B8G8R8A8_USCALED, RGBA8UI, BGRA, L, V___),
PAN_V7(A8B8G8R8_USCALED, RGBA8UI, ABGR, L, V___),
PAN_V7(R16_USCALED, R16UI, RGB1, L, V___),
PAN_V7(R16G16_USCALED, RG16UI, RGB1, L, V___),
PAN_V7(R16G16B16_USCALED, RGB16UI, RGB1, L, V___),
PAN_V7(R16G16B16A16_USCALED, RGBA16UI, RGBA, L, V___),
PAN_V7(R16_SSCALED, R16I, RGB1, L, V___),
PAN_V7(R16G16_SSCALED, RG16I, RGB1, L, V___),
PAN_V7(R16G16B16_SSCALED, RGB16I, RGB1, L, V___),
PAN_V7(R16G16B16A16_SSCALED, RGBA16I, RGBA, L, V___),
PAN_V7(R32_USCALED, R32UI, RGB1, L, V___),
PAN_V7(R32G32_USCALED, RG32UI, RGB1, L, V___),
PAN_V7(R32G32B32_USCALED, RGB32UI, RGB1, L, V___),
PAN_V7(R32G32B32A32_USCALED, RGBA32UI, RGBA, L, V___),
PAN_V7(R32_SSCALED, R32I, RGB1, L, V___),
PAN_V7(R32G32_SSCALED, RG32I, RGB1, L, V___),
PAN_V7(R32G32B32_SSCALED, RGB32I, RGB1, L, V___),
PAN_V7(R32G32B32A32_SSCALED, RGBA32I, RGBA, L, V___),
PAN_V7(R3G3B2_UNORM, RGB332_UNORM, RGB1, L, VT__),
PAN_V7(Z16_UNORM, R16_UNORM, RGBA, L, _T_Z),
PAN_V7(Z24_UNORM_S8_UINT, Z24X8_UNORM, RGBA, L, _T_Z),
PAN_V7(Z24X8_UNORM, Z24X8_UNORM, RGBA, L, _T_Z),
PAN_V7(Z32_FLOAT, R32F, RGBA, L, _T_Z),
PAN_V7(Z32_FLOAT_S8X24_UINT, R32F, RGBA, L, _T_Z),
PAN_V7(X32_S8X24_UINT, S8X24, GRBA, L, _T__),
PAN_V7(X24S8_UINT, TILEBUFFER_NATIVE /* XXX: Deduplicate enum */, GRBA, L, _T_Z),
PAN_V7(S8_UINT, S8, GRBA, L, _T__),
PAN_V7(R32_FIXED, R32_FIXED, RGB1, L, V___),
PAN_V7(R32G32_FIXED, RG32_FIXED, RGB1, L, V___),
PAN_V7(R32G32B32_FIXED, RGB32_FIXED, RGB1, L, V___),
PAN_V7(R32G32B32A32_FIXED, RGBA32_FIXED, RGBA, L, V___),
PAN_V7(R11G11B10_FLOAT, R11F_G11F_B10F, RGB1, L, VTR_),
PAN_V7(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, VT__),
PAN_V7(R8_SNORM, R8_SNORM, RGB1, L, VT__),
PAN_V7(R16_SNORM, R16_SNORM, RGB1, L, VT__),
PAN_V7(R32_SNORM, R32_SNORM, RGB1, L, VT__),
PAN_V7(R8G8_SNORM, RG8_SNORM, RGB1, L, VT__),
PAN_V7(R16G16_SNORM, RG16_SNORM, RGB1, L, VT__),
PAN_V7(R32G32_SNORM, RG32_SNORM, RGB1, L, VT__),
PAN_V7(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VT__),
PAN_V7(R16G16B16_SNORM, RGB16_SNORM, RGB1, L, VT__),
PAN_V7(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, VT__),
PAN_V7(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VT__),
PAN_V7(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VT__),
PAN_V7(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, VT__),
/* A8_SINT dropped on v7 */
PAN_V7(I8_SINT, R8I, RRRR, L, VTR_),
PAN_V7(L8_SINT, R8I, RRR1, L, VTR_),
/* A8_UINT dropped on v7 */
PAN_V7(I8_UINT, R8UI, RRRR, L, VTR_),
PAN_V7(L8_UINT, R8UI, RRR1, L, VTR_),
/* A16_SINT dropped on v7 */
PAN_V7(I16_SINT, R16I, RRRR, L, VTR_),
PAN_V7(L16_SINT, R16I, RRR1, L, VTR_),
/* A16_UINT dropped on v7 */
PAN_V7(I16_UINT, R16UI, RRRR, L, VTR_),
PAN_V7(L16_UINT, R16UI, RRR1, L, VTR_),
/* A32_SINT dropped on v7 */
PAN_V7(I32_SINT, R32I, RRRR, L, VTR_),
PAN_V7(L32_SINT, R32I, RRR1, L, VTR_),
/* A32_UINT dropped on v7 */
PAN_V7(I32_UINT, R32UI, RRRR, L, VTR_),
PAN_V7(L32_UINT, R32UI, RRR1, L, VTR_),
PAN_V7(B8G8R8_UINT, RGB8UI, BGR1, L, VTR_),
PAN_V7(B8G8R8A8_UINT, RGBA8UI, BGRA, L, VTR_),
PAN_V7(B8G8R8_SINT, RGB8I, BGR1, L, VTR_),
PAN_V7(B8G8R8A8_SINT, RGBA8I, BGRA, L, VTR_),
PAN_V7(A8R8G8B8_UINT, RGBA8UI, ARGB, L, VTR_),
PAN_V7(A8B8G8R8_UINT, RGBA8UI, ABGR, L, VTR_),
PAN_V7(R8_UINT, R8UI, RGB1, L, VTR_),
PAN_V7(R16_UINT, R16UI, RGB1, L, VTR_),
PAN_V7(R32_UINT, R32UI, RGB1, L, VTR_),
PAN_V7(R8G8_UINT, RG8UI, RGB1, L, VTR_),
PAN_V7(R16G16_UINT, RG16UI, RGB1, L, VTR_),
PAN_V7(R32G32_UINT, RG32UI, RGB1, L, VTR_),
PAN_V7(R8G8B8_UINT, RGB8UI, RGB1, L, VTR_),
PAN_V7(R16G16B16_UINT, RGB16UI, RGB1, L, VTR_),
PAN_V7(R32G32B32_UINT, RGB32UI, RGB1, L, VTR_),
PAN_V7(R8G8B8A8_UINT, RGBA8UI, RGBA, L, VTR_),
PAN_V7(R16G16B16A16_UINT, RGBA16UI, RGBA, L, VTR_),
PAN_V7(R32G32B32A32_UINT, RGBA32UI, RGBA, L, VTR_),
PAN_V7(R32_FLOAT, R32F, RGB1, L, VTR_),
PAN_V7(R32G32_FLOAT, RG32F, RGB1, L, VTR_),
PAN_V7(R32G32B32_FLOAT, RGB32F, RGB1, L, VTR_),
PAN_V7(R32G32B32A32_FLOAT, RGBA32F, RGBA, L, VTR_),
PAN_V7(R8_UNORM, R8_UNORM, RGB1, L, VTR_),
PAN_V7(R16_UNORM, R16_UNORM, RGB1, L, VTR_),
PAN_V7(R32_UNORM, R32_UNORM, RGB1, L, VTR_),
PAN_V7(R8G8_UNORM, RG8_UNORM, RGB1, L, VTR_),
PAN_V7(R16G16_UNORM, RG16_UNORM, RGB1, L, VTR_),
PAN_V7(R32G32_UNORM, RG32_UNORM, RGB1, L, VTR_),
PAN_V7(R8G8B8_UNORM, RGB8_UNORM, RGB1, L, VTR_),
PAN_V7(R16G16B16_UNORM, RGB16_UNORM, RGB1, L, VTR_),
PAN_V7(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, VTR_),
PAN_V7(R4G4B4A4_UNORM, RGBA4_UNORM, RGBA, L, VTR_),
PAN_V7(R16G16B16A16_UNORM, RGBA16_UNORM, RGBA, L, VTR_),
PAN_V7(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, VTR_),
PAN_V7(B8G8R8A8_UNORM, RGBA8_UNORM, BGRA, L, VTR_),
PAN_V7(B8G8R8X8_UNORM, RGBA8_UNORM, BGR1, L, VTR_),
PAN_V7(A8R8G8B8_UNORM, RGBA8_UNORM, ARGB, L, VTR_),
PAN_V7(X8R8G8B8_UNORM, RGBA8_UNORM, 1RGB, L, VTR_),
PAN_V7(A8B8G8R8_UNORM, RGBA8_UNORM, ABGR, L, VTR_),
PAN_V7(X8B8G8R8_UNORM, RGBA8_UNORM, 1BGR, L, VTR_),
PAN_V7(R8G8B8X8_UNORM, RGBA8_UNORM, RGB1, L, VTR_),
PAN_V7(R8G8B8A8_UNORM, RGBA8_UNORM, RGBA, L, VTR_),
PAN_V7(R8G8B8X8_SNORM, RGBA8_SNORM, RGB1, L, VT__),
PAN_V7(R8G8B8X8_SRGB, RGBA8_UNORM, RGB1, S, VTR_),
PAN_V7(R8G8B8X8_UINT, RGBA8UI, RGB1, L, VTR_),
PAN_V7(R8G8B8X8_SINT, RGBA8I, RGB1, L, VTR_),
PAN_V7(L8_UNORM, R8_UNORM, RRR1, L, VTR_),
PAN_V7(A8_UNORM, A8_UNORM, 000A, L, VTR_),
PAN_V7(I8_UNORM, R8_UNORM, RRRR, L, VTR_),
PAN_V7(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_),
PAN_V7(L16_UNORM, R16_UNORM, RRR1, L, VTR_),
/* A16_UNORM dropped on v7 */
PAN_V7(I16_UNORM, R16_UNORM, RRRR, L, VTR_),
PAN_V7(L8_SNORM, R8_SNORM, RRR1, L, VT__),
/* A8_SNORM dropped on v7 */
PAN_V7(I8_SNORM, R8_SNORM, RRRR, L, VT__),
PAN_V7(L16_SNORM, R16_SNORM, RRR1, L, VT__),
/* A16_SNORM dropped on v7 */
PAN_V7(I16_SNORM, R16_SNORM, RRRR, L, VT__),
PAN_V7(L16_FLOAT, R16F, RRR1, L, VTR_),
/* A16_FLOAT dropped on v7 */
PAN_V7(I16_FLOAT, RG16F, RRRR, L, VTR_),
PAN_V7(L8_SRGB, R8_UNORM, RRR1, S, VTR_),
PAN_V7(R8_SRGB, R8_UNORM, RGB1, S, VTR_),
PAN_V7(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_),
PAN_V7(R8G8_SRGB, RG8_UNORM, RGB1, S, VTR_),
PAN_V7(R8G8B8_SRGB, RGB8_UNORM, RGB1, S, VTR_),
PAN_V7(B8G8R8_SRGB, RGB8_UNORM, BGR1, S, VTR_),
PAN_V7(R8G8B8A8_SRGB, RGBA8_UNORM, RGBA, S, VTR_),
PAN_V7(A8B8G8R8_SRGB, RGBA8_UNORM, ABGR, S, VTR_),
PAN_V7(X8B8G8R8_SRGB, RGBA8_UNORM, 1BGR, S, VTR_),
PAN_V7(B8G8R8A8_SRGB, RGBA8_UNORM, BGRA, S, VTR_),
PAN_V7(B8G8R8X8_SRGB, RGBA8_UNORM, BGR1, S, VTR_),
PAN_V7(A8R8G8B8_SRGB, RGBA8_UNORM, ARGB, S, VTR_),
PAN_V7(X8R8G8B8_SRGB, RGBA8_UNORM, 1RGB, S, VTR_),
PAN_V7(R8_SINT, R8I, RGB1, L, VTR_),
PAN_V7(R16_SINT, R16I, RGB1, L, VTR_),
PAN_V7(R32_SINT, R32I, RGB1, L, VTR_),
PAN_V7(R16_FLOAT, R16F, RGB1, L, VTR_),
PAN_V7(R8G8_SINT, RG8I, RGB1, L, VTR_),
PAN_V7(R16G16_SINT, RG16I, RGB1, L, VTR_),
PAN_V7(R32G32_SINT, RG32I, RGB1, L, VTR_),
PAN_V7(R16G16_FLOAT, RG16F, RGB1, L, VTR_),
PAN_V7(R8G8B8_SINT, RGB8I, RGB1, L, VTR_),
PAN_V7(R16G16B16_SINT, RGB16I, RGB1, L, VTR_),
PAN_V7(R32G32B32_SINT, RGB32I, RGB1, L, VTR_),
PAN_V7(R16G16B16_FLOAT, RGB16F, RGB1, L, VTR_),
PAN_V7(R8G8B8A8_SINT, RGBA8I, RGBA, L, VTR_),
PAN_V7(R16G16B16A16_SINT, RGBA16I, RGBA, L, VTR_),
PAN_V7(R32G32B32A32_SINT, RGBA32I, RGBA, L, VTR_),
PAN_V7(R16G16B16A16_FLOAT, RGBA16F, RGBA, L, VTR_),
PAN_V7(R16G16B16X16_UNORM, RGBA16_UNORM, RGB1, L, VTR_),
PAN_V7(R16G16B16X16_SNORM, RGBA16_SNORM, RGB1, L, VT__),
PAN_V7(R16G16B16X16_FLOAT, RGBA16F, RGB1, L, VTR_),
PAN_V7(R16G16B16X16_UINT, RGBA16UI, RGB1, L, VTR_),
PAN_V7(R16G16B16X16_SINT, RGBA16I, RGB1, L, VTR_),
PAN_V7(R32G32B32X32_FLOAT, RGBA32F, RGB1, L, VTR_),
PAN_V7(R32G32B32X32_UINT, RGBA32UI, RGB1, L, VTR_),
PAN_V7(R32G32B32X32_SINT, RGBA32I, RGB1, L, VTR_),
};
/* Translate a PIPE swizzle quad to a 12-bit Mali swizzle code. PIPE
* swizzles line up with Mali swizzles for the XYZW01, but PIPE swizzles have

View File

@ -35,6 +35,7 @@
#include "pan_device.h"
#include "panfrost-quirks.h"
#include "pan_bo.h"
#include "pan_texture.h"
/* Abstraction over the raw drm_panfrost_get_param ioctl for fetching
* information about devices */
@ -210,6 +211,11 @@ panfrost_open_device(void *memctx, int fd, struct panfrost_device *dev)
dev->quirks = panfrost_get_quirks(dev->gpu_id);
dev->compressed_formats = panfrost_query_compressed_formats(fd);
if (dev->quirks & HAS_SWIZZLES)
dev->formats = panfrost_pipe_format_v6;
else
dev->formats = panfrost_pipe_format_v7;
util_sparse_array_init(&dev->bo_map, sizeof(struct panfrost_bo), 512);
pthread_mutex_init(&dev->bo_cache.lock, NULL);

View File

@ -339,27 +339,16 @@ panfrost_new_texture(
unsigned bytes_per_pixel = util_format_get_blocksize(format);
enum mali_format mali_format = panfrost_pipe_format_table[desc->format].hw;
assert(mali_format);
bool manual_stride = (modifier == DRM_FORMAT_MOD_LINEAR)
&& panfrost_needs_explicit_stride(slices, width,
first_level, last_level, bytes_per_pixel);
unsigned format_swizzle = (format == PIPE_FORMAT_X24S8_UINT) ?
MALI_SWIZZLE_A001 :
(format == PIPE_FORMAT_S8_UINT) ?
MALI_SWIZZLE_R001 :
panfrost_translate_swizzle_4(desc->swizzle);
bool srgb = (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB);
pan_pack(out, MIDGARD_TEXTURE, cfg) {
cfg.width = u_minify(width, first_level);
cfg.height = u_minify(height, first_level);
cfg.depth = u_minify(depth, first_level);
cfg.array_size = array_size;
cfg.format = format_swizzle | (mali_format << 12) | (srgb << 20);
cfg.format = panfrost_pipe_format_v6[format].hw;
cfg.dimension = dim;
cfg.texel_ordering = panfrost_modifier_to_layout(modifier);
cfg.manual_stride = manual_stride;
@ -403,9 +392,6 @@ panfrost_new_texture_bifrost(
const struct util_format_description *desc =
util_format_description(format);
enum mali_format mali_format = panfrost_pipe_format_table[desc->format].hw;
assert(mali_format);
panfrost_emit_texture_payload(
payload->cpu,
desc,
@ -420,16 +406,9 @@ panfrost_new_texture_bifrost(
base,
slices);
bool srgb = (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB);
bool swap_rb = desc->swizzle[0] == 2 && desc->swizzle[2] == 0;
pan_pack(out, BIFROST_TEXTURE, cfg) {
cfg.dimension = dim;
cfg.format = (mali_format << 12) | (srgb << 20);
if (dev->quirks & HAS_SWIZZLES)
cfg.format |= panfrost_get_default_swizzle(desc->nr_channels);
else if (swap_rb)
cfg.format |= MALI_RGB_COMPONENT_ORDER_BGRA;
cfg.format = dev->formats[format].hw;
cfg.width = u_minify(width, first_level);
cfg.height = u_minify(height, first_level);

View File

@ -138,11 +138,6 @@ panfrost_texture_offset(struct panfrost_slice *slices, bool is_3d, unsigned cube
/* Formats */
struct panfrost_format {
enum mali_format hw;
unsigned bind;
};
struct pan_blendable_format {
enum mali_color_buffer_internal_format internal;
enum mali_mfbd_color_format writeback;
@ -151,7 +146,8 @@ struct pan_blendable_format {
struct pan_blendable_format
panfrost_blend_format(enum pipe_format format);
extern struct panfrost_format panfrost_pipe_format_table[PIPE_FORMAT_COUNT];
extern const struct panfrost_format panfrost_pipe_format_v6[PIPE_FORMAT_COUNT];
extern const struct panfrost_format panfrost_pipe_format_v7[PIPE_FORMAT_COUNT];
enum mali_z_internal_format
panfrost_get_z_internal_format(enum pipe_format fmt);
@ -162,6 +158,14 @@ panfrost_translate_swizzle_4(const unsigned char swizzle[4]);
void
panfrost_invert_swizzle(const unsigned char *in, unsigned char *out);
/* Helpers to construct swizzles */
#define PAN_V6_SWIZZLE(R, G, B, A) ( \
((MALI_CHANNEL_ ## R) << 0) | \
((MALI_CHANNEL_ ## G) << 3) | \
((MALI_CHANNEL_ ## B) << 6) | \
((MALI_CHANNEL_ ## A) << 9))
static inline unsigned
panfrost_get_default_swizzle(unsigned components)
{