This avoids shader variants for radeonsi, or if we go with shader variants, it lets us compile an initial variant.
Signed-off-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> --- src/gallium/drivers/trace/tr_dump_state.c | 4 ++++ src/gallium/include/pipe/p_state.h | 6 ++++++ src/gallium/tests/trivial/compute.c | 1 + src/mesa/state_tracker/st_program.c | 2 ++ 4 files changed, 13 insertions(+) diff --git a/src/gallium/drivers/trace/tr_dump_state.c b/src/gallium/drivers/trace/tr_dump_state.c index 394cdaa..4f89af9 100644 --- a/src/gallium/drivers/trace/tr_dump_state.c +++ b/src/gallium/drivers/trace/tr_dump_state.c @@ -333,6 +333,10 @@ void trace_dump_compute_state(const struct pipe_compute_state *state) trace_dump_member(uint, state, req_private_mem); trace_dump_member(uint, state, req_input_mem); + trace_dump_member_begin("fixed_block"); + trace_dump_array(uint, state->fixed_block, Elements(state->fixed_block)); + trace_dump_member_end(); + trace_dump_struct_end(); } diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index 8e7a10b..fff90e7 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -732,6 +732,12 @@ struct pipe_compute_state unsigned req_local_mem; /**< Required size of the LOCAL resource. */ unsigned req_private_mem; /**< Required size of the PRIVATE resource. */ unsigned req_input_mem; /**< Required size of the INPUT resource. */ + + /** + * Block layout if known, or all zeroes if the block layout is either not + * known yet or dynamic. + */ + unsigned fixed_block[3]; }; /** diff --git a/src/gallium/tests/trivial/compute.c b/src/gallium/tests/trivial/compute.c index 2ddfc42..af3e3aa 100644 --- a/src/gallium/tests/trivial/compute.c +++ b/src/gallium/tests/trivial/compute.c @@ -149,6 +149,7 @@ static void init_prog(struct context *ctx, unsigned local_sz, .req_local_mem = local_sz, .req_private_mem = private_sz, .req_input_mem = input_sz + .fixed_block = {0} }; char *psrc = preprocess_prog(ctx, src, defs); int ret; diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 5e282d9..5777e76 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -1440,6 +1440,8 @@ st_translate_compute_program(struct st_context *st, stcp->tgsi.req_local_mem = stcp->Base.SharedSize; stcp->tgsi.req_private_mem = 0; stcp->tgsi.req_input_mem = 0; + memcpy(stcp->tgsi.fixed_block, stcp->Base.LocalSize, + sizeof(stcp->Base.LocalSize)); free_glsl_to_tgsi_visitor(stcp->glsl_to_tgsi); stcp->glsl_to_tgsi = NULL; -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev