pan/bi: Factor out bi_emit_blend

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7446>
This commit is contained in:
Alyssa Rosenzweig 2020-11-04 08:46:32 -05:00
parent 928f2bc0d5
commit f67b49d512
1 changed files with 22 additions and 13 deletions

View File

@ -219,25 +219,17 @@ bi_emit_atest(bi_context *ctx, unsigned rgba, nir_alu_type T)
}
static void
bi_emit_frag_out(bi_context *ctx, nir_intrinsic_instr *instr)
bi_emit_blend(bi_context *ctx, unsigned rgba, nir_alu_type T, unsigned rt)
{
if (!ctx->emitted_atest && !ctx->is_blend) {
bi_emit_atest(ctx,
pan_src_index(&instr->src[0]),
nir_intrinsic_src_type(instr));
ctx->emitted_atest = true;
}
bi_instruction blend = {
.type = BI_BLEND,
.blend_location = nir_intrinsic_base(instr),
.blend_location = rt,
.src = {
pan_src_index(&instr->src[0]),
BIR_INDEX_REGISTER | 60 /* Can this be arbitrary? */,
rgba,
BIR_INDEX_REGISTER | 60 /* TODO: RA */
},
.src_types = {
nir_intrinsic_src_type(instr),
T,
nir_type_uint32,
nir_type_uint32,
nir_type_uint32,
@ -276,6 +268,23 @@ bi_emit_frag_out(bi_context *ctx, nir_intrinsic_instr *instr)
ctx->blend_types[blend.blend_location] = blend.src_types[0];
bi_emit(ctx, blend);
}
static void
bi_emit_frag_out(bi_context *ctx, nir_intrinsic_instr *instr)
{
if (!ctx->emitted_atest && !ctx->is_blend) {
bi_emit_atest(ctx,
pan_src_index(&instr->src[0]),
nir_intrinsic_src_type(instr));
ctx->emitted_atest = true;
}
bi_emit_blend(ctx,
pan_src_index(&instr->src[0]),
nir_intrinsic_src_type(instr),
nir_intrinsic_base(instr));
if (ctx->is_blend) {
/* Jump back to the fragment shader, return address is stored