summaryrefslogtreecommitdiff
path: root/src/video_core/surface.h
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2019-10-02 19:00:16 -0400
committerGravatar FernandoS272019-10-09 12:44:31 -0400
commitb9ddb517b191b449b8d935acb29962e43054dde4 (patch)
tree1b57f73765004537476b04cb7ce131a3a7522453 /src/video_core/surface.h
parentMerge pull request #2921 from FreddyFunk/compiler-warnings-core (diff)
downloadyuzu-b9ddb517b191b449b8d935acb29962e43054dde4.tar.gz
yuzu-b9ddb517b191b449b8d935acb29962e43054dde4.tar.xz
yuzu-b9ddb517b191b449b8d935acb29962e43054dde4.zip
Surfaces: Implement ASTC 6x6 10x10 12x12 8x6 6x5
Diffstat (limited to 'src/video_core/surface.h')
-rw-r--r--src/video_core/surface.h200
1 files changed, 130 insertions, 70 deletions
diff --git a/src/video_core/surface.h b/src/video_core/surface.h
index 1e1c432a5..dc7306a74 100644
--- a/src/video_core/surface.h
+++ b/src/video_core/surface.h
@@ -75,19 +75,29 @@ enum class PixelFormat {
75 ASTC_2D_5X5_SRGB = 57, 75 ASTC_2D_5X5_SRGB = 57,
76 ASTC_2D_10X8 = 58, 76 ASTC_2D_10X8 = 58,
77 ASTC_2D_10X8_SRGB = 59, 77 ASTC_2D_10X8_SRGB = 59,
78 ASTC_2D_6X6 = 60,
79 ASTC_2D_6X6_SRGB = 61,
80 ASTC_2D_10X10 = 62,
81 ASTC_2D_10X10_SRGB = 63,
82 ASTC_2D_12X12 = 64,
83 ASTC_2D_12X12_SRGB = 65,
84 ASTC_2D_8X6 = 66,
85 ASTC_2D_8X6_SRGB = 67,
86 ASTC_2D_6X5 = 68,
87 ASTC_2D_6X5_SRGB = 69,
78 88
79 MaxColorFormat, 89 MaxColorFormat,
80 90
81 // Depth formats 91 // Depth formats
82 Z32F = 60, 92 Z32F = 70,
83 Z16 = 61, 93 Z16 = 71,
84 94
85 MaxDepthFormat, 95 MaxDepthFormat,
86 96
87 // DepthStencil formats 97 // DepthStencil formats
88 Z24S8 = 62, 98 Z24S8 = 72,
89 S8Z24 = 63, 99 S8Z24 = 73,
90 Z32FS8 = 64, 100 Z32FS8 = 74,
91 101
92 MaxDepthStencilFormat, 102 MaxDepthStencilFormat,
93 103
@@ -185,6 +195,16 @@ constexpr std::array<u32, MaxPixelFormat> compression_factor_shift_table = {{
185 2, // ASTC_2D_5X5_SRGB 195 2, // ASTC_2D_5X5_SRGB
186 2, // ASTC_2D_10X8 196 2, // ASTC_2D_10X8
187 2, // ASTC_2D_10X8_SRGB 197 2, // ASTC_2D_10X8_SRGB
198 2, // ASTC_2D_6X6
199 2, // ASTC_2D_6X6_SRGB
200 2, // ASTC_2D_10X10
201 2, // ASTC_2D_10X10_SRGB
202 2, // ASTC_2D_12X12
203 2, // ASTC_2D_12X12_SRGB
204 2, // ASTC_2D_8X6
205 2, // ASTC_2D_8X6_SRGB
206 2, // ASTC_2D_6X5
207 2, // ASTC_2D_6X5_SRGB
188 0, // Z32F 208 0, // Z32F
189 0, // Z16 209 0, // Z16
190 0, // Z24S8 210 0, // Z24S8
@@ -269,6 +289,16 @@ constexpr std::array<u32, MaxPixelFormat> block_width_table = {{
269 5, // ASTC_2D_5X5_SRGB 289 5, // ASTC_2D_5X5_SRGB
270 10, // ASTC_2D_10X8 290 10, // ASTC_2D_10X8
271 10, // ASTC_2D_10X8_SRGB 291 10, // ASTC_2D_10X8_SRGB
292 6, // ASTC_2D_6X6
293 6, // ASTC_2D_6X6_SRGB
294 10, // ASTC_2D_10X10
295 10, // ASTC_2D_10X10_SRGB
296 12, // ASTC_2D_12X12
297 12, // ASTC_2D_12X12_SRGB
298 8, // ASTC_2D_8X6
299 8, // ASTC_2D_8X6_SRGB
300 6, // ASTC_2D_6X5
301 6, // ASTC_2D_6X5_SRGB
272 1, // Z32F 302 1, // Z32F
273 1, // Z16 303 1, // Z16
274 1, // Z24S8 304 1, // Z24S8
@@ -285,71 +315,81 @@ static constexpr u32 GetDefaultBlockWidth(PixelFormat format) {
285} 315}
286 316
287constexpr std::array<u32, MaxPixelFormat> block_height_table = {{ 317constexpr std::array<u32, MaxPixelFormat> block_height_table = {{
288 1, // ABGR8U 318 1, // ABGR8U
289 1, // ABGR8S 319 1, // ABGR8S
290 1, // ABGR8UI 320 1, // ABGR8UI
291 1, // B5G6R5U 321 1, // B5G6R5U
292 1, // A2B10G10R10U 322 1, // A2B10G10R10U
293 1, // A1B5G5R5U 323 1, // A1B5G5R5U
294 1, // R8U 324 1, // R8U
295 1, // R8UI 325 1, // R8UI
296 1, // RGBA16F 326 1, // RGBA16F
297 1, // RGBA16U 327 1, // RGBA16U
298 1, // RGBA16UI 328 1, // RGBA16UI
299 1, // R11FG11FB10F 329 1, // R11FG11FB10F
300 1, // RGBA32UI 330 1, // RGBA32UI
301 4, // DXT1 331 4, // DXT1
302 4, // DXT23 332 4, // DXT23
303 4, // DXT45 333 4, // DXT45
304 4, // DXN1 334 4, // DXN1
305 4, // DXN2UNORM 335 4, // DXN2UNORM
306 4, // DXN2SNORM 336 4, // DXN2SNORM
307 4, // BC7U 337 4, // BC7U
308 4, // BC6H_UF16 338 4, // BC6H_UF16
309 4, // BC6H_SF16 339 4, // BC6H_SF16
310 4, // ASTC_2D_4X4 340 4, // ASTC_2D_4X4
311 1, // BGRA8 341 1, // BGRA8
312 1, // RGBA32F 342 1, // RGBA32F
313 1, // RG32F 343 1, // RG32F
314 1, // R32F 344 1, // R32F
315 1, // R16F 345 1, // R16F
316 1, // R16U 346 1, // R16U
317 1, // R16S 347 1, // R16S
318 1, // R16UI 348 1, // R16UI
319 1, // R16I 349 1, // R16I
320 1, // RG16 350 1, // RG16
321 1, // RG16F 351 1, // RG16F
322 1, // RG16UI 352 1, // RG16UI
323 1, // RG16I 353 1, // RG16I
324 1, // RG16S 354 1, // RG16S
325 1, // RGB32F 355 1, // RGB32F
326 1, // RGBA8_SRGB 356 1, // RGBA8_SRGB
327 1, // RG8U 357 1, // RG8U
328 1, // RG8S 358 1, // RG8S
329 1, // RG32UI 359 1, // RG32UI
330 1, // RGBX16F 360 1, // RGBX16F
331 1, // R32UI 361 1, // R32UI
332 8, // ASTC_2D_8X8 362 8, // ASTC_2D_8X8
333 5, // ASTC_2D_8X5 363 5, // ASTC_2D_8X5
334 4, // ASTC_2D_5X4 364 4, // ASTC_2D_5X4
335 1, // BGRA8_SRGB 365 1, // BGRA8_SRGB
336 4, // DXT1_SRGB 366 4, // DXT1_SRGB
337 4, // DXT23_SRGB 367 4, // DXT23_SRGB
338 4, // DXT45_SRGB 368 4, // DXT45_SRGB
339 4, // BC7U_SRGB 369 4, // BC7U_SRGB
340 4, // ASTC_2D_4X4_SRGB 370 4, // ASTC_2D_4X4_SRGB
341 8, // ASTC_2D_8X8_SRGB 371 8, // ASTC_2D_8X8_SRGB
342 5, // ASTC_2D_8X5_SRGB 372 5, // ASTC_2D_8X5_SRGB
343 4, // ASTC_2D_5X4_SRGB 373 4, // ASTC_2D_5X4_SRGB
344 5, // ASTC_2D_5X5 374 5, // ASTC_2D_5X5
345 5, // ASTC_2D_5X5_SRGB 375 5, // ASTC_2D_5X5_SRGB
346 8, // ASTC_2D_10X8 376 8, // ASTC_2D_10X8
347 8, // ASTC_2D_10X8_SRGB 377 8, // ASTC_2D_10X8_SRGB
348 1, // Z32F 378 6, // ASTC_2D_6X6
349 1, // Z16 379 6, // ASTC_2D_6X6_SRGB
350 1, // Z24S8 380 10, // ASTC_2D_10X10
351 1, // S8Z24 381 10, // ASTC_2D_10X10_SRGB
352 1, // Z32FS8 382 12, // ASTC_2D_12X12
383 12, // ASTC_2D_12X12_SRGB
384 6, // ASTC_2D_8X6
385 6, // ASTC_2D_8X6_SRGB
386 5, // ASTC_2D_6X5
387 5, // ASTC_2D_6X5_SRGB
388 1, // Z32F
389 1, // Z16
390 1, // Z24S8
391 1, // S8Z24
392 1, // Z32FS8
353}}; 393}};
354 394
355static constexpr u32 GetDefaultBlockHeight(PixelFormat format) { 395static constexpr u32 GetDefaultBlockHeight(PixelFormat format) {
@@ -421,6 +461,16 @@ constexpr std::array<u32, MaxPixelFormat> bpp_table = {{
421 128, // ASTC_2D_5X5_SRGB 461 128, // ASTC_2D_5X5_SRGB
422 128, // ASTC_2D_10X8 462 128, // ASTC_2D_10X8
423 128, // ASTC_2D_10X8_SRGB 463 128, // ASTC_2D_10X8_SRGB
464 128, // ASTC_2D_6X6
465 128, // ASTC_2D_6X6_SRGB
466 128, // ASTC_2D_10X10
467 128, // ASTC_2D_10X10_SRGB
468 128, // ASTC_2D_12X12
469 128, // ASTC_2D_12X12_SRGB
470 128, // ASTC_2D_8X6
471 128, // ASTC_2D_8X6_SRGB
472 128, // ASTC_2D_6X5
473 128, // ASTC_2D_6X5_SRGB
424 32, // Z32F 474 32, // Z32F
425 16, // Z16 475 16, // Z16
426 32, // Z24S8 476 32, // Z24S8
@@ -512,6 +562,16 @@ constexpr std::array<SurfaceCompression, MaxPixelFormat> compression_type_table
512 SurfaceCompression::Converted, // ASTC_2D_5X5_SRGB 562 SurfaceCompression::Converted, // ASTC_2D_5X5_SRGB
513 SurfaceCompression::Converted, // ASTC_2D_10X8 563 SurfaceCompression::Converted, // ASTC_2D_10X8
514 SurfaceCompression::Converted, // ASTC_2D_10X8_SRGB 564 SurfaceCompression::Converted, // ASTC_2D_10X8_SRGB
565 SurfaceCompression::Converted, // ASTC_2D_6X6
566 SurfaceCompression::Converted, // ASTC_2D_6X6_SRGB
567 SurfaceCompression::Converted, // ASTC_2D_10X10
568 SurfaceCompression::Converted, // ASTC_2D_10X10_SRGB
569 SurfaceCompression::Converted, // ASTC_2D_12X12
570 SurfaceCompression::Converted, // ASTC_2D_12X12_SRGB
571 SurfaceCompression::Converted, // ASTC_2D_8X6
572 SurfaceCompression::Converted, // ASTC_2D_8X6_SRGB
573 SurfaceCompression::Converted, // ASTC_2D_6X5
574 SurfaceCompression::Converted, // ASTC_2D_6X5_SRGB
515 SurfaceCompression::None, // Z32F 575 SurfaceCompression::None, // Z32F
516 SurfaceCompression::None, // Z16 576 SurfaceCompression::None, // Z16
517 SurfaceCompression::None, // Z24S8 577 SurfaceCompression::None, // Z24S8