summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300/r300_state.c
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2010-06-25 03:28:09 +0200
committerMarek Olšák <[email protected]>2010-06-27 15:13:13 +0200
commitc200c47e6c2f8581608b83e703d611db1bebd7f6 (patch)
tree37540af7d3f90b74c0a6fc54fe012dc9191bb79f /src/gallium/drivers/r300/r300_state.c
parentbb47d1c26fa000735bd06751ba00a98354c921b7 (diff)
r300g: move emission of the MSPOS regs into the framebuffer state
Now the question is whether we are allowed to ignore gl_rasterization_rules and pipe_rasterizer_state::multisample. The former is invariant anyway and I think the latter would need re-emitting the AA state which is quite costly, considering that it implicitly flushes the whole pipeline (all AA regs in the AA state are *unpipelined*).
Diffstat (limited to 'src/gallium/drivers/r300/r300_state.c')
-rw-r--r--src/gallium/drivers/r300/r300_state.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 27ec5bc2b3e..ea1210fcb48 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -708,7 +708,8 @@ static void
r300->fb_state.size =
7 +
(8 * state->nr_cbufs) +
- (state->zsbuf ? (r300->screen->caps.has_hiz ? 22 : 18) : 0);
+ (state->zsbuf ? (r300->screen->caps.has_hiz ? 22 : 18) : 0) +
+ (r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0) ? 3 : 0);
/* Polygon offset depends on the zbuffer bit depth. */
if (state->zsbuf && r300->polygon_offset_enabled) {
@@ -975,11 +976,6 @@ static void* r300_create_rs_state(struct pipe_context* pipe,
}
}
- if (state->gl_rasterization_rules) {
- rs->multisample_position_0 = 0x66666666;
- rs->multisample_position_1 = 0x6666666;
- }
-
return (void*)rs;
}
@@ -1009,8 +1005,7 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state)
}
UPDATE_STATE(state, r300->rs_state);
- r300->rs_state.size = 25 + (r300->polygon_offset_enabled ? 5 : 0) +
- (r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0) ? 3 : 0);
+ r300->rs_state.size = 25 + (r300->polygon_offset_enabled ? 5 : 0);
if (last_sprite_coord_enable != r300->sprite_coord_enable ||
last_two_sided_color != r300->two_sided_color) {