mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
r600: fix refcnt imbalance related to r600_set_vertex_buffers()
For instance, this issue is triggered with: "piglit/bin/useprogram-flushverts-2 -auto -fbo" or
"piglit/bin/primitive-restart-draw-mode line_loop -auto"
while setting GALLIUM_REFCNT_LOG=refcnt.log.
Fixes: 27dcb46629 ("gallium: add take_ownership param into set_vertex_buffers to eliminate atomics")
Signed-off-by: Patrick Lerda <patrick9876@free.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22395>
This commit is contained in:
parent
cd861b7f38
commit
28cb33fada
1 changed files with 12 additions and 4 deletions
|
|
@ -586,10 +586,10 @@ static void r600_set_vertex_buffers(struct pipe_context *ctx,
|
|||
/* Set vertex buffers. */
|
||||
if (input) {
|
||||
for (i = 0; i < count; i++) {
|
||||
if ((input[i].buffer.resource != vb[i].buffer.resource) ||
|
||||
(vb[i].stride != input[i].stride) ||
|
||||
(vb[i].buffer_offset != input[i].buffer_offset) ||
|
||||
(vb[i].is_user_buffer != input[i].is_user_buffer)) {
|
||||
if (likely((input[i].buffer.resource != vb[i].buffer.resource) ||
|
||||
(vb[i].stride != input[i].stride) ||
|
||||
(vb[i].buffer_offset != input[i].buffer_offset) ||
|
||||
(vb[i].is_user_buffer != input[i].is_user_buffer))) {
|
||||
if (input[i].buffer.resource) {
|
||||
vb[i].stride = input[i].stride;
|
||||
vb[i].buffer_offset = input[i].buffer_offset;
|
||||
|
|
@ -606,6 +606,14 @@ static void r600_set_vertex_buffers(struct pipe_context *ctx,
|
|||
pipe_resource_reference(&vb[i].buffer.resource, NULL);
|
||||
disable_mask |= 1 << i;
|
||||
}
|
||||
} else if (input[i].buffer.resource) {
|
||||
if (take_ownership) {
|
||||
pipe_resource_reference(&vb[i].buffer.resource, NULL);
|
||||
vb[i].buffer.resource = input[i].buffer.resource;
|
||||
} else {
|
||||
pipe_resource_reference(&vb[i].buffer.resource,
|
||||
input[i].buffer.resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue