util: fix MSVC signed/unsigned comparison warning in u_vbuf.c code
[mesa.git] / src / gallium / auxiliary / util / u_vbuf.c
index 400fada18302da9a583491c1932154896d4f9c6f..1cc83c3dd39981da369dd66fc407a013dd7da3fa 100644 (file)
@@ -98,7 +98,7 @@ struct u_vbuf {
    /* Vertex buffers for the driver.
     * There are no user buffers. */
    struct pipe_vertex_buffer real_vertex_buffer[PIPE_MAX_ATTRIBS];
-   int nr_real_vertex_buffers;
+   unsigned nr_real_vertex_buffers;
    boolean vertex_buffers_dirty;
 
    /* The index buffer. */
@@ -225,7 +225,9 @@ u_vbuf_set_vertex_elements_internal(struct u_vbuf *mgr, unsigned count,
    }
 
    assert(ve);
-   pipe->bind_vertex_elements_state(pipe, ve->driver_cso);
+
+   if (ve != mgr->ve)
+          pipe->bind_vertex_elements_state(pipe, ve->driver_cso);
    return ve;
 }
 
@@ -717,6 +719,7 @@ void u_vbuf_set_vertex_buffers(struct u_vbuf *mgr, unsigned count,
 
       real_vb->buffer_offset = orig_vb->buffer_offset = vb->buffer_offset;
       real_vb->stride = orig_vb->stride = vb->stride;
+      real_vb->user_buffer = NULL;
 
       if (vb->stride) {
          mgr->nonzero_stride_vb_mask |= 1 << i;
@@ -741,6 +744,7 @@ void u_vbuf_set_vertex_buffers(struct u_vbuf *mgr, unsigned count,
       }
 
       pipe_resource_reference(&real_vb->buffer, vb->buffer);
+      real_vb->user_buffer = vb->user_buffer;
    }
 
    for (i = count; i < mgr->nr_vertex_buffers; i++) {