From: Alyssa Rosenzweig Date: Thu, 29 Dec 2022 02:56:00 +0000 (-0500) Subject: nir/opt_preamble: Treat *size as an input X-Git-Tag: upstream/23.3.3~13898 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=05d3238692b3144acdcd9bfcf515cccebe79fb9c;p=platform%2Fupstream%2Fmesa.git nir/opt_preamble: Treat *size as an input Some backends may wish to reserve early uniforms for internal system values, and use the remaining space for preamble storage. In this case, it's convenient to teach nir_opt_preamble about a reserved offset. It's logical to treat the output *size instead of an in/out variable that nir_opt_preamble adds to. This requires a slight change to the consumers to zero the input. Signed-off-by: Alyssa Rosenzweig Acked-by-(with-sparkles): Asahi Lina Part-of: --- diff --git a/src/compiler/nir/nir_opt_preamble.c b/src/compiler/nir/nir_opt_preamble.c index ee3ffac..e5e2696 100644 --- a/src/compiler/nir/nir_opt_preamble.c +++ b/src/compiler/nir/nir_opt_preamble.c @@ -421,7 +421,6 @@ nir_opt_preamble(nir_shader *shader, const nir_opt_preamble_options *options, } if (num_candidates == 0) { - *size = 0; free(ctx.states); return false; } @@ -485,7 +484,6 @@ nir_opt_preamble(nir_shader *shader, const nir_opt_preamble_options *options, num_candidates = candidate_idx; if (num_candidates == 0) { - *size = 0; free(ctx.states); free(candidates); return false; @@ -498,11 +496,11 @@ nir_opt_preamble(nir_shader *shader, const nir_opt_preamble_options *options, * divided by size. */ - if (total_size > options->preamble_storage_size) { - qsort(candidates, num_candidates, sizeof(*candidates), candidate_sort); + if (((*size) + total_size) > options->preamble_storage_size) { + qsort(candidates, num_candidates, sizeof(*candidates), candidate_sort); } - unsigned offset = 0; + unsigned offset = *size; for (unsigned i = 0; i < num_candidates; i++) { def_state *state = candidates[i]; offset = ALIGN_POT(offset, state->align); diff --git a/src/freedreno/ir3/ir3_nir_opt_preamble.c b/src/freedreno/ir3/ir3_nir_opt_preamble.c index 43f757f..2dfacd1 100644 --- a/src/freedreno/ir3/ir3_nir_opt_preamble.c +++ b/src/freedreno/ir3/ir3_nir_opt_preamble.c @@ -284,7 +284,7 @@ ir3_nir_opt_preamble(nir_shader *nir, struct ir3_shader_variant *v) .rewrite_cost_cb = rewrite_cost, }; - unsigned size; + unsigned size = 0; bool progress = nir_opt_preamble(nir, &options, &size); if (!v->binning_pass)