diff options
author | Marek Olšák <maraeo@gmail.com> | 2010-06-24 05:54:18 +0200 |
---|---|---|
committer | Marek Olšák <maraeo@gmail.com> | 2010-06-24 06:10:47 +0200 |
commit | 69adebf5945d994485c584c183c148fc2c1373ed (patch) | |
tree | c37309cc66b3e64091621db485f5d0ba563a8eb5 /src/gallium/drivers/r300/r300_state.c | |
parent | 93bce03b275f66b6b2db410bbef38954de6a617c (diff) |
r300g: move AA registers into the new AA state
Diffstat (limited to 'src/gallium/drivers/r300/r300_state.c')
-rw-r--r-- | src/gallium/drivers/r300/r300_state.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index f2534e473d..9c0f877e81 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -664,6 +664,7 @@ static void const struct pipe_framebuffer_state* state) { struct r300_context* r300 = r300_context(pipe); + struct r300_aa_state *aa = (struct r300_aa_state*)r300->aa_state.state; struct pipe_framebuffer_state *old_state = r300->fb_state.state; unsigned max_width, max_height, i; uint32_t zbuffer_bpp = 0; @@ -687,6 +688,7 @@ static void } r300->gpu_flush.dirty = TRUE; + r300->aa_state.dirty = TRUE; r300->fb_state.dirty = TRUE; /* If nr_cbufs is changed from zero to non-zero or vice versa... */ @@ -725,6 +727,30 @@ static void } } + /* Set up AA config. */ + if (r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0)) { + if (state->nr_cbufs && state->cbufs[0]->texture->nr_samples > 1) { + aa->aa_config = R300_GB_AA_CONFIG_AA_ENABLE; + + switch (state->cbufs[0]->texture->nr_samples) { + case 2: + aa->aa_config |= R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_2; + break; + case 3: + aa->aa_config |= R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_3; + break; + case 4: + aa->aa_config |= R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_4; + break; + case 6: + aa->aa_config |= R300_GB_AA_CONFIG_NUM_AA_SUBSAMPLES_6; + break; + } + } else { + aa->aa_config = 0; + } + } + if (DBG_ON(r300, DBG_FB)) { fprintf(stderr, "r300: set_framebuffer_state:\n"); for (i = 0; i < state->nr_cbufs; i++) { @@ -984,7 +1010,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) ? 5 : 0); + (r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0) ? 3 : 0); if (last_sprite_coord_enable != r300->sprite_coord_enable || last_two_sided_color != r300->two_sided_color) { |