From a57f2d0cfab3517ca25c07dda7d4eea6e94e1381 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Tue, 22 Sep 2020 09:13:57 +0200 Subject: [PATCH] r600: Add flag for dual-source blending to shader key Otherwise the number of outputs and the output data index can't be interpreted correctly. Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/r600_shader.h | 1 + src/gallium/drivers/r600/r600_state_common.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/r600_shader.h b/src/gallium/drivers/r600/r600_shader.h index 4e4942c..8acd9a3 100644 --- a/src/gallium/drivers/r600/r600_shader.h +++ b/src/gallium/drivers/r600/r600_shader.h @@ -137,6 +137,7 @@ union r600_shader_key { unsigned color_two_side:1; unsigned alpha_to_one:1; unsigned apply_sample_id_mask:1; + unsigned dual_source_blend:1; } ps; struct { unsigned prim_id_out:8; diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index b036bf5..eae6ca1 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -821,8 +821,10 @@ static inline void r600_shader_selector_key(const struct pipe_context *ctx, key->ps.nr_cbufs = rctx->framebuffer.state.nr_cbufs; key->ps.apply_sample_id_mask = (rctx->ps_iter_samples > 1) || !rctx->rasterizer->multisample_enable; /* Dual-source blending only makes sense with nr_cbufs == 1. */ - if (key->ps.nr_cbufs == 1 && rctx->dual_src_blend) + if (key->ps.nr_cbufs == 1 && rctx->dual_src_blend) { key->ps.nr_cbufs = 2; + key->ps.dual_source_blend = 1; + } break; } case PIPE_SHADER_TESS_EVAL: -- 2.7.4