freedreno/ir3: Get req_local_mem from pipe_compute_state

mesa/st initializes req_local_mem to shader->info.shared_size.  But for
clover the shared size doesn't come from the shader.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13300>
This commit is contained in:
Rob Clark 2021-09-05 12:35:06 -07:00 committed by Marge Bot
parent f58438320c
commit e68d918ffb
3 changed files with 3 additions and 1 deletions

View File

@ -748,6 +748,7 @@ struct ir3_shader {
/* for compute shaders: */
struct {
unsigned req_input_mem; /* in dwords */
unsigned req_local_mem;
} cs;
};

View File

@ -70,7 +70,7 @@ cs_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
COND(v->mergedregs, A6XX_SP_CS_CTRL_REG0_MERGEDREGS) |
A6XX_SP_CS_CTRL_REG0_BRANCHSTACK(ir3_shader_branchstack_hw(v)));
uint32_t shared_size = MAX2(((int)v->shared_size - 1) / 1024, 1);
uint32_t shared_size = MAX2(((int)v->shader->cs.req_local_mem - 1) / 1024, 1);
OUT_PKT4(ring, REG_A6XX_SP_CS_UNKNOWN_A9B1, 1);
OUT_RING(ring, A6XX_SP_CS_UNKNOWN_A9B1_SHARED_SIZE(shared_size) |
A6XX_SP_CS_UNKNOWN_A9B1_UNK6);

View File

@ -298,6 +298,7 @@ ir3_shader_compute_state_create(struct pipe_context *pctx,
struct ir3_shader *shader = ir3_shader_from_nir(compiler, nir, 0, NULL);
shader->cs.req_input_mem = align(cso->req_input_mem, 4) / 4; /* byte->dword */
shader->cs.req_local_mem = cso->req_local_mem;
struct ir3_shader_state *hwcso = calloc(1, sizeof(*hwcso));