diff options
Diffstat (limited to 'source/slang/slang-ir-lower-buffer-element-type.cpp')
| -rw-r--r-- | source/slang/slang-ir-lower-buffer-element-type.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/source/slang/slang-ir-lower-buffer-element-type.cpp b/source/slang/slang-ir-lower-buffer-element-type.cpp index 1294b400d..ed0a3b309 100644 --- a/source/slang/slang-ir-lower-buffer-element-type.cpp +++ b/source/slang/slang-ir-lower-buffer-element-type.cpp @@ -939,11 +939,25 @@ struct LoweredElementTypeContext } } if (auto structBuffer = as<IRHLSLStructuredBufferTypeBase>(globalInst)) + { elementType = structBuffer->getElementType(); + auto config = getTypeLoweringConfigForBuffer(target, structBuffer); + + // Create size and alignment decoration for potential use + // in`StructuredBufferGetDimensions`. + IRSizeAndAlignment sizeAlignment; + getSizeAndAlignment( + target->getOptionSet(), + config.layoutRule, + elementType, + &sizeAlignment); + SLANG_UNUSED(sizeAlignment); + } else if (auto constBuffer = as<IRUniformParameterGroupType>(globalInst)) elementType = constBuffer->getElementType(); else if (auto storageBuffer = as<IRGLSLShaderStorageBufferType>(globalInst)) elementType = storageBuffer->getElementType(); + if (as<IRTextureBufferType>(globalInst)) continue; if (!as<IRStructType>(elementType) && !as<IRMatrixType>(elementType) && |
