From 47b15d83a2a4f58f40e9a10d35752147970053c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 4 Feb 2024 21:50:39 -0500 Subject: [PATCH] gallium/hud: set take_ownership=true for set_vertex_buffers Reviewed-By: Mike Blumenkrantz Part-of: --- src/gallium/auxiliary/hud/hud_context.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c index e3b4477b984..cc9702bff27 100644 --- a/src/gallium/auxiliary/hud/hud_context.c +++ b/src/gallium/auxiliary/hud/hud_context.c @@ -112,8 +112,7 @@ hud_draw_colored_prims(struct hud_context *hud, unsigned prim, &vbuffer.buffer_offset, &vbuffer.buffer.resource); u_upload_unmap(hud->pipe->stream_uploader); - cso_set_vertex_buffers(cso, 1, false, &vbuffer); - pipe_resource_reference(&vbuffer.buffer.resource, NULL); + cso_set_vertex_buffers(cso, 1, true, &vbuffer); cso_set_fragment_shader_handle(hud->cso, hud->fs_color); cso_draw_arrays(cso, prim, 0, num_vertices); } @@ -601,21 +600,25 @@ hud_draw_results(struct hud_context *hud, struct pipe_resource *tex) pipe->set_constant_buffer(pipe, PIPE_SHADER_VERTEX, 0, false, &hud->constbuf); - cso_set_vertex_buffers(cso, 1, false, &hud->bg.vbuf); + cso_set_vertex_buffers(cso, 1, true, &hud->bg.vbuf); cso_draw_arrays(cso, MESA_PRIM_QUADS, 0, hud->bg.num_vertices); + hud->bg.vbuf.buffer.resource = NULL; + } else { + pipe_resource_reference(&hud->bg.vbuf.buffer.resource, NULL); } - pipe_resource_reference(&hud->bg.vbuf.buffer.resource, NULL); /* draw accumulated vertices for text */ if (hud->text.num_vertices) { cso_set_vertex_shader_handle(cso, hud->vs_text); cso_set_vertex_elements(cso, &hud->text_velems); - cso_set_vertex_buffers(cso, 1, false, &hud->text.vbuf); + cso_set_vertex_buffers(cso, 1, true, &hud->text.vbuf); cso_set_fragment_shader_handle(hud->cso, hud->fs_text); cso_draw_arrays(cso, MESA_PRIM_QUADS, 0, hud->text.num_vertices); cso_set_vertex_elements(cso, &hud->velems); + hud->text.vbuf.buffer.resource = NULL; + } else { + pipe_resource_reference(&hud->text.vbuf.buffer.resource, NULL); } - pipe_resource_reference(&hud->text.vbuf.buffer.resource, NULL); if (hud->simple) goto done; @@ -635,11 +638,13 @@ hud_draw_results(struct hud_context *hud, struct pipe_resource *tex) if (hud->whitelines.num_vertices) { cso_set_vertex_shader_handle(cso, hud->vs_color); - cso_set_vertex_buffers(cso, 1, false, &hud->whitelines.vbuf); + cso_set_vertex_buffers(cso, 1, true, &hud->whitelines.vbuf); cso_set_fragment_shader_handle(hud->cso, hud->fs_color); cso_draw_arrays(cso, MESA_PRIM_LINES, 0, hud->whitelines.num_vertices); + hud->whitelines.vbuf.buffer.resource = NULL; + } else { + pipe_resource_reference(&hud->whitelines.vbuf.buffer.resource, NULL); } - pipe_resource_reference(&hud->whitelines.vbuf.buffer.resource, NULL); /* draw the rest */ cso_set_blend(cso, &hud->alpha_blend);