From: Alyssa Rosenzweig Date: Fri, 21 Aug 2020 17:42:55 +0000 (-0400) Subject: panfrost: Allocate a state uploader X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8c14482cdf134a9dcae6807671106bbc54e5aadb;p=mesa.git panfrost: Allocate a state uploader We'd like to uploader some descriptors at CSO time. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Tomeu Vizoso Part-of: --- diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index 55f4ea667a1..3002e551f6b 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -1159,6 +1159,7 @@ panfrost_destroy(struct pipe_context *pipe) util_unreference_framebuffer_state(&panfrost->pipe_framebuffer); u_upload_destroy(pipe->stream_uploader); + u_upload_destroy(panfrost->state_uploader); ralloc_free(pipe); } @@ -1427,7 +1428,9 @@ panfrost_create_context(struct pipe_screen *screen, void *priv, unsigned flags) gallium->stream_uploader = u_upload_create_default(gallium); gallium->const_uploader = gallium->stream_uploader; - assert(gallium->stream_uploader); + + ctx->state_uploader = u_upload_create(gallium, 4096, + PIPE_BIND_CONSTANT_BUFFER, PIPE_USAGE_DYNAMIC, 0); /* All of our GPUs support ES mode. Midgard supports additionally * QUADS/QUAD_STRIPS/POLYGON. Bifrost supports just QUADS. */ diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h index ef37cb57a32..d490f4aca56 100644 --- a/src/gallium/drivers/panfrost/pan_context.h +++ b/src/gallium/drivers/panfrost/pan_context.h @@ -96,6 +96,11 @@ struct panfrost_context { /* Gallium context */ struct pipe_context base; + /* Upload manager for small resident GPU-internal data structures, like + * sampler descriptors. We use an upload manager since the minimum BO + * size from the kernel is 4kb */ + struct u_upload_mgr *state_uploader; + /* Bound job batch and map of panfrost_batch_key to job batches */ struct panfrost_batch *batch; struct hash_table *batches;