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