Selaa lähdekoodia

nir: Pull nir_lower_io's load_op selection into a helper function.

Makes the function a bit smaller.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
tags/11.0-branchpoint
Kenneth Graunke 10 vuotta sitten
vanhempi
commit
ed2afec3fc
1 muutettua tiedostoa jossa 22 lisäystä ja 17 poistoa
  1. 22
    17
      src/glsl/nir/nir_lower_io.c

+ 22
- 17
src/glsl/nir/nir_lower_io.c Näytä tiedosto

@@ -299,6 +299,25 @@ get_io_offset(nir_deref_var *deref, nir_instr *instr, nir_src *indirect,
return base_offset;
}

static nir_intrinsic_op
load_op(nir_variable_mode mode, bool has_indirect)
{
nir_intrinsic_op op;
switch (mode) {
case nir_var_shader_in:
op = has_indirect ? nir_intrinsic_load_input_indirect :
nir_intrinsic_load_input;
break;
case nir_var_uniform:
op = has_indirect ? nir_intrinsic_load_uniform_indirect :
nir_intrinsic_load_uniform;
break;
default:
unreachable("Unknown variable mode");
}
return op;
}

static bool
nir_lower_io_block(nir_block *block, void *void_state)
{
@@ -318,23 +337,9 @@ nir_lower_io_block(nir_block *block, void *void_state)

bool has_indirect = deref_has_indirect(intrin->variables[0]);

/* Figure out the opcode */
nir_intrinsic_op load_op;
switch (mode) {
case nir_var_shader_in:
load_op = has_indirect ? nir_intrinsic_load_input_indirect :
nir_intrinsic_load_input;
break;
case nir_var_uniform:
load_op = has_indirect ? nir_intrinsic_load_uniform_indirect :
nir_intrinsic_load_uniform;
break;
default:
unreachable("Unknown variable mode");
}

nir_intrinsic_instr *load = nir_intrinsic_instr_create(state->mem_ctx,
load_op);
nir_intrinsic_instr *load =
nir_intrinsic_instr_create(state->mem_ctx,
load_op(mode, has_indirect));
load->num_components = intrin->num_components;

nir_src indirect;

Loading…
Peruuta
Tallenna