diff options
author | Dave Airlie <[email protected]> | 2014-01-29 00:17:15 +0000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2014-02-05 10:49:42 +1000 |
commit | 7ec5e883f20a7ed88c23a98c4be8d4a4ea06e81e (patch) | |
tree | d2bc36e36ff596dc5c031ff8acb6c07a340508b1 /src/gallium/drivers/r600/r600_state_common.c | |
parent | 7863611de3305208effe96fbbef5eaf49b60c904 (diff) |
r600g: fix up shader out misc stuff for copy shader
set the correct values so the misc out register is setup correctly
for the copy shader.
This also updates the state for the gs copy shader so the hw
gets programmed correctly.
Signed-off-by: Dave Airlie <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_common.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index f237d26c376..ffa1eb0c490 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -1171,6 +1171,13 @@ static bool r600_update_derived_state(struct r600_context *rctx) if (unlikely(rctx->geometry_shader.shader != rctx->gs_shader->current)) { update_shader_atom(ctx, &rctx->geometry_shader, rctx->gs_shader->current); update_shader_atom(ctx, &rctx->vertex_shader, rctx->gs_shader->current->gs_copy_shader); + /* Update clip misc state. */ + if (rctx->gs_shader->current->gs_copy_shader->pa_cl_vs_out_cntl != rctx->clip_misc_state.pa_cl_vs_out_cntl || + rctx->gs_shader->current->gs_copy_shader->shader.clip_dist_write != rctx->clip_misc_state.clip_dist_write) { + rctx->clip_misc_state.pa_cl_vs_out_cntl = rctx->gs_shader->current->gs_copy_shader->pa_cl_vs_out_cntl; + rctx->clip_misc_state.clip_dist_write = rctx->gs_shader->current->gs_copy_shader->shader.clip_dist_write; + rctx->clip_misc_state.atom.dirty = true; + } } r600_shader_select(ctx, rctx->vs_shader, &vs_dirty); |