diff options
| author | Yong He <yonghe@outlook.com> | 2024-07-30 10:52:45 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-30 10:52:45 -0700 |
| commit | c94fd84eff090f326403e67e712bf38e9e27c36c (patch) | |
| tree | 839fb52c1a9eec4d354b04a85a3d02de96f588aa /source/slang/slang-ir-util.cpp | |
| parent | 7e2bc8e06f61d554bae9bbebc1db0302eb3f1d8a (diff) | |
Fix SPIRV emit for small-integer texture types. (#4753)
* Fix SPIRV emit for small-integer texture types.
* Disable -emit-spirv-via-glsl test.
Diffstat (limited to 'source/slang/slang-ir-util.cpp')
| -rw-r--r-- | source/slang/slang-ir-util.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source/slang/slang-ir-util.cpp b/source/slang/slang-ir-util.cpp index 8294cd533..e030b6d24 100644 --- a/source/slang/slang-ir-util.cpp +++ b/source/slang/slang-ir-util.cpp @@ -1557,10 +1557,24 @@ void hoistInstOutOfASMBlocks(IRBlock* block) IRType* getSPIRVSampledElementType(IRInst* sampledType) { auto sampledElementType = getVectorElementType((IRType*)sampledType); - if (sampledElementType->getOp() == kIROp_HalfType) + + IRBuilder builder(sampledType); + switch (sampledElementType->getOp()) { - IRBuilder builder(sampledType); + case kIROp_HalfType: sampledElementType = builder.getBasicType(BaseType::Float); + break; + case kIROp_UInt16Type: + case kIROp_UInt8Type: + case kIROp_CharType: + sampledElementType = builder.getBasicType(BaseType::UInt); + break; + case kIROp_Int8Type: + case kIROp_Int16Type: + sampledElementType = builder.getBasicType(BaseType::Int); + break; + default: + break; } return sampledElementType; } |
