diff options
Diffstat (limited to 'src/shader_recompiler/ir_opt')
| -rw-r--r-- | src/shader_recompiler/ir_opt/collect_shader_info_pass.cpp | 11 | ||||
| -rw-r--r-- | src/shader_recompiler/ir_opt/texture_pass.cpp | 5 |
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()); |