From c7dd3677dc6632f17d3b69f006f63492b6f9e0be Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Wed, 30 Nov 2022 17:53:43 +0100 Subject: [PATCH] panfrost: implement get_compute_state_info Signed-off-by: Karol Herbst Reviewed-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_shader.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/gallium/drivers/panfrost/pan_shader.c b/src/gallium/drivers/panfrost/pan_shader.c index 7034ce5a6e0..4212e8a7838 100644 --- a/src/gallium/drivers/panfrost/pan_shader.c +++ b/src/gallium/drivers/panfrost/pan_shader.c @@ -487,6 +487,21 @@ panfrost_bind_compute_state(struct pipe_context *pipe, void *cso) uncompiled ? util_dynarray_begin(&uncompiled->variants) : NULL; } +static void +panfrost_get_compute_state_info(struct pipe_context *pipe, void *cso, + struct pipe_compute_state_object_info *info) +{ + struct panfrost_device *dev = pan_device(pipe->screen); + struct panfrost_uncompiled_shader *uncompiled = cso; + struct panfrost_compiled_shader *cs = + util_dynarray_begin(&uncompiled->variants); + + info->max_threads = + panfrost_max_thread_count(dev->arch, cs->info.work_reg_count); + info->private_memory = cs->info.tls_size; + info->preferred_simd_size = pan_subgroup_size(dev->arch); +} + void panfrost_shader_context_init(struct pipe_context *pctx) { @@ -500,5 +515,6 @@ panfrost_shader_context_init(struct pipe_context *pctx) pctx->create_compute_state = panfrost_create_compute_state; pctx->bind_compute_state = panfrost_bind_compute_state; + pctx->get_compute_state_info = panfrost_get_compute_state_info; pctx->delete_compute_state = panfrost_delete_shader_state; }