intel/nir: Pass the nir_builder by reference in lower_alpha_to_coverage
I'm honestly not sure how passing a builder by-value ever worked. I
guess the struct is mostly copyable. In any case, that's the wrong way
to use it and it's causing issues.
Fixes: 7ecfbd4f6d
"nir: Add alpha_to_coverage lowering pass"
Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6233>
This commit is contained in:

committed by
Marge Bot

parent
373e25e6b5
commit
72dc06e07e
@@ -56,30 +56,30 @@
|
||||
* 1.0000 1111111111111111
|
||||
*/
|
||||
static nir_ssa_def *
|
||||
build_dither_mask(nir_builder b, nir_intrinsic_instr *store_instr)
|
||||
build_dither_mask(nir_builder *b, nir_intrinsic_instr *store_instr)
|
||||
{
|
||||
nir_ssa_def *alpha =
|
||||
nir_channel(&b, nir_ssa_for_src(&b, store_instr->src[0], 4), 3);
|
||||
nir_channel(b, nir_ssa_for_src(b, store_instr->src[0], 4), 3);
|
||||
|
||||
nir_ssa_def *m =
|
||||
nir_f2i32(&b, nir_fmul_imm(&b, nir_fsat(&b, alpha), 16.0));
|
||||
nir_f2i32(b, nir_fmul_imm(b, nir_fsat(b, alpha), 16.0));
|
||||
|
||||
nir_ssa_def *part_a =
|
||||
nir_iand(&b,
|
||||
nir_imm_int(&b, 0xf),
|
||||
nir_ushr(&b,
|
||||
nir_imm_int(&b, 0xfea80),
|
||||
nir_iand(&b, m, nir_imm_int(&b, ~3))));
|
||||
nir_iand(b,
|
||||
nir_imm_int(b, 0xf),
|
||||
nir_ushr(b,
|
||||
nir_imm_int(b, 0xfea80),
|
||||
nir_iand(b, m, nir_imm_int(b, ~3))));
|
||||
|
||||
nir_ssa_def *part_b = nir_iand(&b, m, nir_imm_int(&b, 2));
|
||||
nir_ssa_def *part_b = nir_iand(b, m, nir_imm_int(b, 2));
|
||||
|
||||
nir_ssa_def *part_c = nir_iand(&b, m, nir_imm_int(&b, 1));
|
||||
nir_ssa_def *part_c = nir_iand(b, m, nir_imm_int(b, 1));
|
||||
|
||||
return nir_ior(&b,
|
||||
nir_imul_imm(&b, part_a, 0x1111),
|
||||
nir_ior(&b,
|
||||
nir_imul_imm(&b, part_b, 0x0808),
|
||||
nir_imul_imm(&b, part_c, 0x0100)));
|
||||
return nir_ior(b,
|
||||
nir_imul_imm(b, part_a, 0x1111),
|
||||
nir_ior(b,
|
||||
nir_imul_imm(b, part_b, 0x0808),
|
||||
nir_imul_imm(b, part_c, 0x0100)));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -136,7 +136,7 @@ brw_nir_lower_alpha_to_coverage(nir_shader *shader)
|
||||
|
||||
if (sample_mask_instr && store_instr) {
|
||||
b.cursor = nir_before_instr(&store_instr->instr);
|
||||
nir_ssa_def *dither_mask = build_dither_mask(b, store_instr);
|
||||
nir_ssa_def *dither_mask = build_dither_mask(&b, store_instr);
|
||||
|
||||
/* Combine dither_mask and reorder gl_SampleMask store instruction
|
||||
* after render target 0 store instruction.
|
||||
|
Reference in New Issue
Block a user