summaryrefslogtreecommitdiff
path: root/source/slang/slang-legalize-types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-legalize-types.cpp')
-rw-r--r--source/slang/slang-legalize-types.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/source/slang/slang-legalize-types.cpp b/source/slang/slang-legalize-types.cpp
index 792429a01..fc0947c62 100644
--- a/source/slang/slang-legalize-types.cpp
+++ b/source/slang/slang-legalize-types.cpp
@@ -203,6 +203,21 @@ bool isResourceType(IRType* type)
return false;
}
+// Helper wrapper function around isResourceType that checks if the given
+// type is a pointer to a resource type or a physical storage buffer.
+bool isPointerToResourceType(IRType* type)
+{
+ while (auto ptrType = as<IRPtrTypeBase>(type))
+ {
+ if (ptrType->getAddressSpace() == SpvStorageClassStorageBuffer ||
+ ptrType->getAddressSpace() == SpvStorageClassPhysicalStorageBufferEXT)
+ return true;
+ type = ptrType->getValueType();
+ }
+
+ return isResourceType(type);
+}
+
ModuleDecl* findModuleForDecl(
Decl* decl)
{