17ec681f3Smrg/* 27ec681f3Smrg * Copyright (C) 2019 Collabora, Ltd. 37ec681f3Smrg * 47ec681f3Smrg * Permission is hereby granted, free of charge, to any person obtaining a 57ec681f3Smrg * copy of this software and associated documentation files (the "Software"), 67ec681f3Smrg * to deal in the Software without restriction, including without limitation 77ec681f3Smrg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 87ec681f3Smrg * and/or sell copies of the Software, and to permit persons to whom the 97ec681f3Smrg * Software is furnished to do so, subject to the following conditions: 107ec681f3Smrg * 117ec681f3Smrg * The above copyright notice and this permission notice (including the next 127ec681f3Smrg * paragraph) shall be included in all copies or substantial portions of the 137ec681f3Smrg * Software. 147ec681f3Smrg * 157ec681f3Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 167ec681f3Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 177ec681f3Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 187ec681f3Smrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 197ec681f3Smrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 207ec681f3Smrg * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 217ec681f3Smrg * SOFTWARE. 227ec681f3Smrg * 237ec681f3Smrg * Authors: 247ec681f3Smrg * Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> 257ec681f3Smrg */ 267ec681f3Smrg 277ec681f3Smrg#include "genxml/gen_macros.h" 287ec681f3Smrg#include "pan_format.h" 297ec681f3Smrg#include "util/format/u_format.h" 307ec681f3Smrg 317ec681f3Smrg/* Convenience */ 327ec681f3Smrg 337ec681f3Smrg#define MALI_BLEND_AU_R8G8B8A8 (MALI_RGBA8_TB << 12) 347ec681f3Smrg#define MALI_BLEND_PU_R8G8B8A8 (MALI_RGBA8_TB << 12) 357ec681f3Smrg#define MALI_BLEND_AU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) 367ec681f3Smrg#define MALI_BLEND_PU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) 377ec681f3Smrg#define MALI_BLEND_AU_R8G8B8A2 (MALI_RGB8_A2_AU << 12) 387ec681f3Smrg#define MALI_BLEND_PU_R8G8B8A2 (MALI_RGB8_A2_PU << 12) 397ec681f3Smrg#define MALI_BLEND_AU_R4G4B4A4 (MALI_RGBA4_AU << 12) 407ec681f3Smrg#define MALI_BLEND_PU_R4G4B4A4 (MALI_RGBA4_PU << 12) 417ec681f3Smrg#define MALI_BLEND_AU_R5G6B5A0 (MALI_R5G6B5_AU << 12) 427ec681f3Smrg#define MALI_BLEND_PU_R5G6B5A0 (MALI_R5G6B5_PU << 12) 437ec681f3Smrg#define MALI_BLEND_AU_R5G5B5A1 (MALI_RGB5_A1_AU << 12) 447ec681f3Smrg#define MALI_BLEND_PU_R5G5B5A1 (MALI_RGB5_A1_PU << 12) 457ec681f3Smrg 467ec681f3Smrg#if PAN_ARCH <= 6 477ec681f3Smrg#define BFMT2(pipe, internal, writeback, srgb) \ 487ec681f3Smrg [PIPE_FORMAT_##pipe] = { \ 497ec681f3Smrg MALI_COLOR_BUFFER_INTERNAL_FORMAT_## internal, \ 507ec681f3Smrg MALI_COLOR_FORMAT_## writeback, \ 517ec681f3Smrg { MALI_BLEND_PU_ ## internal | (srgb ? (1 << 20) : 0) | \ 527ec681f3Smrg PAN_V6_SWIZZLE(R, G, B, A), \ 537ec681f3Smrg MALI_BLEND_AU_ ## internal | (srgb ? (1 << 20) : 0) | \ 547ec681f3Smrg PAN_V6_SWIZZLE(R, G, B, A) } \ 557ec681f3Smrg } 567ec681f3Smrg#else 577ec681f3Smrg#define BFMT2(pipe, internal, writeback, srgb) \ 587ec681f3Smrg [PIPE_FORMAT_##pipe] = { \ 597ec681f3Smrg MALI_COLOR_BUFFER_INTERNAL_FORMAT_## internal, \ 607ec681f3Smrg MALI_COLOR_FORMAT_## writeback, \ 617ec681f3Smrg { MALI_BLEND_PU_ ## internal | (srgb ? (1 << 20) : 0), \ 627ec681f3Smrg MALI_BLEND_AU_ ## internal | (srgb ? (1 << 20) : 0) } \ 637ec681f3Smrg } 647ec681f3Smrg#endif 657ec681f3Smrg 667ec681f3Smrg#define BFMT(pipe, internal_and_writeback) \ 677ec681f3Smrg BFMT2(pipe, internal_and_writeback, internal_and_writeback, 0) 687ec681f3Smrg 697ec681f3Smrg#define BFMT_SRGB(pipe, writeback) \ 707ec681f3Smrg BFMT2(pipe ##_UNORM, R8G8B8A8, writeback, 0), \ 717ec681f3Smrg BFMT2(pipe ##_SRGB, R8G8B8A8, writeback, 1) 727ec681f3Smrg 737ec681f3Smrgconst struct pan_blendable_format 747ec681f3SmrgGENX(panfrost_blendable_formats)[PIPE_FORMAT_COUNT] = { 757ec681f3Smrg BFMT_SRGB(L8, R8), 767ec681f3Smrg BFMT_SRGB(L8A8, R8G8), 777ec681f3Smrg BFMT_SRGB(R8, R8), 787ec681f3Smrg BFMT_SRGB(R8G8, R8G8), 797ec681f3Smrg BFMT_SRGB(R8G8B8, R8G8B8), 807ec681f3Smrg 817ec681f3Smrg BFMT_SRGB(B8G8R8A8, R8G8B8A8), 827ec681f3Smrg BFMT_SRGB(B8G8R8X8, R8G8B8A8), 837ec681f3Smrg BFMT_SRGB(A8R8G8B8, R8G8B8A8), 847ec681f3Smrg BFMT_SRGB(X8R8G8B8, R8G8B8A8), 857ec681f3Smrg BFMT_SRGB(A8B8G8R8, R8G8B8A8), 867ec681f3Smrg BFMT_SRGB(X8B8G8R8, R8G8B8A8), 877ec681f3Smrg BFMT_SRGB(R8G8B8X8, R8G8B8A8), 887ec681f3Smrg BFMT_SRGB(R8G8B8A8, R8G8B8A8), 897ec681f3Smrg 907ec681f3Smrg BFMT2(A8_UNORM, R8G8B8A8, R8, 0), 917ec681f3Smrg BFMT2(I8_UNORM, R8G8B8A8, R8, 0), 927ec681f3Smrg BFMT2(R5G6B5_UNORM, R5G6B5A0, R5G6B5, 0), 937ec681f3Smrg BFMT2(B5G6R5_UNORM, R5G6B5A0, R5G6B5, 0), 947ec681f3Smrg 957ec681f3Smrg BFMT(A4B4G4R4_UNORM, R4G4B4A4), 967ec681f3Smrg BFMT(B4G4R4A4_UNORM, R4G4B4A4), 977ec681f3Smrg BFMT(R4G4B4A4_UNORM, R4G4B4A4), 987ec681f3Smrg 997ec681f3Smrg BFMT(R10G10B10A2_UNORM, R10G10B10A2), 1007ec681f3Smrg BFMT(B10G10R10A2_UNORM, R10G10B10A2), 1017ec681f3Smrg BFMT(R10G10B10X2_UNORM, R10G10B10A2), 1027ec681f3Smrg BFMT(B10G10R10X2_UNORM, R10G10B10A2), 1037ec681f3Smrg 1047ec681f3Smrg BFMT(B5G5R5A1_UNORM, R5G5B5A1), 1057ec681f3Smrg BFMT(R5G5B5A1_UNORM, R5G5B5A1), 1067ec681f3Smrg BFMT(B5G5R5X1_UNORM, R5G5B5A1), 1077ec681f3Smrg}; 1087ec681f3Smrg 1097ec681f3Smrg/* Convenience */ 1107ec681f3Smrg 1117ec681f3Smrg#define _V PIPE_BIND_VERTEX_BUFFER 1127ec681f3Smrg#define _T PIPE_BIND_SAMPLER_VIEW 1137ec681f3Smrg#define _R PIPE_BIND_RENDER_TARGET 1147ec681f3Smrg#define _Z PIPE_BIND_DEPTH_STENCIL 1157ec681f3Smrg 1167ec681f3Smrg#define FLAGS_V___ (_V) 1177ec681f3Smrg#define FLAGS__T__ (_T) 1187ec681f3Smrg#define FLAGS_VTR_ (_V | _T | _R) 1197ec681f3Smrg#define FLAGS_VT__ (_V | _T) 1207ec681f3Smrg#define FLAGS__T_Z (_T | _Z) 1217ec681f3Smrg 1227ec681f3Smrg#define SRGB_L (0) 1237ec681f3Smrg#define SRGB_S (1) 1247ec681f3Smrg 1257ec681f3Smrg#if PAN_ARCH <= 6 1267ec681f3Smrg#define V6_0000 PAN_V6_SWIZZLE(0, 0, 0, 0) 1277ec681f3Smrg#define V6_000R PAN_V6_SWIZZLE(0, 0, 0, R) 1287ec681f3Smrg#define V6_0R00 PAN_V6_SWIZZLE(0, R, 0, 0) 1297ec681f3Smrg#define V6_0A00 PAN_V6_SWIZZLE(0, A, 0, 0) 1307ec681f3Smrg#define V6_AAAA PAN_V6_SWIZZLE(A, A, A, A) 1317ec681f3Smrg#define V6_A001 PAN_V6_SWIZZLE(A, 0, 0, 1) 1327ec681f3Smrg#define V6_ABG1 PAN_V6_SWIZZLE(A, B, G, 1) 1337ec681f3Smrg#define V6_ABGR PAN_V6_SWIZZLE(A, B, G, R) 1347ec681f3Smrg#define V6_BGR1 PAN_V6_SWIZZLE(B, G, R, 1) 1357ec681f3Smrg#define V6_BGRA PAN_V6_SWIZZLE(B, G, R, A) 1367ec681f3Smrg#define V6_GBA1 PAN_V6_SWIZZLE(G, B, A, 1) 1377ec681f3Smrg#define V6_GBAR PAN_V6_SWIZZLE(G, B, A, R) 1387ec681f3Smrg#define V6_R000 PAN_V6_SWIZZLE(R, 0, 0, 0) 1397ec681f3Smrg#define V6_R001 PAN_V6_SWIZZLE(R, 0, 0, 1) 1407ec681f3Smrg#define V6_RG01 PAN_V6_SWIZZLE(R, G, 0, 1) 1417ec681f3Smrg#define V6_RGB1 PAN_V6_SWIZZLE(R, G, B, 1) 1427ec681f3Smrg#define V6_RGBA PAN_V6_SWIZZLE(R, G, B, A) 1437ec681f3Smrg#define V6_RRR1 PAN_V6_SWIZZLE(R, R, R, 1) 1447ec681f3Smrg#define V6_RRRG PAN_V6_SWIZZLE(R, R, R, G) 1457ec681f3Smrg#define V6_RRRR PAN_V6_SWIZZLE(R, R, R, R) 1467ec681f3Smrg#define V6_GGGG PAN_V6_SWIZZLE(G, G, G, G) 1477ec681f3Smrg 1487ec681f3Smrg#define FMT(pipe, mali, swizzle, srgb, flags) \ 1497ec681f3Smrg [PIPE_FORMAT_ ## pipe] = { \ 1507ec681f3Smrg .hw = ( V6_ ## swizzle ) | \ 1517ec681f3Smrg (( MALI_ ## mali ) << 12) | \ 1527ec681f3Smrg ((( SRGB_ ## srgb)) << 20), \ 1537ec681f3Smrg .bind = FLAGS_ ## flags \ 1547ec681f3Smrg } 1557ec681f3Smrg#else 1567ec681f3Smrg 1577ec681f3Smrg#define MALI_RGB_COMPONENT_ORDER_R001 MALI_RGB_COMPONENT_ORDER_RGB1 1587ec681f3Smrg#define MALI_RGB_COMPONENT_ORDER_RG01 MALI_RGB_COMPONENT_ORDER_RGB1 1597ec681f3Smrg#define MALI_RGB_COMPONENT_ORDER_GBAR MALI_RGB_COMPONENT_ORDER_ARGB 1607ec681f3Smrg#define MALI_RGB_COMPONENT_ORDER_GBA1 MALI_RGB_COMPONENT_ORDER_1RGB 1617ec681f3Smrg#define MALI_RGB_COMPONENT_ORDER_ABG1 MALI_RGB_COMPONENT_ORDER_1BGR 1627ec681f3Smrg 1637ec681f3Smrg#define FMT(pipe, mali, swizzle, srgb, flags) \ 1647ec681f3Smrg [PIPE_FORMAT_ ## pipe] = { \ 1657ec681f3Smrg .hw = ( MALI_RGB_COMPONENT_ORDER_ ## swizzle ) | \ 1667ec681f3Smrg (( MALI_ ## mali ) << 12) | \ 1677ec681f3Smrg ((( SRGB_ ## srgb)) << 20), \ 1687ec681f3Smrg .bind = FLAGS_ ## flags \ 1697ec681f3Smrg } 1707ec681f3Smrg#endif 1717ec681f3Smrg 1727ec681f3Smrgconst struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = { 1737ec681f3Smrg FMT(NONE, CONSTANT, 0000, L, VTR_), 1747ec681f3Smrg FMT(ETC1_RGB8, ETC2_RGB8, RGB1, L, _T__), 1757ec681f3Smrg FMT(ETC2_RGB8, ETC2_RGB8, RGB1, L, _T__), 1767ec681f3Smrg FMT(ETC2_SRGB8, ETC2_RGB8, RGB1, S, _T__), 1777ec681f3Smrg FMT(ETC2_R11_UNORM, ETC2_R11_UNORM, R001, L, _T__), 1787ec681f3Smrg FMT(ETC2_RGBA8, ETC2_RGBA8, RGBA, L, _T__), 1797ec681f3Smrg FMT(ETC2_SRGBA8, ETC2_RGBA8, RGBA, S, _T__), 1807ec681f3Smrg FMT(ETC2_RG11_UNORM, ETC2_RG11_UNORM, RG01, L, _T__), 1817ec681f3Smrg FMT(ETC2_R11_SNORM, ETC2_R11_SNORM, R001, L, _T__), 1827ec681f3Smrg FMT(ETC2_RG11_SNORM, ETC2_RG11_SNORM, RG01, L, _T__), 1837ec681f3Smrg FMT(ETC2_RGB8A1, ETC2_RGB8A1, RGBA, L, _T__), 1847ec681f3Smrg FMT(ETC2_SRGB8A1, ETC2_RGB8A1, RGBA, S, _T__), 1857ec681f3Smrg FMT(DXT1_RGB, BC1_UNORM, RGB1, L, _T__), 1867ec681f3Smrg FMT(DXT1_RGBA, BC1_UNORM, RGBA, L, _T__), 1877ec681f3Smrg FMT(DXT1_SRGB, BC1_UNORM, RGB1, S, _T__), 1887ec681f3Smrg FMT(DXT1_SRGBA, BC1_UNORM, RGBA, S, _T__), 1897ec681f3Smrg FMT(DXT3_RGBA, BC2_UNORM, RGBA, L, _T__), 1907ec681f3Smrg FMT(DXT3_SRGBA, BC2_UNORM, RGBA, S, _T__), 1917ec681f3Smrg FMT(DXT5_RGBA, BC3_UNORM, RGBA, L, _T__), 1927ec681f3Smrg FMT(DXT5_SRGBA, BC3_UNORM, RGBA, S, _T__), 1937ec681f3Smrg FMT(RGTC1_UNORM, BC4_UNORM, R001, L, _T__), 1947ec681f3Smrg FMT(RGTC1_SNORM, BC4_SNORM, R001, L, _T__), 1957ec681f3Smrg FMT(RGTC2_UNORM, BC5_UNORM, RG01, L, _T__), 1967ec681f3Smrg FMT(RGTC2_SNORM, BC5_SNORM, RG01, L, _T__), 1977ec681f3Smrg FMT(BPTC_RGB_FLOAT, BC6H_SF16, RGB1, L, _T__), 1987ec681f3Smrg FMT(BPTC_RGB_UFLOAT, BC6H_UF16, RGB1, L, _T__), 1997ec681f3Smrg FMT(BPTC_RGBA_UNORM, BC7_UNORM, RGBA, L, _T__), 2007ec681f3Smrg FMT(BPTC_SRGBA, BC7_UNORM, RGBA, S, _T__), 2017ec681f3Smrg FMT(ASTC_4x4, ASTC_2D_HDR, RGBA, L, _T__), 2027ec681f3Smrg FMT(ASTC_5x4, ASTC_2D_HDR, RGBA, L, _T__), 2037ec681f3Smrg FMT(ASTC_5x5, ASTC_2D_HDR, RGBA, L, _T__), 2047ec681f3Smrg FMT(ASTC_6x5, ASTC_2D_HDR, RGBA, L, _T__), 2057ec681f3Smrg FMT(ASTC_6x6, ASTC_2D_HDR, RGBA, L, _T__), 2067ec681f3Smrg FMT(ASTC_8x5, ASTC_2D_HDR, RGBA, L, _T__), 2077ec681f3Smrg FMT(ASTC_8x6, ASTC_2D_HDR, RGBA, L, _T__), 2087ec681f3Smrg FMT(ASTC_8x8, ASTC_2D_HDR, RGBA, L, _T__), 2097ec681f3Smrg FMT(ASTC_10x5, ASTC_2D_HDR, RGBA, L, _T__), 2107ec681f3Smrg FMT(ASTC_10x6, ASTC_2D_HDR, RGBA, L, _T__), 2117ec681f3Smrg FMT(ASTC_10x8, ASTC_2D_HDR, RGBA, L, _T__), 2127ec681f3Smrg FMT(ASTC_10x10, ASTC_2D_HDR, RGBA, L, _T__), 2137ec681f3Smrg FMT(ASTC_12x10, ASTC_2D_HDR, RGBA, L, _T__), 2147ec681f3Smrg FMT(ASTC_12x12, ASTC_2D_HDR, RGBA, L, _T__), 2157ec681f3Smrg FMT(ASTC_4x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2167ec681f3Smrg FMT(ASTC_5x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2177ec681f3Smrg FMT(ASTC_5x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2187ec681f3Smrg FMT(ASTC_6x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2197ec681f3Smrg FMT(ASTC_6x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2207ec681f3Smrg FMT(ASTC_8x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2217ec681f3Smrg FMT(ASTC_8x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2227ec681f3Smrg FMT(ASTC_8x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2237ec681f3Smrg FMT(ASTC_10x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2247ec681f3Smrg FMT(ASTC_10x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2257ec681f3Smrg FMT(ASTC_10x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2267ec681f3Smrg FMT(ASTC_10x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2277ec681f3Smrg FMT(ASTC_12x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2287ec681f3Smrg FMT(ASTC_12x12_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 2297ec681f3Smrg FMT(ASTC_3x3x3, ASTC_3D_HDR, RGBA, L, _T__), 2307ec681f3Smrg FMT(ASTC_4x3x3, ASTC_3D_HDR, RGBA, L, _T__), 2317ec681f3Smrg FMT(ASTC_4x4x3, ASTC_3D_HDR, RGBA, L, _T__), 2327ec681f3Smrg FMT(ASTC_4x4x4, ASTC_3D_HDR, RGBA, L, _T__), 2337ec681f3Smrg FMT(ASTC_5x4x4, ASTC_3D_HDR, RGBA, L, _T__), 2347ec681f3Smrg FMT(ASTC_5x5x4, ASTC_3D_HDR, RGBA, L, _T__), 2357ec681f3Smrg FMT(ASTC_5x5x5, ASTC_3D_HDR, RGBA, L, _T__), 2367ec681f3Smrg FMT(ASTC_6x5x5, ASTC_3D_HDR, RGBA, L, _T__), 2377ec681f3Smrg FMT(ASTC_6x6x5, ASTC_3D_HDR, RGBA, L, _T__), 2387ec681f3Smrg FMT(ASTC_6x6x6, ASTC_3D_HDR, RGBA, L, _T__), 2397ec681f3Smrg FMT(ASTC_3x3x3_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2407ec681f3Smrg FMT(ASTC_4x3x3_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2417ec681f3Smrg FMT(ASTC_4x4x3_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2427ec681f3Smrg FMT(ASTC_4x4x4_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2437ec681f3Smrg FMT(ASTC_5x4x4_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2447ec681f3Smrg FMT(ASTC_5x5x4_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2457ec681f3Smrg FMT(ASTC_5x5x5_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2467ec681f3Smrg FMT(ASTC_6x5x5_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2477ec681f3Smrg FMT(ASTC_6x6x5_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2487ec681f3Smrg FMT(ASTC_6x6x6_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 2497ec681f3Smrg FMT(R5G6B5_UNORM, RGB565, RGB1, L, VTR_), 2507ec681f3Smrg FMT(B5G6R5_UNORM, RGB565, BGR1, L, VTR_), 2517ec681f3Smrg FMT(R5G5B5X1_UNORM, RGB5_A1_UNORM, RGB1, L, VT__), 2527ec681f3Smrg FMT(B5G5R5X1_UNORM, RGB5_A1_UNORM, BGR1, L, VT__), 2537ec681f3Smrg FMT(R5G5B5A1_UNORM, RGB5_A1_UNORM, RGBA, L, VTR_), 2547ec681f3Smrg FMT(B5G5R5A1_UNORM, RGB5_A1_UNORM, BGRA, L, VTR_), 2557ec681f3Smrg FMT(R10G10B10X2_UNORM, RGB10_A2_UNORM, RGB1, L, VTR_), 2567ec681f3Smrg FMT(B10G10R10X2_UNORM, RGB10_A2_UNORM, BGR1, L, VTR_), 2577ec681f3Smrg FMT(R10G10B10A2_UNORM, RGB10_A2_UNORM, RGBA, L, VTR_), 2587ec681f3Smrg FMT(B10G10R10A2_UNORM, RGB10_A2_UNORM, BGRA, L, VTR_), 2597ec681f3Smrg#if PAN_ARCH <= 5 2607ec681f3Smrg FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, VT__), 2617ec681f3Smrg FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, VT__), 2627ec681f3Smrg FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, VT__), 2637ec681f3Smrg FMT(R3G3B2_UNORM, RGB332_UNORM, RGB1, L, VT__), 2647ec681f3Smrg#else 2657ec681f3Smrg FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, V___), 2667ec681f3Smrg FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, V___), 2677ec681f3Smrg FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, V___), 2687ec681f3Smrg#endif 2697ec681f3Smrg FMT(R10G10B10A2_UINT, RGB10_A2UI, RGBA, L, VTR_), 2707ec681f3Smrg FMT(B10G10R10A2_UINT, RGB10_A2UI, BGRA, L, VTR_), 2717ec681f3Smrg FMT(R10G10B10A2_USCALED, RGB10_A2UI, RGBA, L, V___), 2727ec681f3Smrg FMT(B10G10R10A2_USCALED, RGB10_A2UI, BGRA, L, V___), 2737ec681f3Smrg FMT(R10G10B10A2_SINT, RGB10_A2I, RGBA, L, VTR_), 2747ec681f3Smrg FMT(B10G10R10A2_SINT, RGB10_A2I, BGRA, L, VTR_), 2757ec681f3Smrg FMT(R10G10B10A2_SSCALED, RGB10_A2I, RGBA, L, V___), 2767ec681f3Smrg FMT(B10G10R10A2_SSCALED, RGB10_A2I, BGRA, L, V___), 2777ec681f3Smrg FMT(R8_SSCALED, R8I, R001, L, V___), 2787ec681f3Smrg FMT(R8G8_SSCALED, RG8I, RG01, L, V___), 2797ec681f3Smrg FMT(R8G8B8_SSCALED, RGB8I, RGB1, L, V___), 2807ec681f3Smrg FMT(B8G8R8_SSCALED, RGB8I, BGR1, L, V___), 2817ec681f3Smrg FMT(R8G8B8A8_SSCALED, RGBA8I, RGBA, L, V___), 2827ec681f3Smrg FMT(B8G8R8A8_SSCALED, RGBA8I, BGRA, L, V___), 2837ec681f3Smrg FMT(A8B8G8R8_SSCALED, RGBA8I, ABGR, L, V___), 2847ec681f3Smrg FMT(R8_USCALED, R8UI, R001, L, V___), 2857ec681f3Smrg FMT(R8G8_USCALED, RG8UI, RG01, L, V___), 2867ec681f3Smrg FMT(R8G8B8_USCALED, RGB8UI, RGB1, L, V___), 2877ec681f3Smrg FMT(B8G8R8_USCALED, RGB8UI, BGR1, L, V___), 2887ec681f3Smrg FMT(R8G8B8A8_USCALED, RGBA8UI, RGBA, L, V___), 2897ec681f3Smrg FMT(B8G8R8A8_USCALED, RGBA8UI, BGRA, L, V___), 2907ec681f3Smrg FMT(A8B8G8R8_USCALED, RGBA8UI, ABGR, L, V___), 2917ec681f3Smrg FMT(R16_USCALED, R16UI, R001, L, V___), 2927ec681f3Smrg FMT(R16G16_USCALED, RG16UI, RG01, L, V___), 2937ec681f3Smrg FMT(R16G16B16A16_USCALED, RGBA16UI, RGBA, L, V___), 2947ec681f3Smrg FMT(R16_SSCALED, R16I, R001, L, V___), 2957ec681f3Smrg FMT(R16G16_SSCALED, RG16I, RG01, L, V___), 2967ec681f3Smrg FMT(R16G16B16A16_SSCALED, RGBA16I, RGBA, L, V___), 2977ec681f3Smrg FMT(R32_USCALED, R32UI, R001, L, V___), 2987ec681f3Smrg FMT(R32G32_USCALED, RG32UI, RG01, L, V___), 2997ec681f3Smrg FMT(R32G32B32_USCALED, RGB32UI, RGB1, L, V___), 3007ec681f3Smrg FMT(R32G32B32A32_USCALED, RGBA32UI, RGBA, L, V___), 3017ec681f3Smrg FMT(R32_SSCALED, R32I, R001, L, V___), 3027ec681f3Smrg FMT(R32G32_SSCALED, RG32I, RG01, L, V___), 3037ec681f3Smrg FMT(R32G32B32_SSCALED, RGB32I, RGB1, L, V___), 3047ec681f3Smrg FMT(R32G32B32A32_SSCALED, RGBA32I, RGBA, L, V___), 3057ec681f3Smrg FMT(R32_FIXED, R32_FIXED, R001, L, V___), 3067ec681f3Smrg FMT(R32G32_FIXED, RG32_FIXED, RG01, L, V___), 3077ec681f3Smrg FMT(R32G32B32_FIXED, RGB32_FIXED, RGB1, L, V___), 3087ec681f3Smrg FMT(R32G32B32A32_FIXED, RGBA32_FIXED, RGBA, L, V___), 3097ec681f3Smrg FMT(R11G11B10_FLOAT, R11F_G11F_B10F, RGB1, L, VTR_), 3107ec681f3Smrg FMT(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, VT__), 3117ec681f3Smrg FMT(R8_SNORM, R8_SNORM, R001, L, VT__), 3127ec681f3Smrg FMT(R16_SNORM, R16_SNORM, R001, L, VT__), 3137ec681f3Smrg FMT(R32_SNORM, R32_SNORM, R001, L, VT__), 3147ec681f3Smrg FMT(R8G8_SNORM, RG8_SNORM, RG01, L, VT__), 3157ec681f3Smrg FMT(R16G16_SNORM, RG16_SNORM, RG01, L, VT__), 3167ec681f3Smrg FMT(R32G32_SNORM, RG32_SNORM, RG01, L, VT__), 3177ec681f3Smrg FMT(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VT__), 3187ec681f3Smrg FMT(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, VT__), 3197ec681f3Smrg FMT(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VT__), 3207ec681f3Smrg FMT(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VT__), 3217ec681f3Smrg FMT(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, VT__), 3227ec681f3Smrg FMT(I8_SINT, R8I, RRRR, L, VTR_), 3237ec681f3Smrg FMT(L8_SINT, R8I, RRR1, L, VTR_), 3247ec681f3Smrg FMT(I8_UINT, R8UI, RRRR, L, VTR_), 3257ec681f3Smrg FMT(L8_UINT, R8UI, RRR1, L, VTR_), 3267ec681f3Smrg FMT(I16_SINT, R16I, RRRR, L, VTR_), 3277ec681f3Smrg FMT(L16_SINT, R16I, RRR1, L, VTR_), 3287ec681f3Smrg FMT(I16_UINT, R16UI, RRRR, L, VTR_), 3297ec681f3Smrg FMT(L16_UINT, R16UI, RRR1, L, VTR_), 3307ec681f3Smrg FMT(I32_SINT, R32I, RRRR, L, VTR_), 3317ec681f3Smrg FMT(L32_SINT, R32I, RRR1, L, VTR_), 3327ec681f3Smrg FMT(I32_UINT, R32UI, RRRR, L, VTR_), 3337ec681f3Smrg FMT(L32_UINT, R32UI, RRR1, L, VTR_), 3347ec681f3Smrg FMT(B8G8R8_UINT, RGB8UI, BGR1, L, VTR_), 3357ec681f3Smrg FMT(B8G8R8A8_UINT, RGBA8UI, BGRA, L, VTR_), 3367ec681f3Smrg FMT(B8G8R8_SINT, RGB8I, BGR1, L, VTR_), 3377ec681f3Smrg FMT(B8G8R8A8_SINT, RGBA8I, BGRA, L, VTR_), 3387ec681f3Smrg FMT(A8R8G8B8_UINT, RGBA8UI, GBAR, L, VTR_), 3397ec681f3Smrg FMT(A8B8G8R8_UINT, RGBA8UI, ABGR, L, VTR_), 3407ec681f3Smrg FMT(R8_UINT, R8UI, R001, L, VTR_), 3417ec681f3Smrg FMT(R16_UINT, R16UI, R001, L, VTR_), 3427ec681f3Smrg FMT(R32_UINT, R32UI, R001, L, VTR_), 3437ec681f3Smrg FMT(R8G8_UINT, RG8UI, RG01, L, VTR_), 3447ec681f3Smrg FMT(R16G16_UINT, RG16UI, RG01, L, VTR_), 3457ec681f3Smrg FMT(R32G32_UINT, RG32UI, RG01, L, VTR_), 3467ec681f3Smrg FMT(R8G8B8_UINT, RGB8UI, RGB1, L, VTR_), 3477ec681f3Smrg FMT(R32G32B32_UINT, RGB32UI, RGB1, L, VTR_), 3487ec681f3Smrg FMT(R8G8B8A8_UINT, RGBA8UI, RGBA, L, VTR_), 3497ec681f3Smrg FMT(R16G16B16A16_UINT, RGBA16UI, RGBA, L, VTR_), 3507ec681f3Smrg FMT(R32G32B32A32_UINT, RGBA32UI, RGBA, L, VTR_), 3517ec681f3Smrg FMT(R32_FLOAT, R32F, R001, L, VTR_), 3527ec681f3Smrg FMT(R32G32_FLOAT, RG32F, RG01, L, VTR_), 3537ec681f3Smrg FMT(R32G32B32_FLOAT, RGB32F, RGB1, L, VTR_), 3547ec681f3Smrg FMT(R32G32B32A32_FLOAT, RGBA32F, RGBA, L, VTR_), 3557ec681f3Smrg FMT(R8_UNORM, R8_UNORM, R001, L, VTR_), 3567ec681f3Smrg FMT(R16_UNORM, R16_UNORM, R001, L, VT__), 3577ec681f3Smrg FMT(R32_UNORM, R32_UNORM, R001, L, VT__), 3587ec681f3Smrg FMT(R8G8_UNORM, RG8_UNORM, RG01, L, VTR_), 3597ec681f3Smrg FMT(R16G16_UNORM, RG16_UNORM, RG01, L, VT__), 3607ec681f3Smrg FMT(R32G32_UNORM, RG32_UNORM, RG01, L, VT__), 3617ec681f3Smrg FMT(R8G8B8_UNORM, RGB8_UNORM, RGB1, L, VTR_), 3627ec681f3Smrg 3637ec681f3Smrg /* Don't allow render/texture for 48-bit */ 3647ec681f3Smrg FMT(R16G16B16_UNORM, RGB16_UNORM, RGB1, L, V___), 3657ec681f3Smrg FMT(R16G16B16_SINT, RGB16I, RGB1, L, V___), 3667ec681f3Smrg FMT(R16G16B16_FLOAT, RGB16F, RGB1, L, V___), 3677ec681f3Smrg FMT(R16G16B16_USCALED, RGB16UI, RGB1, L, V___), 3687ec681f3Smrg FMT(R16G16B16_SSCALED, RGB16I, RGB1, L, V___), 3697ec681f3Smrg FMT(R16G16B16_SNORM, RGB16_SNORM, RGB1, L, V___), 3707ec681f3Smrg FMT(R16G16B16_UINT, RGB16UI, RGB1, L, V___), 3717ec681f3Smrg 3727ec681f3Smrg#if PAN_ARCH <= 6 3737ec681f3Smrg FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, VT__), 3747ec681f3Smrg#else 3757ec681f3Smrg FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, V___), 3767ec681f3Smrg#endif 3777ec681f3Smrg FMT(R4G4B4A4_UNORM, RGBA4_UNORM, RGBA, L, VTR_), 3787ec681f3Smrg FMT(B4G4R4A4_UNORM, RGBA4_UNORM, BGRA, L, VTR_), 3797ec681f3Smrg FMT(R16G16B16A16_UNORM, RGBA16_UNORM, RGBA, L, VT__), 3807ec681f3Smrg FMT(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, VT__), 3817ec681f3Smrg FMT(B8G8R8A8_UNORM, RGBA8_UNORM, BGRA, L, VTR_), 3827ec681f3Smrg FMT(B8G8R8X8_UNORM, RGBA8_UNORM, BGR1, L, VTR_), 3837ec681f3Smrg FMT(A8R8G8B8_UNORM, RGBA8_UNORM, GBAR, L, VTR_), 3847ec681f3Smrg FMT(X8R8G8B8_UNORM, RGBA8_UNORM, GBA1, L, VTR_), 3857ec681f3Smrg FMT(A8B8G8R8_UNORM, RGBA8_UNORM, ABGR, L, VTR_), 3867ec681f3Smrg FMT(X8B8G8R8_UNORM, RGBA8_UNORM, ABG1, L, VTR_), 3877ec681f3Smrg FMT(R8G8B8X8_UNORM, RGBA8_UNORM, RGB1, L, VTR_), 3887ec681f3Smrg FMT(R8G8B8A8_UNORM, RGBA8_UNORM, RGBA, L, VTR_), 3897ec681f3Smrg FMT(R8G8B8X8_SNORM, RGBA8_SNORM, RGB1, L, VT__), 3907ec681f3Smrg FMT(R8G8B8X8_SRGB, RGBA8_UNORM, RGB1, S, VTR_), 3917ec681f3Smrg FMT(R8G8B8X8_UINT, RGBA8UI, RGB1, L, VTR_), 3927ec681f3Smrg FMT(R8G8B8X8_SINT, RGBA8I, RGB1, L, VTR_), 3937ec681f3Smrg FMT(L8_UNORM, R8_UNORM, RRR1, L, VTR_), 3947ec681f3Smrg FMT(I8_UNORM, R8_UNORM, RRRR, L, VTR_), 3957ec681f3Smrg FMT(L16_UNORM, R16_UNORM, RRR1, L, VT__), 3967ec681f3Smrg FMT(I16_UNORM, R16_UNORM, RRRR, L, VT__), 3977ec681f3Smrg FMT(L8_SNORM, R8_SNORM, RRR1, L, VT__), 3987ec681f3Smrg FMT(I8_SNORM, R8_SNORM, RRRR, L, VT__), 3997ec681f3Smrg FMT(L16_SNORM, R16_SNORM, RRR1, L, VT__), 4007ec681f3Smrg FMT(I16_SNORM, R16_SNORM, RRRR, L, VT__), 4017ec681f3Smrg FMT(L16_FLOAT, R16F, RRR1, L, VTR_), 4027ec681f3Smrg FMT(I16_FLOAT, RG16F, RRRR, L, VTR_), 4037ec681f3Smrg FMT(L8_SRGB, R8_UNORM, RRR1, S, VTR_), 4047ec681f3Smrg FMT(R8_SRGB, R8_UNORM, R001, S, VTR_), 4057ec681f3Smrg FMT(R8G8_SRGB, RG8_UNORM, RG01, S, VTR_), 4067ec681f3Smrg FMT(R8G8B8_SRGB, RGB8_UNORM, RGB1, S, VTR_), 4077ec681f3Smrg FMT(B8G8R8_SRGB, RGB8_UNORM, BGR1, S, VTR_), 4087ec681f3Smrg FMT(R8G8B8A8_SRGB, RGBA8_UNORM, RGBA, S, VTR_), 4097ec681f3Smrg FMT(A8B8G8R8_SRGB, RGBA8_UNORM, ABGR, S, VTR_), 4107ec681f3Smrg FMT(X8B8G8R8_SRGB, RGBA8_UNORM, ABG1, S, VTR_), 4117ec681f3Smrg FMT(B8G8R8A8_SRGB, RGBA8_UNORM, BGRA, S, VTR_), 4127ec681f3Smrg FMT(B8G8R8X8_SRGB, RGBA8_UNORM, BGR1, S, VTR_), 4137ec681f3Smrg FMT(A8R8G8B8_SRGB, RGBA8_UNORM, GBAR, S, VTR_), 4147ec681f3Smrg FMT(X8R8G8B8_SRGB, RGBA8_UNORM, GBA1, S, VTR_), 4157ec681f3Smrg FMT(R8_SINT, R8I, R001, L, VTR_), 4167ec681f3Smrg FMT(R16_SINT, R16I, R001, L, VTR_), 4177ec681f3Smrg FMT(R32_SINT, R32I, R001, L, VTR_), 4187ec681f3Smrg FMT(R16_FLOAT, R16F, R001, L, VTR_), 4197ec681f3Smrg FMT(R8G8_SINT, RG8I, RG01, L, VTR_), 4207ec681f3Smrg FMT(R16G16_SINT, RG16I, RG01, L, VTR_), 4217ec681f3Smrg FMT(R32G32_SINT, RG32I, RG01, L, VTR_), 4227ec681f3Smrg FMT(R16G16_FLOAT, RG16F, RG01, L, VTR_), 4237ec681f3Smrg FMT(R8G8B8_SINT, RGB8I, RGB1, L, VTR_), 4247ec681f3Smrg FMT(R32G32B32_SINT, RGB32I, RGB1, L, VTR_), 4257ec681f3Smrg FMT(R8G8B8A8_SINT, RGBA8I, RGBA, L, VTR_), 4267ec681f3Smrg FMT(R16G16B16A16_SINT, RGBA16I, RGBA, L, VTR_), 4277ec681f3Smrg FMT(R32G32B32A32_SINT, RGBA32I, RGBA, L, VTR_), 4287ec681f3Smrg FMT(R16G16B16A16_FLOAT, RGBA16F, RGBA, L, VTR_), 4297ec681f3Smrg FMT(R16G16B16X16_UNORM, RGBA16_UNORM, RGB1, L, VTR_), 4307ec681f3Smrg FMT(R16G16B16X16_SNORM, RGBA16_SNORM, RGB1, L, VT__), 4317ec681f3Smrg FMT(R16G16B16X16_FLOAT, RGBA16F, RGB1, L, VTR_), 4327ec681f3Smrg FMT(R16G16B16X16_UINT, RGBA16UI, RGB1, L, VTR_), 4337ec681f3Smrg FMT(R16G16B16X16_SINT, RGBA16I, RGB1, L, VTR_), 4347ec681f3Smrg FMT(R32G32B32X32_FLOAT, RGBA32F, RGB1, L, VTR_), 4357ec681f3Smrg FMT(R32G32B32X32_UINT, RGBA32UI, RGB1, L, VTR_), 4367ec681f3Smrg FMT(R32G32B32X32_SINT, RGBA32I, RGB1, L, VTR_), 4377ec681f3Smrg 4387ec681f3Smrg#if PAN_ARCH <= 6 4397ec681f3Smrg FMT(Z16_UNORM, R16_UNORM, RRRR, L, _T_Z), 4407ec681f3Smrg FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RRRR, L, _T_Z), 4417ec681f3Smrg FMT(Z24X8_UNORM, Z24X8_UNORM, RRRR, L, _T_Z), 4427ec681f3Smrg FMT(Z32_FLOAT, R32F, RRRR, L, _T_Z), 4437ec681f3Smrg FMT(Z32_FLOAT_S8X24_UINT, RG32F, RRRR, L, _T_Z), 4447ec681f3Smrg FMT(X32_S8X24_UINT, X32_S8X24, GGGG, L, _T_Z), 4457ec681f3Smrg FMT(X24S8_UINT, RGBA8UI, AAAA, L, _T_Z), 4467ec681f3Smrg FMT(S8_UINT, R8UI, RRRR, L, _T__), 4477ec681f3Smrg 4487ec681f3Smrg FMT(A8_UNORM, R8_UNORM, 000R, L, VTR_), 4497ec681f3Smrg FMT(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_), 4507ec681f3Smrg FMT(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_), 4517ec681f3Smrg 4527ec681f3Smrg /* These formats were removed in v7 */ 4537ec681f3Smrg FMT(A8_SNORM, R8_SNORM, 000R, L, VT__), 4547ec681f3Smrg FMT(A8_SINT, R8I, 000R, L, VTR_), 4557ec681f3Smrg FMT(A8_UINT, R8UI, 000R, L, VTR_), 4567ec681f3Smrg FMT(A16_SINT, R16I, 000R, L, VTR_), 4577ec681f3Smrg FMT(A16_UINT, R16UI, 000R, L, VTR_), 4587ec681f3Smrg FMT(A32_SINT, R32I, 000R, L, VTR_), 4597ec681f3Smrg FMT(A32_UINT, R32UI, 000R, L, VTR_), 4607ec681f3Smrg FMT(A16_UNORM, R16_UNORM, 000R, L, VT__), 4617ec681f3Smrg FMT(A16_SNORM, R16_SNORM, 000R, L, VT__), 4627ec681f3Smrg FMT(A16_FLOAT, R16F, 000R, L, VTR_), 4637ec681f3Smrg 4647ec681f3Smrg#else 4657ec681f3Smrg FMT(Z16_UNORM, Z16_UNORM, RGBA, L, _T_Z), 4667ec681f3Smrg FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RGBA, L, _T_Z), 4677ec681f3Smrg FMT(Z24X8_UNORM, Z24X8_UNORM, RGBA, L, _T_Z), 4687ec681f3Smrg FMT(Z32_FLOAT, R32F, RGBA, L, _T_Z), 4697ec681f3Smrg FMT(Z32_FLOAT_S8X24_UINT, Z32_X32, RGBA, L, _T_Z), 4707ec681f3Smrg FMT(X32_S8X24_UINT, X32_S8X24, GRBA, L, _T__), 4717ec681f3Smrg FMT(X24S8_UINT, X24S8, GRBA, L, _T_Z), 4727ec681f3Smrg FMT(S8_UINT, S8, GRBA, L, _T__), 4737ec681f3Smrg 4747ec681f3Smrg FMT(A8_UNORM, A8_UNORM, 000A, L, VTR_), 4757ec681f3Smrg FMT(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_), 4767ec681f3Smrg FMT(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_), 4777ec681f3Smrg#endif 4787ec681f3Smrg}; 479