radeonsi: apply fbfetch/indirect_descriptor to uses_vmem_load_other earlier
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14528>
This commit is contained in:
parent
08cc73a218
commit
e5dd32a48c
|
@ -687,6 +687,8 @@ void si_nir_scan_shader(const struct nir_shader *nir, struct si_shader_info *inf
|
||||||
BITSET_TEST(nir->info.system_values_read, SYSTEM_VALUE_SAMPLE_MASK_IN) ||
|
BITSET_TEST(nir->info.system_values_read, SYSTEM_VALUE_SAMPLE_MASK_IN) ||
|
||||||
BITSET_TEST(nir->info.system_values_read, SYSTEM_VALUE_HELPER_INVOCATION));
|
BITSET_TEST(nir->info.system_values_read, SYSTEM_VALUE_HELPER_INVOCATION));
|
||||||
|
|
||||||
|
info->uses_vmem_load_other |= info->base.fs.uses_fbfetch_output;
|
||||||
|
|
||||||
/* Add both front and back color inputs. */
|
/* Add both front and back color inputs. */
|
||||||
unsigned num_inputs_with_colors = info->num_inputs;
|
unsigned num_inputs_with_colors = info->num_inputs;
|
||||||
for (unsigned back = 0; back < 2; back++) {
|
for (unsigned back = 0; back < 2; back++) {
|
||||||
|
@ -709,6 +711,8 @@ void si_nir_scan_shader(const struct nir_shader *nir, struct si_shader_info *inf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info->uses_vmem_load_other |= info->uses_indirect_descriptor;
|
||||||
|
|
||||||
/* Trim output read masks based on write masks. */
|
/* Trim output read masks based on write masks. */
|
||||||
for (unsigned i = 0; i < info->num_outputs; i++)
|
for (unsigned i = 0; i < info->num_outputs; i++)
|
||||||
info->output_readmask[i] &= info->output_usagemask[i];
|
info->output_readmask[i] &= info->output_usagemask[i];
|
||||||
|
|
|
@ -511,16 +511,13 @@ bool si_shader_mem_ordered(struct si_shader *shader)
|
||||||
|
|
||||||
bool sampler_or_bvh = info->uses_vmem_sampler_or_bvh;
|
bool sampler_or_bvh = info->uses_vmem_sampler_or_bvh;
|
||||||
bool other = info->uses_vmem_load_other ||
|
bool other = info->uses_vmem_load_other ||
|
||||||
info->uses_indirect_descriptor ||
|
|
||||||
shader->config.scratch_bytes_per_wave ||
|
shader->config.scratch_bytes_per_wave ||
|
||||||
(info->stage == MESA_SHADER_FRAGMENT &&
|
(info->stage == MESA_SHADER_FRAGMENT &&
|
||||||
(info->base.fs.uses_fbfetch_output ||
|
shader->key.ps.part.prolog.poly_stipple);
|
||||||
shader->key.ps.part.prolog.poly_stipple));
|
|
||||||
|
|
||||||
if (prev_info) {
|
if (prev_info) {
|
||||||
sampler_or_bvh |= prev_info->uses_vmem_sampler_or_bvh;
|
sampler_or_bvh |= prev_info->uses_vmem_sampler_or_bvh;
|
||||||
other |= prev_info->uses_vmem_load_other ||
|
other |= prev_info->uses_vmem_load_other;
|
||||||
prev_info->uses_indirect_descriptor;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return true if both types of VMEM that return something are used. */
|
/* Return true if both types of VMEM that return something are used. */
|
||||||
|
|
Loading…
Reference in New Issue