summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/spirv
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-05-17 02:52:01 -0300
committerGravatar ameerj2021-07-22 21:51:31 -0400
commitec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6 (patch)
tree063963b0a197526467902ef9bfceff1be8f5b9ef /src/shader_recompiler/backend/spirv
parentglasm: Add support for non-2D texture samples (diff)
downloadyuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar.gz
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.tar.xz
yuzu-ec6fc5fe78c9038fc9ad7259b7b3a7be751ecef6.zip
glasm: Implement TEX and TEXS instructions
Remove lod clamp from texture instructions with lod, as this is not needed (nor supported).
Diffstat (limited to 'src/shader_recompiler/backend/spirv')
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_image.cpp8
-rw-r--r--src/shader_recompiler/backend/spirv/emit_spirv_instructions.h4
2 files changed, 6 insertions, 6 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
index 5832104df..99b883746 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
@@ -337,9 +337,9 @@ Id EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value&
337} 337}
338 338
339Id EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, 339Id EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords,
340 Id lod_lc, const IR::Value& offset) { 340 Id lod, const IR::Value& offset) {
341 const auto info{inst->Flags<IR::TextureInstInfo>()}; 341 const auto info{inst->Flags<IR::TextureInstInfo>()};
342 const ImageOperands operands(ctx, false, true, info.has_lod_clamp != 0, lod_lc, offset); 342 const ImageOperands operands(ctx, false, true, false, lod, offset);
343 return Emit(&EmitContext::OpImageSparseSampleExplicitLod, 343 return Emit(&EmitContext::OpImageSparseSampleExplicitLod,
344 &EmitContext::OpImageSampleExplicitLod, ctx, inst, ctx.F32[4], 344 &EmitContext::OpImageSampleExplicitLod, ctx, inst, ctx.F32[4],
345 Texture(ctx, info, index), coords, operands.Mask(), operands.Span()); 345 Texture(ctx, info, index), coords, operands.Mask(), operands.Span());
@@ -356,9 +356,9 @@ Id EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Va
356} 356}
357 357
358Id EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, 358Id EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index,
359 Id coords, Id dref, Id lod_lc, const IR::Value& offset) { 359 Id coords, Id dref, Id lod, const IR::Value& offset) {
360 const auto info{inst->Flags<IR::TextureInstInfo>()}; 360 const auto info{inst->Flags<IR::TextureInstInfo>()};
361 const ImageOperands operands(ctx, false, true, info.has_lod_clamp != 0, lod_lc, offset); 361 const ImageOperands operands(ctx, false, true, false, lod, offset);
362 return Emit(&EmitContext::OpImageSparseSampleDrefExplicitLod, 362 return Emit(&EmitContext::OpImageSparseSampleDrefExplicitLod,
363 &EmitContext::OpImageSampleDrefExplicitLod, ctx, inst, ctx.F32[1], 363 &EmitContext::OpImageSampleDrefExplicitLod, ctx, inst, ctx.F32[1],
364 Texture(ctx, info, index), coords, dref, operands.Mask(), operands.Span()); 364 Texture(ctx, info, index), coords, dref, operands.Mask(), operands.Span());
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h
index 0a2b31772..22260d2a9 100644
--- a/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h
+++ b/src/shader_recompiler/backend/spirv/emit_spirv_instructions.h
@@ -491,11 +491,11 @@ Id EmitBoundImageWrite(EmitContext&);
491Id EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, 491Id EmitImageSampleImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords,
492 Id bias_lc, const IR::Value& offset); 492 Id bias_lc, const IR::Value& offset);
493Id EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, 493Id EmitImageSampleExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords,
494 Id lod_lc, const IR::Value& offset); 494 Id lod, const IR::Value& offset);
495Id EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, 495Id EmitImageSampleDrefImplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index,
496 Id coords, Id dref, Id bias_lc, const IR::Value& offset); 496 Id coords, Id dref, Id bias_lc, const IR::Value& offset);
497Id EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, 497Id EmitImageSampleDrefExplicitLod(EmitContext& ctx, IR::Inst* inst, const IR::Value& index,
498 Id coords, Id dref, Id lod_lc, const IR::Value& offset); 498 Id coords, Id dref, Id lod, const IR::Value& offset);
499Id EmitImageGather(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, 499Id EmitImageGather(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords,
500 const IR::Value& offset, const IR::Value& offset2); 500 const IR::Value& offset, const IR::Value& offset2);
501Id EmitImageGatherDref(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, 501Id EmitImageGatherDref(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords,