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