1bf215546Sopenharmony_ci/* 2bf215546Sopenharmony_ci * Copyright (C) 2019 Collabora, Ltd. 3bf215546Sopenharmony_ci * 4bf215546Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 5bf215546Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 6bf215546Sopenharmony_ci * to deal in the Software without restriction, including without limitation 7bf215546Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8bf215546Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 9bf215546Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 10bf215546Sopenharmony_ci * 11bf215546Sopenharmony_ci * The above copyright notice and this permission notice (including the next 12bf215546Sopenharmony_ci * paragraph) shall be included in all copies or substantial portions of the 13bf215546Sopenharmony_ci * Software. 14bf215546Sopenharmony_ci * 15bf215546Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16bf215546Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17bf215546Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18bf215546Sopenharmony_ci * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19bf215546Sopenharmony_ci * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20bf215546Sopenharmony_ci * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21bf215546Sopenharmony_ci * SOFTWARE. 22bf215546Sopenharmony_ci * 23bf215546Sopenharmony_ci * Authors: 24bf215546Sopenharmony_ci * Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> 25bf215546Sopenharmony_ci */ 26bf215546Sopenharmony_ci 27bf215546Sopenharmony_ci#include "genxml/gen_macros.h" 28bf215546Sopenharmony_ci#include "pan_format.h" 29bf215546Sopenharmony_ci#include "util/format/u_format.h" 30bf215546Sopenharmony_ci 31bf215546Sopenharmony_ci/* Convenience */ 32bf215546Sopenharmony_ci 33bf215546Sopenharmony_ci#define MALI_BLEND_AU_R8G8B8A8 (MALI_RGBA8_TB << 12) 34bf215546Sopenharmony_ci#define MALI_BLEND_PU_R8G8B8A8 (MALI_RGBA8_TB << 12) 35bf215546Sopenharmony_ci#define MALI_BLEND_AU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) 36bf215546Sopenharmony_ci#define MALI_BLEND_PU_R10G10B10A2 (MALI_RGB10_A2_TB << 12) 37bf215546Sopenharmony_ci#define MALI_BLEND_AU_R8G8B8A2 (MALI_RGB8_A2_AU << 12) 38bf215546Sopenharmony_ci#define MALI_BLEND_PU_R8G8B8A2 (MALI_RGB8_A2_PU << 12) 39bf215546Sopenharmony_ci#define MALI_BLEND_AU_R4G4B4A4 (MALI_RGBA4_AU << 12) 40bf215546Sopenharmony_ci#define MALI_BLEND_PU_R4G4B4A4 (MALI_RGBA4_PU << 12) 41bf215546Sopenharmony_ci#define MALI_BLEND_AU_R5G6B5A0 (MALI_R5G6B5_AU << 12) 42bf215546Sopenharmony_ci#define MALI_BLEND_PU_R5G6B5A0 (MALI_R5G6B5_PU << 12) 43bf215546Sopenharmony_ci#define MALI_BLEND_AU_R5G5B5A1 (MALI_RGB5_A1_AU << 12) 44bf215546Sopenharmony_ci#define MALI_BLEND_PU_R5G5B5A1 (MALI_RGB5_A1_PU << 12) 45bf215546Sopenharmony_ci 46bf215546Sopenharmony_ci#if PAN_ARCH <= 6 47bf215546Sopenharmony_ci#define BFMT2(pipe, internal, writeback, srgb) \ 48bf215546Sopenharmony_ci [PIPE_FORMAT_##pipe] = { \ 49bf215546Sopenharmony_ci MALI_COLOR_BUFFER_INTERNAL_FORMAT_## internal, \ 50bf215546Sopenharmony_ci MALI_COLOR_FORMAT_## writeback, \ 51bf215546Sopenharmony_ci { MALI_BLEND_PU_ ## internal | (srgb ? (1 << 20) : 0) | \ 52bf215546Sopenharmony_ci PAN_V6_SWIZZLE(R, G, B, A), \ 53bf215546Sopenharmony_ci MALI_BLEND_AU_ ## internal | (srgb ? (1 << 20) : 0) | \ 54bf215546Sopenharmony_ci PAN_V6_SWIZZLE(R, G, B, A) } \ 55bf215546Sopenharmony_ci } 56bf215546Sopenharmony_ci#else 57bf215546Sopenharmony_ci#define BFMT2(pipe, internal, writeback, srgb) \ 58bf215546Sopenharmony_ci [PIPE_FORMAT_##pipe] = { \ 59bf215546Sopenharmony_ci MALI_COLOR_BUFFER_INTERNAL_FORMAT_## internal, \ 60bf215546Sopenharmony_ci MALI_COLOR_FORMAT_## writeback, \ 61bf215546Sopenharmony_ci { MALI_BLEND_PU_ ## internal | (srgb ? (1 << 20) : 0), \ 62bf215546Sopenharmony_ci MALI_BLEND_AU_ ## internal | (srgb ? (1 << 20) : 0) } \ 63bf215546Sopenharmony_ci } 64bf215546Sopenharmony_ci#endif 65bf215546Sopenharmony_ci 66bf215546Sopenharmony_ci#define BFMT(pipe, internal_and_writeback) \ 67bf215546Sopenharmony_ci BFMT2(pipe, internal_and_writeback, internal_and_writeback, 0) 68bf215546Sopenharmony_ci 69bf215546Sopenharmony_ci#define BFMT_SRGB(pipe, writeback) \ 70bf215546Sopenharmony_ci BFMT2(pipe ##_UNORM, R8G8B8A8, writeback, 0), \ 71bf215546Sopenharmony_ci BFMT2(pipe ##_SRGB, R8G8B8A8, writeback, 1) 72bf215546Sopenharmony_ci 73bf215546Sopenharmony_ciconst struct pan_blendable_format 74bf215546Sopenharmony_ciGENX(panfrost_blendable_formats)[PIPE_FORMAT_COUNT] = { 75bf215546Sopenharmony_ci BFMT_SRGB(L8, R8), 76bf215546Sopenharmony_ci BFMT_SRGB(L8A8, R8G8), 77bf215546Sopenharmony_ci BFMT_SRGB(R8, R8), 78bf215546Sopenharmony_ci BFMT_SRGB(R8G8, R8G8), 79bf215546Sopenharmony_ci BFMT_SRGB(R8G8B8, R8G8B8), 80bf215546Sopenharmony_ci 81bf215546Sopenharmony_ci BFMT_SRGB(B8G8R8A8, R8G8B8A8), 82bf215546Sopenharmony_ci BFMT_SRGB(B8G8R8X8, R8G8B8A8), 83bf215546Sopenharmony_ci BFMT_SRGB(A8R8G8B8, R8G8B8A8), 84bf215546Sopenharmony_ci BFMT_SRGB(X8R8G8B8, R8G8B8A8), 85bf215546Sopenharmony_ci BFMT_SRGB(A8B8G8R8, R8G8B8A8), 86bf215546Sopenharmony_ci BFMT_SRGB(X8B8G8R8, R8G8B8A8), 87bf215546Sopenharmony_ci BFMT_SRGB(R8G8B8X8, R8G8B8A8), 88bf215546Sopenharmony_ci BFMT_SRGB(R8G8B8A8, R8G8B8A8), 89bf215546Sopenharmony_ci 90bf215546Sopenharmony_ci BFMT2(A8_UNORM, R8G8B8A8, R8, 0), 91bf215546Sopenharmony_ci BFMT2(I8_UNORM, R8G8B8A8, R8, 0), 92bf215546Sopenharmony_ci BFMT2(R5G6B5_UNORM, R5G6B5A0, R5G6B5, 0), 93bf215546Sopenharmony_ci BFMT2(B5G6R5_UNORM, R5G6B5A0, R5G6B5, 0), 94bf215546Sopenharmony_ci 95bf215546Sopenharmony_ci BFMT(A4B4G4R4_UNORM, R4G4B4A4), 96bf215546Sopenharmony_ci BFMT(B4G4R4A4_UNORM, R4G4B4A4), 97bf215546Sopenharmony_ci BFMT(R4G4B4A4_UNORM, R4G4B4A4), 98bf215546Sopenharmony_ci 99bf215546Sopenharmony_ci BFMT(R10G10B10A2_UNORM, R10G10B10A2), 100bf215546Sopenharmony_ci BFMT(B10G10R10A2_UNORM, R10G10B10A2), 101bf215546Sopenharmony_ci BFMT(R10G10B10X2_UNORM, R10G10B10A2), 102bf215546Sopenharmony_ci BFMT(B10G10R10X2_UNORM, R10G10B10A2), 103bf215546Sopenharmony_ci 104bf215546Sopenharmony_ci BFMT(B5G5R5A1_UNORM, R5G5B5A1), 105bf215546Sopenharmony_ci BFMT(R5G5B5A1_UNORM, R5G5B5A1), 106bf215546Sopenharmony_ci BFMT(B5G5R5X1_UNORM, R5G5B5A1), 107bf215546Sopenharmony_ci}; 108bf215546Sopenharmony_ci 109bf215546Sopenharmony_ci/* Convenience */ 110bf215546Sopenharmony_ci 111bf215546Sopenharmony_ci#define _V PIPE_BIND_VERTEX_BUFFER 112bf215546Sopenharmony_ci#define _T PIPE_BIND_SAMPLER_VIEW 113bf215546Sopenharmony_ci#define _R PIPE_BIND_RENDER_TARGET 114bf215546Sopenharmony_ci#define _Z PIPE_BIND_DEPTH_STENCIL 115bf215546Sopenharmony_ci 116bf215546Sopenharmony_ci#define FLAGS_V___ (_V) 117bf215546Sopenharmony_ci#define FLAGS__T__ (_T) 118bf215546Sopenharmony_ci#define FLAGS_VTR_ (_V | _T | _R) 119bf215546Sopenharmony_ci#define FLAGS_VT__ (_V | _T) 120bf215546Sopenharmony_ci#define FLAGS__T_Z (_T | _Z) 121bf215546Sopenharmony_ci 122bf215546Sopenharmony_ci#define SRGB_L (0) 123bf215546Sopenharmony_ci#define SRGB_S (1) 124bf215546Sopenharmony_ci 125bf215546Sopenharmony_ci#if PAN_ARCH <= 6 126bf215546Sopenharmony_ci#define V6_0000 PAN_V6_SWIZZLE(0, 0, 0, 0) 127bf215546Sopenharmony_ci#define V6_000R PAN_V6_SWIZZLE(0, 0, 0, R) 128bf215546Sopenharmony_ci#define V6_0R00 PAN_V6_SWIZZLE(0, R, 0, 0) 129bf215546Sopenharmony_ci#define V6_0A00 PAN_V6_SWIZZLE(0, A, 0, 0) 130bf215546Sopenharmony_ci#define V6_AAAA PAN_V6_SWIZZLE(A, A, A, A) 131bf215546Sopenharmony_ci#define V6_A001 PAN_V6_SWIZZLE(A, 0, 0, 1) 132bf215546Sopenharmony_ci#define V6_ABG1 PAN_V6_SWIZZLE(A, B, G, 1) 133bf215546Sopenharmony_ci#define V6_ABGR PAN_V6_SWIZZLE(A, B, G, R) 134bf215546Sopenharmony_ci#define V6_BGR1 PAN_V6_SWIZZLE(B, G, R, 1) 135bf215546Sopenharmony_ci#define V6_BGRA PAN_V6_SWIZZLE(B, G, R, A) 136bf215546Sopenharmony_ci#define V6_GBA1 PAN_V6_SWIZZLE(G, B, A, 1) 137bf215546Sopenharmony_ci#define V6_GBAR PAN_V6_SWIZZLE(G, B, A, R) 138bf215546Sopenharmony_ci#define V6_R000 PAN_V6_SWIZZLE(R, 0, 0, 0) 139bf215546Sopenharmony_ci#define V6_R001 PAN_V6_SWIZZLE(R, 0, 0, 1) 140bf215546Sopenharmony_ci#define V6_RG01 PAN_V6_SWIZZLE(R, G, 0, 1) 141bf215546Sopenharmony_ci#define V6_RGB1 PAN_V6_SWIZZLE(R, G, B, 1) 142bf215546Sopenharmony_ci#define V6_RGBA PAN_V6_SWIZZLE(R, G, B, A) 143bf215546Sopenharmony_ci#define V6_RRR1 PAN_V6_SWIZZLE(R, R, R, 1) 144bf215546Sopenharmony_ci#define V6_RRRG PAN_V6_SWIZZLE(R, R, R, G) 145bf215546Sopenharmony_ci#define V6_RRRR PAN_V6_SWIZZLE(R, R, R, R) 146bf215546Sopenharmony_ci#define V6_GGGG PAN_V6_SWIZZLE(G, G, G, G) 147bf215546Sopenharmony_ci 148bf215546Sopenharmony_ci#define FMT(pipe, mali, swizzle, srgb, flags) \ 149bf215546Sopenharmony_ci [PIPE_FORMAT_ ## pipe] = { \ 150bf215546Sopenharmony_ci .hw = ( V6_ ## swizzle ) | \ 151bf215546Sopenharmony_ci (( MALI_ ## mali ) << 12) | \ 152bf215546Sopenharmony_ci ((( SRGB_ ## srgb)) << 20), \ 153bf215546Sopenharmony_ci .bind = FLAGS_ ## flags \ 154bf215546Sopenharmony_ci } 155bf215546Sopenharmony_ci#else 156bf215546Sopenharmony_ci 157bf215546Sopenharmony_ci#define MALI_RGB_COMPONENT_ORDER_R001 MALI_RGB_COMPONENT_ORDER_RGB1 158bf215546Sopenharmony_ci#define MALI_RGB_COMPONENT_ORDER_RG01 MALI_RGB_COMPONENT_ORDER_RGB1 159bf215546Sopenharmony_ci#define MALI_RGB_COMPONENT_ORDER_GBAR MALI_RGB_COMPONENT_ORDER_ARGB 160bf215546Sopenharmony_ci#define MALI_RGB_COMPONENT_ORDER_GBA1 MALI_RGB_COMPONENT_ORDER_1RGB 161bf215546Sopenharmony_ci#define MALI_RGB_COMPONENT_ORDER_ABG1 MALI_RGB_COMPONENT_ORDER_1BGR 162bf215546Sopenharmony_ci 163bf215546Sopenharmony_ci#define FMT(pipe, mali, swizzle, srgb, flags) \ 164bf215546Sopenharmony_ci [PIPE_FORMAT_ ## pipe] = { \ 165bf215546Sopenharmony_ci .hw = ( MALI_RGB_COMPONENT_ORDER_ ## swizzle ) | \ 166bf215546Sopenharmony_ci (( MALI_ ## mali ) << 12) | \ 167bf215546Sopenharmony_ci ((( SRGB_ ## srgb)) << 20), \ 168bf215546Sopenharmony_ci .bind = FLAGS_ ## flags \ 169bf215546Sopenharmony_ci } 170bf215546Sopenharmony_ci#endif 171bf215546Sopenharmony_ci 172bf215546Sopenharmony_ciconst struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = { 173bf215546Sopenharmony_ci FMT(NONE, CONSTANT, 0000, L, VTR_), 174bf215546Sopenharmony_ci 175bf215546Sopenharmony_ci#if PAN_ARCH <= 7 176bf215546Sopenharmony_ci FMT(ETC1_RGB8, ETC2_RGB8, RGB1, L, _T__), 177bf215546Sopenharmony_ci FMT(ETC2_RGB8, ETC2_RGB8, RGB1, L, _T__), 178bf215546Sopenharmony_ci FMT(ETC2_SRGB8, ETC2_RGB8, RGB1, S, _T__), 179bf215546Sopenharmony_ci FMT(ETC2_R11_UNORM, ETC2_R11_UNORM, R001, L, _T__), 180bf215546Sopenharmony_ci FMT(ETC2_RGBA8, ETC2_RGBA8, RGBA, L, _T__), 181bf215546Sopenharmony_ci FMT(ETC2_SRGBA8, ETC2_RGBA8, RGBA, S, _T__), 182bf215546Sopenharmony_ci FMT(ETC2_RG11_UNORM, ETC2_RG11_UNORM, RG01, L, _T__), 183bf215546Sopenharmony_ci FMT(ETC2_R11_SNORM, ETC2_R11_SNORM, R001, L, _T__), 184bf215546Sopenharmony_ci FMT(ETC2_RG11_SNORM, ETC2_RG11_SNORM, RG01, L, _T__), 185bf215546Sopenharmony_ci FMT(ETC2_RGB8A1, ETC2_RGB8A1, RGBA, L, _T__), 186bf215546Sopenharmony_ci FMT(ETC2_SRGB8A1, ETC2_RGB8A1, RGBA, S, _T__), 187bf215546Sopenharmony_ci FMT(DXT1_RGB, BC1_UNORM, RGB1, L, _T__), 188bf215546Sopenharmony_ci FMT(DXT1_RGBA, BC1_UNORM, RGBA, L, _T__), 189bf215546Sopenharmony_ci FMT(DXT1_SRGB, BC1_UNORM, RGB1, S, _T__), 190bf215546Sopenharmony_ci FMT(DXT1_SRGBA, BC1_UNORM, RGBA, S, _T__), 191bf215546Sopenharmony_ci FMT(DXT3_RGBA, BC2_UNORM, RGBA, L, _T__), 192bf215546Sopenharmony_ci FMT(DXT3_SRGBA, BC2_UNORM, RGBA, S, _T__), 193bf215546Sopenharmony_ci FMT(DXT5_RGBA, BC3_UNORM, RGBA, L, _T__), 194bf215546Sopenharmony_ci FMT(DXT5_SRGBA, BC3_UNORM, RGBA, S, _T__), 195bf215546Sopenharmony_ci FMT(RGTC1_UNORM, BC4_UNORM, R001, L, _T__), 196bf215546Sopenharmony_ci FMT(RGTC1_SNORM, BC4_SNORM, R001, L, _T__), 197bf215546Sopenharmony_ci FMT(RGTC2_UNORM, BC5_UNORM, RG01, L, _T__), 198bf215546Sopenharmony_ci FMT(RGTC2_SNORM, BC5_SNORM, RG01, L, _T__), 199bf215546Sopenharmony_ci FMT(BPTC_RGB_FLOAT, BC6H_SF16, RGB1, L, _T__), 200bf215546Sopenharmony_ci FMT(BPTC_RGB_UFLOAT, BC6H_UF16, RGB1, L, _T__), 201bf215546Sopenharmony_ci FMT(BPTC_RGBA_UNORM, BC7_UNORM, RGBA, L, _T__), 202bf215546Sopenharmony_ci FMT(BPTC_SRGBA, BC7_UNORM, RGBA, S, _T__), 203bf215546Sopenharmony_ci FMT(ASTC_4x4, ASTC_2D_HDR, RGBA, L, _T__), 204bf215546Sopenharmony_ci FMT(ASTC_5x4, ASTC_2D_HDR, RGBA, L, _T__), 205bf215546Sopenharmony_ci FMT(ASTC_5x5, ASTC_2D_HDR, RGBA, L, _T__), 206bf215546Sopenharmony_ci FMT(ASTC_6x5, ASTC_2D_HDR, RGBA, L, _T__), 207bf215546Sopenharmony_ci FMT(ASTC_6x6, ASTC_2D_HDR, RGBA, L, _T__), 208bf215546Sopenharmony_ci FMT(ASTC_8x5, ASTC_2D_HDR, RGBA, L, _T__), 209bf215546Sopenharmony_ci FMT(ASTC_8x6, ASTC_2D_HDR, RGBA, L, _T__), 210bf215546Sopenharmony_ci FMT(ASTC_8x8, ASTC_2D_HDR, RGBA, L, _T__), 211bf215546Sopenharmony_ci FMT(ASTC_10x5, ASTC_2D_HDR, RGBA, L, _T__), 212bf215546Sopenharmony_ci FMT(ASTC_10x6, ASTC_2D_HDR, RGBA, L, _T__), 213bf215546Sopenharmony_ci FMT(ASTC_10x8, ASTC_2D_HDR, RGBA, L, _T__), 214bf215546Sopenharmony_ci FMT(ASTC_10x10, ASTC_2D_HDR, RGBA, L, _T__), 215bf215546Sopenharmony_ci FMT(ASTC_12x10, ASTC_2D_HDR, RGBA, L, _T__), 216bf215546Sopenharmony_ci FMT(ASTC_12x12, ASTC_2D_HDR, RGBA, L, _T__), 217bf215546Sopenharmony_ci FMT(ASTC_4x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 218bf215546Sopenharmony_ci FMT(ASTC_5x4_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 219bf215546Sopenharmony_ci FMT(ASTC_5x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 220bf215546Sopenharmony_ci FMT(ASTC_6x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 221bf215546Sopenharmony_ci FMT(ASTC_6x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 222bf215546Sopenharmony_ci FMT(ASTC_8x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 223bf215546Sopenharmony_ci FMT(ASTC_8x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 224bf215546Sopenharmony_ci FMT(ASTC_8x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 225bf215546Sopenharmony_ci FMT(ASTC_10x5_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 226bf215546Sopenharmony_ci FMT(ASTC_10x6_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 227bf215546Sopenharmony_ci FMT(ASTC_10x8_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 228bf215546Sopenharmony_ci FMT(ASTC_10x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 229bf215546Sopenharmony_ci FMT(ASTC_12x10_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 230bf215546Sopenharmony_ci FMT(ASTC_12x12_SRGB, ASTC_2D_LDR, RGBA, S, _T__), 231bf215546Sopenharmony_ci FMT(ASTC_3x3x3, ASTC_3D_HDR, RGBA, L, _T__), 232bf215546Sopenharmony_ci FMT(ASTC_4x3x3, ASTC_3D_HDR, RGBA, L, _T__), 233bf215546Sopenharmony_ci FMT(ASTC_4x4x3, ASTC_3D_HDR, RGBA, L, _T__), 234bf215546Sopenharmony_ci FMT(ASTC_4x4x4, ASTC_3D_HDR, RGBA, L, _T__), 235bf215546Sopenharmony_ci FMT(ASTC_5x4x4, ASTC_3D_HDR, RGBA, L, _T__), 236bf215546Sopenharmony_ci FMT(ASTC_5x5x4, ASTC_3D_HDR, RGBA, L, _T__), 237bf215546Sopenharmony_ci FMT(ASTC_5x5x5, ASTC_3D_HDR, RGBA, L, _T__), 238bf215546Sopenharmony_ci FMT(ASTC_6x5x5, ASTC_3D_HDR, RGBA, L, _T__), 239bf215546Sopenharmony_ci FMT(ASTC_6x6x5, ASTC_3D_HDR, RGBA, L, _T__), 240bf215546Sopenharmony_ci FMT(ASTC_6x6x6, ASTC_3D_HDR, RGBA, L, _T__), 241bf215546Sopenharmony_ci FMT(ASTC_3x3x3_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 242bf215546Sopenharmony_ci FMT(ASTC_4x3x3_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 243bf215546Sopenharmony_ci FMT(ASTC_4x4x3_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 244bf215546Sopenharmony_ci FMT(ASTC_4x4x4_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 245bf215546Sopenharmony_ci FMT(ASTC_5x4x4_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 246bf215546Sopenharmony_ci FMT(ASTC_5x5x4_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 247bf215546Sopenharmony_ci FMT(ASTC_5x5x5_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 248bf215546Sopenharmony_ci FMT(ASTC_6x5x5_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 249bf215546Sopenharmony_ci FMT(ASTC_6x6x5_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 250bf215546Sopenharmony_ci FMT(ASTC_6x6x6_SRGB, ASTC_3D_LDR, RGBA, S, _T__), 251bf215546Sopenharmony_ci#else 252bf215546Sopenharmony_ci /* Map to interchange format, as compression is specified in the plane 253bf215546Sopenharmony_ci * descriptor on Valhall. 254bf215546Sopenharmony_ci */ 255bf215546Sopenharmony_ci FMT(ETC1_RGB8, RGBA8_UNORM, RGB1, L, _T__), 256bf215546Sopenharmony_ci FMT(ETC2_RGB8, RGBA8_UNORM, RGB1, L, _T__), 257bf215546Sopenharmony_ci FMT(ETC2_SRGB8, RGBA8_UNORM, RGB1, S, _T__), 258bf215546Sopenharmony_ci FMT(ETC2_R11_UNORM, R16_UNORM, R001, L, _T__), 259bf215546Sopenharmony_ci FMT(ETC2_RGBA8, RGBA8_UNORM, RGBA, L, _T__), 260bf215546Sopenharmony_ci FMT(ETC2_SRGBA8, RGBA8_UNORM, RGBA, S, _T__), 261bf215546Sopenharmony_ci FMT(ETC2_RG11_UNORM, RG16_UNORM, RG01, L, _T__), 262bf215546Sopenharmony_ci FMT(ETC2_R11_SNORM, R16_SNORM, R001, L, _T__), 263bf215546Sopenharmony_ci FMT(ETC2_RG11_SNORM, RG16_SNORM, RG01, L, _T__), 264bf215546Sopenharmony_ci FMT(ETC2_RGB8A1, RGBA8_UNORM, RGBA, L, _T__), 265bf215546Sopenharmony_ci FMT(ETC2_SRGB8A1, RGBA8_UNORM, RGBA, S, _T__), 266bf215546Sopenharmony_ci FMT(DXT1_RGB, RGBA8_UNORM, RGB1, L, _T__), 267bf215546Sopenharmony_ci FMT(DXT1_RGBA, RGBA8_UNORM, RGBA, L, _T__), 268bf215546Sopenharmony_ci FMT(DXT1_SRGB, RGBA8_UNORM, RGB1, S, _T__), 269bf215546Sopenharmony_ci FMT(DXT1_SRGBA, RGBA8_UNORM, RGBA, S, _T__), 270bf215546Sopenharmony_ci FMT(DXT3_RGBA, RGBA8_UNORM, RGBA, L, _T__), 271bf215546Sopenharmony_ci FMT(DXT3_SRGBA, RGBA8_UNORM, RGBA, S, _T__), 272bf215546Sopenharmony_ci FMT(DXT5_RGBA, RGBA8_UNORM, RGBA, L, _T__), 273bf215546Sopenharmony_ci FMT(DXT5_SRGBA, RGBA8_UNORM, RGBA, S, _T__), 274bf215546Sopenharmony_ci FMT(RGTC1_UNORM, R16_UNORM, R001, L, _T__), 275bf215546Sopenharmony_ci FMT(RGTC1_SNORM, R16_SNORM, R001, L, _T__), 276bf215546Sopenharmony_ci FMT(RGTC2_UNORM, RG16_UNORM, RG01, L, _T__), 277bf215546Sopenharmony_ci FMT(RGTC2_SNORM, RG16_SNORM, RG01, L, _T__), 278bf215546Sopenharmony_ci FMT(BPTC_RGB_FLOAT, RGBA16F, RGB1, L, _T__), 279bf215546Sopenharmony_ci FMT(BPTC_RGB_UFLOAT, RGBA16F, RGB1, L, _T__), 280bf215546Sopenharmony_ci FMT(BPTC_RGBA_UNORM, RGBA8_UNORM, RGBA, L, _T__), 281bf215546Sopenharmony_ci FMT(BPTC_SRGBA, RGBA8_UNORM, RGBA, S, _T__), 282bf215546Sopenharmony_ci 283bf215546Sopenharmony_ci /* Mesa does not yet support astc_decode_mode extensions, so non-sRGB 284bf215546Sopenharmony_ci * formats must be assumed to be wide. 285bf215546Sopenharmony_ci */ 286bf215546Sopenharmony_ci FMT(ASTC_4x4, RGBA16F, RGBA, L, _T__), 287bf215546Sopenharmony_ci FMT(ASTC_5x4, RGBA16F, RGBA, L, _T__), 288bf215546Sopenharmony_ci FMT(ASTC_5x5, RGBA16F, RGBA, L, _T__), 289bf215546Sopenharmony_ci FMT(ASTC_6x5, RGBA16F, RGBA, L, _T__), 290bf215546Sopenharmony_ci FMT(ASTC_6x6, RGBA16F, RGBA, L, _T__), 291bf215546Sopenharmony_ci FMT(ASTC_8x5, RGBA16F, RGBA, L, _T__), 292bf215546Sopenharmony_ci FMT(ASTC_8x6, RGBA16F, RGBA, L, _T__), 293bf215546Sopenharmony_ci FMT(ASTC_8x8, RGBA16F, RGBA, L, _T__), 294bf215546Sopenharmony_ci FMT(ASTC_10x5, RGBA16F, RGBA, L, _T__), 295bf215546Sopenharmony_ci FMT(ASTC_10x6, RGBA16F, RGBA, L, _T__), 296bf215546Sopenharmony_ci FMT(ASTC_10x8, RGBA16F, RGBA, L, _T__), 297bf215546Sopenharmony_ci FMT(ASTC_10x10, RGBA16F, RGBA, L, _T__), 298bf215546Sopenharmony_ci FMT(ASTC_12x10, RGBA16F, RGBA, L, _T__), 299bf215546Sopenharmony_ci FMT(ASTC_12x12, RGBA16F, RGBA, L, _T__), 300bf215546Sopenharmony_ci FMT(ASTC_3x3x3, RGBA16F, RGBA, L, _T__), 301bf215546Sopenharmony_ci FMT(ASTC_4x3x3, RGBA16F, RGBA, L, _T__), 302bf215546Sopenharmony_ci FMT(ASTC_4x4x3, RGBA16F, RGBA, L, _T__), 303bf215546Sopenharmony_ci FMT(ASTC_4x4x4, RGBA16F, RGBA, L, _T__), 304bf215546Sopenharmony_ci FMT(ASTC_5x4x4, RGBA16F, RGBA, L, _T__), 305bf215546Sopenharmony_ci FMT(ASTC_5x5x4, RGBA16F, RGBA, L, _T__), 306bf215546Sopenharmony_ci FMT(ASTC_5x5x5, RGBA16F, RGBA, L, _T__), 307bf215546Sopenharmony_ci FMT(ASTC_6x5x5, RGBA16F, RGBA, L, _T__), 308bf215546Sopenharmony_ci FMT(ASTC_6x6x5, RGBA16F, RGBA, L, _T__), 309bf215546Sopenharmony_ci FMT(ASTC_6x6x6, RGBA16F, RGBA, L, _T__), 310bf215546Sopenharmony_ci 311bf215546Sopenharmony_ci /* By definition, sRGB formats are narrow */ 312bf215546Sopenharmony_ci FMT(ASTC_4x4_SRGB, RGBA8_UNORM, RGBA, S, _T__), 313bf215546Sopenharmony_ci FMT(ASTC_5x4_SRGB, RGBA8_UNORM, RGBA, S, _T__), 314bf215546Sopenharmony_ci FMT(ASTC_5x5_SRGB, RGBA8_UNORM, RGBA, S, _T__), 315bf215546Sopenharmony_ci FMT(ASTC_6x5_SRGB, RGBA8_UNORM, RGBA, S, _T__), 316bf215546Sopenharmony_ci FMT(ASTC_6x6_SRGB, RGBA8_UNORM, RGBA, S, _T__), 317bf215546Sopenharmony_ci FMT(ASTC_8x5_SRGB, RGBA8_UNORM, RGBA, S, _T__), 318bf215546Sopenharmony_ci FMT(ASTC_8x6_SRGB, RGBA8_UNORM, RGBA, S, _T__), 319bf215546Sopenharmony_ci FMT(ASTC_8x8_SRGB, RGBA8_UNORM, RGBA, S, _T__), 320bf215546Sopenharmony_ci FMT(ASTC_10x5_SRGB, RGBA8_UNORM, RGBA, S, _T__), 321bf215546Sopenharmony_ci FMT(ASTC_10x6_SRGB, RGBA8_UNORM, RGBA, S, _T__), 322bf215546Sopenharmony_ci FMT(ASTC_10x8_SRGB, RGBA8_UNORM, RGBA, S, _T__), 323bf215546Sopenharmony_ci FMT(ASTC_10x10_SRGB, RGBA8_UNORM, RGBA, S, _T__), 324bf215546Sopenharmony_ci FMT(ASTC_12x10_SRGB, RGBA8_UNORM, RGBA, S, _T__), 325bf215546Sopenharmony_ci FMT(ASTC_12x12_SRGB, RGBA8_UNORM, RGBA, S, _T__), 326bf215546Sopenharmony_ci FMT(ASTC_3x3x3_SRGB, RGBA8_UNORM, RGBA, S, _T__), 327bf215546Sopenharmony_ci FMT(ASTC_4x3x3_SRGB, RGBA8_UNORM, RGBA, S, _T__), 328bf215546Sopenharmony_ci FMT(ASTC_4x4x3_SRGB, RGBA8_UNORM, RGBA, S, _T__), 329bf215546Sopenharmony_ci FMT(ASTC_4x4x4_SRGB, RGBA8_UNORM, RGBA, S, _T__), 330bf215546Sopenharmony_ci FMT(ASTC_5x4x4_SRGB, RGBA8_UNORM, RGBA, S, _T__), 331bf215546Sopenharmony_ci FMT(ASTC_5x5x4_SRGB, RGBA8_UNORM, RGBA, S, _T__), 332bf215546Sopenharmony_ci FMT(ASTC_5x5x5_SRGB, RGBA8_UNORM, RGBA, S, _T__), 333bf215546Sopenharmony_ci FMT(ASTC_6x5x5_SRGB, RGBA8_UNORM, RGBA, S, _T__), 334bf215546Sopenharmony_ci FMT(ASTC_6x6x5_SRGB, RGBA8_UNORM, RGBA, S, _T__), 335bf215546Sopenharmony_ci#endif 336bf215546Sopenharmony_ci 337bf215546Sopenharmony_ci FMT(R5G6B5_UNORM, RGB565, RGB1, L, VTR_), 338bf215546Sopenharmony_ci FMT(B5G6R5_UNORM, RGB565, BGR1, L, VTR_), 339bf215546Sopenharmony_ci FMT(R5G5B5X1_UNORM, RGB5_A1_UNORM, RGB1, L, VT__), 340bf215546Sopenharmony_ci FMT(B5G5R5X1_UNORM, RGB5_A1_UNORM, BGR1, L, VT__), 341bf215546Sopenharmony_ci FMT(R5G5B5A1_UNORM, RGB5_A1_UNORM, RGBA, L, VTR_), 342bf215546Sopenharmony_ci FMT(B5G5R5A1_UNORM, RGB5_A1_UNORM, BGRA, L, VTR_), 343bf215546Sopenharmony_ci FMT(R10G10B10X2_UNORM, RGB10_A2_UNORM, RGB1, L, VTR_), 344bf215546Sopenharmony_ci FMT(B10G10R10X2_UNORM, RGB10_A2_UNORM, BGR1, L, VTR_), 345bf215546Sopenharmony_ci FMT(R10G10B10A2_UNORM, RGB10_A2_UNORM, RGBA, L, VTR_), 346bf215546Sopenharmony_ci FMT(B10G10R10A2_UNORM, RGB10_A2_UNORM, BGRA, L, VTR_), 347bf215546Sopenharmony_ci#if PAN_ARCH <= 5 348bf215546Sopenharmony_ci FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, VT__), 349bf215546Sopenharmony_ci FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, VT__), 350bf215546Sopenharmony_ci FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, VT__), 351bf215546Sopenharmony_ci FMT(R3G3B2_UNORM, RGB332_UNORM, RGB1, L, VT__), 352bf215546Sopenharmony_ci#else 353bf215546Sopenharmony_ci FMT(R10G10B10X2_SNORM, RGB10_A2_SNORM, RGB1, L, V___), 354bf215546Sopenharmony_ci FMT(R10G10B10A2_SNORM, RGB10_A2_SNORM, RGBA, L, V___), 355bf215546Sopenharmony_ci FMT(B10G10R10A2_SNORM, RGB10_A2_SNORM, BGRA, L, V___), 356bf215546Sopenharmony_ci#endif 357bf215546Sopenharmony_ci FMT(R10G10B10A2_UINT, RGB10_A2UI, RGBA, L, VTR_), 358bf215546Sopenharmony_ci FMT(B10G10R10A2_UINT, RGB10_A2UI, BGRA, L, VTR_), 359bf215546Sopenharmony_ci FMT(R10G10B10A2_USCALED, RGB10_A2UI, RGBA, L, V___), 360bf215546Sopenharmony_ci FMT(B10G10R10A2_USCALED, RGB10_A2UI, BGRA, L, V___), 361bf215546Sopenharmony_ci FMT(R10G10B10A2_SINT, RGB10_A2I, RGBA, L, VTR_), 362bf215546Sopenharmony_ci FMT(B10G10R10A2_SINT, RGB10_A2I, BGRA, L, VTR_), 363bf215546Sopenharmony_ci FMT(R10G10B10A2_SSCALED, RGB10_A2I, RGBA, L, V___), 364bf215546Sopenharmony_ci FMT(B10G10R10A2_SSCALED, RGB10_A2I, BGRA, L, V___), 365bf215546Sopenharmony_ci FMT(R8_SSCALED, R8I, R001, L, V___), 366bf215546Sopenharmony_ci FMT(R8G8_SSCALED, RG8I, RG01, L, V___), 367bf215546Sopenharmony_ci FMT(R8G8B8_SSCALED, RGB8I, RGB1, L, V___), 368bf215546Sopenharmony_ci FMT(B8G8R8_SSCALED, RGB8I, BGR1, L, V___), 369bf215546Sopenharmony_ci FMT(R8G8B8A8_SSCALED, RGBA8I, RGBA, L, V___), 370bf215546Sopenharmony_ci FMT(B8G8R8A8_SSCALED, RGBA8I, BGRA, L, V___), 371bf215546Sopenharmony_ci FMT(A8B8G8R8_SSCALED, RGBA8I, ABGR, L, V___), 372bf215546Sopenharmony_ci FMT(R8_USCALED, R8UI, R001, L, V___), 373bf215546Sopenharmony_ci FMT(R8G8_USCALED, RG8UI, RG01, L, V___), 374bf215546Sopenharmony_ci FMT(R8G8B8_USCALED, RGB8UI, RGB1, L, V___), 375bf215546Sopenharmony_ci FMT(B8G8R8_USCALED, RGB8UI, BGR1, L, V___), 376bf215546Sopenharmony_ci FMT(R8G8B8A8_USCALED, RGBA8UI, RGBA, L, V___), 377bf215546Sopenharmony_ci FMT(B8G8R8A8_USCALED, RGBA8UI, BGRA, L, V___), 378bf215546Sopenharmony_ci FMT(A8B8G8R8_USCALED, RGBA8UI, ABGR, L, V___), 379bf215546Sopenharmony_ci FMT(R16_USCALED, R16UI, R001, L, V___), 380bf215546Sopenharmony_ci FMT(R16G16_USCALED, RG16UI, RG01, L, V___), 381bf215546Sopenharmony_ci FMT(R16G16B16A16_USCALED, RGBA16UI, RGBA, L, V___), 382bf215546Sopenharmony_ci FMT(R16_SSCALED, R16I, R001, L, V___), 383bf215546Sopenharmony_ci FMT(R16G16_SSCALED, RG16I, RG01, L, V___), 384bf215546Sopenharmony_ci FMT(R16G16B16A16_SSCALED, RGBA16I, RGBA, L, V___), 385bf215546Sopenharmony_ci FMT(R32_USCALED, R32UI, R001, L, V___), 386bf215546Sopenharmony_ci FMT(R32G32_USCALED, RG32UI, RG01, L, V___), 387bf215546Sopenharmony_ci FMT(R32G32B32_USCALED, RGB32UI, RGB1, L, V___), 388bf215546Sopenharmony_ci FMT(R32G32B32A32_USCALED, RGBA32UI, RGBA, L, V___), 389bf215546Sopenharmony_ci FMT(R32_SSCALED, R32I, R001, L, V___), 390bf215546Sopenharmony_ci FMT(R32G32_SSCALED, RG32I, RG01, L, V___), 391bf215546Sopenharmony_ci FMT(R32G32B32_SSCALED, RGB32I, RGB1, L, V___), 392bf215546Sopenharmony_ci FMT(R32G32B32A32_SSCALED, RGBA32I, RGBA, L, V___), 393bf215546Sopenharmony_ci FMT(R32_FIXED, R32_FIXED, R001, L, V___), 394bf215546Sopenharmony_ci FMT(R32G32_FIXED, RG32_FIXED, RG01, L, V___), 395bf215546Sopenharmony_ci FMT(R32G32B32_FIXED, RGB32_FIXED, RGB1, L, V___), 396bf215546Sopenharmony_ci FMT(R32G32B32A32_FIXED, RGBA32_FIXED, RGBA, L, V___), 397bf215546Sopenharmony_ci FMT(R11G11B10_FLOAT, R11F_G11F_B10F, RGB1, L, VTR_), 398bf215546Sopenharmony_ci FMT(R9G9B9E5_FLOAT, R9F_G9F_B9F_E5F, RGB1, L, VT__), 399bf215546Sopenharmony_ci FMT(R8_SNORM, R8_SNORM, R001, L, VT__), 400bf215546Sopenharmony_ci FMT(R16_SNORM, R16_SNORM, R001, L, VT__), 401bf215546Sopenharmony_ci FMT(R32_SNORM, R32_SNORM, R001, L, VT__), 402bf215546Sopenharmony_ci FMT(R8G8_SNORM, RG8_SNORM, RG01, L, VT__), 403bf215546Sopenharmony_ci FMT(R16G16_SNORM, RG16_SNORM, RG01, L, VT__), 404bf215546Sopenharmony_ci FMT(R32G32_SNORM, RG32_SNORM, RG01, L, VT__), 405bf215546Sopenharmony_ci FMT(R8G8B8_SNORM, RGB8_SNORM, RGB1, L, VT__), 406bf215546Sopenharmony_ci FMT(R32G32B32_SNORM, RGB32_SNORM, RGB1, L, VT__), 407bf215546Sopenharmony_ci FMT(R8G8B8A8_SNORM, RGBA8_SNORM, RGBA, L, VT__), 408bf215546Sopenharmony_ci FMT(R16G16B16A16_SNORM, RGBA16_SNORM, RGBA, L, VT__), 409bf215546Sopenharmony_ci FMT(R32G32B32A32_SNORM, RGBA32_SNORM, RGBA, L, VT__), 410bf215546Sopenharmony_ci FMT(I8_SINT, R8I, RRRR, L, VTR_), 411bf215546Sopenharmony_ci FMT(L8_SINT, R8I, RRR1, L, VTR_), 412bf215546Sopenharmony_ci FMT(I8_UINT, R8UI, RRRR, L, VTR_), 413bf215546Sopenharmony_ci FMT(L8_UINT, R8UI, RRR1, L, VTR_), 414bf215546Sopenharmony_ci FMT(I16_SINT, R16I, RRRR, L, VTR_), 415bf215546Sopenharmony_ci FMT(L16_SINT, R16I, RRR1, L, VTR_), 416bf215546Sopenharmony_ci FMT(I16_UINT, R16UI, RRRR, L, VTR_), 417bf215546Sopenharmony_ci FMT(L16_UINT, R16UI, RRR1, L, VTR_), 418bf215546Sopenharmony_ci FMT(I32_SINT, R32I, RRRR, L, VTR_), 419bf215546Sopenharmony_ci FMT(L32_SINT, R32I, RRR1, L, VTR_), 420bf215546Sopenharmony_ci FMT(I32_UINT, R32UI, RRRR, L, VTR_), 421bf215546Sopenharmony_ci FMT(L32_UINT, R32UI, RRR1, L, VTR_), 422bf215546Sopenharmony_ci FMT(B8G8R8_UINT, RGB8UI, BGR1, L, VTR_), 423bf215546Sopenharmony_ci FMT(B8G8R8A8_UINT, RGBA8UI, BGRA, L, VTR_), 424bf215546Sopenharmony_ci FMT(B8G8R8_SINT, RGB8I, BGR1, L, VTR_), 425bf215546Sopenharmony_ci FMT(B8G8R8A8_SINT, RGBA8I, BGRA, L, VTR_), 426bf215546Sopenharmony_ci FMT(A8R8G8B8_UINT, RGBA8UI, GBAR, L, VTR_), 427bf215546Sopenharmony_ci FMT(A8B8G8R8_UINT, RGBA8UI, ABGR, L, VTR_), 428bf215546Sopenharmony_ci FMT(R8_UINT, R8UI, R001, L, VTR_), 429bf215546Sopenharmony_ci FMT(R16_UINT, R16UI, R001, L, VTR_), 430bf215546Sopenharmony_ci FMT(R32_UINT, R32UI, R001, L, VTR_), 431bf215546Sopenharmony_ci FMT(R8G8_UINT, RG8UI, RG01, L, VTR_), 432bf215546Sopenharmony_ci FMT(R16G16_UINT, RG16UI, RG01, L, VTR_), 433bf215546Sopenharmony_ci FMT(R32G32_UINT, RG32UI, RG01, L, VTR_), 434bf215546Sopenharmony_ci FMT(R8G8B8_UINT, RGB8UI, RGB1, L, VTR_), 435bf215546Sopenharmony_ci FMT(R32G32B32_UINT, RGB32UI, RGB1, L, VTR_), 436bf215546Sopenharmony_ci FMT(R8G8B8A8_UINT, RGBA8UI, RGBA, L, VTR_), 437bf215546Sopenharmony_ci FMT(R16G16B16A16_UINT, RGBA16UI, RGBA, L, VTR_), 438bf215546Sopenharmony_ci FMT(R32G32B32A32_UINT, RGBA32UI, RGBA, L, VTR_), 439bf215546Sopenharmony_ci FMT(R32_FLOAT, R32F, R001, L, VTR_), 440bf215546Sopenharmony_ci FMT(R32G32_FLOAT, RG32F, RG01, L, VTR_), 441bf215546Sopenharmony_ci FMT(R32G32B32_FLOAT, RGB32F, RGB1, L, VTR_), 442bf215546Sopenharmony_ci FMT(R32G32B32A32_FLOAT, RGBA32F, RGBA, L, VTR_), 443bf215546Sopenharmony_ci FMT(R8_UNORM, R8_UNORM, R001, L, VTR_), 444bf215546Sopenharmony_ci FMT(R16_UNORM, R16_UNORM, R001, L, VT__), 445bf215546Sopenharmony_ci FMT(R32_UNORM, R32_UNORM, R001, L, VT__), 446bf215546Sopenharmony_ci FMT(R8G8_UNORM, RG8_UNORM, RG01, L, VTR_), 447bf215546Sopenharmony_ci FMT(R16G16_UNORM, RG16_UNORM, RG01, L, VT__), 448bf215546Sopenharmony_ci FMT(R32G32_UNORM, RG32_UNORM, RG01, L, VT__), 449bf215546Sopenharmony_ci FMT(R8G8B8_UNORM, RGB8_UNORM, RGB1, L, VTR_), 450bf215546Sopenharmony_ci 451bf215546Sopenharmony_ci /* Don't allow render/texture for 48-bit */ 452bf215546Sopenharmony_ci FMT(R16G16B16_UNORM, RGB16_UNORM, RGB1, L, V___), 453bf215546Sopenharmony_ci FMT(R16G16B16_SINT, RGB16I, RGB1, L, V___), 454bf215546Sopenharmony_ci FMT(R16G16B16_FLOAT, RGB16F, RGB1, L, V___), 455bf215546Sopenharmony_ci FMT(R16G16B16_USCALED, RGB16UI, RGB1, L, V___), 456bf215546Sopenharmony_ci FMT(R16G16B16_SSCALED, RGB16I, RGB1, L, V___), 457bf215546Sopenharmony_ci FMT(R16G16B16_SNORM, RGB16_SNORM, RGB1, L, V___), 458bf215546Sopenharmony_ci FMT(R16G16B16_UINT, RGB16UI, RGB1, L, V___), 459bf215546Sopenharmony_ci 460bf215546Sopenharmony_ci#if PAN_ARCH <= 6 461bf215546Sopenharmony_ci FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, VT__), 462bf215546Sopenharmony_ci#else 463bf215546Sopenharmony_ci FMT(R32G32B32_UNORM, RGB32_UNORM, RGB1, L, V___), 464bf215546Sopenharmony_ci#endif 465bf215546Sopenharmony_ci FMT(R4G4B4A4_UNORM, RGBA4_UNORM, RGBA, L, VTR_), 466bf215546Sopenharmony_ci FMT(B4G4R4A4_UNORM, RGBA4_UNORM, BGRA, L, VTR_), 467bf215546Sopenharmony_ci FMT(R16G16B16A16_UNORM, RGBA16_UNORM, RGBA, L, VT__), 468bf215546Sopenharmony_ci FMT(R32G32B32A32_UNORM, RGBA32_UNORM, RGBA, L, VT__), 469bf215546Sopenharmony_ci FMT(B8G8R8A8_UNORM, RGBA8_UNORM, BGRA, L, VTR_), 470bf215546Sopenharmony_ci FMT(B8G8R8X8_UNORM, RGBA8_UNORM, BGR1, L, VTR_), 471bf215546Sopenharmony_ci FMT(A8R8G8B8_UNORM, RGBA8_UNORM, GBAR, L, VTR_), 472bf215546Sopenharmony_ci FMT(X8R8G8B8_UNORM, RGBA8_UNORM, GBA1, L, VTR_), 473bf215546Sopenharmony_ci FMT(A8B8G8R8_UNORM, RGBA8_UNORM, ABGR, L, VTR_), 474bf215546Sopenharmony_ci FMT(X8B8G8R8_UNORM, RGBA8_UNORM, ABG1, L, VTR_), 475bf215546Sopenharmony_ci FMT(R8G8B8X8_UNORM, RGBA8_UNORM, RGB1, L, VTR_), 476bf215546Sopenharmony_ci FMT(R8G8B8A8_UNORM, RGBA8_UNORM, RGBA, L, VTR_), 477bf215546Sopenharmony_ci FMT(R8G8B8X8_SNORM, RGBA8_SNORM, RGB1, L, VT__), 478bf215546Sopenharmony_ci FMT(R8G8B8X8_SRGB, RGBA8_UNORM, RGB1, S, VTR_), 479bf215546Sopenharmony_ci FMT(R8G8B8X8_UINT, RGBA8UI, RGB1, L, VTR_), 480bf215546Sopenharmony_ci FMT(R8G8B8X8_SINT, RGBA8I, RGB1, L, VTR_), 481bf215546Sopenharmony_ci FMT(L8_UNORM, R8_UNORM, RRR1, L, VTR_), 482bf215546Sopenharmony_ci FMT(I8_UNORM, R8_UNORM, RRRR, L, VTR_), 483bf215546Sopenharmony_ci FMT(L16_UNORM, R16_UNORM, RRR1, L, VT__), 484bf215546Sopenharmony_ci FMT(I16_UNORM, R16_UNORM, RRRR, L, VT__), 485bf215546Sopenharmony_ci FMT(L8_SNORM, R8_SNORM, RRR1, L, VT__), 486bf215546Sopenharmony_ci FMT(I8_SNORM, R8_SNORM, RRRR, L, VT__), 487bf215546Sopenharmony_ci FMT(L16_SNORM, R16_SNORM, RRR1, L, VT__), 488bf215546Sopenharmony_ci FMT(I16_SNORM, R16_SNORM, RRRR, L, VT__), 489bf215546Sopenharmony_ci FMT(L16_FLOAT, R16F, RRR1, L, VTR_), 490bf215546Sopenharmony_ci FMT(I16_FLOAT, RG16F, RRRR, L, VTR_), 491bf215546Sopenharmony_ci FMT(L8_SRGB, R8_UNORM, RRR1, S, VTR_), 492bf215546Sopenharmony_ci FMT(R8_SRGB, R8_UNORM, R001, S, VTR_), 493bf215546Sopenharmony_ci FMT(R8G8_SRGB, RG8_UNORM, RG01, S, VTR_), 494bf215546Sopenharmony_ci FMT(R8G8B8_SRGB, RGB8_UNORM, RGB1, S, VTR_), 495bf215546Sopenharmony_ci FMT(B8G8R8_SRGB, RGB8_UNORM, BGR1, S, VTR_), 496bf215546Sopenharmony_ci FMT(R8G8B8A8_SRGB, RGBA8_UNORM, RGBA, S, VTR_), 497bf215546Sopenharmony_ci FMT(A8B8G8R8_SRGB, RGBA8_UNORM, ABGR, S, VTR_), 498bf215546Sopenharmony_ci FMT(X8B8G8R8_SRGB, RGBA8_UNORM, ABG1, S, VTR_), 499bf215546Sopenharmony_ci FMT(B8G8R8A8_SRGB, RGBA8_UNORM, BGRA, S, VTR_), 500bf215546Sopenharmony_ci FMT(B8G8R8X8_SRGB, RGBA8_UNORM, BGR1, S, VTR_), 501bf215546Sopenharmony_ci FMT(A8R8G8B8_SRGB, RGBA8_UNORM, GBAR, S, VTR_), 502bf215546Sopenharmony_ci FMT(X8R8G8B8_SRGB, RGBA8_UNORM, GBA1, S, VTR_), 503bf215546Sopenharmony_ci FMT(R8_SINT, R8I, R001, L, VTR_), 504bf215546Sopenharmony_ci FMT(R16_SINT, R16I, R001, L, VTR_), 505bf215546Sopenharmony_ci FMT(R32_SINT, R32I, R001, L, VTR_), 506bf215546Sopenharmony_ci FMT(R16_FLOAT, R16F, R001, L, VTR_), 507bf215546Sopenharmony_ci FMT(R8G8_SINT, RG8I, RG01, L, VTR_), 508bf215546Sopenharmony_ci FMT(R16G16_SINT, RG16I, RG01, L, VTR_), 509bf215546Sopenharmony_ci FMT(R32G32_SINT, RG32I, RG01, L, VTR_), 510bf215546Sopenharmony_ci FMT(R16G16_FLOAT, RG16F, RG01, L, VTR_), 511bf215546Sopenharmony_ci FMT(R8G8B8_SINT, RGB8I, RGB1, L, VTR_), 512bf215546Sopenharmony_ci FMT(R32G32B32_SINT, RGB32I, RGB1, L, VTR_), 513bf215546Sopenharmony_ci FMT(R8G8B8A8_SINT, RGBA8I, RGBA, L, VTR_), 514bf215546Sopenharmony_ci FMT(R16G16B16A16_SINT, RGBA16I, RGBA, L, VTR_), 515bf215546Sopenharmony_ci FMT(R32G32B32A32_SINT, RGBA32I, RGBA, L, VTR_), 516bf215546Sopenharmony_ci FMT(R16G16B16A16_FLOAT, RGBA16F, RGBA, L, VTR_), 517bf215546Sopenharmony_ci FMT(R16G16B16X16_UNORM, RGBA16_UNORM, RGB1, L, VTR_), 518bf215546Sopenharmony_ci FMT(R16G16B16X16_SNORM, RGBA16_SNORM, RGB1, L, VT__), 519bf215546Sopenharmony_ci FMT(R16G16B16X16_FLOAT, RGBA16F, RGB1, L, VTR_), 520bf215546Sopenharmony_ci FMT(R16G16B16X16_UINT, RGBA16UI, RGB1, L, VTR_), 521bf215546Sopenharmony_ci FMT(R16G16B16X16_SINT, RGBA16I, RGB1, L, VTR_), 522bf215546Sopenharmony_ci FMT(R32G32B32X32_FLOAT, RGBA32F, RGB1, L, VTR_), 523bf215546Sopenharmony_ci FMT(R32G32B32X32_UINT, RGBA32UI, RGB1, L, VTR_), 524bf215546Sopenharmony_ci FMT(R32G32B32X32_SINT, RGBA32I, RGB1, L, VTR_), 525bf215546Sopenharmony_ci 526bf215546Sopenharmony_ci#if PAN_ARCH <= 6 527bf215546Sopenharmony_ci FMT(Z16_UNORM, R16_UNORM, RRRR, L, _T_Z), 528bf215546Sopenharmony_ci FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RRRR, L, _T_Z), 529bf215546Sopenharmony_ci FMT(Z24X8_UNORM, Z24X8_UNORM, RRRR, L, _T_Z), 530bf215546Sopenharmony_ci FMT(Z32_FLOAT, R32F, RRRR, L, _T_Z), 531bf215546Sopenharmony_ci FMT(Z32_FLOAT_S8X24_UINT, RG32F, RRRR, L, _T_Z), 532bf215546Sopenharmony_ci FMT(X32_S8X24_UINT, X32_S8X24, GGGG, L, _T_Z), 533bf215546Sopenharmony_ci FMT(X24S8_UINT, RGBA8UI, AAAA, L, _T_Z), 534bf215546Sopenharmony_ci FMT(S8_UINT, R8UI, RRRR, L, _T__), 535bf215546Sopenharmony_ci 536bf215546Sopenharmony_ci FMT(A8_UNORM, R8_UNORM, 000R, L, VTR_), 537bf215546Sopenharmony_ci FMT(L8A8_UNORM, RG8_UNORM, RRRG, L, VTR_), 538bf215546Sopenharmony_ci FMT(L8A8_SRGB, RG8_UNORM, RRRG, S, VTR_), 539bf215546Sopenharmony_ci 540bf215546Sopenharmony_ci /* These formats were removed in v7 */ 541bf215546Sopenharmony_ci FMT(A8_SNORM, R8_SNORM, 000R, L, VT__), 542bf215546Sopenharmony_ci FMT(A8_SINT, R8I, 000R, L, VTR_), 543bf215546Sopenharmony_ci FMT(A8_UINT, R8UI, 000R, L, VTR_), 544bf215546Sopenharmony_ci FMT(A16_SINT, R16I, 000R, L, VTR_), 545bf215546Sopenharmony_ci FMT(A16_UINT, R16UI, 000R, L, VTR_), 546bf215546Sopenharmony_ci FMT(A32_SINT, R32I, 000R, L, VTR_), 547bf215546Sopenharmony_ci FMT(A32_UINT, R32UI, 000R, L, VTR_), 548bf215546Sopenharmony_ci FMT(A16_UNORM, R16_UNORM, 000R, L, VT__), 549bf215546Sopenharmony_ci FMT(A16_SNORM, R16_SNORM, 000R, L, VT__), 550bf215546Sopenharmony_ci FMT(A16_FLOAT, R16F, 000R, L, VTR_), 551bf215546Sopenharmony_ci 552bf215546Sopenharmony_ci#else 553bf215546Sopenharmony_ci FMT(Z16_UNORM, Z16_UNORM, RGBA, L, _T_Z), 554bf215546Sopenharmony_ci FMT(Z24_UNORM_S8_UINT, Z24X8_UNORM, RGBA, L, _T_Z), 555bf215546Sopenharmony_ci FMT(Z24X8_UNORM, Z24X8_UNORM, RGBA, L, _T_Z), 556bf215546Sopenharmony_ci FMT(Z32_FLOAT, R32F, RGBA, L, _T_Z), 557bf215546Sopenharmony_ci 558bf215546Sopenharmony_ci#if PAN_ARCH >= 9 559bf215546Sopenharmony_ci /* Specify interchange formats, the actual format for depth/stencil is 560bf215546Sopenharmony_ci * determined by the plane descriptor on Valhall. 561bf215546Sopenharmony_ci * 562bf215546Sopenharmony_ci * On Valhall, S8 logically acts like "X8S8", so "S8 RGBA" is logically 563bf215546Sopenharmony_ci * "0s00" and "S8 GRBA" is logically "s000". For Bifrost compatibility 564bf215546Sopenharmony_ci * we want stencil in the red channel, so we use the GRBA swizzles. 565bf215546Sopenharmony_ci */ 566bf215546Sopenharmony_ci FMT(Z32_FLOAT_S8X24_UINT, R32F, GRBA, L, _T_Z), 567bf215546Sopenharmony_ci FMT(X32_S8X24_UINT, S8, GRBA, L, _T__), 568bf215546Sopenharmony_ci FMT(X24S8_UINT, S8, GRBA, L, _T_Z), 569bf215546Sopenharmony_ci FMT(S8_UINT, S8, GRBA, L, _T__), 570bf215546Sopenharmony_ci 571bf215546Sopenharmony_ci#else 572bf215546Sopenharmony_ci /* Specify real formats on Bifrost */ 573bf215546Sopenharmony_ci FMT(Z32_FLOAT_S8X24_UINT, Z32_X32, RGBA, L, _T_Z), 574bf215546Sopenharmony_ci FMT(X32_S8X24_UINT, X32_S8X24, GRBA, L, _T__), 575bf215546Sopenharmony_ci FMT(X24S8_UINT, X24S8, GRBA, L, _T_Z), 576bf215546Sopenharmony_ci FMT(S8_UINT, S8, GRBA, L, _T__), 577bf215546Sopenharmony_ci 578bf215546Sopenharmony_ci /* Obsolete formats removed in Valhall */ 579bf215546Sopenharmony_ci FMT(A8_UNORM, A8_UNORM, 000A, L, VTR_), 580bf215546Sopenharmony_ci FMT(L8A8_UNORM, R8A8_UNORM, RRRA, L, VTR_), 581bf215546Sopenharmony_ci FMT(L8A8_SRGB, R8A8_UNORM, RRRA, S, VTR_), 582bf215546Sopenharmony_ci#endif 583bf215546Sopenharmony_ci 584bf215546Sopenharmony_ci#endif 585bf215546Sopenharmony_ci}; 586