Module: Mesa
Branch: main
Commit: 526e898dfcb885d66db1a6e5633e0e7cf2690dd1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=526e898dfcb885d66db1a6e5633e0e7cf2690dd1

Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Mar 18 09:47:26 2022 -0400

lavapipe: add a stream uploader to rendering_state and queue objects

not currently used

Reviewed-by: Dave Airlie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15457>

---

 src/gallium/frontends/lavapipe/lvp_device.c  | 2 ++
 src/gallium/frontends/lavapipe/lvp_execute.c | 2 ++
 src/gallium/frontends/lavapipe/lvp_private.h | 2 ++
 3 files changed, 6 insertions(+)

diff --git a/src/gallium/frontends/lavapipe/lvp_device.c 
b/src/gallium/frontends/lavapipe/lvp_device.c
index 4ee04a3a568..df144b0d157 100644
--- a/src/gallium/frontends/lavapipe/lvp_device.c
+++ b/src/gallium/frontends/lavapipe/lvp_device.c
@@ -1492,6 +1492,7 @@ lvp_queue_init(struct lvp_device *device, struct 
lvp_queue *queue,
    queue->cso = cso_create_context(queue->ctx, CSO_NO_VBUF);
    util_queue_init(&queue->queue, "lavapipe", 8, 1, 
UTIL_QUEUE_INIT_RESIZE_IF_FULL, device);
    p_atomic_set(&queue->count, 0);
+   queue->uploader = u_upload_create(queue->ctx, 1024 * 1024, 
PIPE_BIND_CONSTANT_BUFFER, PIPE_USAGE_STREAM, 0);
 
    return VK_SUCCESS;
 }
@@ -1502,6 +1503,7 @@ lvp_queue_finish(struct lvp_queue *queue)
    util_queue_finish(&queue->queue);
    util_queue_destroy(&queue->queue);
 
+   u_upload_destroy(queue->uploader);
    cso_destroy_context(queue->cso);
    queue->ctx->destroy(queue->ctx);
    simple_mtx_destroy(&queue->last_lock);
diff --git a/src/gallium/frontends/lavapipe/lvp_execute.c 
b/src/gallium/frontends/lavapipe/lvp_execute.c
index ae04efd90e2..b47f125392f 100644
--- a/src/gallium/frontends/lavapipe/lvp_execute.c
+++ b/src/gallium/frontends/lavapipe/lvp_execute.c
@@ -59,6 +59,7 @@ enum gs_output {
 
 struct rendering_state {
    struct pipe_context *pctx;
+   struct u_upload_mgr *uploader;
    struct cso_context *cso;
 
    bool blend_dirty;
@@ -4254,6 +4255,7 @@ VkResult lvp_execute_cmds(struct lvp_device *device,
    struct rendering_state *state = queue->state;
    memset(state, 0, sizeof(*state));
    state->pctx = queue->ctx;
+   state->uploader = queue->uploader;
    state->cso = queue->cso;
    state->blend_dirty = true;
    state->dsa_dirty = true;
diff --git a/src/gallium/frontends/lavapipe/lvp_private.h 
b/src/gallium/frontends/lavapipe/lvp_private.h
index d103eaa40ed..2efc496c9d8 100644
--- a/src/gallium/frontends/lavapipe/lvp_private.h
+++ b/src/gallium/frontends/lavapipe/lvp_private.h
@@ -34,6 +34,7 @@
 #include "util/u_dynarray.h"
 #include "util/simple_mtx.h"
 #include "util/u_queue.h"
+#include "util/u_upload_mgr.h"
 
 #include "compiler/shader_enums.h"
 #include "pipe/p_screen.h"
@@ -163,6 +164,7 @@ struct lvp_queue {
    struct lvp_device *                         device;
    struct pipe_context *ctx;
    struct cso_context *cso;
+   struct u_upload_mgr *uploader;
    bool shutdown;
    uint64_t timeline;
    struct util_queue queue;

Reply via email to