nir/lower_samplers: fixup for new foreach_block()
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:

committed by
Jason Ekstrand

parent
f4ebff89e4
commit
26b4c9ee15
@@ -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
|
||||||
|
Reference in New Issue
Block a user