From: Marek Olšák Date: Tue, 26 Sep 2023 04:10:44 +0000 (-0400) Subject: nir: gather dual slot input information X-Git-Tag: upstream/23.3.3~1192 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b1bbe4e19096b409fd415baff438dbb92b00e976;p=platform%2Fupstream%2Fmesa.git nir: gather dual slot input information Reviewed-By: Mike Blumenkrantz Part-of: --- diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 865d976..d020189 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -508,6 +508,8 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader, shader->info.patch_inputs_read_indirectly |= slot_mask; } else { shader->info.inputs_read |= slot_mask; + if (nir_intrinsic_io_semantics(instr).high_dvec2) + shader->info.dual_slot_inputs |= slot_mask; shader->info.inputs_read_16bit |= slot_mask_16bit; if (!nir_src_is_const(*nir_get_io_offset_src(instr))) { shader->info.inputs_read_indirectly |= slot_mask; @@ -926,6 +928,7 @@ nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint) } shader->info.inputs_read = 0; + shader->info.dual_slot_inputs = 0; shader->info.outputs_written = 0; shader->info.outputs_read = 0; shader->info.inputs_read_16bit = 0; diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c index 301b98a..56d280c 100644 --- a/src/compiler/nir/nir_print.c +++ b/src/compiler/nir/nir_print.c @@ -2397,6 +2397,7 @@ print_shader_info(const struct shader_info *info, FILE *fp) print_nz_unsigned(fp, "num_images", info->num_images); print_nz_x64(fp, "inputs_read", info->inputs_read); + print_nz_x64(fp, "dual_slot_inputs", info->dual_slot_inputs); print_nz_x64(fp, "outputs_written", info->outputs_written); print_nz_x64(fp, "outputs_read", info->outputs_read); diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h index ad2c7af..052ef6a 100644 --- a/src/compiler/shader_info.h +++ b/src/compiler/shader_info.h @@ -167,6 +167,8 @@ typedef struct shader_info { /* Which inputs are actually read */ uint64_t inputs_read; + /* Which inputs occupy 2 slots. */ + uint64_t dual_slot_inputs; /* Which outputs are actually written */ uint64_t outputs_written; /* Which outputs are actually read */