diff options
Diffstat (limited to 'mesalib/src/glsl/nir/glsl_to_nir.cpp')
-rw-r--r-- | mesalib/src/glsl/nir/glsl_to_nir.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/mesalib/src/glsl/nir/glsl_to_nir.cpp b/mesalib/src/glsl/nir/glsl_to_nir.cpp index 544d0d932..adef19c80 100644 --- a/mesalib/src/glsl/nir/glsl_to_nir.cpp +++ b/mesalib/src/glsl/nir/glsl_to_nir.cpp @@ -563,8 +563,14 @@ nir_visitor::visit(ir_discard *ir) * discards will be immediately followed by a return. */ - nir_intrinsic_instr *discard = - nir_intrinsic_instr_create(this->shader, nir_intrinsic_discard); + nir_intrinsic_instr *discard; + if (ir->condition) { + discard = nir_intrinsic_instr_create(this->shader, + nir_intrinsic_discard_if); + discard->src[0] = evaluate_rvalue(ir->condition); + } else { + discard = nir_intrinsic_instr_create(this->shader, nir_intrinsic_discard); + } nir_instr_insert_after_cf_list(this->cf_node_list, &discard->instr); } |