Set buffer binding size accordingly
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
index 7fa99d5..8bb2dda 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm
@@ -148,7 +148,11 @@
MVKBuffer* buffer = (MVKBuffer*)bufferInfo.buffer;
bb.mtlBuffer = buffer->getMTLBuffer();
bb.offset = buffer->getMTLBufferOffset() + bufferInfo.offset;
- bb.size = (uint32_t)buffer->getByteCount();
+ if (bufferInfo.range == VK_WHOLE_SIZE)
+ bb.size = (uint32_t)(buffer->getByteCount() - bb.offset);
+ else
+ bb.size = (uint32_t)bufferInfo.range;
+
for (uint32_t i = kMVKShaderStageVertex; i < kMVKShaderStageMax; i++) {
if (_applyToStage[i]) {
bb.index = mtlIdxs.stages[i].bufferIndex + rezIdx;
@@ -493,7 +497,10 @@
if (_mvkBuffer) {
bb.mtlBuffer = _mvkBuffer->getMTLBuffer();
bb.offset = _mvkBuffer->getMTLBufferOffset() + _buffOffset + bufferDynamicOffset;
- bb.size = (uint32_t)_mvkBuffer->getByteCount();
+ if (_buffRange == VK_WHOLE_SIZE)
+ bb.size = (uint32_t)(_mvkBuffer->getByteCount() - bb.offset);
+ else
+ bb.size = _buffRange;
}
for (uint32_t i = kMVKShaderStageVertex; i < kMVKShaderStageMax; i++) {
if (stages[i]) {