pan/bi: Add support for load_blend_const_color_{r,g,b,a}_float
Needed for blend shaders. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7151>
This commit is contained in:
parent
16179c89d1
commit
1a1d9cce46
|
@ -409,6 +409,33 @@ bi_emit_discard_if(bi_context *ctx, nir_intrinsic_instr *instr)
|
|||
bi_emit(ctx, discard);
|
||||
}
|
||||
|
||||
static void
|
||||
bi_emit_blend_const(bi_context *ctx, nir_intrinsic_instr *instr)
|
||||
{
|
||||
assert(ctx->is_blend);
|
||||
|
||||
unsigned comp;
|
||||
switch (instr->intrinsic) {
|
||||
case nir_intrinsic_load_blend_const_color_r_float: comp = 0; break;
|
||||
case nir_intrinsic_load_blend_const_color_g_float: comp = 1; break;
|
||||
case nir_intrinsic_load_blend_const_color_b_float: comp = 2; break;
|
||||
case nir_intrinsic_load_blend_const_color_a_float: comp = 3; break;
|
||||
default: unreachable("Invalid load blend constant intrinsic");
|
||||
}
|
||||
|
||||
bi_instruction move = {
|
||||
.type = BI_MOV,
|
||||
.dest = pan_dest_index(&instr->dest),
|
||||
.dest_type = nir_type_uint32,
|
||||
.src = { BIR_INDEX_CONSTANT },
|
||||
.src_types = { nir_type_uint32 },
|
||||
};
|
||||
|
||||
memcpy(&move.constant.u32, &ctx->blend_constants[comp], sizeof(float));
|
||||
|
||||
bi_emit(ctx, move);
|
||||
}
|
||||
|
||||
static void
|
||||
emit_intrinsic(bi_context *ctx, nir_intrinsic_instr *instr)
|
||||
{
|
||||
|
@ -468,6 +495,13 @@ emit_intrinsic(bi_context *ctx, nir_intrinsic_instr *instr)
|
|||
bi_emit_sysval(ctx, &instr->instr, 3, 0);
|
||||
break;
|
||||
|
||||
case nir_intrinsic_load_blend_const_color_r_float:
|
||||
case nir_intrinsic_load_blend_const_color_g_float:
|
||||
case nir_intrinsic_load_blend_const_color_b_float:
|
||||
case nir_intrinsic_load_blend_const_color_a_float:
|
||||
bi_emit_blend_const(ctx, instr);
|
||||
break;
|
||||
|
||||
default:
|
||||
unreachable("Unknown intrinsic");
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue