diff options
author | Marek Olšák <[email protected]> | 2012-09-10 20:03:09 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-09-13 20:18:44 +0200 |
commit | 2b8d39bbfc111166105d7e06f6f6f908fea3d243 (patch) | |
tree | 4fd906baef8595c32193691314da38ec09a6bfff /src/gallium/drivers/r600/r600_state_common.c | |
parent | de89fe1e5de581df280df41170f411692c6ddf4a (diff) |
r600g: atomize clip state
Reviewed-by: Jerome Glisse <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_state_common.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_state_common.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index a205ffda72d..77a5bbb2de9 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -194,6 +194,23 @@ void r600_emit_blend_color(struct r600_context *rctx, struct r600_atom *atom) r600_write_value(cs, fui(state->color[3])); /* R_028420_CB_BLEND_ALPHA */ } +static void r600_set_clip_state(struct pipe_context *ctx, + const struct pipe_clip_state *state) +{ + struct r600_context *rctx = (struct r600_context *)ctx; + struct pipe_constant_buffer cb; + + rctx->clip_state.state = *state; + r600_atom_dirty(rctx, &rctx->clip_state.atom); + + cb.buffer = NULL; + cb.user_buffer = state->ucp; + cb.buffer_offset = 0; + cb.buffer_size = 4*4*8; + ctx->set_constant_buffer(ctx, PIPE_SHADER_VERTEX, 1, &cb); + pipe_resource_reference(&cb.buffer, NULL); +} + static void r600_set_stencil_ref(struct pipe_context *ctx, const struct r600_stencil_ref *state) { @@ -1516,6 +1533,7 @@ void r600_init_common_state_functions(struct r600_context *rctx) rctx->context.delete_vertex_elements_state = r600_delete_vertex_elements; rctx->context.delete_vs_state = r600_delete_vs_state; rctx->context.set_blend_color = r600_set_blend_color; + rctx->context.set_clip_state = r600_set_clip_state; rctx->context.set_constant_buffer = r600_set_constant_buffer; rctx->context.set_sample_mask = r600_set_sample_mask; rctx->context.set_stencil_ref = r600_set_pipe_stencil_ref; |