summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-lower-buffer-element-type.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-09-01 01:25:31 -0700
committerGitHub <noreply@github.com>2023-09-01 01:25:31 -0700
commit9c11a87f8f811a9a110d73a24ab93443ea347506 (patch)
tree9b1b0f154cff0faf7efd8d77fcd7f7911aea4a44 /source/slang/slang-ir-lower-buffer-element-type.cpp
parentb7d19330c2d42937835d674758a05af3891e025b (diff)
Fix GLSL code gen around RayQuery and HitObject types. (#3173)
* Update slang-llvm. * Fix. * fix. * Fix unit tests for multi-thread execution. * Fix tests. * fixes. * update tests. * Add gfx-smoke to linux expected failure list. * Try fix test. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-lower-buffer-element-type.cpp')
-rw-r--r--source/slang/slang-ir-lower-buffer-element-type.cpp65
1 files changed, 34 insertions, 31 deletions
diff --git a/source/slang/slang-ir-lower-buffer-element-type.cpp b/source/slang/slang-ir-lower-buffer-element-type.cpp
index bc8e47e91..af25cacd0 100644
--- a/source/slang/slang-ir-lower-buffer-element-type.cpp
+++ b/source/slang/slang-ir-lower-buffer-element-type.cpp
@@ -403,43 +403,46 @@ namespace Slang
return info;
}
- switch (target->getTarget())
+ if (target->shouldEmitSPIRVDirectly())
{
- case CodeGenTarget::SPIRV:
- case CodeGenTarget::SPIRVAssembly:
- if (as<IRBoolType>(type))
+ switch (target->getTarget())
{
- // Bool is an abstract type in SPIRV, so we need to lower them into an int.
- info.loweredType = builder.getIntType();
- // Create unpack func.
+ case CodeGenTarget::SPIRV:
+ case CodeGenTarget::SPIRVAssembly:
+ if (as<IRBoolType>(type))
{
- builder.setInsertAfter(type);
- info.convertLoweredToOriginal = builder.createFunc();
- builder.setInsertInto(info.convertLoweredToOriginal);
- builder.addNameHintDecoration(info.convertLoweredToOriginal, UnownedStringSlice("unpackStorage"));
- info.convertLoweredToOriginal->setFullType(builder.getFuncType(1, (IRType**)&info.loweredType, type));
- builder.emitBlock();
- auto loweredParam = builder.emitParam(info.loweredType);
- auto result = builder.emitCast(type, loweredParam);
- builder.emitReturn(result);
- }
+ // Bool is an abstract type in SPIRV, so we need to lower them into an int.
+ info.loweredType = builder.getIntType();
+ // Create unpack func.
+ {
+ builder.setInsertAfter(type);
+ info.convertLoweredToOriginal = builder.createFunc();
+ builder.setInsertInto(info.convertLoweredToOriginal);
+ builder.addNameHintDecoration(info.convertLoweredToOriginal, UnownedStringSlice("unpackStorage"));
+ info.convertLoweredToOriginal->setFullType(builder.getFuncType(1, (IRType**)&info.loweredType, type));
+ builder.emitBlock();
+ auto loweredParam = builder.emitParam(info.loweredType);
+ auto result = builder.emitCast(type, loweredParam);
+ builder.emitReturn(result);
+ }
- // Create pack func.
- {
- builder.setInsertAfter(info.convertLoweredToOriginal);
- info.convertOriginalToLowered = builder.createFunc();
- builder.setInsertInto(info.convertOriginalToLowered);
- builder.addNameHintDecoration(info.convertOriginalToLowered, UnownedStringSlice("packStorage"));
- info.convertOriginalToLowered->setFullType(builder.getFuncType(1, (IRType**)&type, info.loweredType));
- builder.emitBlock();
- auto param = builder.emitParam(type);
- auto result = builder.emitCast(info.loweredType, param);
- builder.emitReturn(result);
+ // Create pack func.
+ {
+ builder.setInsertAfter(info.convertLoweredToOriginal);
+ info.convertOriginalToLowered = builder.createFunc();
+ builder.setInsertInto(info.convertOriginalToLowered);
+ builder.addNameHintDecoration(info.convertOriginalToLowered, UnownedStringSlice("packStorage"));
+ info.convertOriginalToLowered->setFullType(builder.getFuncType(1, (IRType**)&type, info.loweredType));
+ builder.emitBlock();
+ auto param = builder.emitParam(type);
+ auto result = builder.emitCast(info.loweredType, param);
+ builder.emitReturn(result);
+ }
}
+ break;
+ default:
+ break;
}
- break;
- default:
- break;
}
info.loweredType = type;