diff options
Diffstat (limited to 'tools/gfx/d3d12/d3d12-shader-object-layout.cpp')
| -rw-r--r-- | tools/gfx/d3d12/d3d12-shader-object-layout.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/tools/gfx/d3d12/d3d12-shader-object-layout.cpp b/tools/gfx/d3d12/d3d12-shader-object-layout.cpp index 0c0095621..ef59c3672 100644 --- a/tools/gfx/d3d12/d3d12-shader-object-layout.cpp +++ b/tools/gfx/d3d12/d3d12-shader-object-layout.cpp @@ -116,6 +116,7 @@ Result ShaderObjectLayoutImpl::Builder::setElementTypeLayout( uint32_t count = (uint32_t)typeLayout->getBindingRangeBindingCount(r); slang::TypeLayoutReflection* slangLeafTypeLayout = typeLayout->getBindingRangeLeafTypeLayout(r); + BindingRangeInfo bindingRangeInfo = {}; bindingRangeInfo.bindingType = slangBindingType; bindingRangeInfo.resourceShape = slangLeafTypeLayout->getResourceShape(); @@ -126,6 +127,21 @@ Result ShaderObjectLayoutImpl::Builder::setElementTypeLayout( typeLayout, r); bindingRangeInfo.isSpecializable = typeLayout->isBindingRangeSpecializable(r); + switch (slangBindingType) + { + case slang::BindingType::RawBuffer: + case slang::BindingType::TypedBuffer: + case slang::BindingType::MutableRawBuffer: + case slang::BindingType::MutableTypedBuffer: + { + auto bufferElementType = slangLeafTypeLayout->getElementTypeLayout(); + if (bufferElementType) + { + bindingRangeInfo.bufferElementStride = (uint32_t)bufferElementType->getStride(); + } + } + break; + } if (bindingRangeInfo.isRootParameter) { RootParameterInfo rootInfo = {}; |
