mesa/st: Avoid extra references in the feedback draw function scope.
authorMathias Fröhlich <mathias.froehlich@web.de>
Thu, 1 Nov 2018 18:03:26 +0000 (19:03 +0100)
committerMathias Fröhlich <Mathias.Froehlich@gmx.net>
Mon, 26 Nov 2018 06:57:10 +0000 (07:57 +0100)
The change removes the reference that is held on the entries of the
vbuffers[] array. The new code does not do that anymore as following
the code into draw_set_vertex_buffers() the draw context holds an
other reference as long as it is reset down the function again.
So it should be already by that argument save to remove that
additional reference count.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
src/mesa/state_tracker/st_draw_feedback.c

index 11097b4cac6029dc5fd8e523aaf21c77f55b5436..82f2feb86e3fdc90e03843bcaedd85b04b42c9e7 100644 (file)
@@ -185,7 +185,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
 
          vbuffers[attr].buffer.resource = NULL;
          vbuffers[attr].is_user_buffer = false;
-         pipe_resource_reference(&vbuffers[attr].buffer.resource, stobj->buffer);
+         vbuffers[attr].buffer.resource = stobj->buffer;
          vbuffers[attr].buffer_offset = _mesa_draw_binding_offset(binding);
          velements[attr].src_offset =
             _mesa_draw_attributes_relative_offset(attrib);
@@ -275,7 +275,6 @@ st_feedback_draw_vbo(struct gl_context *ctx,
       if (vb_transfer[attr])
          pipe_buffer_unmap(pipe, vb_transfer[attr]);
       draw_set_mapped_vertex_buffer(draw, attr, NULL, 0);
-      pipe_vertex_buffer_unreference(&vbuffers[attr]);
    }
    draw_set_vertex_buffers(draw, 0, vp->num_inputs, NULL);
 }