diff options
| author | 2019-10-02 19:00:16 -0400 | |
|---|---|---|
| committer | 2019-10-09 12:44:31 -0400 | |
| commit | b9ddb517b191b449b8d935acb29962e43054dde4 (patch) | |
| tree | 1b57f73765004537476b04cb7ce131a3a7522453 /src/video_core/surface.h | |
| parent | Merge pull request #2921 from FreddyFunk/compiler-warnings-core (diff) | |
| download | yuzu-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.h | 200 |
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 | ||
| 287 | constexpr std::array<u32, MaxPixelFormat> block_height_table = {{ | 317 | constexpr 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 | ||
| 355 | static constexpr u32 GetDefaultBlockHeight(PixelFormat format) { | 395 | static 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 |