aco: Don't store TCS outputs to LDS when we're sure that none are read.

This allows us not to write an output to LDS, even if it has
an indirect offset.

No pipeline DB changes.

Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3964>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3964>
This commit is contained in:
Timur Kristóf 2020-03-09 16:27:54 +01:00 committed by Marge Bot
parent 9b36d8c23a
commit 61f2e8d9bb

View file

@ -3339,6 +3339,10 @@ bool should_write_tcs_patch_output_to_lds(isel_context *ctx, nir_intrinsic_instr
unsigned off = nir_intrinsic_base(instr) * 4u;
nir_src *off_src = nir_get_io_offset_src(instr);
/* When none of the appropriate outputs are read, we are OK to never write to LDS */
if (per_vertex ? ctx->shader->info.outputs_read == 0U : ctx->shader->info.patch_outputs_read == 0u)
return false;
/* Indirect offset, we can't be sure if this is read or not, always write to LDS */
if (!nir_src_is_const(*off_src))
return true;