From 33895ac2c8a19ba86cc887a1e6ac33dd4391e8f0 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 25 Aug 2020 15:07:41 -0400 Subject: [PATCH] panfrost: Use draw pack for compute jobs Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_compute.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_compute.c b/src/gallium/drivers/panfrost/pan_compute.c index bccd249c31d..6fdb5f0482a 100644 --- a/src/gallium/drivers/panfrost/pan_compute.c +++ b/src/gallium/drivers/panfrost/pan_compute.c @@ -105,6 +105,7 @@ panfrost_launch_grid(struct pipe_context *pipe, /* TODO: Stub */ struct midgard_payload_vertex_tiler payload = { 0 }; + struct mali_draw_packed postfix; /* We implement OpenCL inputs as uniforms (or a UBO -- same thing), so * reuse the graphics path for this by lowering to Gallium */ @@ -119,12 +120,15 @@ panfrost_launch_grid(struct pipe_context *pipe, if (info->input) pipe->set_constant_buffer(pipe, PIPE_SHADER_COMPUTE, 0, &ubuf); - mali_ptr push = 0; - payload.postfix.gl_enables = (dev->quirks & IS_BIFROST) ? 0x2 : 0x6; - payload.postfix.shader = panfrost_emit_compute_shader_meta(batch, PIPE_SHADER_COMPUTE); - payload.postfix.uniform_buffers = panfrost_emit_const_buf(batch, PIPE_SHADER_COMPUTE, &push); - payload.postfix.uniforms = push; - payload.postfix.shared_memory = panfrost_emit_shared_memory(batch, info); + pan_pack(&postfix, DRAW, cfg) { + cfg.unknown_1 = (dev->quirks & IS_BIFROST) ? 0x2 : 0x6; + cfg.state = panfrost_emit_compute_shader_meta(batch, PIPE_SHADER_COMPUTE); + cfg.shared = panfrost_emit_shared_memory(batch, info); + cfg.uniform_buffers = panfrost_emit_const_buf(batch, + PIPE_SHADER_COMPUTE, &cfg.push_uniforms); + } + + memcpy(&payload.postfix, &postfix, sizeof(postfix)); /* Invoke according to the grid info */ -- 2.30.2