diff --git a/filament/backend/src/metal/MetalDriver.mm b/filament/backend/src/metal/MetalDriver.mm index 18d54e6ee6..b9ca89d8f6 100644 --- a/filament/backend/src/metal/MetalDriver.mm +++ b/filament/backend/src/metal/MetalDriver.mm @@ -2295,12 +2295,14 @@ void MetalDriver::draw2(uint32_t indexOffset, uint32_t indexCount, uint32_t inst // Bind the offset data. if (mContext->dynamicOffsets.isDirty()) { const auto [size, data] = mContext->dynamicOffsets.getOffsets(); - [mContext->currentRenderPassEncoder setFragmentBytes:data - length:size * sizeof(uint32_t) - atIndex:DYNAMIC_OFFSET_BINDING]; - [mContext->currentRenderPassEncoder setVertexBytes:data - length:size * sizeof(uint32_t) - atIndex:DYNAMIC_OFFSET_BINDING]; + if (size > 0) { + [mContext->currentRenderPassEncoder setFragmentBytes:data + length:size * sizeof(uint32_t) + atIndex:DYNAMIC_OFFSET_BINDING]; + [mContext->currentRenderPassEncoder setVertexBytes:data + length:size * sizeof(uint32_t) + atIndex:DYNAMIC_OFFSET_BINDING]; + } mContext->dynamicOffsets.setDirty(false); }