Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl>
On Mon, Oct 30, 2017 at 7:37 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/amd/vulkan/radv_cmd_buffer.c | 18 ++++++++++++++++-- > 1 file changed, 16 insertions(+), 2 deletions(-) > > diff --git a/src/amd/vulkan/radv_cmd_buffer.c > b/src/amd/vulkan/radv_cmd_buffer.c > index 00ed7182a7..4b38ece10f 100644 > --- a/src/amd/vulkan/radv_cmd_buffer.c > +++ b/src/amd/vulkan/radv_cmd_buffer.c > @@ -2259,14 +2259,28 @@ void radv_CmdBindVertexBuffers( > { > RADV_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); > struct radv_vertex_binding *vb = cmd_buffer->state.vertex_bindings; > + bool changed = false; > > /* We have to defer setting up vertex buffer since we need the buffer > * stride from the pipeline. */ > > assert(firstBinding + bindingCount <= MAX_VBS); > for (uint32_t i = 0; i < bindingCount; i++) { > - vb[firstBinding + i].buffer = > radv_buffer_from_handle(pBuffers[i]); > - vb[firstBinding + i].offset = pOffsets[i]; > + uint32_t idx = firstBinding + i; > + > + if (!changed && > + (vb[idx].buffer != radv_buffer_from_handle(pBuffers[i]) || > + vb[idx].offset != pOffsets[i])) { > + changed = true; > + } > + > + vb[idx].buffer = radv_buffer_from_handle(pBuffers[i]); > + vb[idx].offset = pOffsets[i]; > + } > + > + if (!changed) { > + /* No state changes. */ > + return; > } > > cmd_buffer->state.vb_dirty = true; > -- > 2.14.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev