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;