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-ir-lower-buffer-element-type.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'source/slang/slang-ir-lower-buffer-element-type.cpp') diff --git a/source/slang/slang-ir-lower-buffer-element-type.cpp b/source/slang/slang-ir-lower-buffer-element-type.cpp index 0472e44df..909ffea83 100644 --- a/source/slang/slang-ir-lower-buffer-element-type.cpp +++ b/source/slang/slang-ir-lower-buffer-element-type.cpp @@ -500,6 +500,7 @@ namespace Slang case kIROp_StructuredBufferLoadStatus: case kIROp_RWStructuredBufferLoad: case kIROp_RWStructuredBufferLoadStatus: + case kIROp_StructuredBufferConsume: { IRCloneEnv cloneEnv = {}; builder.setInsertBefore(user); @@ -512,6 +513,7 @@ namespace Slang } case kIROp_Store: case kIROp_RWStructuredBufferStore: + case kIROp_StructuredBufferAppend: { // Use must be the dest operand of the store inst. if (use != user->getOperands() + 0) @@ -524,6 +526,8 @@ namespace Slang store->val.set(packedVal); else if (auto sbStore = as(user)) sbStore->setOperand(2, packedVal); + else if (auto sbAppend = as(user)) + sbAppend->setOperand(1, packedVal); else SLANG_UNREACHABLE("unhandled store type"); break; @@ -565,6 +569,8 @@ namespace Slang case kIROp_RWStructuredBufferGetElementPtr: ptrValsWorkList.add(user); break; + case kIROp_StructuredBufferGetDimensions: + break; default: SLANG_UNREACHABLE("unhandled inst of a buffer/pointer value that needs storage lowering."); break; -- cgit v1.2.3