On Wed, Oct 22, 2014 at 5:02 AM, Marek Olšák <[email protected]> wrote: > From: Marek Olšák <[email protected]>
For the series: Reviewed-by: Alex Deucher <[email protected]> > > --- > src/gallium/drivers/r300/r300_context.h | 1 + > src/gallium/drivers/r300/r300_emit.c | 1 + > src/gallium/drivers/r300/r300_state.c | 7 +++++++ > 3 files changed, 9 insertions(+) > > diff --git a/src/gallium/drivers/r300/r300_context.h > b/src/gallium/drivers/r300/r300_context.h > index 92a35d5..4d2b153 100644 > --- a/src/gallium/drivers/r300/r300_context.h > +++ b/src/gallium/drivers/r300/r300_context.h > @@ -580,6 +580,7 @@ struct r300_context { > /* Whether two-sided color selection is enabled (AKA light_twoside). */ > boolean two_sided_color; > boolean flatshade; > + boolean clip_halfz; > /* Whether fast color clear is enabled. */ > boolean cbzb_clear; > /* Whether fragment shader needs to be validated. */ > diff --git a/src/gallium/drivers/r300/r300_emit.c > b/src/gallium/drivers/r300/r300_emit.c > index b201334..b632963 100644 > --- a/src/gallium/drivers/r300/r300_emit.c > +++ b/src/gallium/drivers/r300/r300_emit.c > @@ -1136,6 +1136,7 @@ void r300_emit_vs_state(struct r300_context* r300, > unsigned size, void* state) > R300_PVS_NUM_CNTLRS(pvs_num_controllers) | > R300_PVS_NUM_FPUS(r300screen->caps.num_vert_fpus) | > R300_PVS_VF_MAX_VTX_NUM(12) | > + (r300->clip_halfz ? R300_DX_CLIP_SPACE_DEF : 0) | > (r300screen->caps.is_r500 ? R500_TCL_STATE_OPTIMIZATION : 0)); > > /* Emit flow control instructions. Even if there are no fc instructions, > diff --git a/src/gallium/drivers/r300/r300_state.c > b/src/gallium/drivers/r300/r300_state.c > index fd67e35..cfcc19d 100644 > --- a/src/gallium/drivers/r300/r300_state.c > +++ b/src/gallium/drivers/r300/r300_state.c > @@ -1390,6 +1390,7 @@ static void r300_bind_rs_state(struct pipe_context* > pipe, void* state) > boolean last_two_sided_color = r300->two_sided_color; > boolean last_msaa_enable = r300->msaa_enable; > boolean last_flatshade = r300->flatshade; > + boolean last_clip_halfz = r300->clip_halfz; > > if (r300->draw && rs) { > draw_set_rasterizer_state(r300->draw, &rs->rs_draw, state); > @@ -1401,12 +1402,14 @@ static void r300_bind_rs_state(struct pipe_context* > pipe, void* state) > r300->two_sided_color = rs->rs.light_twoside; > r300->msaa_enable = rs->rs.multisample; > r300->flatshade = rs->rs.flatshade; > + r300->clip_halfz = rs->rs.clip_halfz; > } else { > r300->polygon_offset_enabled = FALSE; > r300->sprite_coord_enable = 0; > r300->two_sided_color = FALSE; > r300->msaa_enable = FALSE; > r300->flatshade = FALSE; > + r300->clip_halfz = FALSE; > } > > UPDATE_STATE(state, r300->rs_state); > @@ -1428,6 +1431,10 @@ static void r300_bind_rs_state(struct pipe_context* > pipe, void* state) > r300->fs_status = FRAGMENT_SHADER_MAYBE_DIRTY; > } > } > + > + if (last_clip_halfz != r300->clip_halfz) { > + r300_mark_atom_dirty(r300, &r300->vs_state); > + } > } > > /* Free rasterizer state. */ > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
