From 6437c38e0a3c2c1daf36cb5e543dc0b467fa4b15 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 23 Aug 2023 05:49:33 -0700 Subject: Lower all ByteAddressBuffer uses for SPIRV. (#3143) Co-authored-by: Yong He --- source/slang/slang-emit-glsl.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'source/slang/slang-emit-glsl.cpp') diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp index e1f74f70d..e40a5ceca 100644 --- a/source/slang/slang-emit-glsl.cpp +++ b/source/slang/slang-emit-glsl.cpp @@ -8,6 +8,7 @@ #include "slang-mangled-lexer.h" #include "slang-legalize-types.h" +#include "slang-ir-layout.h" #include @@ -2036,6 +2037,22 @@ bool GLSLSourceEmitter::tryEmitInstStmtImpl(IRInst* inst) m_writer->emit(", -1);\n"); return true; } + case kIROp_StructuredBufferGetDimensions: + { + emitInstResultDecl(inst); + m_writer->emit("uvec2("); + emitOperand(inst->getOperand(0), getInfo(EmitOp::General)); + m_writer->emit("._data.length(), "); + auto elementType = as(inst->getOperand(0)->getDataType())->getElementType(); + IRIntegerValue stride = 0; + if (auto sizeDecor = elementType->findDecoration()) + { + stride = align(sizeDecor->getSize(), (int)sizeDecor->getAlignment()); + } + m_writer->emit(stride); + m_writer->emit(");\n"); + return true; + } default: return false; } -- cgit v1.2.3