diff options
Diffstat (limited to 'source/slang/slang-ir-generics-lowering-context.cpp')
| -rw-r--r-- | source/slang/slang-ir-generics-lowering-context.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source/slang/slang-ir-generics-lowering-context.cpp b/source/slang/slang-ir-generics-lowering-context.cpp index 097fa58b8..199eae2fc 100644 --- a/source/slang/slang-ir-generics-lowering-context.cpp +++ b/source/slang/slang-ir-generics-lowering-context.cpp @@ -405,12 +405,23 @@ bool SharedGenericsLoweringContext::doesTypeFitInAnyValue( IRType* concreteType, IRInterfaceType* interfaceType, IRIntegerValue* outTypeSize, - IRIntegerValue* outLimit) + IRIntegerValue* outLimit, + bool* outIsTypeOpaque) { auto anyValueSize = getInterfaceAnyValueSize(interfaceType, interfaceType->sourceLoc); if (outLimit) *outLimit = anyValueSize; + if (!areResourceTypesBindlessOnTarget(targetProgram->getTargetReq())) + { + IRType* opaqueType = nullptr; + if (isOpaqueType(concreteType, &opaqueType)) + { + if (outIsTypeOpaque) + *outIsTypeOpaque = true; + return false; + } + } IRSizeAndAlignment sizeAndAlignment; Result result = getNaturalSizeAndAlignment(targetProgram->getOptionSet(), concreteType, &sizeAndAlignment); |
