summaryrefslogtreecommitdiff
path: root/src/video_core/surface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/surface.h')
-rw-r--r--src/video_core/surface.h800
1 files changed, 400 insertions, 400 deletions
diff --git a/src/video_core/surface.h b/src/video_core/surface.h
index 826c5a3ad..cfd12fa61 100644
--- a/src/video_core/surface.h
+++ b/src/video_core/surface.h
@@ -15,105 +15,105 @@
15namespace VideoCore::Surface { 15namespace VideoCore::Surface {
16 16
17enum class PixelFormat { 17enum class PixelFormat {
18 ABGR8U, 18 A8B8G8R8_UNORM,
19 ABGR8S, 19 A8B8G8R8_SNORM,
20 ABGR8I, 20 A8B8G8R8_SINT,
21 ABGR8UI, 21 A8B8G8R8_UINT,
22 B5G6R5U, 22 R5G6B5_UNORM,
23 R5G6B5U, 23 B5G6R5_UNORM,
24 B5G5R5A1U, 24 A1R5G5B5_UNORM,
25 A2B10G10R10U, 25 A2B10G10R10_UNORM,
26 A2B10G10R10UI, 26 A2B10G10R10_UINT,
27 A1B5G5R5U, 27 A1B5G5R5_UNORM,
28 R8U, 28 R8_UNORM,
29 R8S, 29 R8_SNORM,
30 R8I, 30 R8_SINT,
31 R8UI, 31 R8_UINT,
32 RGBA16F, 32 R16G16B16A16_FLOAT,
33 RGBA16U, 33 R16G16B16A16_UNORM,
34 RGBA16S, 34 R16G16B16A16_SNORM,
35 RGBA16I, 35 R16G16B16A16_SINT,
36 RGBA16UI, 36 R16G16B16A16_UINT,
37 R11FG11FB10F, 37 B10G11R11_FLOAT,
38 RGBA32UI, 38 R32G32B32A32_UINT,
39 DXT1, 39 BC1_RGBA_UNORM,
40 DXT23, 40 BC2_UNORM,
41 DXT45, 41 BC3_UNORM,
42 DXN1UNORM, // This is also known as BC4 42 BC4_UNORM,
43 DXN1SNORM, 43 BC4_SNORM,
44 DXN2UNORM, 44 BC5_UNORM,
45 DXN2SNORM, 45 BC5_SNORM,
46 BC7U, 46 BC7_UNORM,
47 BC6H_UF16, 47 BC6H_UFLOAT,
48 BC6H_SF16, 48 BC6H_SFLOAT,
49 ASTC_2D_4X4, 49 ASTC_2D_4X4_UNORM,
50 BGRA8, 50 B8G8R8A8_UNORM,
51 RGBA32F, 51 R32G32B32A32_FLOAT,
52 RGBA32I, 52 R32G32B32A32_SINT,
53 RG32F, 53 R32G32_FLOAT,
54 RG32I, 54 R32G32_SINT,
55 R32F, 55 R32_FLOAT,
56 R16F, 56 R16_FLOAT,
57 R16U, 57 R16_UNORM,
58 R16S, 58 R16_SNORM,
59 R16UI, 59 R16_UINT,
60 R16I, 60 R16_SINT,
61 RG16, 61 R16G16_UNORM,
62 RG16F, 62 R16G16_FLOAT,
63 RG16UI, 63 R16G16_UINT,
64 RG16I, 64 R16G16_SINT,
65 RG16S, 65 R16G16_SNORM,
66 RGB32F, 66 R32G32B32_FLOAT,
67 RGBA8_SRGB, 67 A8B8G8R8_SRGB,
68 RG8U, 68 R8G8_UNORM,
69 RG8S, 69 R8G8_SNORM,
70 RG8I, 70 R8G8_SINT,
71 RG8UI, 71 R8G8_UINT,
72 RG32UI, 72 R32G32_UINT,
73 RGBX16F, 73 R16G16B16X16_FLOAT,
74 R32UI, 74 R32_UINT,
75 R32I, 75 R32_SINT,
76 ASTC_2D_8X8, 76 ASTC_2D_8X8_UNORM,
77 ASTC_2D_8X5, 77 ASTC_2D_8X5_UNORM,
78 ASTC_2D_5X4, 78 ASTC_2D_5X4_UNORM,
79 BGRA8_SRGB, 79 B8G8R8A8_SRGB,
80 DXT1_SRGB, 80 BC1_RGBA_SRGB,
81 DXT23_SRGB, 81 BC2_SRGB,
82 DXT45_SRGB, 82 BC3_SRGB,
83 BC7U_SRGB, 83 BC7_SRGB,
84 R4G4B4A4U, 84 A4B4G4R4_UNORM,
85 ASTC_2D_4X4_SRGB, 85 ASTC_2D_4X4_SRGB,
86 ASTC_2D_8X8_SRGB, 86 ASTC_2D_8X8_SRGB,
87 ASTC_2D_8X5_SRGB, 87 ASTC_2D_8X5_SRGB,
88 ASTC_2D_5X4_SRGB, 88 ASTC_2D_5X4_SRGB,
89 ASTC_2D_5X5, 89 ASTC_2D_5X5_UNORM,
90 ASTC_2D_5X5_SRGB, 90 ASTC_2D_5X5_SRGB,
91 ASTC_2D_10X8, 91 ASTC_2D_10X8_UNORM,
92 ASTC_2D_10X8_SRGB, 92 ASTC_2D_10X8_SRGB,
93 ASTC_2D_6X6, 93 ASTC_2D_6X6_UNORM,
94 ASTC_2D_6X6_SRGB, 94 ASTC_2D_6X6_SRGB,
95 ASTC_2D_10X10, 95 ASTC_2D_10X10_UNORM,
96 ASTC_2D_10X10_SRGB, 96 ASTC_2D_10X10_SRGB,
97 ASTC_2D_12X12, 97 ASTC_2D_12X12_UNORM,
98 ASTC_2D_12X12_SRGB, 98 ASTC_2D_12X12_SRGB,
99 ASTC_2D_8X6, 99 ASTC_2D_8X6_UNORM,
100 ASTC_2D_8X6_SRGB, 100 ASTC_2D_8X6_SRGB,
101 ASTC_2D_6X5, 101 ASTC_2D_6X5_UNORM,
102 ASTC_2D_6X5_SRGB, 102 ASTC_2D_6X5_SRGB,
103 E5B9G9R9F, 103 E5B9G9R9_FLOAT,
104 104
105 MaxColorFormat, 105 MaxColorFormat,
106 106
107 // Depth formats 107 // Depth formats
108 Z32F = MaxColorFormat, 108 D32_FLOAT = MaxColorFormat,
109 Z16, 109 D16_UNORM,
110 110
111 MaxDepthFormat, 111 MaxDepthFormat,
112 112
113 // DepthStencil formats 113 // DepthStencil formats
114 Z24S8 = MaxDepthFormat, 114 D24_UNORM_S8_UINT = MaxDepthFormat,
115 S8Z24, 115 S8_UINT_D24_UNORM,
116 Z32FS8, 116 D32_FLOAT_S8_UINT,
117 117
118 MaxDepthStencilFormat, 118 MaxDepthStencilFormat,
119 119
@@ -141,97 +141,97 @@ enum class SurfaceTarget {
141}; 141};
142 142
143constexpr std::array<u32, MaxPixelFormat> compression_factor_shift_table = {{ 143constexpr std::array<u32, MaxPixelFormat> compression_factor_shift_table = {{
144 0, // ABGR8U 144 0, // A8B8G8R8_UNORM
145 0, // ABGR8S 145 0, // A8B8G8R8_SNORM
146 0, // ABGR8I 146 0, // A8B8G8R8_SINT
147 0, // ABGR8UI 147 0, // A8B8G8R8_UINT
148 0, // B5G6R5U 148 0, // R5G6B5_UNORM
149 0, // R5G6B5U 149 0, // B5G6R5_UNORM
150 0, // B5G5R5A1U 150 0, // A1R5G5B5_UNORM
151 0, // A2B10G10R10U 151 0, // A2B10G10R10_UNORM
152 0, // A2B10G10R10UI 152 0, // A2B10G10R10_UINT
153 0, // A1B5G5R5U 153 0, // A1B5G5R5_UNORM
154 0, // R8U 154 0, // R8_UNORM
155 0, // R8S 155 0, // R8_SNORM
156 0, // R8I 156 0, // R8_SINT
157 0, // R8UI 157 0, // R8_UINT
158 0, // RGBA16F 158 0, // R16G16B16A16_FLOAT
159 0, // RGBA16U 159 0, // R16G16B16A16_UNORM
160 0, // RGBA16S 160 0, // R16G16B16A16_SNORM
161 0, // RGBA16I 161 0, // R16G16B16A16_SINT
162 0, // RGBA16UI 162 0, // R16G16B16A16_UINT
163 0, // R11FG11FB10F 163 0, // B10G11R11_FLOAT
164 0, // RGBA32UI 164 0, // R32G32B32A32_UINT
165 2, // DXT1 165 2, // BC1_RGBA_UNORM
166 2, // DXT23 166 2, // BC2_UNORM
167 2, // DXT45 167 2, // BC3_UNORM
168 2, // DXN1UNORM 168 2, // BC4_UNORM
169 2, // DXN1SNORM 169 2, // BC4_SNORM
170 2, // DXN2UNORM 170 2, // BC5_UNORM
171 2, // DXN2SNORM 171 2, // BC5_SNORM
172 2, // BC7U 172 2, // BC7_UNORM
173 2, // BC6H_UF16 173 2, // BC6H_UFLOAT
174 2, // BC6H_SF16 174 2, // BC6H_SFLOAT
175 2, // ASTC_2D_4X4 175 2, // ASTC_2D_4X4_UNORM
176 0, // BGRA8 176 0, // B8G8R8A8_UNORM
177 0, // RGBA32F 177 0, // R32G32B32A32_FLOAT
178 0, // RGBA32I 178 0, // R32G32B32A32_SINT
179 0, // RG32F 179 0, // R32G32_FLOAT
180 0, // RG32I 180 0, // R32G32_SINT
181 0, // R32F 181 0, // R32_FLOAT
182 0, // R16F 182 0, // R16_FLOAT
183 0, // R16U 183 0, // R16_UNORM
184 0, // R16S 184 0, // R16_SNORM
185 0, // R16UI 185 0, // R16_UINT
186 0, // R16I 186 0, // R16_SINT
187 0, // RG16 187 0, // R16G16_UNORM
188 0, // RG16F 188 0, // R16G16_FLOAT
189 0, // RG16UI 189 0, // R16G16_UINT
190 0, // RG16I 190 0, // R16G16_SINT
191 0, // RG16S 191 0, // R16G16_SNORM
192 0, // RGB32F 192 0, // R32G32B32_FLOAT
193 0, // RGBA8_SRGB 193 0, // A8B8G8R8_SRGB
194 0, // RG8U 194 0, // R8G8_UNORM
195 0, // RG8S 195 0, // R8G8_SNORM
196 0, // RG8I 196 0, // R8G8_SINT
197 0, // RG8UI 197 0, // R8G8_UINT
198 0, // RG32UI 198 0, // R32G32_UINT
199 0, // RGBX16F 199 0, // R16G16B16X16_FLOAT
200 0, // R32UI 200 0, // R32_UINT
201 0, // R32I 201 0, // R32_SINT
202 2, // ASTC_2D_8X8 202 2, // ASTC_2D_8X8_UNORM
203 2, // ASTC_2D_8X5 203 2, // ASTC_2D_8X5_UNORM
204 2, // ASTC_2D_5X4 204 2, // ASTC_2D_5X4_UNORM
205 0, // BGRA8_SRGB 205 0, // B8G8R8A8_SRGB
206 2, // DXT1_SRGB 206 2, // BC1_RGBA_SRGB
207 2, // DXT23_SRGB 207 2, // BC2_SRGB
208 2, // DXT45_SRGB 208 2, // BC3_SRGB
209 2, // BC7U_SRGB 209 2, // BC7_SRGB
210 0, // R4G4B4A4U 210 0, // A4B4G4R4_UNORM
211 2, // ASTC_2D_4X4_SRGB 211 2, // ASTC_2D_4X4_SRGB
212 2, // ASTC_2D_8X8_SRGB 212 2, // ASTC_2D_8X8_SRGB
213 2, // ASTC_2D_8X5_SRGB 213 2, // ASTC_2D_8X5_SRGB
214 2, // ASTC_2D_5X4_SRGB 214 2, // ASTC_2D_5X4_SRGB
215 2, // ASTC_2D_5X5 215 2, // ASTC_2D_5X5_UNORM
216 2, // ASTC_2D_5X5_SRGB 216 2, // ASTC_2D_5X5_SRGB
217 2, // ASTC_2D_10X8 217 2, // ASTC_2D_10X8_UNORM
218 2, // ASTC_2D_10X8_SRGB 218 2, // ASTC_2D_10X8_SRGB
219 2, // ASTC_2D_6X6 219 2, // ASTC_2D_6X6_UNORM
220 2, // ASTC_2D_6X6_SRGB 220 2, // ASTC_2D_6X6_SRGB
221 2, // ASTC_2D_10X10 221 2, // ASTC_2D_10X10_UNORM
222 2, // ASTC_2D_10X10_SRGB 222 2, // ASTC_2D_10X10_SRGB
223 2, // ASTC_2D_12X12 223 2, // ASTC_2D_12X12_UNORM
224 2, // ASTC_2D_12X12_SRGB 224 2, // ASTC_2D_12X12_SRGB
225 2, // ASTC_2D_8X6 225 2, // ASTC_2D_8X6_UNORM
226 2, // ASTC_2D_8X6_SRGB 226 2, // ASTC_2D_8X6_SRGB
227 2, // ASTC_2D_6X5 227 2, // ASTC_2D_6X5_UNORM
228 2, // ASTC_2D_6X5_SRGB 228 2, // ASTC_2D_6X5_SRGB
229 0, // E5B9G9R9F 229 0, // E5B9G9R9_FLOAT
230 0, // Z32F 230 0, // D32_FLOAT
231 0, // Z16 231 0, // D16_UNORM
232 0, // Z24S8 232 0, // D24_UNORM_S8_UINT
233 0, // S8Z24 233 0, // S8_UINT_D24_UNORM
234 0, // Z32FS8 234 0, // D32_FLOAT_S8_UINT
235}}; 235}};
236 236
237/** 237/**
@@ -251,97 +251,97 @@ inline constexpr u32 GetCompressionFactor(PixelFormat format) {
251} 251}
252 252
253constexpr std::array<u32, MaxPixelFormat> block_width_table = {{ 253constexpr std::array<u32, MaxPixelFormat> block_width_table = {{
254 1, // ABGR8U 254 1, // A8B8G8R8_UNORM
255 1, // ABGR8S 255 1, // A8B8G8R8_SNORM
256 1, // ABGR8I 256 1, // A8B8G8R8_SINT
257 1, // ABGR8UI 257 1, // A8B8G8R8_UINT
258 1, // B5G6R5U 258 1, // R5G6B5_UNORM
259 1, // R5G6B5U 259 1, // B5G6R5_UNORM
260 1, // B5G5R5A1U 260 1, // A1R5G5B5_UNORM
261 1, // A2B10G10R10U 261 1, // A2B10G10R10_UNORM
262 1, // A2B10G10R10UI 262 1, // A2B10G10R10_UINT
263 1, // A1B5G5R5U 263 1, // A1B5G5R5_UNORM
264 1, // R8U 264 1, // R8_UNORM
265 1, // R8S 265 1, // R8_SNORM
266 1, // R8I 266 1, // R8_SINT
267 1, // R8UI 267 1, // R8_UINT
268 1, // RGBA16F 268 1, // R16G16B16A16_FLOAT
269 1, // RGBA16U 269 1, // R16G16B16A16_UNORM
270 1, // RGBA16S 270 1, // R16G16B16A16_SNORM
271 1, // RGBA16I 271 1, // R16G16B16A16_SINT
272 1, // RGBA16UI 272 1, // R16G16B16A16_UINT
273 1, // R11FG11FB10F 273 1, // B10G11R11_FLOAT
274 1, // RGBA32UI 274 1, // R32G32B32A32_UINT
275 4, // DXT1 275 4, // BC1_RGBA_UNORM
276 4, // DXT23 276 4, // BC2_UNORM
277 4, // DXT45 277 4, // BC3_UNORM
278 4, // DXN1UNORM 278 4, // BC4_UNORM
279 4, // DXN1SNORM 279 4, // BC4_SNORM
280 4, // DXN2UNORM 280 4, // BC5_UNORM
281 4, // DXN2SNORM 281 4, // BC5_SNORM
282 4, // BC7U 282 4, // BC7_UNORM
283 4, // BC6H_UF16 283 4, // BC6H_UFLOAT
284 4, // BC6H_SF16 284 4, // BC6H_SFLOAT
285 4, // ASTC_2D_4X4 285 4, // ASTC_2D_4X4_UNORM
286 1, // BGRA8 286 1, // B8G8R8A8_UNORM
287 1, // RGBA32F 287 1, // R32G32B32A32_FLOAT
288 1, // RGBA32I 288 1, // R32G32B32A32_SINT
289 1, // RG32F 289 1, // R32G32_FLOAT
290 1, // RG32I 290 1, // R32G32_SINT
291 1, // R32F 291 1, // R32_FLOAT
292 1, // R16F 292 1, // R16_FLOAT
293 1, // R16U 293 1, // R16_UNORM
294 1, // R16S 294 1, // R16_SNORM
295 1, // R16UI 295 1, // R16_UINT
296 1, // R16I 296 1, // R16_SINT
297 1, // RG16 297 1, // R16G16_UNORM
298 1, // RG16F 298 1, // R16G16_FLOAT
299 1, // RG16UI 299 1, // R16G16_UINT
300 1, // RG16I 300 1, // R16G16_SINT
301 1, // RG16S 301 1, // R16G16_SNORM
302 1, // RGB32F 302 1, // R32G32B32_FLOAT
303 1, // RGBA8_SRGB 303 1, // A8B8G8R8_SRGB
304 1, // RG8U 304 1, // R8G8_UNORM
305 1, // RG8S 305 1, // R8G8_SNORM
306 1, // RG8I 306 1, // R8G8_SINT
307 1, // RG8UI 307 1, // R8G8_UINT
308 1, // RG32UI 308 1, // R32G32_UINT
309 1, // RGBX16F 309 1, // R16G16B16X16_FLOAT
310 1, // R32UI 310 1, // R32_UINT
311 1, // R32I 311 1, // R32_SINT
312 8, // ASTC_2D_8X8 312 8, // ASTC_2D_8X8_UNORM
313 8, // ASTC_2D_8X5 313 8, // ASTC_2D_8X5_UNORM
314 5, // ASTC_2D_5X4 314 5, // ASTC_2D_5X4_UNORM
315 1, // BGRA8_SRGB 315 1, // B8G8R8A8_SRGB
316 4, // DXT1_SRGB 316 4, // BC1_RGBA_SRGB
317 4, // DXT23_SRGB 317 4, // BC2_SRGB
318 4, // DXT45_SRGB 318 4, // BC3_SRGB
319 4, // BC7U_SRGB 319 4, // BC7_SRGB
320 1, // R4G4B4A4U 320 1, // A4B4G4R4_UNORM
321 4, // ASTC_2D_4X4_SRGB 321 4, // ASTC_2D_4X4_SRGB
322 8, // ASTC_2D_8X8_SRGB 322 8, // ASTC_2D_8X8_SRGB
323 8, // ASTC_2D_8X5_SRGB 323 8, // ASTC_2D_8X5_SRGB
324 5, // ASTC_2D_5X4_SRGB 324 5, // ASTC_2D_5X4_SRGB
325 5, // ASTC_2D_5X5 325 5, // ASTC_2D_5X5_UNORM
326 5, // ASTC_2D_5X5_SRGB 326 5, // ASTC_2D_5X5_SRGB
327 10, // ASTC_2D_10X8 327 10, // ASTC_2D_10X8_UNORM
328 10, // ASTC_2D_10X8_SRGB 328 10, // ASTC_2D_10X8_SRGB
329 6, // ASTC_2D_6X6 329 6, // ASTC_2D_6X6_UNORM
330 6, // ASTC_2D_6X6_SRGB 330 6, // ASTC_2D_6X6_SRGB
331 10, // ASTC_2D_10X10 331 10, // ASTC_2D_10X10_UNORM
332 10, // ASTC_2D_10X10_SRGB 332 10, // ASTC_2D_10X10_SRGB
333 12, // ASTC_2D_12X12 333 12, // ASTC_2D_12X12_UNORM
334 12, // ASTC_2D_12X12_SRGB 334 12, // ASTC_2D_12X12_SRGB
335 8, // ASTC_2D_8X6 335 8, // ASTC_2D_8X6_UNORM
336 8, // ASTC_2D_8X6_SRGB 336 8, // ASTC_2D_8X6_SRGB
337 6, // ASTC_2D_6X5 337 6, // ASTC_2D_6X5_UNORM
338 6, // ASTC_2D_6X5_SRGB 338 6, // ASTC_2D_6X5_SRGB
339 1, // E5B9G9R9F 339 1, // E5B9G9R9_FLOAT
340 1, // Z32F 340 1, // D32_FLOAT
341 1, // Z16 341 1, // D16_UNORM
342 1, // Z24S8 342 1, // D24_UNORM_S8_UINT
343 1, // S8Z24 343 1, // S8_UINT_D24_UNORM
344 1, // Z32FS8 344 1, // D32_FLOAT_S8_UINT
345}}; 345}};
346 346
347static constexpr u32 GetDefaultBlockWidth(PixelFormat format) { 347static constexpr u32 GetDefaultBlockWidth(PixelFormat format) {
@@ -353,97 +353,97 @@ static constexpr u32 GetDefaultBlockWidth(PixelFormat format) {
353} 353}
354 354
355constexpr std::array<u32, MaxPixelFormat> block_height_table = {{ 355constexpr std::array<u32, MaxPixelFormat> block_height_table = {{
356 1, // ABGR8U 356 1, // A8B8G8R8_UNORM
357 1, // ABGR8S 357 1, // A8B8G8R8_SNORM
358 1, // ABGR8I 358 1, // A8B8G8R8_SINT
359 1, // ABGR8UI 359 1, // A8B8G8R8_UINT
360 1, // B5G6R5U 360 1, // R5G6B5_UNORM
361 1, // R5G6B5U 361 1, // B5G6R5_UNORM
362 1, // B5G5R5A1U 362 1, // A1R5G5B5_UNORM
363 1, // A2B10G10R10U 363 1, // A2B10G10R10_UNORM
364 1, // A2B10G10R10UI 364 1, // A2B10G10R10_UINT
365 1, // A1B5G5R5U 365 1, // A1B5G5R5_UNORM
366 1, // R8U 366 1, // R8_UNORM
367 1, // R8S 367 1, // R8_SNORM
368 1, // R8I 368 1, // R8_SINT
369 1, // R8UI 369 1, // R8_UINT
370 1, // RGBA16F 370 1, // R16G16B16A16_FLOAT
371 1, // RGBA16U 371 1, // R16G16B16A16_UNORM
372 1, // RGBA16S 372 1, // R16G16B16A16_SNORM
373 1, // RGBA16I 373 1, // R16G16B16A16_SINT
374 1, // RGBA16UI 374 1, // R16G16B16A16_UINT
375 1, // R11FG11FB10F 375 1, // B10G11R11_FLOAT
376 1, // RGBA32UI 376 1, // R32G32B32A32_UINT
377 4, // DXT1 377 4, // BC1_RGBA_UNORM
378 4, // DXT23 378 4, // BC2_UNORM
379 4, // DXT45 379 4, // BC3_UNORM
380 4, // DXN1UNORM 380 4, // BC4_UNORM
381 4, // DXN1SNORM 381 4, // BC4_SNORM
382 4, // DXN2UNORM 382 4, // BC5_UNORM
383 4, // DXN2SNORM 383 4, // BC5_SNORM
384 4, // BC7U 384 4, // BC7_UNORM
385 4, // BC6H_UF16 385 4, // BC6H_UFLOAT
386 4, // BC6H_SF16 386 4, // BC6H_SFLOAT
387 4, // ASTC_2D_4X4 387 4, // ASTC_2D_4X4_UNORM
388 1, // BGRA8 388 1, // B8G8R8A8_UNORM
389 1, // RGBA32F 389 1, // R32G32B32A32_FLOAT
390 1, // RGBA32I 390 1, // R32G32B32A32_SINT
391 1, // RG32F 391 1, // R32G32_FLOAT
392 1, // RG32I 392 1, // R32G32_SINT
393 1, // R32F 393 1, // R32_FLOAT
394 1, // R16F 394 1, // R16_FLOAT
395 1, // R16U 395 1, // R16_UNORM
396 1, // R16S 396 1, // R16_SNORM
397 1, // R16UI 397 1, // R16_UINT
398 1, // R16I 398 1, // R16_SINT
399 1, // RG16 399 1, // R16G16_UNORM
400 1, // RG16F 400 1, // R16G16_FLOAT
401 1, // RG16UI 401 1, // R16G16_UINT
402 1, // RG16I 402 1, // R16G16_SINT
403 1, // RG16S 403 1, // R16G16_SNORM
404 1, // RGB32F 404 1, // R32G32B32_FLOAT
405 1, // RGBA8_SRGB 405 1, // A8B8G8R8_SRGB
406 1, // RG8U 406 1, // R8G8_UNORM
407 1, // RG8S 407 1, // R8G8_SNORM
408 1, // RG8I 408 1, // R8G8_SINT
409 1, // RG8UI 409 1, // R8G8_UINT
410 1, // RG32UI 410 1, // R32G32_UINT
411 1, // RGBX16F 411 1, // R16G16B16X16_FLOAT
412 1, // R32UI 412 1, // R32_UINT
413 1, // R32I 413 1, // R32_SINT
414 8, // ASTC_2D_8X8 414 8, // ASTC_2D_8X8_UNORM
415 5, // ASTC_2D_8X5 415 5, // ASTC_2D_8X5_UNORM
416 4, // ASTC_2D_5X4 416 4, // ASTC_2D_5X4_UNORM
417 1, // BGRA8_SRGB 417 1, // B8G8R8A8_SRGB
418 4, // DXT1_SRGB 418 4, // BC1_RGBA_SRGB
419 4, // DXT23_SRGB 419 4, // BC2_SRGB
420 4, // DXT45_SRGB 420 4, // BC3_SRGB
421 4, // BC7U_SRGB 421 4, // BC7_SRGB
422 1, // R4G4B4A4U 422 1, // A4B4G4R4_UNORM
423 4, // ASTC_2D_4X4_SRGB 423 4, // ASTC_2D_4X4_SRGB
424 8, // ASTC_2D_8X8_SRGB 424 8, // ASTC_2D_8X8_SRGB
425 5, // ASTC_2D_8X5_SRGB 425 5, // ASTC_2D_8X5_SRGB
426 4, // ASTC_2D_5X4_SRGB 426 4, // ASTC_2D_5X4_SRGB
427 5, // ASTC_2D_5X5 427 5, // ASTC_2D_5X5_UNORM
428 5, // ASTC_2D_5X5_SRGB 428 5, // ASTC_2D_5X5_SRGB
429 8, // ASTC_2D_10X8 429 8, // ASTC_2D_10X8_UNORM
430 8, // ASTC_2D_10X8_SRGB 430 8, // ASTC_2D_10X8_SRGB
431 6, // ASTC_2D_6X6 431 6, // ASTC_2D_6X6_UNORM
432 6, // ASTC_2D_6X6_SRGB 432 6, // ASTC_2D_6X6_SRGB
433 10, // ASTC_2D_10X10 433 10, // ASTC_2D_10X10_UNORM
434 10, // ASTC_2D_10X10_SRGB 434 10, // ASTC_2D_10X10_SRGB
435 12, // ASTC_2D_12X12 435 12, // ASTC_2D_12X12_UNORM
436 12, // ASTC_2D_12X12_SRGB 436 12, // ASTC_2D_12X12_SRGB
437 6, // ASTC_2D_8X6 437 6, // ASTC_2D_8X6_UNORM
438 6, // ASTC_2D_8X6_SRGB 438 6, // ASTC_2D_8X6_SRGB
439 5, // ASTC_2D_6X5 439 5, // ASTC_2D_6X5_UNORM
440 5, // ASTC_2D_6X5_SRGB 440 5, // ASTC_2D_6X5_SRGB
441 1, // E5B9G9R9F 441 1, // E5B9G9R9_FLOAT
442 1, // Z32F 442 1, // D32_FLOAT
443 1, // Z16 443 1, // D16_UNORM
444 1, // Z24S8 444 1, // D24_UNORM_S8_UINT
445 1, // S8Z24 445 1, // S8_UINT_D24_UNORM
446 1, // Z32FS8 446 1, // D32_FLOAT_S8_UINT
447}}; 447}};
448 448
449static constexpr u32 GetDefaultBlockHeight(PixelFormat format) { 449static constexpr u32 GetDefaultBlockHeight(PixelFormat format) {
@@ -455,97 +455,97 @@ static constexpr u32 GetDefaultBlockHeight(PixelFormat format) {
455} 455}
456 456
457constexpr std::array<u32, MaxPixelFormat> bpp_table = {{ 457constexpr std::array<u32, MaxPixelFormat> bpp_table = {{
458 32, // ABGR8U 458 32, // A8B8G8R8_UNORM
459 32, // ABGR8S 459 32, // A8B8G8R8_SNORM
460 32, // ABGR8I 460 32, // A8B8G8R8_SINT
461 32, // ABGR8UI 461 32, // A8B8G8R8_UINT
462 16, // B5G6R5U 462 16, // R5G6B5_UNORM
463 16, // R5G6B5U 463 16, // B5G6R5_UNORM
464 16, // B5G5R5A1U 464 16, // A1R5G5B5_UNORM
465 32, // A2B10G10R10U 465 32, // A2B10G10R10_UNORM
466 32, // A2B10G10R10UI 466 32, // A2B10G10R10_UINT
467 16, // A1B5G5R5U 467 16, // A1B5G5R5_UNORM
468 8, // R8U 468 8, // R8_UNORM
469 8, // R8S 469 8, // R8_SNORM
470 8, // R8I 470 8, // R8_SINT
471 8, // R8UI 471 8, // R8_UINT
472 64, // RGBA16F 472 64, // R16G16B16A16_FLOAT
473 64, // RGBA16U 473 64, // R16G16B16A16_UNORM
474 64, // RGBA16S 474 64, // R16G16B16A16_SNORM
475 64, // RGBA16I 475 64, // R16G16B16A16_SINT
476 64, // RGBA16UI 476 64, // R16G16B16A16_UINT
477 32, // R11FG11FB10F 477 32, // B10G11R11_FLOAT
478 128, // RGBA32UI 478 128, // R32G32B32A32_UINT
479 64, // DXT1 479 64, // BC1_RGBA_UNORM
480 128, // DXT23 480 128, // BC2_UNORM
481 128, // DXT45 481 128, // BC3_UNORM
482 64, // DXN1UNORM 482 64, // BC4_UNORM
483 64, // DXN1SNORM 483 64, // BC4_SNORM
484 128, // DXN2UNORM 484 128, // BC5_UNORM
485 128, // DXN2SNORM 485 128, // BC5_SNORM
486 128, // BC7U 486 128, // BC7_UNORM
487 128, // BC6H_UF16 487 128, // BC6H_UFLOAT
488 128, // BC6H_SF16 488 128, // BC6H_SFLOAT
489 128, // ASTC_2D_4X4 489 128, // ASTC_2D_4X4_UNORM
490 32, // BGRA8 490 32, // B8G8R8A8_UNORM
491 128, // RGBA32F 491 128, // R32G32B32A32_FLOAT
492 128, // RGBA32I 492 128, // R32G32B32A32_SINT
493 64, // RG32F 493 64, // R32G32_FLOAT
494 64, // RG32I 494 64, // R32G32_SINT
495 32, // R32F 495 32, // R32_FLOAT
496 16, // R16F 496 16, // R16_FLOAT
497 16, // R16U 497 16, // R16_UNORM
498 16, // R16S 498 16, // R16_SNORM
499 16, // R16UI 499 16, // R16_UINT
500 16, // R16I 500 16, // R16_SINT
501 32, // RG16 501 32, // R16G16_UNORM
502 32, // RG16F 502 32, // R16G16_FLOAT
503 32, // RG16UI 503 32, // R16G16_UINT
504 32, // RG16I 504 32, // R16G16_SINT
505 32, // RG16S 505 32, // R16G16_SNORM
506 96, // RGB32F 506 96, // R32G32B32_FLOAT
507 32, // RGBA8_SRGB 507 32, // A8B8G8R8_SRGB
508 16, // RG8U 508 16, // R8G8_UNORM
509 16, // RG8S 509 16, // R8G8_SNORM
510 16, // RG8I 510 16, // R8G8_SINT
511 16, // RG8UI 511 16, // R8G8_UINT
512 64, // RG32UI 512 64, // R32G32_UINT
513 64, // RGBX16F 513 64, // R16G16B16X16_FLOAT
514 32, // R32UI 514 32, // R32_UINT
515 32, // R32I 515 32, // R32_SINT
516 128, // ASTC_2D_8X8 516 128, // ASTC_2D_8X8_UNORM
517 128, // ASTC_2D_8X5 517 128, // ASTC_2D_8X5_UNORM
518 128, // ASTC_2D_5X4 518 128, // ASTC_2D_5X4_UNORM
519 32, // BGRA8_SRGB 519 32, // B8G8R8A8_SRGB
520 64, // DXT1_SRGB 520 64, // BC1_RGBA_SRGB
521 128, // DXT23_SRGB 521 128, // BC2_SRGB
522 128, // DXT45_SRGB 522 128, // BC3_SRGB
523 128, // BC7U 523 128, // BC7_UNORM
524 16, // R4G4B4A4U 524 16, // A4B4G4R4_UNORM
525 128, // ASTC_2D_4X4_SRGB 525 128, // ASTC_2D_4X4_SRGB
526 128, // ASTC_2D_8X8_SRGB 526 128, // ASTC_2D_8X8_SRGB
527 128, // ASTC_2D_8X5_SRGB 527 128, // ASTC_2D_8X5_SRGB
528 128, // ASTC_2D_5X4_SRGB 528 128, // ASTC_2D_5X4_SRGB
529 128, // ASTC_2D_5X5 529 128, // ASTC_2D_5X5_UNORM
530 128, // ASTC_2D_5X5_SRGB 530 128, // ASTC_2D_5X5_SRGB
531 128, // ASTC_2D_10X8 531 128, // ASTC_2D_10X8_UNORM
532 128, // ASTC_2D_10X8_SRGB 532 128, // ASTC_2D_10X8_SRGB
533 128, // ASTC_2D_6X6 533 128, // ASTC_2D_6X6_UNORM
534 128, // ASTC_2D_6X6_SRGB 534 128, // ASTC_2D_6X6_SRGB
535 128, // ASTC_2D_10X10 535 128, // ASTC_2D_10X10_UNORM
536 128, // ASTC_2D_10X10_SRGB 536 128, // ASTC_2D_10X10_SRGB
537 128, // ASTC_2D_12X12 537 128, // ASTC_2D_12X12_UNORM
538 128, // ASTC_2D_12X12_SRGB 538 128, // ASTC_2D_12X12_SRGB
539 128, // ASTC_2D_8X6 539 128, // ASTC_2D_8X6_UNORM
540 128, // ASTC_2D_8X6_SRGB 540 128, // ASTC_2D_8X6_SRGB
541 128, // ASTC_2D_6X5 541 128, // ASTC_2D_6X5_UNORM
542 128, // ASTC_2D_6X5_SRGB 542 128, // ASTC_2D_6X5_SRGB
543 32, // E5B9G9R9F 543 32, // E5B9G9R9_FLOAT
544 32, // Z32F 544 32, // D32_FLOAT
545 16, // Z16 545 16, // D16_UNORM
546 32, // Z24S8 546 32, // D24_UNORM_S8_UINT
547 32, // S8Z24 547 32, // S8_UINT_D24_UNORM
548 64, // Z32FS8 548 64, // D32_FLOAT_S8_UINT
549}}; 549}};
550 550
551static constexpr u32 GetFormatBpp(PixelFormat format) { 551static constexpr u32 GetFormatBpp(PixelFormat format) {