aboutsummaryrefslogtreecommitdiffstats
path: root/src/glsl/nir/nir_opt_peephole_select.c
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2014-12-12 20:37:04 -0800
committerJason Ekstrand <[email protected]>2015-01-15 07:20:21 -0800
commitb3fd098e7daa491637d66d03366b67c989937a1f (patch)
tree000f2453d4fe1d914008a484811c1c672589d3c8 /src/glsl/nir/nir_opt_peephole_select.c
parent295faf9462cba88250d8581f65611996eba5e389 (diff)
nir: Make bcsel a fully vector operation
Previously, the condition was a scalar that applied to all components simultaneously. As of this commit, the condition is a vector and each component is switched seperately. Reviewed-by: Connor Abbott <[email protected]>
Diffstat (limited to 'src/glsl/nir/nir_opt_peephole_select.c')
-rw-r--r--src/glsl/nir/nir_opt_peephole_select.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/glsl/nir/nir_opt_peephole_select.c b/src/glsl/nir/nir_opt_peephole_select.c
index 247fe050a70..3e8c93882d2 100644
--- a/src/glsl/nir/nir_opt_peephole_select.c
+++ b/src/glsl/nir/nir_opt_peephole_select.c
@@ -136,6 +136,8 @@ nir_opt_peephole_select_block(nir_block *block, void *void_state)
nir_phi_instr *phi = nir_instr_as_phi(instr);
nir_alu_instr *sel = nir_alu_instr_create(state->mem_ctx, nir_op_bcsel);
sel->src[0].src = nir_src_copy(if_stmt->condition, state->mem_ctx);
+ /* Splat the condition to all channels */
+ memset(sel->src[0].swizzle, 0, sizeof sel->src[0].swizzle);
assert(exec_list_length(&phi->srcs) == 2);
foreach_list_typed(nir_phi_src, src, node, &phi->srcs) {