diff --git a/src/video_core/renderer_vulkan/vk_state_tracker.cpp b/src/video_core/renderer_vulkan/vk_state_tracker.cpp index 3f4dd89c7e..391473273f 100644 --- a/src/video_core/renderer_vulkan/vk_state_tracker.cpp +++ b/src/video_core/renderer_vulkan/vk_state_tracker.cpp @@ -217,14 +217,17 @@ void SetupDirtyVertexAttributes(Tables& tables) { } void SetupDirtyVertexBindings(Tables& tables) { - // Do NOT include stride here, it's implicit in VertexBuffer + static constexpr size_t stride_enable_offset = 0; static constexpr size_t divisor_offset = 3; for (size_t i = 0; i < Regs::NumVertexArrays; ++i) { + const size_t stream_base = OFF(vertex_streams) + i * NUM(vertex_streams[0]); const u8 flag = static_cast(VertexBinding0 + i); tables[0][OFF(vertex_stream_instances) + i] = VertexInput; tables[1][OFF(vertex_stream_instances) + i] = flag; - tables[0][OFF(vertex_streams) + i * NUM(vertex_streams[0]) + divisor_offset] = VertexInput; - tables[1][OFF(vertex_streams) + i * NUM(vertex_streams[0]) + divisor_offset] = flag; + tables[0][stream_base + stride_enable_offset] = VertexInput; + tables[1][stream_base + stride_enable_offset] = flag; + tables[0][stream_base + divisor_offset] = VertexInput; + tables[1][stream_base + divisor_offset] = flag; } }