diff options
| author | 2023-09-02 17:25:00 -0400 | |
|---|---|---|
| committer | 2023-09-02 17:25:00 -0400 | |
| commit | ba4b65e4bcb4aadbfbb0b8164f3f37fc12fdd76c (patch) | |
| tree | c6faee2c61a009fd6227dc1339dd0648673f23d5 /src/shader_recompiler | |
| parent | Merge pull request #11427 from zhaobot/tx-update-20230901020727 (diff) | |
| download | yuzu-ba4b65e4bcb4aadbfbb0b8164f3f37fc12fdd76c.tar.gz yuzu-ba4b65e4bcb4aadbfbb0b8164f3f37fc12fdd76c.tar.xz yuzu-ba4b65e4bcb4aadbfbb0b8164f3f37fc12fdd76c.zip | |
shader_recompiler: always declare image format for image buffers
Diffstat (limited to 'src/shader_recompiler')
| -rw-r--r-- | src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp index bec5db173..238fb40e3 100644 --- a/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp +++ b/src/shader_recompiler/backend/spirv/spirv_emit_context.cpp | |||
| @@ -74,6 +74,11 @@ spv::ImageFormat GetImageFormat(ImageFormat format) { | |||
| 74 | throw InvalidArgument("Invalid image format {}", format); | 74 | throw InvalidArgument("Invalid image format {}", format); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | spv::ImageFormat GetImageFormatForBuffer(ImageFormat format) { | ||
| 78 | const auto spv_format = GetImageFormat(format); | ||
| 79 | return spv_format == spv::ImageFormat::Unknown ? spv::ImageFormat::R32ui : spv_format; | ||
| 80 | } | ||
| 81 | |||
| 77 | Id ImageType(EmitContext& ctx, const ImageDescriptor& desc) { | 82 | Id ImageType(EmitContext& ctx, const ImageDescriptor& desc) { |
| 78 | const spv::ImageFormat format{GetImageFormat(desc.format)}; | 83 | const spv::ImageFormat format{GetImageFormat(desc.format)}; |
| 79 | const Id type{ctx.U32[1]}; | 84 | const Id type{ctx.U32[1]}; |
| @@ -1271,7 +1276,7 @@ void EmitContext::DefineImageBuffers(const Info& info, u32& binding) { | |||
| 1271 | if (desc.count != 1) { | 1276 | if (desc.count != 1) { |
| 1272 | throw NotImplementedException("Array of image buffers"); | 1277 | throw NotImplementedException("Array of image buffers"); |
| 1273 | } | 1278 | } |
| 1274 | const spv::ImageFormat format{GetImageFormat(desc.format)}; | 1279 | const spv::ImageFormat format{GetImageFormatForBuffer(desc.format)}; |
| 1275 | const Id image_type{TypeImage(U32[1], spv::Dim::Buffer, false, false, false, 2, format)}; | 1280 | const Id image_type{TypeImage(U32[1], spv::Dim::Buffer, false, false, false, 2, format)}; |
| 1276 | const Id pointer_type{TypePointer(spv::StorageClass::UniformConstant, image_type)}; | 1281 | const Id pointer_type{TypePointer(spv::StorageClass::UniformConstant, image_type)}; |
| 1277 | const Id id{AddGlobalVariable(pointer_type, spv::StorageClass::UniformConstant)}; | 1282 | const Id id{AddGlobalVariable(pointer_type, spv::StorageClass::UniformConstant)}; |