Mesa (staging/20.1): gallium/hud: don't use user vertex buffers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 16 19:47:56 UTC 2020


Module: Mesa
Branch: staging/20.1
Commit: 00284315f0ab8628102c5b96fd7fb54e7c673f9a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=00284315f0ab8628102c5b96fd7fb54e7c673f9a

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Thu Jun 11 13:03:22 2020 +0200

gallium/hud: don't use user vertex buffers

This gains back some performance lost in the previous commit, by
bypassing u_vbuf.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5417>
(cherry picked from commit a3d07c4a35fde31fede3b39d4771d6023b65ecc1)

---

 .pick_status.json                       | 2 +-
 src/gallium/auxiliary/hud/hud_context.c | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 0cdf4f0772e..9179703b73b 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -85,7 +85,7 @@
         "description": "gallium/hud: don't use user vertex buffers",
         "nominated": false,
         "nomination_type": null,
-        "resolution": 4,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": null
     },
diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c
index 912fc03e679..81feb15b9e6 100644
--- a/src/gallium/auxiliary/hud/hud_context.c
+++ b/src/gallium/auxiliary/hud/hud_context.c
@@ -85,11 +85,14 @@ hud_draw_colored_prims(struct hud_context *hud, unsigned prim,
    hud->constants.scale[1] = yscale * hud_scale;
    cso_set_constant_buffer(cso, PIPE_SHADER_VERTEX, 0, &hud->constbuf);
 
-   vbuffer.is_user_buffer = true;
-   vbuffer.buffer.user = buffer;
+   u_upload_data(hud->pipe->stream_uploader, 0,
+                 num_vertices * 2 * sizeof(float), 16, buffer,
+                 &vbuffer.buffer_offset, &vbuffer.buffer.resource);
+   u_upload_unmap(hud->pipe->stream_uploader);
    vbuffer.stride = 2 * sizeof(float);
 
    cso_set_vertex_buffers(cso, 0, 1, &vbuffer);
+   pipe_resource_reference(&vbuffer.buffer.resource, NULL);
    cso_set_fragment_shader_handle(hud->cso, hud->fs_color);
    cso_draw_arrays(cso, prim, 0, num_vertices);
 }



More information about the mesa-commit mailing list