diff options
Diffstat (limited to 'source/slang/slang-emit.cpp')
| -rw-r--r-- | source/slang/slang-emit.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp index 0f53f74cd..bb6bab0ab 100644 --- a/source/slang/slang-emit.cpp +++ b/source/slang/slang-emit.cpp @@ -50,6 +50,7 @@ #include "slang-ir-lower-l-value-cast.h" #include "slang-ir-lower-reinterpret.h" #include "slang-ir-loop-unroll.h" +#include "slang-ir-legalize-image-subscript.h" #include "slang-ir-legalize-vector-types.h" #include "slang-ir-metadata.h" #include "slang-ir-optix-entry-point-uniforms.h" @@ -1153,14 +1154,28 @@ Result linkAndOptimizeIR( if(isD3DTarget(targetRequest)) legalizeNonStructParameterToStructForHLSL(irModule); - // Legalize `ImageSubscript` and constant buffer loads for GLSL. + // Legalize `ImageSubscript` loads. + switch (target) + { + case CodeGenTarget::Metal: + case CodeGenTarget::GLSL: + case CodeGenTarget::SPIRV: + case CodeGenTarget::SPIRVAssembly: + { + legalizeImageSubscript(targetRequest, irModule, sink); + } + break; + default: + break; + } + + // Legalize constant buffer loads. switch (target) { case CodeGenTarget::GLSL: case CodeGenTarget::SPIRV: case CodeGenTarget::SPIRVAssembly: { - legalizeImageSubscriptForGLSL(irModule); legalizeConstantBufferLoadForGLSL(irModule); legalizeDispatchMeshPayloadForGLSL(irModule); } |
