diff options
Diffstat (limited to 'source/slang/slang-legalize-types.cpp')
| -rw-r--r-- | source/slang/slang-legalize-types.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/slang/slang-legalize-types.cpp b/source/slang/slang-legalize-types.cpp index e26475522..cc2c12d42 100644 --- a/source/slang/slang-legalize-types.cpp +++ b/source/slang/slang-legalize-types.cpp @@ -1211,11 +1211,15 @@ LegalType legalizeTypeImpl(TypeLegalizationContext* context, IRType* type) LegalType legalElementType; if (isMetalTarget(context->targetProgram->getTargetReq()) && - as<IRParameterBlockType>(uniformBufferType)) + as<IRParameterBlockType>(uniformBufferType) && + !context->shouldLegalizeParameterBlockElementType()) { // On Metal, we do not need to legalize the element type of // a parameter block because we can translate it directly into // an argument buffer. + // + // But we do need empty type legalized for Metal, because Metal doesn't + // allow empty struct in argument buffer. legalElementType = LegalType::simple(originalElementType); } else |
