summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-lower-append-consume-structured-buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ir-lower-append-consume-structured-buffer.cpp')
-rw-r--r--source/slang/slang-ir-lower-append-consume-structured-buffer.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/source/slang/slang-ir-lower-append-consume-structured-buffer.cpp b/source/slang/slang-ir-lower-append-consume-structured-buffer.cpp
index 9df5f4e7e..ed04541ef 100644
--- a/source/slang/slang-ir-lower-append-consume-structured-buffer.cpp
+++ b/source/slang/slang-ir-lower-append-consume-structured-buffer.cpp
@@ -154,14 +154,15 @@ namespace Slang
builder.setInsertInto(getDimensionsFunc);
builder.emitBlock();
auto bufferParam = builder.emitParam(structType);
- auto counterBuffer = builder.emitFieldExtract(counterBufferType, bufferParam, counterBufferKey);
- IRInst* getCounterPtrArgs[] = { counterBuffer, builder.getIntValue(builder.getIntType(), 0) };
- auto counterBufferPtr = builder.emitIntrinsicInst(builder.getPtrType(builder.getIntType()), kIROp_RWStructuredBufferGetElementPtr, 2, getCounterPtrArgs);
- auto counter = builder.emitLoad(counterBufferPtr);
- counter = builder.emitCast(builder.getUIntType(), counter);
- auto stride = builder.getIntValue(builder.getUIntType(), elementSize.getStride());
- IRInst* vecArgs[] = { counter, stride };
- builder.emitReturn(builder.emitMakeVector(uint2Type, 2, vecArgs));
+ auto elementBuffer = builder.emitFieldExtract(elementBufferType, bufferParam, elementBufferKey);
+
+ const auto dim = builder.emitIntrinsicInst(
+ uint2Type,
+ kIROp_StructuredBufferGetDimensions,
+ 1,
+ &elementBuffer
+ );
+ builder.emitReturn(dim);
}
// Replace all insts with synthesized functions.