summaryrefslogtreecommitdiff
path: root/source/slang/slang-ir-util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-util.cpp')
-rw-r--r--source/slang/slang-ir-util.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/slang/slang-ir-util.cpp b/source/slang/slang-ir-util.cpp
index b4a41f8a5..5ecbc8121 100644
--- a/source/slang/slang-ir-util.cpp
+++ b/source/slang/slang-ir-util.cpp
@@ -814,6 +814,24 @@ IRInst* findWitnessTableEntry(IRWitnessTable* table, IRInst* key)
return nullptr;
}
+IRInst* getVulkanPayloadLocation(IRInst* payloadGlobalVar)
+{
+ IRInst* location = nullptr;
+ for (auto decor : payloadGlobalVar->getDecorations())
+ {
+ switch (decor->getOp())
+ {
+ case kIROp_VulkanRayPayloadDecoration:
+ case kIROp_VulkanCallablePayloadDecoration:
+ case kIROp_VulkanHitObjectAttributesDecoration:
+ return decor->getOperand(0);
+ default:
+ continue;
+ }
+ }
+ return location;
+}
+
void moveParams(IRBlock* dest, IRBlock* src)
{
for (auto param = src->getFirstChild(); param;)