glsl_to_nir: use intrinsic builders

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6587>
This commit is contained in:
Rhys Perry
2020-09-07 14:17:14 +01:00
committed by Marge Bot
parent eafc7eee57
commit ddb81f5da3

View File

@@ -811,44 +811,28 @@ nir_visitor::visit(ir_discard *ir)
* discards will be immediately followed by a return.
*/
nir_intrinsic_instr *discard;
if (ir->condition) {
discard = nir_intrinsic_instr_create(this->shader,
nir_intrinsic_discard_if);
discard->src[0] =
nir_src_for_ssa(evaluate_rvalue(ir->condition));
} else {
discard = nir_intrinsic_instr_create(this->shader, nir_intrinsic_discard);
}
nir_builder_instr_insert(&b, &discard->instr);
if (ir->condition)
nir_discard_if(&b, evaluate_rvalue(ir->condition));
else
nir_discard(&b);
}
void
nir_visitor::visit(ir_demote *ir)
{
nir_intrinsic_instr *demote =
nir_intrinsic_instr_create(this->shader, nir_intrinsic_demote);
nir_builder_instr_insert(&b, &demote->instr);
nir_demote(&b);
}
void
nir_visitor::visit(ir_emit_vertex *ir)
{
nir_intrinsic_instr *instr =
nir_intrinsic_instr_create(this->shader, nir_intrinsic_emit_vertex);
nir_intrinsic_set_stream_id(instr, ir->stream_id());
nir_builder_instr_insert(&b, &instr->instr);
nir_emit_vertex(&b, (unsigned)ir->stream_id());
}
void
nir_visitor::visit(ir_end_primitive *ir)
{
nir_intrinsic_instr *instr =
nir_intrinsic_instr_create(this->shader, nir_intrinsic_end_primitive);
nir_intrinsic_set_stream_id(instr, ir->stream_id());
nir_builder_instr_insert(&b, &instr->instr);
nir_end_primitive(&b, (unsigned)ir->stream_id());
}
void
@@ -2648,21 +2632,12 @@ nir_visitor::visit(ir_dereference_array *ir)
void
nir_visitor::visit(ir_barrier *)
{
if (shader->info.stage == MESA_SHADER_COMPUTE) {
nir_intrinsic_instr *shared_barrier =
nir_intrinsic_instr_create(this->shader,
nir_intrinsic_memory_barrier_shared);
nir_builder_instr_insert(&b, &shared_barrier->instr);
} else if (shader->info.stage == MESA_SHADER_TESS_CTRL) {
nir_intrinsic_instr *patch_barrier =
nir_intrinsic_instr_create(this->shader,
nir_intrinsic_memory_barrier_tcs_patch);
nir_builder_instr_insert(&b, &patch_barrier->instr);
}
if (shader->info.stage == MESA_SHADER_COMPUTE)
nir_memory_barrier_shared(&b);
else if (shader->info.stage == MESA_SHADER_TESS_CTRL)
nir_memory_barrier_tcs_patch(&b);
nir_intrinsic_instr *instr =
nir_intrinsic_instr_create(this->shader, nir_intrinsic_control_barrier);
nir_builder_instr_insert(&b, &instr->instr);
nir_control_barrier(&b);
}
nir_shader *