diff options
author | Marek Olšák <[email protected]> | 2012-01-30 06:21:07 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-01-31 23:12:30 +0100 |
commit | 0813e58a3e41faf6f2072d034dfdc6198a3a1fee (patch) | |
tree | 5cfa9a22c9949ab6acc4fefe02c8dc5449961b95 /src/gallium/drivers/r600/r600_pipe.h | |
parent | 2fe521fa419ee153afb6295289dc5e95d3229858 (diff) |
r600g: rework cache flushing
This also significantly improves the RV670 flush by using the CB1 flush
*always* and also DEST_BASE_0_ENA, which appears to magically fix some tests.
I am not entirely sure, but it's possible that RV670 flushing is fixed
completely.
v2: fix cayman by flushing texture cache instead of vertex cache
Thanks to Dave Airlie for testing Cayman.
Diffstat (limited to 'src/gallium/drivers/r600/r600_pipe.h')
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 78b6d83fe30..c3279545fe8 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -67,6 +67,11 @@ struct r600_atom { struct list_head head; }; +struct r600_atom_surface_sync { + struct r600_atom atom; + unsigned flush_flags; /* CP_COHER_CNTL */ +}; + enum r600_pipe_state_id { R600_PIPE_STATE_BLEND = 0, R600_PIPE_STATE_BLEND_COLOR, @@ -272,6 +277,8 @@ struct r600_context { /* States based on r600_state. */ struct list_head dirty_states; + struct r600_atom_surface_sync atom_surface_sync; + struct r600_atom atom_r6xx_flush_and_inv; /* Below are variables from the old r600_context. */ @@ -426,6 +433,9 @@ void r600_translate_index_buffer(struct r600_context *r600, unsigned count); /* r600_state_common.c */ +void r600_init_common_atoms(struct r600_context *rctx); +unsigned r600_get_cb_flush_flags(struct r600_context *rctx); +void r600_texture_barrier(struct pipe_context *ctx); void r600_set_index_buffer(struct pipe_context *ctx, const struct pipe_index_buffer *ib); void r600_set_vertex_buffers(struct pipe_context *ctx, unsigned count, |