summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/ir_opt
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/ir_opt')
-rw-r--r--src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp11
-rw-r--r--src/shader_recompiler/ir_opt/texture_pass.cpp5
2 files changed, 15 insertions, 1 deletions
diff --git a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
index 04e3a4f53..730d3e91e 100644
--- a/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
+++ b/src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp
@@ -370,12 +370,20 @@ void VisitUsages(Info& info, IR::Inst& inst) {
370 case IR::Opcode::BindlessImageSampleDrefExplicitLod: 370 case IR::Opcode::BindlessImageSampleDrefExplicitLod:
371 case IR::Opcode::BindlessImageGather: 371 case IR::Opcode::BindlessImageGather:
372 case IR::Opcode::BindlessImageGatherDref: 372 case IR::Opcode::BindlessImageGatherDref:
373 case IR::Opcode::BindlessImageFetch:
374 case IR::Opcode::BindlessImageQueryDimensions:
375 case IR::Opcode::BindlessImageQueryLod:
376 case IR::Opcode::BindlessImageGradient:
373 case IR::Opcode::BoundImageSampleImplicitLod: 377 case IR::Opcode::BoundImageSampleImplicitLod:
374 case IR::Opcode::BoundImageSampleExplicitLod: 378 case IR::Opcode::BoundImageSampleExplicitLod:
375 case IR::Opcode::BoundImageSampleDrefImplicitLod: 379 case IR::Opcode::BoundImageSampleDrefImplicitLod:
376 case IR::Opcode::BoundImageSampleDrefExplicitLod: 380 case IR::Opcode::BoundImageSampleDrefExplicitLod:
377 case IR::Opcode::BoundImageGather: 381 case IR::Opcode::BoundImageGather:
378 case IR::Opcode::BoundImageGatherDref: 382 case IR::Opcode::BoundImageGatherDref:
383 case IR::Opcode::BoundImageFetch:
384 case IR::Opcode::BoundImageQueryDimensions:
385 case IR::Opcode::BoundImageQueryLod:
386 case IR::Opcode::BoundImageGradient:
379 case IR::Opcode::ImageSampleImplicitLod: 387 case IR::Opcode::ImageSampleImplicitLod:
380 case IR::Opcode::ImageSampleExplicitLod: 388 case IR::Opcode::ImageSampleExplicitLod:
381 case IR::Opcode::ImageSampleDrefImplicitLod: 389 case IR::Opcode::ImageSampleDrefImplicitLod:
@@ -384,7 +392,8 @@ void VisitUsages(Info& info, IR::Inst& inst) {
384 case IR::Opcode::ImageGatherDref: 392 case IR::Opcode::ImageGatherDref:
385 case IR::Opcode::ImageFetch: 393 case IR::Opcode::ImageFetch:
386 case IR::Opcode::ImageQueryDimensions: 394 case IR::Opcode::ImageQueryDimensions:
387 case IR::Opcode::ImageQueryLod: { 395 case IR::Opcode::ImageQueryLod:
396 case IR::Opcode::ImageGradient: {
388 const TextureType type{inst.Flags<IR::TextureInstInfo>().type}; 397 const TextureType type{inst.Flags<IR::TextureInstInfo>().type};
389 info.uses_sampled_1d |= type == TextureType::Color1D || type == TextureType::ColorArray1D || 398 info.uses_sampled_1d |= type == TextureType::Color1D || type == TextureType::ColorArray1D ||
390 type == TextureType::Shadow1D || type == TextureType::ShadowArray1D; 399 type == TextureType::Shadow1D || type == TextureType::ShadowArray1D;
diff --git a/src/shader_recompiler/ir_opt/texture_pass.cpp b/src/shader_recompiler/ir_opt/texture_pass.cpp
index 6eb286b83..da8977b76 100644
--- a/src/shader_recompiler/ir_opt/texture_pass.cpp
+++ b/src/shader_recompiler/ir_opt/texture_pass.cpp
@@ -60,6 +60,9 @@ IR::Opcode IndexedInstruction(const IR::Inst& inst) {
60 case IR::Opcode::BoundImageQueryLod: 60 case IR::Opcode::BoundImageQueryLod:
61 case IR::Opcode::BindlessImageQueryLod: 61 case IR::Opcode::BindlessImageQueryLod:
62 return IR::Opcode::ImageQueryLod; 62 return IR::Opcode::ImageQueryLod;
63 case IR::Opcode::BoundImageGradient:
64 case IR::Opcode::BindlessImageGradient:
65 return IR::Opcode::ImageGradient;
63 default: 66 default:
64 return IR::Opcode::Void; 67 return IR::Opcode::Void;
65 } 68 }
@@ -76,6 +79,7 @@ bool IsBindless(const IR::Inst& inst) {
76 case IR::Opcode::BindlessImageFetch: 79 case IR::Opcode::BindlessImageFetch:
77 case IR::Opcode::BindlessImageQueryDimensions: 80 case IR::Opcode::BindlessImageQueryDimensions:
78 case IR::Opcode::BindlessImageQueryLod: 81 case IR::Opcode::BindlessImageQueryLod:
82 case IR::Opcode::BindlessImageGradient:
79 return true; 83 return true;
80 case IR::Opcode::BoundImageSampleImplicitLod: 84 case IR::Opcode::BoundImageSampleImplicitLod:
81 case IR::Opcode::BoundImageSampleExplicitLod: 85 case IR::Opcode::BoundImageSampleExplicitLod:
@@ -86,6 +90,7 @@ bool IsBindless(const IR::Inst& inst) {
86 case IR::Opcode::BoundImageFetch: 90 case IR::Opcode::BoundImageFetch:
87 case IR::Opcode::BoundImageQueryDimensions: 91 case IR::Opcode::BoundImageQueryDimensions:
88 case IR::Opcode::BoundImageQueryLod: 92 case IR::Opcode::BoundImageQueryLod:
93 case IR::Opcode::BoundImageGradient:
89 return false; 94 return false;
90 default: 95 default:
91 throw InvalidArgument("Invalid opcode {}", inst.Opcode()); 96 throw InvalidArgument("Invalid opcode {}", inst.Opcode());