mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-05 12:30:40 +02:00
r300g: implement pipe_rasterizer_state::clip_halfz
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
ae879718c4
commit
8ddd2f7aee
3 changed files with 9 additions and 0 deletions
|
|
@ -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. */
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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. */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue