From ff5a9868c8d5041a3d944ce300c857934f4e8251 Mon Sep 17 00:00:00 2001 From: Stefan Dösinger Date: Fri, 7 Dec 2012 17:38:35 +0100 Subject: r300: Don't disable destination read if the src blend factor needs it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The read can remain disabled if the src alpha factor needs it because the result would still be zero. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57984 NOTE: This is a candidate for stable release branches. Signed-off-by: Marek Olšák --- src/gallium/drivers/r300/r300_state.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/gallium/drivers/r300') diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index fba2d35b8f9..050c8f44550 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -288,7 +288,11 @@ static void* r300_create_blend_state(struct pipe_context* pipe, dstRGB == PIPE_BLENDFACTOR_ZERO) && (dstA == PIPE_BLENDFACTOR_SRC_COLOR || dstA == PIPE_BLENDFACTOR_SRC_ALPHA || - dstA == PIPE_BLENDFACTOR_ZERO)) { + dstA == PIPE_BLENDFACTOR_ZERO) && + (srcRGB != PIPE_BLENDFACTOR_DST_COLOR && + srcRGB != PIPE_BLENDFACTOR_DST_ALPHA && + srcRGB != PIPE_BLENDFACTOR_INV_DST_COLOR && + srcRGB != PIPE_BLENDFACTOR_INV_DST_ALPHA)) { blend_control |= R500_SRC_ALPHA_0_NO_READ; } @@ -297,7 +301,11 @@ static void* r300_create_blend_state(struct pipe_context* pipe, dstRGB == PIPE_BLENDFACTOR_ZERO) && (dstA == PIPE_BLENDFACTOR_INV_SRC_COLOR || dstA == PIPE_BLENDFACTOR_INV_SRC_ALPHA || - dstA == PIPE_BLENDFACTOR_ZERO)) { + dstA == PIPE_BLENDFACTOR_ZERO) && + (srcRGB != PIPE_BLENDFACTOR_DST_COLOR && + srcRGB != PIPE_BLENDFACTOR_DST_ALPHA && + srcRGB != PIPE_BLENDFACTOR_INV_DST_COLOR && + srcRGB != PIPE_BLENDFACTOR_INV_DST_ALPHA)) { blend_control |= R500_SRC_ALPHA_1_NO_READ; } } -- cgit v1.2.3