Path: blob/21.2-virgl/src/panfrost/lib/pan_format.c
4560 views
/*1* Copyright (C) 2019 Collabora, Ltd.2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* the rights to use, copy, modify, merge, publish, distribute, sublicense,7* and/or sell copies of the Software, and to permit persons to whom the8* Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL17* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,19* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE20* SOFTWARE.21*22* Authors:23* Alyssa Rosenzweig <[email protected]>24*/2526#include "gen_macros.h"27#include "midgard_pack.h"28#include "pan_format.h"29#include "util/format/u_format.h"3031/* Convenience */3233#define MALI_BLEND_AU_R8G8B8A8 (MALI_RGBA8_TB << 12)34#define MALI_BLEND_PU_R8G8B8A8 (MALI_RGBA8_TB << 12)35#define MALI_BLEND_AU_R10G10B10A2 (MALI_RGB10_A2_TB << 12)36#define MALI_BLEND_PU_R10G10B10A2 (MALI_RGB10_A2_TB << 12)37#define MALI_BLEND_AU_R8G8B8A2 (MALI_RGB8_A2_AU << 12)38#define MALI_BLEND_PU_R8G8B8A2 (MALI_RGB8_A2_PU << 12)39#define MALI_BLEND_AU_R4G4B4A4 (MALI_RGBA4_AU << 12)40#define MALI_BLEND_PU_R4G4B4A4 (MALI_RGBA4_PU << 12)41#define MALI_BLEND_AU_R5G6B5A0 (MALI_R5G6B5_AU << 12)42#define MALI_BLEND_PU_R5G6B5A0 (MALI_R5G6B5_PU << 12)43#define MALI_BLEND_AU_R5G5B5A1 (MALI_RGB5_A1_AU << 12)44#define MALI_BLEND_PU_R5G5B5A1 (MALI_RGB5_A1_PU << 12)4546#if PAN_ARCH <= 647#define BFMT2(pipe, internal, writeback, srgb) \48[PIPE_FORMAT_##pipe] = { \49MALI_COLOR_BUFFER_INTERNAL_FORMAT_## internal, \50MALI_MFBD_COLOR_FORMAT_## writeback, \51MALI_BLEND_AU_ ## internal | (srgb ? (1 << 20) : 0) | \52PAN_V6_SWIZZLE(R, G, B, A) \53}54#else55#define BFMT2(pipe, internal, writeback, srgb) \56[PIPE_FORMAT_##pipe] = { \57MALI_COLOR_BUFFER_INTERNAL_FORMAT_## internal, \58MALI_MFBD_COLOR_FORMAT_## writeback, \59MALI_BLEND_AU_ ## internal | (srgb ? (1 << 20) : 0) \60}61#endif6263#define BFMT(pipe, internal_and_writeback) \64BFMT2(pipe, internal_and_writeback, internal_and_writeback, 0)6566#define BFMT_SRGB(pipe, writeback) \67BFMT2(pipe ##_UNORM, R8G8B8A8, writeback, 0), \68BFMT2(pipe ##_SRGB, R8G8B8A8, writeback, 1)6970const struct pan_blendable_format71GENX(panfrost_blendable_formats)[PIPE_FORMAT_COUNT] = {72BFMT_SRGB(L8, R8),73BFMT_SRGB(L8A8, R8G8),74BFMT_SRGB(R8, R8),75BFMT_SRGB(R8G8, R8G8),76BFMT_SRGB(R8G8B8, R8G8B8),7778BFMT_SRGB(B8G8R8A8, R8G8B8A8),79BFMT_SRGB(B8G8R8X8, R8G8B8A8),80BFMT_SRGB(A8R8G8B8, R8G8B8A8),81BFMT_SRGB(X8R8G8B8, R8G8B8A8),82BFMT_SRGB(A8B8G8R8, R8G8B8A8),83BFMT_SRGB(X8B8G8R8, R8G8B8A8),84BFMT_SRGB(R8G8B8X8, R8G8B8A8),85BFMT_SRGB(R8G8B8A8, R8G8B8A8),8687BFMT2(A8_UNORM, R8G8B8A8, R8, 0),88BFMT2(I8_UNORM, R8G8B8A8, R8, 0),89BFMT2(B5G6R5_UNORM, R5G6B5A0, R5G6B5, 0),9091BFMT(A4B4G4R4_UNORM, R4G4B4A4),92BFMT(B4G4R4A4_UNORM, R4G4B4A4),93BFMT(R4G4B4A4_UNORM, R4G4B4A4),9495BFMT(R10G10B10A2_UNORM, R10G10B10A2),96BFMT(B10G10R10A2_UNORM, R10G10B10A2),97BFMT(R10G10B10X2_UNORM, R10G10B10A2),98BFMT(B10G10R10X2_UNORM, R10G10B10A2),99100BFMT(B5G5R5A1_UNORM, R5G5B5A1),101BFMT(R5G5B5A1_UNORM, R5G5B5A1),102BFMT(B5G5R5X1_UNORM, R5G5B5A1),103};104105/* Convenience */106107#define _V PIPE_BIND_VERTEX_BUFFER108#define _T PIPE_BIND_SAMPLER_VIEW109#define _R PIPE_BIND_RENDER_TARGET110#define _Z PIPE_BIND_DEPTH_STENCIL111112#define FLAGS_V___ (_V)113#define FLAGS__T__ (_T)114#define FLAGS_VTR_ (_V | _T | _R)115#define FLAGS_VT__ (_V | _T)116#define FLAGS__T_Z (_T | _Z)117118#define SRGB_L (0)119#define SRGB_S (1)120121#if PAN_ARCH <= 6122#define V6_0000 PAN_V6_SWIZZLE(0, 0, 0, 0)123#define V6_000R PAN_V6_SWIZZLE(0, 0, 0, R)124#define V6_0R00 PAN_V6_SWIZZLE(0, R, 0, 0)125#define V6_0A00 PAN_V6_SWIZZLE(0, A, 0, 0)126#define V6_AAAA PAN_V6_SWIZZLE(A, A, A, A)127#define V6_A001 PAN_V6_SWIZZLE(A, 0, 0, 1)128#define V6_ABG1 PAN_V6_SWIZZLE(A, B, G, 1)129#define V6_ABGR PAN_V6_SWIZZLE(A, B, G, R)130#define V6_BGR1 PAN_V6_SWIZZLE(B, G, R, 1)131#define V6_BGRA PAN_V6_SWIZZLE(B, G, R, A)132#define V6_GBA1 PAN_V6_SWIZZLE(G, B, A, 1)133#define V6_GBAR PAN_V6_SWIZZLE(G, B, A, R)134#define V6_R000 PAN_V6_SWIZZLE(R, 0, 0, 0)135#define V6_R001 PAN_V6_SWIZZLE(R, 0, 0, 1)136#define V6_RG01 PAN_V6_SWIZZLE(R, G, 0, 1)137#define V6_RGB1 PAN_V6_SWIZZLE(R, G, B, 1)138#define V6_RGBA PAN_V6_SWIZZLE(R, G, B, A)139#define V6_RRR1 PAN_V6_SWIZZLE(R, R, R, 1)140#define V6_RRRG PAN_V6_SWIZZLE(R, R, R, G)141#define V6_RRRR PAN_V6_SWIZZLE(R, R, R, R)142143#define FMT(pipe, mali, swizzle, srgb, flags) \144[PIPE_FORMAT_ ## pipe] = { \145.hw = ( V6_ ## swizzle ) | \146(( MALI_ ## mali ) << 12) | \147((( SRGB_ ## srgb)) << 20), \148.bind = FLAGS_ ## flags \149}150#else151152#define MALI_RGB_COMPONENT_ORDER_R001 MALI_RGB_COMPONENT_ORDER_RGB1153#define MALI_RGB_COMPONENT_ORDER_RG01 MALI_RGB_COMPONENT_ORDER_RGB1154#define MALI_RGB_COMPONENT_ORDER_GBAR MALI_RGB_COMPONENT_ORDER_ARGB155#define MALI_RGB_COMPONENT_ORDER_GBA1 MALI_RGB_COMPONENT_ORDER_1RGB156#define MALI_RGB_COMPONENT_ORDER_ABG1 MALI_RGB_COMPONENT_ORDER_1BGR157158#define FMT(pipe, mali, swizzle, srgb, flags) \159[PIPE_FORMAT_ ## pipe] = { \160.hw = ( MALI_RGB_COMPONENT_ORDER_ ## swizzle ) | \161(( MALI_ ## mali ) << 12) | \162((( SRGB_ ## srgb)) << 20), \163.bind = FLAGS_ ## flags \164}165#endif166167const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {168FMT(NONE, CONSTANT, 0000, L, VTR_),169FMT(ETC1_RGB8, ETC2_RGB8, RGB1, L, _T__),170FMT(ETC2_RGB8, ETC2_RGB8, RGB1, L, _T__),171FMT(ETC2_SRGB8, ETC2_RGB8, RGB1, S, _T__),172FMT(ETC2_R11_UNORM, ETC2_R11_UNORM, R001, L, _T__),173FMT(ETC2_RGBA8, ETC2_RGBA8, RGBA, L, _T__),174FMT(ETC2_SRGBA8, ETC2_RGBA8, RGBA, S, _T__),175FMT(ETC2_RG11_UNORM, ETC2_RG11_UNORM, RG01, L, _T__),176FMT(ETC2_R11_SNORM, ETC2_R11_SNORM, R001, L, _T__),177FMT(ETC2_RG11_SNORM, ETC2_RG11_SNORM, RG01, L, _T__),178FMT(ETC2_RGB8A1, ETC2_RGB8A1, RGBA, L, _T__),179FMT(ETC2_SRGB8A1, ETC2_RGB8A1, RGBA, S, _T__),180FMT(DXT1_RGB, BC1_UNORM, RGB1, L, _T__),181FMT(DXT1_RGBA, BC1_UNORM, RGBA, L, _T__),182FMT(DXT1_SRGB, BC1_UNORM, RGB1, S, _T__),183FMT(DXT1_SRGBA, BC1_UNORM, RGBA, S, _T__),184FMT(DXT3_RGBA, BC2_UNORM, RGBA, L, _T__),185FMT(DXT3_SRGBA, BC2_UNORM, RGBA, S, _T__),186FMT(DXT5_RGBA, BC3_UNORM, RGBA, L, _T__),187FMT(DXT5_SRGBA, BC3_UNORM, RGBA, S, _T__),188FMT(RGTC1_UNORM, BC4_UNORM, R001, L, _T__),189FMT(RGTC1_SNORM, BC4_SNORM, R001, L, _T__),190FMT(RGTC2_UNORM, BC5_UNORM, RG01, L, _T__),191FMT(RGTC2_SNORM, BC5_SNORM, RG01, L, _T__),192FMT(BPTC_RGB_FLOAT, BC6H_SF16, RGB1, L, _T__),193FMT(BPTC_RGB_UFLOAT, BC6H_UF16, RGB1, L, _T__),194FMT(BPTC_RGBA_UNORM, BC7_UNORM, RGBA, L, _T__),195FMT(BPTC_SRGBA, BC7_UNORM, RGBA, S, _T__),196FMT(ASTC_4x4, ASTC_2D_HDR, RGBA, L, _T__),197FMT(ASTC_5x4, ASTC_2D_HDR, RGBA, L, _T__),198FMT(ASTC_5x5, ASTC_2D_HDR, RGBA, L, _T__),199FMT(ASTC_6x5, ASTC_2D_HDR, RGBA, L, _T__),200FMT(ASTC_6x6, ASTC_2D_HDR, RGBA, L, _T__),201FMT(ASTC_8x5, ASTC_2D_HDR, RGBA, L, _T__),202FMT(ASTC_8x6, ASTC_2D_HDR, RGBA, L, _T__),203FMT(ASTC_8x8, ASTC_2D_HDR, RGBA, L, _T__),204FMT(ASTC_10x5, ASTC_2D_HDR, RGBA, L, _T__),205FMT(ASTC_10x6, ASTC_2D_HDR, RGBA, L, _T__),206FMT(ASTC_10x8, ASTC_2D_HDR, RGBA, L, _T__),207FMT(ASTC_10x10, ASTC_2D_HDR, RGBA, L, _T__),208FMT(ASTC_12x10, ASTC_2D_HDR, RGBA, L, _T__),209FMT(ASTC_12x12, ASTC_2D_HDR, RGBA, L, _T__),210FMT(ASTC_4x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__),211FMT(ASTC_5x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__),212FMT(ASTC_5x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),213FMT(ASTC_6x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),214FMT(ASTC_6x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),215FMT(ASTC_8x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),216FMT(ASTC_8x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),217FMT(ASTC_8x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__),218FMT(ASTC_10x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__),219FMT(ASTC_10x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__),220FMT(ASTC_10x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__),221FMT(ASTC_10x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__),222FMT(ASTC_12x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__),223FMT(ASTC_12x12_SRGB, ASTC_2D_LDR, RGBA, S, _T__),224FMT(R5G6B5_UNORM, RGB565, RGB1, L, VTR_),225FMT(B5G6R5_UNORM, RGB565, BGR1, L, VTR_),226FMT(R5G5B5X1_UNORM, RGB5_A1_UNORM, RGB1, L, VT__),227FMT(B5G5R5X1_UNORM, RGB5_A1_UNORM, BGR1, L, VT__),228FMT(R5G5B5A1_UNORM, RGB5_A1_UNORM, RGBA, L, VTR_),229FMT(B5G5R5A1_UNORM, RGB5_A1_UNORM, BGRA, L, VTR_),230FMT(R10G10B10X2_UNORM, RGB10_A2_UNORM, RGB1, L, VTR_),231FMT(B10G10R10X2_UNORM, RGB10_A2_UNORM, BGR1, L, VTR_),232FMT(R10G10B10A2_UNORM, RGB10_A2_UNORM, RGBA, L, VTR_),233FMT(B10G10R10A2_UNORM, RGB10_A2_UNORM, BGRA, L, VTR_),234FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, VT__),235FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, VT__),236FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, VT__),237FMT(R10G10B10A2_UINT, RGB10_A2UI, RGBA, L, VTR_),238FMT(B10G10R10A2_UINT, RGB10_A2UI, BGRA, L, VTR_),239FMT(R10G10B10A2_USCALED, RGB10_A2UI, RGBA, L, VTR_),240FMT(B10G10R10A2_USCALED, RGB10_A2UI, BGRA, L, VTR_),241FMT(R10G10B10A2_SINT, RGB10_A2I, RGBA, L, VTR_),242FMT(B10G10R10A2_SINT, RGB10_A2I, BGRA, L, VTR_),243FMT(R10G10B10A2_SSCALED, RGB10_A2I, RGBA, L, VTR_),244FMT(B10G10R10A2_SSCALED, RGB10_A2I, BGRA, L, VTR_),245FMT(R8_SSCALED, R8I, R001, L, V___),246FMT(R8G8_SSCALED, RG8I, RG01, L, V___),247FMT(R8G8B8_SSCALED, RGB8I, RGB1, L, V___),248FMT(B8G8R8_SSCALED, RGB8I, BGR1, L, V___),249FMT(R8G8B8A8_SSCALED, RGBA8I, RGBA, L, V___),250FMT(B8G8R8A8_SSCALED, RGBA8I, BGRA, L, V___),251FMT(A8B8G8R8_SSCALED, RGBA8I, ABGR, L, V___),252FMT(R8_USCALED, R8UI, R001, L, V___),253FMT(R8G8_USCALED, RG8UI, RG01, L, V___),254FMT(R8G8B8_USCALED, RGB8UI, RGB1, L, V___),255FMT(B8G8R8_USCALED, RGB8UI, BGR1, L, V___),256FMT(R8G8B8A8_USCALED, RGBA8UI, RGBA, L, V___),257FMT(B8G8R8A8_USCALED, RGBA8UI, BGRA, L, V___),258FMT(A8B8G8R8_USCALED, RGBA8UI, ABGR, L, V___),259FMT(R16_USCALED, R16UI, R001, L, V___),260FMT(R16G16_USCALED, RG16UI, RG01, L, V___),261FMT(R16G16B16_USCALED, RGB16UI, RGB1, L, V___),262FMT(R16G16B16A16_USCALED, RGBA16UI, RGBA, L, V___),263FMT(R16_SSCALED, R16I, R001, L, V___),264FMT(R16G16_SSCALED, RG16I, RG01, L, V___),265FMT(R16G16B16_SSCALED, RGB16I, RGB1, L, V___),266FMT(R16G16B16A16_SSCALED, RGBA16I, RGBA, L, V___),267FMT(R32_USCALED, R32UI, R001, L, V___),268FMT(R32G32_USCALED, RG32UI, RG01, L, V___),269FMT(R32G32B32_USCALED, RGB32UI, RGB1, L, V___),270FMT(R32G32B32A32_USCALED, RGBA32UI, RGBA, L, V___),271FMT(R32_SSCALED, R32I, R001, L, V___),272FMT(R32G32_SSCALED, RG32I, RG01, L, V___),273FMT(R32G32B32_SSCALED, RGB32I, RGB1, L, V___),274FMT(R32G32B32A32_SSCALED, RGBA32I, RGBA, L, V___),275FMT(R3G3B2_UNORM, RGB332_UNORM, RGB1, L, VT__),276FMT(R32_FIXED, R32_FIXED, R001, L, V___),277FMT(R32G32_FIXED, RG32_FIXED, RG01, L, V___),278FMT(R32G32B32_FIXED, RGB32_FIXED, RGB1, L, V___),279FMT(R32G32B32A32_FIXED, RGBA32_FIXED, RGBA, L, V___),280FMT(R11G11B10_FLOAT, R11F_G11F_B10F, RGB1, L, VTR_),281FMT(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, VT__),282FMT(R8_SNORM, R8_SNORM, R001, L, VT__),283FMT(R16_SNORM, R16_SNORM, R001, L, VT__),284FMT(R32_SNORM, R32_SNORM, R001, L, VT__),285FMT(R8G8_SNORM, RG8_SNORM, RG01, L, VT__),286FMT(R16G16_SNORM, RG16_SNORM, RG01, L, VT__),287FMT(R32G32_SNORM, RG32_SNORM, RG01, L, VT__),288FMT(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VT__),289FMT(R16G16B16_SNORM, RGB16_SNORM, RGB1, L, VT__),290FMT(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, VT__),291FMT(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VT__),292FMT(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VT__),293FMT(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, VT__),294FMT(I8_SINT, R8I, RRRR, L, VTR_),295FMT(L8_SINT, R8I, RRR1, L, VTR_),296FMT(I8_UINT, R8UI, RRRR, L, VTR_),297FMT(L8_UINT, R8UI, RRR1, L, VTR_),298FMT(I16_SINT, R16I, RRRR, L, VTR_),299FMT(L16_SINT, R16I, RRR1, L, VTR_),300FMT(I16_UINT, R16UI, RRRR, L, VTR_),301FMT(L16_UINT, R16UI, RRR1, L, VTR_),302FMT(I32_SINT, R32I, RRRR, L, VTR_),303FMT(L32_SINT, R32I, RRR1, L, VTR_),304FMT(I32_UINT, R32UI, RRRR, L, VTR_),305FMT(L32_UINT, R32UI, RRR1, L, VTR_),306FMT(B8G8R8_UINT, RGB8UI, BGR1, L, VTR_),307FMT(B8G8R8A8_UINT, RGBA8UI, BGRA, L, VTR_),308FMT(B8G8R8_SINT, RGB8I, BGR1, L, VTR_),309FMT(B8G8R8A8_SINT, RGBA8I, BGRA, L, VTR_),310FMT(A8R8G8B8_UINT, RGBA8UI, GBAR, L, VTR_),311FMT(A8B8G8R8_UINT, RGBA8UI, ABGR, L, VTR_),312FMT(R8_UINT, R8UI, R001, L, VTR_),313FMT(R16_UINT, R16UI, R001, L, VTR_),314FMT(R32_UINT, R32UI, R001, L, VTR_),315FMT(R8G8_UINT, RG8UI, RG01, L, VTR_),316FMT(R16G16_UINT, RG16UI, RG01, L, VTR_),317FMT(R32G32_UINT, RG32UI, RG01, L, VTR_),318FMT(R8G8B8_UINT, RGB8UI, RGB1, L, VTR_),319FMT(R16G16B16_UINT, RGB16UI, RGB1, L, VTR_),320FMT(R32G32B32_UINT, RGB32UI, RGB1, L, VTR_),321FMT(R8G8B8A8_UINT, RGBA8UI, RGBA, L, VTR_),322FMT(R16G16B16A16_UINT, RGBA16UI, RGBA, L, VTR_),323FMT(R32G32B32A32_UINT, RGBA32UI, RGBA, L, VTR_),324FMT(R32_FLOAT, R32F, R001, L, VTR_),325FMT(R32G32_FLOAT, RG32F, RG01, L, VTR_),326FMT(R32G32B32_FLOAT, RGB32F, RGB1, L, VTR_),327FMT(R32G32B32A32_FLOAT, RGBA32F, RGBA, L, VTR_),328FMT(R8_UNORM, R8_UNORM, R001, L, VTR_),329FMT(R16_UNORM, R16_UNORM, R001, L, VT__),330FMT(R32_UNORM, R32_UNORM, R001, L, VT__),331FMT(R8G8_UNORM, RG8_UNORM, RG01, L, VTR_),332FMT(R16G16_UNORM, RG16_UNORM, RG01, L, VT__),333FMT(R32G32_UNORM, RG32_UNORM, RG01, L, VT__),334FMT(R8G8B8_UNORM, RGB8_UNORM, RGB1, L, VTR_),335FMT(R16G16B16_UNORM, RGB16_UNORM, RGB1, L, VT__),336FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, VT__),337FMT(R4G4B4A4_UNORM, RGBA4_UNORM, RGBA, L, VTR_),338FMT(B4G4R4A4_UNORM, RGBA4_UNORM, BGRA, L, VTR_),339FMT(R16G16B16A16_UNORM, RGBA16_UNORM, RGBA, L, VT__),340FMT(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, VT__),341FMT(B8G8R8A8_UNORM, RGBA8_UNORM, BGRA, L, VTR_),342FMT(B8G8R8X8_UNORM, RGBA8_UNORM, BGR1, L, VTR_),343FMT(A8R8G8B8_UNORM, RGBA8_UNORM, GBAR, L, VTR_),344FMT(X8R8G8B8_UNORM, RGBA8_UNORM, GBA1, L, VTR_),345FMT(A8B8G8R8_UNORM, RGBA8_UNORM, ABGR, L, VTR_),346FMT(X8B8G8R8_UNORM, RGBA8_UNORM, ABG1, L, VTR_),347FMT(R8G8B8X8_UNORM, RGBA8_UNORM, RGB1, L, VTR_),348FMT(R8G8B8A8_UNORM, RGBA8_UNORM, RGBA, L, VTR_),349FMT(R8G8B8X8_SNORM, RGBA8_SNORM, RGB1, L, VT__),350FMT(R8G8B8X8_SRGB, RGBA8_UNORM, RGB1, S, VTR_),351FMT(R8G8B8X8_UINT, RGBA8UI, RGB1, L, VTR_),352FMT(R8G8B8X8_SINT, RGBA8I, RGB1, L, VTR_),353FMT(L8_UNORM, R8_UNORM, RRR1, L, VTR_),354FMT(I8_UNORM, R8_UNORM, RRRR, L, VTR_),355FMT(L16_UNORM, R16_UNORM, RRR1, L, VT__),356FMT(I16_UNORM, R16_UNORM, RRRR, L, VT__),357FMT(L8_SNORM, R8_SNORM, RRR1, L, VT__),358FMT(I8_SNORM, R8_SNORM, RRRR, L, VT__),359FMT(L16_SNORM, R16_SNORM, RRR1, L, VT__),360FMT(I16_SNORM, R16_SNORM, RRRR, L, VT__),361FMT(L16_FLOAT, R16F, RRR1, L, VTR_),362FMT(I16_FLOAT, RG16F, RRRR, L, VTR_),363FMT(L8_SRGB, R8_UNORM, RRR1, S, VTR_),364FMT(R8_SRGB, R8_UNORM, R001, S, VTR_),365FMT(R8G8_SRGB, RG8_UNORM, RG01, S, VTR_),366FMT(R8G8B8_SRGB, RGB8_UNORM, RGB1, S, VTR_),367FMT(B8G8R8_SRGB, RGB8_UNORM, BGR1, S, VTR_),368FMT(R8G8B8A8_SRGB, RGBA8_UNORM, RGBA, S, VTR_),369FMT(A8B8G8R8_SRGB, RGBA8_UNORM, ABGR, S, VTR_),370FMT(X8B8G8R8_SRGB, RGBA8_UNORM, ABG1, S, VTR_),371FMT(B8G8R8A8_SRGB, RGBA8_UNORM, BGRA, S, VTR_),372FMT(B8G8R8X8_SRGB, RGBA8_UNORM, BGR1, S, VTR_),373FMT(A8R8G8B8_SRGB, RGBA8_UNORM, GBAR, S, VTR_),374FMT(X8R8G8B8_SRGB, RGBA8_UNORM, GBA1, S, VTR_),375FMT(R8_SINT, R8I, R001, L, VTR_),376FMT(R16_SINT, R16I, R001, L, VTR_),377FMT(R32_SINT, R32I, R001, L, VTR_),378FMT(R16_FLOAT, R16F, R001, L, VTR_),379FMT(R8G8_SINT, RG8I, RG01, L, VTR_),380FMT(R16G16_SINT, RG16I, RG01, L, VTR_),381FMT(R32G32_SINT, RG32I, RG01, L, VTR_),382FMT(R16G16_FLOAT, RG16F, RG01, L, VTR_),383FMT(R8G8B8_SINT, RGB8I, RGB1, L, VTR_),384FMT(R16G16B16_SINT, RGB16I, RGB1, L, VTR_),385FMT(R32G32B32_SINT, RGB32I, RGB1, L, VTR_),386FMT(R16G16B16_FLOAT, RGB16F, RGB1, L, VTR_),387FMT(R8G8B8A8_SINT, RGBA8I, RGBA, L, VTR_),388FMT(R16G16B16A16_SINT, RGBA16I, RGBA, L, VTR_),389FMT(R32G32B32A32_SINT, RGBA32I, RGBA, L, VTR_),390FMT(R16G16B16A16_FLOAT, RGBA16F, RGBA, L, VTR_),391FMT(R16G16B16X16_UNORM, RGBA16_UNORM, RGB1, L, VTR_),392FMT(R16G16B16X16_SNORM, RGBA16_SNORM, RGB1, L, VT__),393FMT(R16G16B16X16_FLOAT, RGBA16F, RGB1, L, VTR_),394FMT(R16G16B16X16_UINT, RGBA16UI, RGB1, L, VTR_),395FMT(R16G16B16X16_SINT, RGBA16I, RGB1, L, VTR_),396FMT(R32G32B32X32_FLOAT, RGBA32F, RGB1, L, VTR_),397FMT(R32G32B32X32_UINT, RGBA32UI, RGB1, L, VTR_),398FMT(R32G32B32X32_SINT, RGBA32I, RGB1, L, VTR_),399400#if PAN_ARCH <= 6401FMT(Z16_UNORM, R16_UNORM, RRRR, L, _T_Z),402FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RRRR, L, _T_Z),403FMT(Z24X8_UNORM, Z24X8_UNORM, RRRR, L, _T_Z),404FMT(Z32_FLOAT, R32F, RRRR, L, _T_Z),405FMT(Z32_FLOAT_S8X24_UINT, R32F, RRRR, L, _T_Z),406FMT(X32_S8X24_UINT, R32UI, RRRR, L, _T__),407FMT(X24S8_UINT, RGBA8UI, AAAA, L, _T_Z),408FMT(S8_UINT, R8UI, RRRR, L, _T__),409410FMT(A8_UNORM, R8_UNORM, 000R, L, VTR_),411FMT(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_),412FMT(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_),413414/* These formats were removed in v7 */415FMT(A8_SNORM, R8_SNORM, 000R, L, VT__),416FMT(A8_SINT, R8I, 000R, L, VTR_),417FMT(A8_UINT, R8UI, 000R, L, VTR_),418FMT(A16_SINT, R16I, 000R, L, VTR_),419FMT(A16_UINT, R16UI, 000R, L, VTR_),420FMT(A32_SINT, R32I, 000R, L, VTR_),421FMT(A32_UINT, R32UI, 000R, L, VTR_),422FMT(A16_UNORM, R16_UNORM, 000R, L, VT__),423FMT(A16_SNORM, R16_SNORM, 000R, L, VT__),424FMT(A16_FLOAT, R16F, 000R, L, VTR_),425426#else427FMT(Z16_UNORM, RGB332_UNORM /* XXX: Deduplicate enum */, RGBA, L, _T_Z),428FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RGBA, L, _T_Z),429FMT(Z24X8_UNORM, Z24X8_UNORM, RGBA, L, _T_Z),430FMT(Z32_FLOAT, R32F, RGBA, L, _T_Z),431FMT(Z32_FLOAT_S8X24_UINT, R32F, RGBA, L, _T_Z),432FMT(X32_S8X24_UINT, S8X24, GRBA, L, _T__),433FMT(X24S8_UINT, TILEBUFFER_NATIVE /* XXX: Deduplicate enum */, GRBA, L, _T_Z),434FMT(S8_UINT, S8, GRBA, L, _T__),435436FMT(A8_UNORM, A8_UNORM, 000A, L, VTR_),437FMT(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_),438FMT(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_),439#endif440};441442443