Browse Source
Merge pull request #11436 from liamwhite/bad-format
shader_recompiler: always declare image format for image buffers
pull/15/merge
liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
6 additions and
1 deletions
-
src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
|
|
|
@ -74,6 +74,11 @@ spv::ImageFormat GetImageFormat(ImageFormat format) { |
|
|
|
throw InvalidArgument("Invalid image format {}", format); |
|
|
|
} |
|
|
|
|
|
|
|
spv::ImageFormat GetImageFormatForBuffer(ImageFormat format) { |
|
|
|
const auto spv_format = GetImageFormat(format); |
|
|
|
return spv_format == spv::ImageFormat::Unknown ? spv::ImageFormat::R32ui : spv_format; |
|
|
|
} |
|
|
|
|
|
|
|
Id ImageType(EmitContext& ctx, const ImageDescriptor& desc) { |
|
|
|
const spv::ImageFormat format{GetImageFormat(desc.format)}; |
|
|
|
const Id type{ctx.U32[1]}; |
|
|
|
@ -1271,7 +1276,7 @@ void EmitContext::DefineImageBuffers(const Info& info, u32& binding) { |
|
|
|
if (desc.count != 1) { |
|
|
|
throw NotImplementedException("Array of image buffers"); |
|
|
|
} |
|
|
|
const spv::ImageFormat format{GetImageFormat(desc.format)}; |
|
|
|
const spv::ImageFormat format{GetImageFormatForBuffer(desc.format)}; |
|
|
|
const Id image_type{TypeImage(U32[1], spv::Dim::Buffer, false, false, false, 2, format)}; |
|
|
|
const Id pointer_type{TypePointer(spv::StorageClass::UniformConstant, image_type)}; |
|
|
|
const Id id{AddGlobalVariable(pointer_type, spv::StorageClass::UniformConstant)}; |
|
|
|
|