diff options
author | Liam <byteslice@airmail.cc> | 2023-01-20 19:30:45 -0500 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2023-01-23 12:03:19 -0500 |
commit | 76a4356e55d0725d288866a04743f1e991ec3e36 (patch) | |
tree | 47d51ec570aaa51eb4397e08152fc26c73497a8d /src/shader_recompiler/backend/spirv/emit_spirv_image.cpp | |
parent | f99f618d45ad862c4bc23fc28c91d1c48218a3cb (diff) |
spirv: fix multisampled image fetch
Diffstat (limited to 'src/shader_recompiler/backend/spirv/emit_spirv_image.cpp')
-rw-r--r-- | src/shader_recompiler/backend/spirv/emit_spirv_image.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp index fb5799c42c..c898ce12f8 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp @@ -436,6 +436,10 @@ Id EmitImageFetch(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id c if (info.type == TextureType::Buffer) { lod = Id{}; } + if (Sirit::ValidId(ms)) { + // This image is multisampled, lod must be implicit + lod = Id{}; + } const ImageOperands operands(offset, lod, ms); return Emit(&EmitContext::OpImageSparseFetch, &EmitContext::OpImageFetch, ctx, inst, ctx.F32[4], TextureImage(ctx, info, index), coords, operands.MaskOptional(), operands.Span()); |