mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 07:00:12 +01:00
pan/bi: Workaround BLEND precolour with explicit moves
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8417>
This commit is contained in:
parent
372a3a1410
commit
a6f1500bed
1 changed files with 14 additions and 2 deletions
|
|
@ -388,9 +388,21 @@ bi_emit_fragment_out(bi_builder *b, nir_intrinsic_instr *instr)
|
|||
|
||||
unsigned rt = loc == FRAG_RESULT_COLOR ? 0 :
|
||||
(loc - FRAG_RESULT_DATA0);
|
||||
bi_index color = bi_src_index(&instr->src[0]);
|
||||
|
||||
bi_emit_blend_op(b, bi_src_index(&instr->src[0]),
|
||||
nir_intrinsic_src_type(instr), rt);
|
||||
/* Explicit copy since BLEND inputs are precoloured to R0-R3,
|
||||
* TODO: maybe schedule around this or implement in RA as a
|
||||
* spill */
|
||||
if (rt > 0) {
|
||||
bi_index srcs[4] = { color, color, color, color };
|
||||
unsigned channels[4] = { 0, 1, 2, 3 };
|
||||
color = bi_temp(b->shader);
|
||||
bi_make_vec_to(b, color, srcs, channels,
|
||||
nir_src_num_components(instr->src[0]),
|
||||
nir_alu_type_get_type_size(nir_intrinsic_src_type(instr)));
|
||||
}
|
||||
|
||||
bi_emit_blend_op(b, color, nir_intrinsic_src_type(instr), rt);
|
||||
}
|
||||
|
||||
if (b->shader->is_blend) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue