diff options
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 369 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.h | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 234 |
5 files changed, 337 insertions, 273 deletions
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index 689164a6a..7d1431b6d 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp | |||
| @@ -317,195 +317,204 @@ VkPrimitiveTopology PrimitiveTopology([[maybe_unused]] const Device& device, | |||
| 317 | } | 317 | } |
| 318 | } | 318 | } |
| 319 | 319 | ||
| 320 | VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size) { | 320 | VkFormat VertexFormat(const Device& device, Maxwell::VertexAttribute::Type type, |
| 321 | switch (type) { | 321 | Maxwell::VertexAttribute::Size size) { |
| 322 | case Maxwell::VertexAttribute::Type::UnsignedNorm: | 322 | const VkFormat format{([&]() { |
| 323 | switch (size) { | 323 | switch (type) { |
| 324 | case Maxwell::VertexAttribute::Size::Size_8: | 324 | case Maxwell::VertexAttribute::Type::UnsignedNorm: |
| 325 | return VK_FORMAT_R8_UNORM; | 325 | switch (size) { |
| 326 | case Maxwell::VertexAttribute::Size::Size_8_8: | 326 | case Maxwell::VertexAttribute::Size::Size_8: |
| 327 | return VK_FORMAT_R8G8_UNORM; | 327 | return VK_FORMAT_R8_UNORM; |
| 328 | case Maxwell::VertexAttribute::Size::Size_8_8_8: | 328 | case Maxwell::VertexAttribute::Size::Size_8_8: |
| 329 | return VK_FORMAT_R8G8B8_UNORM; | 329 | return VK_FORMAT_R8G8_UNORM; |
| 330 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: | 330 | case Maxwell::VertexAttribute::Size::Size_8_8_8: |
| 331 | return VK_FORMAT_R8G8B8A8_UNORM; | 331 | return VK_FORMAT_R8G8B8_UNORM; |
| 332 | case Maxwell::VertexAttribute::Size::Size_16: | 332 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: |
| 333 | return VK_FORMAT_R16_UNORM; | 333 | return VK_FORMAT_R8G8B8A8_UNORM; |
| 334 | case Maxwell::VertexAttribute::Size::Size_16_16: | 334 | case Maxwell::VertexAttribute::Size::Size_16: |
| 335 | return VK_FORMAT_R16G16_UNORM; | 335 | return VK_FORMAT_R16_UNORM; |
| 336 | case Maxwell::VertexAttribute::Size::Size_16_16_16: | 336 | case Maxwell::VertexAttribute::Size::Size_16_16: |
| 337 | return VK_FORMAT_R16G16B16_UNORM; | 337 | return VK_FORMAT_R16G16_UNORM; |
| 338 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: | 338 | case Maxwell::VertexAttribute::Size::Size_16_16_16: |
| 339 | return VK_FORMAT_R16G16B16A16_UNORM; | 339 | return VK_FORMAT_R16G16B16_UNORM; |
| 340 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 340 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: |
| 341 | return VK_FORMAT_A2B10G10R10_UNORM_PACK32; | 341 | return VK_FORMAT_R16G16B16A16_UNORM; |
| 342 | default: | 342 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 343 | return VK_FORMAT_A2B10G10R10_UNORM_PACK32; | ||
| 344 | default: | ||
| 345 | break; | ||
| 346 | } | ||
| 343 | break; | 347 | break; |
| 344 | } | 348 | case Maxwell::VertexAttribute::Type::SignedNorm: |
| 345 | break; | 349 | switch (size) { |
| 346 | case Maxwell::VertexAttribute::Type::SignedNorm: | 350 | case Maxwell::VertexAttribute::Size::Size_8: |
| 347 | switch (size) { | 351 | return VK_FORMAT_R8_SNORM; |
| 348 | case Maxwell::VertexAttribute::Size::Size_8: | 352 | case Maxwell::VertexAttribute::Size::Size_8_8: |
| 349 | return VK_FORMAT_R8_SNORM; | 353 | return VK_FORMAT_R8G8_SNORM; |
| 350 | case Maxwell::VertexAttribute::Size::Size_8_8: | 354 | case Maxwell::VertexAttribute::Size::Size_8_8_8: |
| 351 | return VK_FORMAT_R8G8_SNORM; | 355 | return VK_FORMAT_R8G8B8_SNORM; |
| 352 | case Maxwell::VertexAttribute::Size::Size_8_8_8: | 356 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: |
| 353 | return VK_FORMAT_R8G8B8_SNORM; | 357 | return VK_FORMAT_R8G8B8A8_SNORM; |
| 354 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: | 358 | case Maxwell::VertexAttribute::Size::Size_16: |
| 355 | return VK_FORMAT_R8G8B8A8_SNORM; | 359 | return VK_FORMAT_R16_SNORM; |
| 356 | case Maxwell::VertexAttribute::Size::Size_16: | 360 | case Maxwell::VertexAttribute::Size::Size_16_16: |
| 357 | return VK_FORMAT_R16_SNORM; | 361 | return VK_FORMAT_R16G16_SNORM; |
| 358 | case Maxwell::VertexAttribute::Size::Size_16_16: | 362 | case Maxwell::VertexAttribute::Size::Size_16_16_16: |
| 359 | return VK_FORMAT_R16G16_SNORM; | 363 | return VK_FORMAT_R16G16B16_SNORM; |
| 360 | case Maxwell::VertexAttribute::Size::Size_16_16_16: | 364 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: |
| 361 | return VK_FORMAT_R16G16B16_SNORM; | 365 | return VK_FORMAT_R16G16B16A16_SNORM; |
| 362 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: | 366 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 363 | return VK_FORMAT_R16G16B16A16_SNORM; | 367 | return VK_FORMAT_A2B10G10R10_SNORM_PACK32; |
| 364 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 368 | default: |
| 365 | return VK_FORMAT_A2B10G10R10_SNORM_PACK32; | 369 | break; |
| 366 | default: | 370 | } |
| 367 | break; | 371 | break; |
| 368 | } | 372 | case Maxwell::VertexAttribute::Type::UnsignedScaled: |
| 369 | break; | 373 | switch (size) { |
| 370 | case Maxwell::VertexAttribute::Type::UnsignedScaled: | 374 | case Maxwell::VertexAttribute::Size::Size_8: |
| 371 | switch (size) { | 375 | return VK_FORMAT_R8_USCALED; |
| 372 | case Maxwell::VertexAttribute::Size::Size_8: | 376 | case Maxwell::VertexAttribute::Size::Size_8_8: |
| 373 | return VK_FORMAT_R8_USCALED; | 377 | return VK_FORMAT_R8G8_USCALED; |
| 374 | case Maxwell::VertexAttribute::Size::Size_8_8: | 378 | case Maxwell::VertexAttribute::Size::Size_8_8_8: |
| 375 | return VK_FORMAT_R8G8_USCALED; | 379 | return VK_FORMAT_R8G8B8_USCALED; |
| 376 | case Maxwell::VertexAttribute::Size::Size_8_8_8: | 380 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: |
| 377 | return VK_FORMAT_R8G8B8_USCALED; | 381 | return VK_FORMAT_R8G8B8A8_USCALED; |
| 378 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: | 382 | case Maxwell::VertexAttribute::Size::Size_16: |
| 379 | return VK_FORMAT_R8G8B8A8_USCALED; | 383 | return VK_FORMAT_R16_USCALED; |
| 380 | case Maxwell::VertexAttribute::Size::Size_16: | 384 | case Maxwell::VertexAttribute::Size::Size_16_16: |
| 381 | return VK_FORMAT_R16_USCALED; | 385 | return VK_FORMAT_R16G16_USCALED; |
| 382 | case Maxwell::VertexAttribute::Size::Size_16_16: | 386 | case Maxwell::VertexAttribute::Size::Size_16_16_16: |
| 383 | return VK_FORMAT_R16G16_USCALED; | 387 | return VK_FORMAT_R16G16B16_USCALED; |
| 384 | case Maxwell::VertexAttribute::Size::Size_16_16_16: | 388 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: |
| 385 | return VK_FORMAT_R16G16B16_USCALED; | 389 | return VK_FORMAT_R16G16B16A16_USCALED; |
| 386 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: | 390 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 387 | return VK_FORMAT_R16G16B16A16_USCALED; | 391 | return VK_FORMAT_A2B10G10R10_USCALED_PACK32; |
| 388 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 392 | default: |
| 389 | return VK_FORMAT_A2B10G10R10_USCALED_PACK32; | 393 | break; |
| 390 | default: | 394 | } |
| 391 | break; | 395 | break; |
| 392 | } | 396 | case Maxwell::VertexAttribute::Type::SignedScaled: |
| 393 | break; | 397 | switch (size) { |
| 394 | case Maxwell::VertexAttribute::Type::SignedScaled: | 398 | case Maxwell::VertexAttribute::Size::Size_8: |
| 395 | switch (size) { | 399 | return VK_FORMAT_R8_SSCALED; |
| 396 | case Maxwell::VertexAttribute::Size::Size_8: | 400 | case Maxwell::VertexAttribute::Size::Size_8_8: |
| 397 | return VK_FORMAT_R8_SSCALED; | 401 | return VK_FORMAT_R8G8_SSCALED; |
| 398 | case Maxwell::VertexAttribute::Size::Size_8_8: | 402 | case Maxwell::VertexAttribute::Size::Size_8_8_8: |
| 399 | return VK_FORMAT_R8G8_SSCALED; | 403 | return VK_FORMAT_R8G8B8_SSCALED; |
| 400 | case Maxwell::VertexAttribute::Size::Size_8_8_8: | 404 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: |
| 401 | return VK_FORMAT_R8G8B8_SSCALED; | 405 | return VK_FORMAT_R8G8B8A8_SSCALED; |
| 402 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: | 406 | case Maxwell::VertexAttribute::Size::Size_16: |
| 403 | return VK_FORMAT_R8G8B8A8_SSCALED; | 407 | return VK_FORMAT_R16_SSCALED; |
| 404 | case Maxwell::VertexAttribute::Size::Size_16: | 408 | case Maxwell::VertexAttribute::Size::Size_16_16: |
| 405 | return VK_FORMAT_R16_SSCALED; | 409 | return VK_FORMAT_R16G16_SSCALED; |
| 406 | case Maxwell::VertexAttribute::Size::Size_16_16: | 410 | case Maxwell::VertexAttribute::Size::Size_16_16_16: |
| 407 | return VK_FORMAT_R16G16_SSCALED; | 411 | return VK_FORMAT_R16G16B16_SSCALED; |
| 408 | case Maxwell::VertexAttribute::Size::Size_16_16_16: | 412 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: |
| 409 | return VK_FORMAT_R16G16B16_SSCALED; | 413 | return VK_FORMAT_R16G16B16A16_SSCALED; |
| 410 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: | 414 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 411 | return VK_FORMAT_R16G16B16A16_SSCALED; | 415 | return VK_FORMAT_A2B10G10R10_SSCALED_PACK32; |
| 412 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 416 | default: |
| 413 | return VK_FORMAT_A2B10G10R10_SSCALED_PACK32; | 417 | break; |
| 414 | default: | 418 | } |
| 415 | break; | 419 | break; |
| 416 | } | 420 | case Maxwell::VertexAttribute::Type::UnsignedInt: |
| 417 | break; | 421 | switch (size) { |
| 418 | case Maxwell::VertexAttribute::Type::UnsignedInt: | 422 | case Maxwell::VertexAttribute::Size::Size_8: |
| 419 | switch (size) { | 423 | return VK_FORMAT_R8_UINT; |
| 420 | case Maxwell::VertexAttribute::Size::Size_8: | 424 | case Maxwell::VertexAttribute::Size::Size_8_8: |
| 421 | return VK_FORMAT_R8_UINT; | 425 | return VK_FORMAT_R8G8_UINT; |
| 422 | case Maxwell::VertexAttribute::Size::Size_8_8: | 426 | case Maxwell::VertexAttribute::Size::Size_8_8_8: |
| 423 | return VK_FORMAT_R8G8_UINT; | 427 | return VK_FORMAT_R8G8B8_UINT; |
| 424 | case Maxwell::VertexAttribute::Size::Size_8_8_8: | 428 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: |
| 425 | return VK_FORMAT_R8G8B8_UINT; | 429 | return VK_FORMAT_R8G8B8A8_UINT; |
| 426 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: | 430 | case Maxwell::VertexAttribute::Size::Size_16: |
| 427 | return VK_FORMAT_R8G8B8A8_UINT; | 431 | return VK_FORMAT_R16_UINT; |
| 428 | case Maxwell::VertexAttribute::Size::Size_16: | 432 | case Maxwell::VertexAttribute::Size::Size_16_16: |
| 429 | return VK_FORMAT_R16_UINT; | 433 | return VK_FORMAT_R16G16_UINT; |
| 430 | case Maxwell::VertexAttribute::Size::Size_16_16: | 434 | case Maxwell::VertexAttribute::Size::Size_16_16_16: |
| 431 | return VK_FORMAT_R16G16_UINT; | 435 | return VK_FORMAT_R16G16B16_UINT; |
| 432 | case Maxwell::VertexAttribute::Size::Size_16_16_16: | 436 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: |
| 433 | return VK_FORMAT_R16G16B16_UINT; | 437 | return VK_FORMAT_R16G16B16A16_UINT; |
| 434 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: | 438 | case Maxwell::VertexAttribute::Size::Size_32: |
| 435 | return VK_FORMAT_R16G16B16A16_UINT; | 439 | return VK_FORMAT_R32_UINT; |
| 436 | case Maxwell::VertexAttribute::Size::Size_32: | 440 | case Maxwell::VertexAttribute::Size::Size_32_32: |
| 437 | return VK_FORMAT_R32_UINT; | 441 | return VK_FORMAT_R32G32_UINT; |
| 438 | case Maxwell::VertexAttribute::Size::Size_32_32: | 442 | case Maxwell::VertexAttribute::Size::Size_32_32_32: |
| 439 | return VK_FORMAT_R32G32_UINT; | 443 | return VK_FORMAT_R32G32B32_UINT; |
| 440 | case Maxwell::VertexAttribute::Size::Size_32_32_32: | 444 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: |
| 441 | return VK_FORMAT_R32G32B32_UINT; | 445 | return VK_FORMAT_R32G32B32A32_UINT; |
| 442 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: | 446 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 443 | return VK_FORMAT_R32G32B32A32_UINT; | 447 | return VK_FORMAT_A2B10G10R10_UINT_PACK32; |
| 444 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 448 | default: |
| 445 | return VK_FORMAT_A2B10G10R10_UINT_PACK32; | 449 | break; |
| 446 | default: | 450 | } |
| 447 | break; | 451 | break; |
| 448 | } | 452 | case Maxwell::VertexAttribute::Type::SignedInt: |
| 449 | break; | 453 | switch (size) { |
| 450 | case Maxwell::VertexAttribute::Type::SignedInt: | 454 | case Maxwell::VertexAttribute::Size::Size_8: |
| 451 | switch (size) { | 455 | return VK_FORMAT_R8_SINT; |
| 452 | case Maxwell::VertexAttribute::Size::Size_8: | 456 | case Maxwell::VertexAttribute::Size::Size_8_8: |
| 453 | return VK_FORMAT_R8_SINT; | 457 | return VK_FORMAT_R8G8_SINT; |
| 454 | case Maxwell::VertexAttribute::Size::Size_8_8: | 458 | case Maxwell::VertexAttribute::Size::Size_8_8_8: |
| 455 | return VK_FORMAT_R8G8_SINT; | 459 | return VK_FORMAT_R8G8B8_SINT; |
| 456 | case Maxwell::VertexAttribute::Size::Size_8_8_8: | 460 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: |
| 457 | return VK_FORMAT_R8G8B8_SINT; | 461 | return VK_FORMAT_R8G8B8A8_SINT; |
| 458 | case Maxwell::VertexAttribute::Size::Size_8_8_8_8: | 462 | case Maxwell::VertexAttribute::Size::Size_16: |
| 459 | return VK_FORMAT_R8G8B8A8_SINT; | 463 | return VK_FORMAT_R16_SINT; |
| 460 | case Maxwell::VertexAttribute::Size::Size_16: | 464 | case Maxwell::VertexAttribute::Size::Size_16_16: |
| 461 | return VK_FORMAT_R16_SINT; | 465 | return VK_FORMAT_R16G16_SINT; |
| 462 | case Maxwell::VertexAttribute::Size::Size_16_16: | 466 | case Maxwell::VertexAttribute::Size::Size_16_16_16: |
| 463 | return VK_FORMAT_R16G16_SINT; | 467 | return VK_FORMAT_R16G16B16_SINT; |
| 464 | case Maxwell::VertexAttribute::Size::Size_16_16_16: | 468 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: |
| 465 | return VK_FORMAT_R16G16B16_SINT; | 469 | return VK_FORMAT_R16G16B16A16_SINT; |
| 466 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: | 470 | case Maxwell::VertexAttribute::Size::Size_32: |
| 467 | return VK_FORMAT_R16G16B16A16_SINT; | 471 | return VK_FORMAT_R32_SINT; |
| 468 | case Maxwell::VertexAttribute::Size::Size_32: | 472 | case Maxwell::VertexAttribute::Size::Size_32_32: |
| 469 | return VK_FORMAT_R32_SINT; | 473 | return VK_FORMAT_R32G32_SINT; |
| 470 | case Maxwell::VertexAttribute::Size::Size_32_32: | 474 | case Maxwell::VertexAttribute::Size::Size_32_32_32: |
| 471 | return VK_FORMAT_R32G32_SINT; | 475 | return VK_FORMAT_R32G32B32_SINT; |
| 472 | case Maxwell::VertexAttribute::Size::Size_32_32_32: | 476 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: |
| 473 | return VK_FORMAT_R32G32B32_SINT; | 477 | return VK_FORMAT_R32G32B32A32_SINT; |
| 474 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: | 478 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 475 | return VK_FORMAT_R32G32B32A32_SINT; | 479 | return VK_FORMAT_A2B10G10R10_SINT_PACK32; |
| 476 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 480 | default: |
| 477 | return VK_FORMAT_A2B10G10R10_SINT_PACK32; | 481 | break; |
| 478 | default: | 482 | } |
| 479 | break; | 483 | break; |
| 480 | } | 484 | case Maxwell::VertexAttribute::Type::Float: |
| 481 | break; | 485 | switch (size) { |
| 482 | case Maxwell::VertexAttribute::Type::Float: | 486 | case Maxwell::VertexAttribute::Size::Size_16: |
| 483 | switch (size) { | 487 | return VK_FORMAT_R16_SFLOAT; |
| 484 | case Maxwell::VertexAttribute::Size::Size_16: | 488 | case Maxwell::VertexAttribute::Size::Size_16_16: |
| 485 | return VK_FORMAT_R16_SFLOAT; | 489 | return VK_FORMAT_R16G16_SFLOAT; |
| 486 | case Maxwell::VertexAttribute::Size::Size_16_16: | 490 | case Maxwell::VertexAttribute::Size::Size_16_16_16: |
| 487 | return VK_FORMAT_R16G16_SFLOAT; | 491 | return VK_FORMAT_R16G16B16_SFLOAT; |
| 488 | case Maxwell::VertexAttribute::Size::Size_16_16_16: | 492 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: |
| 489 | return VK_FORMAT_R16G16B16_SFLOAT; | 493 | return VK_FORMAT_R16G16B16A16_SFLOAT; |
| 490 | case Maxwell::VertexAttribute::Size::Size_16_16_16_16: | 494 | case Maxwell::VertexAttribute::Size::Size_32: |
| 491 | return VK_FORMAT_R16G16B16A16_SFLOAT; | 495 | return VK_FORMAT_R32_SFLOAT; |
| 492 | case Maxwell::VertexAttribute::Size::Size_32: | 496 | case Maxwell::VertexAttribute::Size::Size_32_32: |
| 493 | return VK_FORMAT_R32_SFLOAT; | 497 | return VK_FORMAT_R32G32_SFLOAT; |
| 494 | case Maxwell::VertexAttribute::Size::Size_32_32: | 498 | case Maxwell::VertexAttribute::Size::Size_32_32_32: |
| 495 | return VK_FORMAT_R32G32_SFLOAT; | 499 | return VK_FORMAT_R32G32B32_SFLOAT; |
| 496 | case Maxwell::VertexAttribute::Size::Size_32_32_32: | 500 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: |
| 497 | return VK_FORMAT_R32G32B32_SFLOAT; | 501 | return VK_FORMAT_R32G32B32A32_SFLOAT; |
| 498 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: | 502 | case Maxwell::VertexAttribute::Size::Size_11_11_10: |
| 499 | return VK_FORMAT_R32G32B32A32_SFLOAT; | 503 | return VK_FORMAT_B10G11R11_UFLOAT_PACK32; |
| 500 | case Maxwell::VertexAttribute::Size::Size_11_11_10: | 504 | default: |
| 501 | return VK_FORMAT_B10G11R11_UFLOAT_PACK32; | 505 | break; |
| 502 | default: | 506 | } |
| 503 | break; | 507 | break; |
| 504 | } | 508 | } |
| 505 | break; | 509 | return VK_FORMAT_UNDEFINED; |
| 510 | })()}; | ||
| 511 | |||
| 512 | if (format == VK_FORMAT_UNDEFINED) { | ||
| 513 | UNIMPLEMENTED_MSG("Unimplemented vertex format of type={} and size={}", type, size); | ||
| 506 | } | 514 | } |
| 507 | UNIMPLEMENTED_MSG("Unimplemented vertex format of type={} and size={}", type, size); | 515 | |
| 508 | return {}; | 516 | return device.GetSupportedFormat(format, VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT, |
| 517 | FormatType::Buffer); | ||
| 509 | } | 518 | } |
| 510 | 519 | ||
| 511 | VkCompareOp ComparisonOp(Maxwell::ComparisonOp comparison) { | 520 | VkCompareOp ComparisonOp(Maxwell::ComparisonOp comparison) { |
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.h b/src/video_core/renderer_vulkan/maxwell_to_vk.h index 9edd6af6a..356d46292 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.h +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.h | |||
| @@ -48,7 +48,8 @@ VkShaderStageFlagBits ShaderStage(Shader::Stage stage); | |||
| 48 | 48 | ||
| 49 | VkPrimitiveTopology PrimitiveTopology(const Device& device, Maxwell::PrimitiveTopology topology); | 49 | VkPrimitiveTopology PrimitiveTopology(const Device& device, Maxwell::PrimitiveTopology topology); |
| 50 | 50 | ||
| 51 | VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size); | 51 | VkFormat VertexFormat(const Device& device, Maxwell::VertexAttribute::Type type, |
| 52 | Maxwell::VertexAttribute::Size size); | ||
| 52 | 53 | ||
| 53 | VkCompareOp ComparisonOp(Maxwell::ComparisonOp comparison); | 54 | VkCompareOp ComparisonOp(Maxwell::ComparisonOp comparison); |
| 54 | 55 | ||
diff --git a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp index 682f05335..5aca8f038 100644 --- a/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp +++ b/src/video_core/renderer_vulkan/vk_graphics_pipeline.cpp | |||
| @@ -559,7 +559,7 @@ void GraphicsPipeline::MakePipeline(VkRenderPass render_pass) { | |||
| 559 | vertex_attributes.push_back({ | 559 | vertex_attributes.push_back({ |
| 560 | .location = static_cast<u32>(index), | 560 | .location = static_cast<u32>(index), |
| 561 | .binding = attribute.buffer, | 561 | .binding = attribute.buffer, |
| 562 | .format = MaxwellToVK::VertexFormat(attribute.Type(), attribute.Size()), | 562 | .format = MaxwellToVK::VertexFormat(device, attribute.Type(), attribute.Size()), |
| 563 | .offset = attribute.offset, | 563 | .offset = attribute.offset, |
| 564 | }); | 564 | }); |
| 565 | } | 565 | } |
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 10f9fe7fe..16e46d3e5 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp | |||
| @@ -939,7 +939,7 @@ void RasterizerVulkan::UpdateVertexInput(Tegra::Engines::Maxwell3D::Regs& regs) | |||
| 939 | .pNext = nullptr, | 939 | .pNext = nullptr, |
| 940 | .location = static_cast<u32>(index), | 940 | .location = static_cast<u32>(index), |
| 941 | .binding = binding, | 941 | .binding = binding, |
| 942 | .format = MaxwellToVK::VertexFormat(attribute.type, attribute.size), | 942 | .format = MaxwellToVK::VertexFormat(device, attribute.type, attribute.size), |
| 943 | .offset = attribute.offset, | 943 | .offset = attribute.offset, |
| 944 | }); | 944 | }); |
| 945 | } | 945 | } |
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 743ac09f6..ddecfca13 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp | |||
| @@ -50,6 +50,21 @@ constexpr std::array R4G4_UNORM_PACK8{ | |||
| 50 | VK_FORMAT_UNDEFINED, | 50 | VK_FORMAT_UNDEFINED, |
| 51 | }; | 51 | }; |
| 52 | 52 | ||
| 53 | constexpr std::array R16G16B16_SFLOAT{ | ||
| 54 | VK_FORMAT_R16G16B16A16_SFLOAT, | ||
| 55 | VK_FORMAT_UNDEFINED, | ||
| 56 | }; | ||
| 57 | |||
| 58 | constexpr std::array R16G16B16_SSCALED{ | ||
| 59 | VK_FORMAT_R16G16B16A16_SSCALED, | ||
| 60 | VK_FORMAT_UNDEFINED, | ||
| 61 | }; | ||
| 62 | |||
| 63 | constexpr std::array R8G8B8_SSCALED{ | ||
| 64 | VK_FORMAT_R8G8B8A8_SSCALED, | ||
| 65 | VK_FORMAT_UNDEFINED, | ||
| 66 | }; | ||
| 67 | |||
| 53 | } // namespace Alternatives | 68 | } // namespace Alternatives |
| 54 | 69 | ||
| 55 | enum class NvidiaArchitecture { | 70 | enum class NvidiaArchitecture { |
| @@ -102,6 +117,12 @@ constexpr const VkFormat* GetFormatAlternatives(VkFormat format) { | |||
| 102 | return Alternatives::B5G6R5_UNORM_PACK16.data(); | 117 | return Alternatives::B5G6R5_UNORM_PACK16.data(); |
| 103 | case VK_FORMAT_R4G4_UNORM_PACK8: | 118 | case VK_FORMAT_R4G4_UNORM_PACK8: |
| 104 | return Alternatives::R4G4_UNORM_PACK8.data(); | 119 | return Alternatives::R4G4_UNORM_PACK8.data(); |
| 120 | case VK_FORMAT_R16G16B16_SFLOAT: | ||
| 121 | return Alternatives::R16G16B16_SFLOAT.data(); | ||
| 122 | case VK_FORMAT_R16G16B16_SSCALED: | ||
| 123 | return Alternatives::R16G16B16_SSCALED.data(); | ||
| 124 | case VK_FORMAT_R8G8B8_SSCALED: | ||
| 125 | return Alternatives::R8G8B8_SSCALED.data(); | ||
| 105 | default: | 126 | default: |
| 106 | return nullptr; | 127 | return nullptr; |
| 107 | } | 128 | } |
| @@ -122,109 +143,142 @@ VkFormatFeatureFlags GetFormatFeatures(VkFormatProperties properties, FormatType | |||
| 122 | 143 | ||
| 123 | std::unordered_map<VkFormat, VkFormatProperties> GetFormatProperties(vk::PhysicalDevice physical) { | 144 | std::unordered_map<VkFormat, VkFormatProperties> GetFormatProperties(vk::PhysicalDevice physical) { |
| 124 | static constexpr std::array formats{ | 145 | static constexpr std::array formats{ |
| 125 | VK_FORMAT_A8B8G8R8_UNORM_PACK32, | 146 | VK_FORMAT_A1R5G5B5_UNORM_PACK16, |
| 126 | VK_FORMAT_A8B8G8R8_UINT_PACK32, | 147 | VK_FORMAT_A2B10G10R10_SINT_PACK32, |
| 127 | VK_FORMAT_A8B8G8R8_SNORM_PACK32, | 148 | VK_FORMAT_A2B10G10R10_SNORM_PACK32, |
| 149 | VK_FORMAT_A2B10G10R10_SSCALED_PACK32, | ||
| 150 | VK_FORMAT_A2B10G10R10_UINT_PACK32, | ||
| 151 | VK_FORMAT_A2B10G10R10_UNORM_PACK32, | ||
| 152 | VK_FORMAT_A2B10G10R10_USCALED_PACK32, | ||
| 128 | VK_FORMAT_A8B8G8R8_SINT_PACK32, | 153 | VK_FORMAT_A8B8G8R8_SINT_PACK32, |
| 154 | VK_FORMAT_A8B8G8R8_SNORM_PACK32, | ||
| 129 | VK_FORMAT_A8B8G8R8_SRGB_PACK32, | 155 | VK_FORMAT_A8B8G8R8_SRGB_PACK32, |
| 130 | VK_FORMAT_R5G6B5_UNORM_PACK16, | 156 | VK_FORMAT_A8B8G8R8_UINT_PACK32, |
| 131 | VK_FORMAT_B5G6R5_UNORM_PACK16, | 157 | VK_FORMAT_A8B8G8R8_UNORM_PACK32, |
| 132 | VK_FORMAT_R5G5B5A1_UNORM_PACK16, | 158 | VK_FORMAT_ASTC_10x10_SRGB_BLOCK, |
| 159 | VK_FORMAT_ASTC_10x10_UNORM_BLOCK, | ||
| 160 | VK_FORMAT_ASTC_10x5_SRGB_BLOCK, | ||
| 161 | VK_FORMAT_ASTC_10x5_UNORM_BLOCK, | ||
| 162 | VK_FORMAT_ASTC_10x6_SRGB_BLOCK, | ||
| 163 | VK_FORMAT_ASTC_10x6_UNORM_BLOCK, | ||
| 164 | VK_FORMAT_ASTC_10x8_SRGB_BLOCK, | ||
| 165 | VK_FORMAT_ASTC_10x8_UNORM_BLOCK, | ||
| 166 | VK_FORMAT_ASTC_12x10_SRGB_BLOCK, | ||
| 167 | VK_FORMAT_ASTC_12x10_UNORM_BLOCK, | ||
| 168 | VK_FORMAT_ASTC_12x12_SRGB_BLOCK, | ||
| 169 | VK_FORMAT_ASTC_12x12_UNORM_BLOCK, | ||
| 170 | VK_FORMAT_ASTC_4x4_SRGB_BLOCK, | ||
| 171 | VK_FORMAT_ASTC_4x4_UNORM_BLOCK, | ||
| 172 | VK_FORMAT_ASTC_5x4_SRGB_BLOCK, | ||
| 173 | VK_FORMAT_ASTC_5x4_UNORM_BLOCK, | ||
| 174 | VK_FORMAT_ASTC_5x5_SRGB_BLOCK, | ||
| 175 | VK_FORMAT_ASTC_5x5_UNORM_BLOCK, | ||
| 176 | VK_FORMAT_ASTC_6x5_SRGB_BLOCK, | ||
| 177 | VK_FORMAT_ASTC_6x5_UNORM_BLOCK, | ||
| 178 | VK_FORMAT_ASTC_6x6_SRGB_BLOCK, | ||
| 179 | VK_FORMAT_ASTC_6x6_UNORM_BLOCK, | ||
| 180 | VK_FORMAT_ASTC_8x5_SRGB_BLOCK, | ||
| 181 | VK_FORMAT_ASTC_8x5_UNORM_BLOCK, | ||
| 182 | VK_FORMAT_ASTC_8x6_SRGB_BLOCK, | ||
| 183 | VK_FORMAT_ASTC_8x6_UNORM_BLOCK, | ||
| 184 | VK_FORMAT_ASTC_8x8_SRGB_BLOCK, | ||
| 185 | VK_FORMAT_ASTC_8x8_UNORM_BLOCK, | ||
| 186 | VK_FORMAT_B10G11R11_UFLOAT_PACK32, | ||
| 187 | VK_FORMAT_B4G4R4A4_UNORM_PACK16, | ||
| 133 | VK_FORMAT_B5G5R5A1_UNORM_PACK16, | 188 | VK_FORMAT_B5G5R5A1_UNORM_PACK16, |
| 134 | VK_FORMAT_A2B10G10R10_UNORM_PACK32, | 189 | VK_FORMAT_B5G6R5_UNORM_PACK16, |
| 135 | VK_FORMAT_A2B10G10R10_UINT_PACK32, | 190 | VK_FORMAT_B8G8R8A8_SRGB, |
| 136 | VK_FORMAT_A1R5G5B5_UNORM_PACK16, | 191 | VK_FORMAT_B8G8R8A8_UNORM, |
| 137 | VK_FORMAT_R32G32B32A32_SFLOAT, | 192 | VK_FORMAT_BC1_RGBA_SRGB_BLOCK, |
| 138 | VK_FORMAT_R32G32B32A32_SINT, | 193 | VK_FORMAT_BC1_RGBA_UNORM_BLOCK, |
| 139 | VK_FORMAT_R32G32B32A32_UINT, | 194 | VK_FORMAT_BC2_SRGB_BLOCK, |
| 140 | VK_FORMAT_R32G32_SFLOAT, | 195 | VK_FORMAT_BC2_UNORM_BLOCK, |
| 141 | VK_FORMAT_R32G32_SINT, | 196 | VK_FORMAT_BC3_SRGB_BLOCK, |
| 142 | VK_FORMAT_R32G32_UINT, | 197 | VK_FORMAT_BC3_UNORM_BLOCK, |
| 198 | VK_FORMAT_BC4_SNORM_BLOCK, | ||
| 199 | VK_FORMAT_BC4_UNORM_BLOCK, | ||
| 200 | VK_FORMAT_BC5_SNORM_BLOCK, | ||
| 201 | VK_FORMAT_BC5_UNORM_BLOCK, | ||
| 202 | VK_FORMAT_BC6H_SFLOAT_BLOCK, | ||
| 203 | VK_FORMAT_BC6H_UFLOAT_BLOCK, | ||
| 204 | VK_FORMAT_BC7_SRGB_BLOCK, | ||
| 205 | VK_FORMAT_BC7_UNORM_BLOCK, | ||
| 206 | VK_FORMAT_D16_UNORM, | ||
| 207 | VK_FORMAT_D16_UNORM_S8_UINT, | ||
| 208 | VK_FORMAT_D24_UNORM_S8_UINT, | ||
| 209 | VK_FORMAT_D32_SFLOAT, | ||
| 210 | VK_FORMAT_D32_SFLOAT_S8_UINT, | ||
| 211 | VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, | ||
| 212 | VK_FORMAT_R16G16B16A16_SFLOAT, | ||
| 143 | VK_FORMAT_R16G16B16A16_SINT, | 213 | VK_FORMAT_R16G16B16A16_SINT, |
| 144 | VK_FORMAT_R16G16B16A16_UINT, | ||
| 145 | VK_FORMAT_R16G16B16A16_SNORM, | 214 | VK_FORMAT_R16G16B16A16_SNORM, |
| 215 | VK_FORMAT_R16G16B16A16_SSCALED, | ||
| 216 | VK_FORMAT_R16G16B16A16_UINT, | ||
| 146 | VK_FORMAT_R16G16B16A16_UNORM, | 217 | VK_FORMAT_R16G16B16A16_UNORM, |
| 147 | VK_FORMAT_R16G16_UNORM, | 218 | VK_FORMAT_R16G16B16A16_USCALED, |
| 148 | VK_FORMAT_R16G16_SNORM, | 219 | VK_FORMAT_R16G16B16_SFLOAT, |
| 220 | VK_FORMAT_R16G16B16_SINT, | ||
| 221 | VK_FORMAT_R16G16B16_SNORM, | ||
| 222 | VK_FORMAT_R16G16B16_SSCALED, | ||
| 223 | VK_FORMAT_R16G16B16_UINT, | ||
| 224 | VK_FORMAT_R16G16B16_UNORM, | ||
| 225 | VK_FORMAT_R16G16B16_USCALED, | ||
| 149 | VK_FORMAT_R16G16_SFLOAT, | 226 | VK_FORMAT_R16G16_SFLOAT, |
| 150 | VK_FORMAT_R16G16_UINT, | ||
| 151 | VK_FORMAT_R16G16_SINT, | 227 | VK_FORMAT_R16G16_SINT, |
| 152 | VK_FORMAT_R16_UNORM, | 228 | VK_FORMAT_R16G16_SNORM, |
| 229 | VK_FORMAT_R16G16_SSCALED, | ||
| 230 | VK_FORMAT_R16G16_UINT, | ||
| 231 | VK_FORMAT_R16G16_UNORM, | ||
| 232 | VK_FORMAT_R16G16_USCALED, | ||
| 233 | VK_FORMAT_R16_SFLOAT, | ||
| 234 | VK_FORMAT_R16_SINT, | ||
| 153 | VK_FORMAT_R16_SNORM, | 235 | VK_FORMAT_R16_SNORM, |
| 236 | VK_FORMAT_R16_SSCALED, | ||
| 154 | VK_FORMAT_R16_UINT, | 237 | VK_FORMAT_R16_UINT, |
| 238 | VK_FORMAT_R16_UNORM, | ||
| 239 | VK_FORMAT_R16_USCALED, | ||
| 240 | VK_FORMAT_R32G32B32A32_SFLOAT, | ||
| 241 | VK_FORMAT_R32G32B32A32_SINT, | ||
| 242 | VK_FORMAT_R32G32B32A32_UINT, | ||
| 243 | VK_FORMAT_R32G32B32_SFLOAT, | ||
| 244 | VK_FORMAT_R32G32B32_SINT, | ||
| 245 | VK_FORMAT_R32G32B32_UINT, | ||
| 246 | VK_FORMAT_R32G32_SFLOAT, | ||
| 247 | VK_FORMAT_R32G32_SINT, | ||
| 248 | VK_FORMAT_R32G32_UINT, | ||
| 249 | VK_FORMAT_R32_SFLOAT, | ||
| 250 | VK_FORMAT_R32_SINT, | ||
| 251 | VK_FORMAT_R32_UINT, | ||
| 252 | VK_FORMAT_R4G4B4A4_UNORM_PACK16, | ||
| 253 | VK_FORMAT_R4G4_UNORM_PACK8, | ||
| 254 | VK_FORMAT_R5G5B5A1_UNORM_PACK16, | ||
| 255 | VK_FORMAT_R5G6B5_UNORM_PACK16, | ||
| 256 | VK_FORMAT_R8G8B8A8_SINT, | ||
| 257 | VK_FORMAT_R8G8B8A8_SNORM, | ||
| 155 | VK_FORMAT_R8G8B8A8_SRGB, | 258 | VK_FORMAT_R8G8B8A8_SRGB, |
| 156 | VK_FORMAT_R8G8_UNORM, | 259 | VK_FORMAT_R8G8B8A8_SSCALED, |
| 157 | VK_FORMAT_R8G8_SNORM, | 260 | VK_FORMAT_R8G8B8A8_UINT, |
| 261 | VK_FORMAT_R8G8B8A8_UNORM, | ||
| 262 | VK_FORMAT_R8G8B8A8_USCALED, | ||
| 263 | VK_FORMAT_R8G8B8_SINT, | ||
| 264 | VK_FORMAT_R8G8B8_SNORM, | ||
| 265 | VK_FORMAT_R8G8B8_SSCALED, | ||
| 266 | VK_FORMAT_R8G8B8_UINT, | ||
| 267 | VK_FORMAT_R8G8B8_UNORM, | ||
| 268 | VK_FORMAT_R8G8B8_USCALED, | ||
| 158 | VK_FORMAT_R8G8_SINT, | 269 | VK_FORMAT_R8G8_SINT, |
| 270 | VK_FORMAT_R8G8_SNORM, | ||
| 271 | VK_FORMAT_R8G8_SSCALED, | ||
| 159 | VK_FORMAT_R8G8_UINT, | 272 | VK_FORMAT_R8G8_UINT, |
| 160 | VK_FORMAT_R8_UNORM, | 273 | VK_FORMAT_R8G8_UNORM, |
| 161 | VK_FORMAT_R8_SNORM, | 274 | VK_FORMAT_R8G8_USCALED, |
| 162 | VK_FORMAT_R8_SINT, | 275 | VK_FORMAT_R8_SINT, |
| 276 | VK_FORMAT_R8_SNORM, | ||
| 277 | VK_FORMAT_R8_SSCALED, | ||
| 163 | VK_FORMAT_R8_UINT, | 278 | VK_FORMAT_R8_UINT, |
| 164 | VK_FORMAT_B10G11R11_UFLOAT_PACK32, | 279 | VK_FORMAT_R8_UNORM, |
| 165 | VK_FORMAT_R32_SFLOAT, | 280 | VK_FORMAT_R8_USCALED, |
| 166 | VK_FORMAT_R32_UINT, | ||
| 167 | VK_FORMAT_R32_SINT, | ||
| 168 | VK_FORMAT_R16_SFLOAT, | ||
| 169 | VK_FORMAT_R16G16B16A16_SFLOAT, | ||
| 170 | VK_FORMAT_B8G8R8A8_UNORM, | ||
| 171 | VK_FORMAT_B8G8R8A8_SRGB, | ||
| 172 | VK_FORMAT_R4G4_UNORM_PACK8, | ||
| 173 | VK_FORMAT_R4G4B4A4_UNORM_PACK16, | ||
| 174 | VK_FORMAT_B4G4R4A4_UNORM_PACK16, | ||
| 175 | VK_FORMAT_D32_SFLOAT, | ||
| 176 | VK_FORMAT_D16_UNORM, | ||
| 177 | VK_FORMAT_S8_UINT, | 281 | VK_FORMAT_S8_UINT, |
| 178 | VK_FORMAT_D16_UNORM_S8_UINT, | ||
| 179 | VK_FORMAT_D24_UNORM_S8_UINT, | ||
| 180 | VK_FORMAT_D32_SFLOAT_S8_UINT, | ||
| 181 | VK_FORMAT_BC1_RGBA_UNORM_BLOCK, | ||
| 182 | VK_FORMAT_BC2_UNORM_BLOCK, | ||
| 183 | VK_FORMAT_BC3_UNORM_BLOCK, | ||
| 184 | VK_FORMAT_BC4_UNORM_BLOCK, | ||
| 185 | VK_FORMAT_BC4_SNORM_BLOCK, | ||
| 186 | VK_FORMAT_BC5_UNORM_BLOCK, | ||
| 187 | VK_FORMAT_BC5_SNORM_BLOCK, | ||
| 188 | VK_FORMAT_BC7_UNORM_BLOCK, | ||
| 189 | VK_FORMAT_BC6H_UFLOAT_BLOCK, | ||
| 190 | VK_FORMAT_BC6H_SFLOAT_BLOCK, | ||
| 191 | VK_FORMAT_BC1_RGBA_SRGB_BLOCK, | ||
| 192 | VK_FORMAT_BC2_SRGB_BLOCK, | ||
| 193 | VK_FORMAT_BC3_SRGB_BLOCK, | ||
| 194 | VK_FORMAT_BC7_SRGB_BLOCK, | ||
| 195 | VK_FORMAT_ASTC_4x4_UNORM_BLOCK, | ||
| 196 | VK_FORMAT_ASTC_4x4_SRGB_BLOCK, | ||
| 197 | VK_FORMAT_ASTC_5x4_UNORM_BLOCK, | ||
| 198 | VK_FORMAT_ASTC_5x4_SRGB_BLOCK, | ||
| 199 | VK_FORMAT_ASTC_5x5_UNORM_BLOCK, | ||
| 200 | VK_FORMAT_ASTC_5x5_SRGB_BLOCK, | ||
| 201 | VK_FORMAT_ASTC_6x5_UNORM_BLOCK, | ||
| 202 | VK_FORMAT_ASTC_6x5_SRGB_BLOCK, | ||
| 203 | VK_FORMAT_ASTC_6x6_UNORM_BLOCK, | ||
| 204 | VK_FORMAT_ASTC_6x6_SRGB_BLOCK, | ||
| 205 | VK_FORMAT_ASTC_8x5_UNORM_BLOCK, | ||
| 206 | VK_FORMAT_ASTC_8x5_SRGB_BLOCK, | ||
| 207 | VK_FORMAT_ASTC_8x6_UNORM_BLOCK, | ||
| 208 | VK_FORMAT_ASTC_8x6_SRGB_BLOCK, | ||
| 209 | VK_FORMAT_ASTC_8x8_UNORM_BLOCK, | ||
| 210 | VK_FORMAT_ASTC_8x8_SRGB_BLOCK, | ||
| 211 | VK_FORMAT_ASTC_10x5_UNORM_BLOCK, | ||
| 212 | VK_FORMAT_ASTC_10x5_SRGB_BLOCK, | ||
| 213 | VK_FORMAT_ASTC_10x6_UNORM_BLOCK, | ||
| 214 | VK_FORMAT_ASTC_10x6_SRGB_BLOCK, | ||
| 215 | VK_FORMAT_ASTC_10x8_UNORM_BLOCK, | ||
| 216 | VK_FORMAT_ASTC_10x8_SRGB_BLOCK, | ||
| 217 | VK_FORMAT_ASTC_10x10_UNORM_BLOCK, | ||
| 218 | VK_FORMAT_ASTC_10x10_SRGB_BLOCK, | ||
| 219 | VK_FORMAT_ASTC_12x10_UNORM_BLOCK, | ||
| 220 | VK_FORMAT_ASTC_12x10_SRGB_BLOCK, | ||
| 221 | VK_FORMAT_ASTC_12x12_UNORM_BLOCK, | ||
| 222 | VK_FORMAT_ASTC_12x12_SRGB_BLOCK, | ||
| 223 | VK_FORMAT_ASTC_8x6_UNORM_BLOCK, | ||
| 224 | VK_FORMAT_ASTC_8x6_SRGB_BLOCK, | ||
| 225 | VK_FORMAT_ASTC_6x5_UNORM_BLOCK, | ||
| 226 | VK_FORMAT_ASTC_6x5_SRGB_BLOCK, | ||
| 227 | VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, | ||
| 228 | }; | 282 | }; |
| 229 | std::unordered_map<VkFormat, VkFormatProperties> format_properties; | 283 | std::unordered_map<VkFormat, VkFormatProperties> format_properties; |
| 230 | for (const auto format : formats) { | 284 | for (const auto format : formats) { |
| @@ -739,9 +793,9 @@ VkFormat Device::GetSupportedFormat(VkFormat wanted_format, VkFormatFeatureFlags | |||
| 739 | if (!IsFormatSupported(alternative, wanted_usage, format_type)) { | 793 | if (!IsFormatSupported(alternative, wanted_usage, format_type)) { |
| 740 | continue; | 794 | continue; |
| 741 | } | 795 | } |
| 742 | LOG_WARNING(Render_Vulkan, | 796 | LOG_DEBUG(Render_Vulkan, |
| 743 | "Emulating format={} with alternative format={} with usage={} and type={}", | 797 | "Emulating format={} with alternative format={} with usage={} and type={}", |
| 744 | wanted_format, alternative, wanted_usage, format_type); | 798 | wanted_format, alternative, wanted_usage, format_type); |
| 745 | return alternative; | 799 | return alternative; |
| 746 | } | 800 | } |
| 747 | 801 | ||