summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2012-07-15 03:38:42 +0200
committerMarek Olšák <[email protected]>2012-07-17 21:22:15 +0200
commit9d699cd845f3544fa6e149fa4ffb1d131d32b482 (patch)
tree8311f225212d379e019068ab680a4878b027202c
parentc26fadf195876271e559f844c1fc88effa6a60c1 (diff)
r600g: fix lockups with and enable dual source blending on evergreen
GL_ARB_blend_func_extended is now enabled on all chipsets.
-rw-r--r--src/gallium/drivers/r600/evergreen_state.c4
-rw-r--r--src/gallium/drivers/r600/r600_pipe.c4
2 files changed, 4 insertions, 4 deletions
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;
}