From: Marek Olšák Date: Sun, 15 Jul 2012 01:38:42 +0000 (+0200) Subject: r600g: fix lockups with and enable dual source blending on evergreen X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d699cd845f3544fa6e149fa4ffb1d131d32b482;p=mesa.git r600g: fix lockups with and enable dual source blending on evergreen GL_ARB_blend_func_extended is now enabled on all chipsets. --- diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 8f037e26129..5486a96ed92 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -1652,7 +1652,9 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, for (i = 0; i < state->nr_cbufs; i++) { evergreen_cb(rctx, rstate, state, i); } - + /* CB_COLOR1_INFO is already initialized for possible dual-src blending */ + if (i == 1) + i++; for (; i < 8 ; i++) { r600_pipe_state_add_reg(rstate, R_028C70_CB_COLOR0_INFO + i * 0x3C, 0); } diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 48e94f51718..2a102621183 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -384,6 +384,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_USER_CONSTANT_BUFFERS: case PIPE_CAP_COMPUTE: case PIPE_CAP_START_INSTANCE: + case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS: return 1; case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT: @@ -451,9 +452,6 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_MAX_TEXEL_OFFSET: return 7; - - case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS: - return family < CHIP_CEDAR ? 1 : 0; } return 0; }