gallium: add take_ownership param into set_vertex_buffers to eliminate atomics
There are a few places (mainly u_threaded_context) that do: set_vertex_buffers(...); for (i = 0; i < count; i++) pipe_resource_reference(&buffers[i].resource.buffer, NULL); set_vertex_buffers increments the reference counts while the loop decrements them. This commit eliminates those reference count changes by adding a parameter into set_vertex_buffers that tells the callee to accept all buffers without incrementing the reference counts. AMD Zen benefits from this because it has slow atomics if they come from different CCXs. Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8298>
This commit is contained in:
@@ -207,7 +207,7 @@ void r600_draw_rectangle(struct blitter_context *blitter,
|
||||
vbuffer.stride = 2 * 4 * sizeof(float); /* vertex size */
|
||||
vbuffer.buffer_offset = offset;
|
||||
|
||||
rctx->b.set_vertex_buffers(&rctx->b, blitter->vb_slot, 1, 0, &vbuffer);
|
||||
rctx->b.set_vertex_buffers(&rctx->b, blitter->vb_slot, 1, 0, false, &vbuffer);
|
||||
util_draw_arrays_instanced(&rctx->b, R600_PRIM_RECTANGLE_LIST, 0, 3,
|
||||
0, num_instances);
|
||||
pipe_resource_reference(&buf, NULL);
|
||||
|
Reference in New Issue
Block a user