فهرست منبع

Merge pull request #11310 from vonchenplus/vulkan_format

video_core: Fix vulkan format assert error
liamwhite 2 سال پیش
والد
کامیت
0383ae1dbf
2فایلهای تغییر یافته به همراه9 افزوده شده و 1 حذف شده
  1. 1 1
      src/video_core/renderer_vulkan/maxwell_to_vk.cpp
  2. 8 0
      src/video_core/vulkan_common/vulkan_device.cpp

+ 1 - 1
src/video_core/renderer_vulkan/maxwell_to_vk.cpp

@@ -126,7 +126,7 @@ struct FormatTuple {
     {VK_FORMAT_A1R5G5B5_UNORM_PACK16, Attachable},              // A1R5G5B5_UNORM
     {VK_FORMAT_A2B10G10R10_UNORM_PACK32, Attachable | Storage}, // A2B10G10R10_UNORM
     {VK_FORMAT_A2B10G10R10_UINT_PACK32, Attachable | Storage},  // A2B10G10R10_UINT
-    {VK_FORMAT_A2R10G10B10_UNORM_PACK32, Attachable | Storage}, // A2R10G10B10_UNORM
+    {VK_FORMAT_A2R10G10B10_UNORM_PACK32, Attachable},           // A2R10G10B10_UNORM
     {VK_FORMAT_A1R5G5B5_UNORM_PACK16, Attachable},         // A1B5G5R5_UNORM (flipped with swizzle)
     {VK_FORMAT_R5G5B5A1_UNORM_PACK16},                     // A5B5G5R1_UNORM (specially swizzled)
     {VK_FORMAT_R8_UNORM, Attachable | Storage},            // R8_UNORM

+ 8 - 0
src/video_core/vulkan_common/vulkan_device.cpp

@@ -71,6 +71,11 @@ constexpr std::array R8G8B8_SSCALED{
     VK_FORMAT_UNDEFINED,
 };
 
+constexpr std::array VK_FORMAT_R32G32B32_SFLOAT{
+    VK_FORMAT_R32G32B32A32_SFLOAT,
+    VK_FORMAT_UNDEFINED,
+};
+
 } // namespace Alternatives
 
 enum class NvidiaArchitecture {
@@ -103,6 +108,8 @@ constexpr const VkFormat* GetFormatAlternatives(VkFormat format) {
         return Alternatives::R16G16B16_SSCALED.data();
     case VK_FORMAT_R8G8B8_SSCALED:
         return Alternatives::R8G8B8_SSCALED.data();
+    case VK_FORMAT_R32G32B32_SFLOAT:
+        return Alternatives::VK_FORMAT_R32G32B32_SFLOAT.data();
     default:
         return nullptr;
     }
@@ -130,6 +137,7 @@ std::unordered_map<VkFormat, VkFormatProperties> GetFormatProperties(vk::Physica
         VK_FORMAT_A2B10G10R10_UINT_PACK32,
         VK_FORMAT_A2B10G10R10_UNORM_PACK32,
         VK_FORMAT_A2B10G10R10_USCALED_PACK32,
+        VK_FORMAT_A2R10G10B10_UNORM_PACK32,
         VK_FORMAT_A8B8G8R8_SINT_PACK32,
         VK_FORMAT_A8B8G8R8_SNORM_PACK32,
         VK_FORMAT_A8B8G8R8_SRGB_PACK32,