VulkanRenderPass.drawMultipleIndexed() calls this.setVertexBuffer(0, draw.vertexBuffer().slice()); in VulkanRenderPass.java#304 instead of setVertexBuffer(draw.slot(), draw.vertexBuffer().slice()). The slot field is a first-class member of RenderPass.Draw, used correctly in the GL backend at GlCommandEncoder.java#L449 via renderPass.setVertexBuffer(draw.slot(), ...). On Vulkan, setVertexBuffer maps directly to vkCmdBindVertexBuffers with slot as firstBinding, so the slot value is meaningful. Any draw using slot != 0 will silently bind its vertex buffer to slot 0 instead, reading from the wrong buffer and producing corrupted geometry. All current vanilla Draw instances use slot=0, masking the issue entirely.
Thank you for your report!
However, this issue has been temporarily closed as Awaiting Response.
Could you please explain how this issue affects an average user's experience?
Just a reminder, to make your bug report as effective as possible, please try and include the following steps to reproduce the problem:
If your ticket does not look like the example given here, then it's likely to be closed as incomplete.
This ticket will automatically reopen when you reply.
Quick Links:
📓 Issue Guidelines – 💬 Mojang Support – 📧 Suggestions – 📖 Minecraft Wiki