nir/lower_samplers: fixup for new foreach_block()

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Connor Abbott
2016-04-08 17:33:42 -04:00
committed by Jason Ekstrand
parent f4ebff89e4
commit 26b4c9ee15

View File

@@ -152,39 +152,19 @@ lower_sampler(nir_tex_instr *instr, const struct gl_shader_program *shader_progr
instr->texture = NULL; instr->texture = NULL;
} }
typedef struct {
nir_builder builder;
const struct gl_shader_program *shader_program;
gl_shader_stage stage;
} lower_state;
static bool
lower_block_cb(nir_block *block, void *_state)
{
lower_state *state = (lower_state *) _state;
nir_foreach_instr(block, instr) {
if (instr->type == nir_instr_type_tex) {
nir_tex_instr *tex_instr = nir_instr_as_tex(instr);
lower_sampler(tex_instr, state->shader_program, state->stage,
&state->builder);
}
}
return true;
}
static void static void
lower_impl(nir_function_impl *impl, const struct gl_shader_program *shader_program, lower_impl(nir_function_impl *impl, const struct gl_shader_program *shader_program,
gl_shader_stage stage) gl_shader_stage stage)
{ {
lower_state state; nir_builder b;
nir_builder_init(&b, impl);
nir_builder_init(&state.builder, impl); nir_foreach_block(block, impl) {
state.shader_program = shader_program; nir_foreach_instr(block, instr) {
state.stage = stage; if (instr->type == nir_instr_type_tex)
lower_sampler(nir_instr_as_tex(instr), shader_program, stage, &b);
nir_foreach_block_call(impl, lower_block_cb, &state); }
}
} }
void void