summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_context.h
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-09-23 13:34:36 +1000
committerDave Airlie <airlied@redhat.com>2010-09-23 16:00:16 +1000
commit2f8453eea3b5ff8d2818517753d3990490f699b8 (patch)
tree54adba7cb140c6233c3f9f287656615718d7b6da /src/gallium/drivers/r600/r600_context.h
parentc262c4a2ff1a19d0136771767ba63f04cf3b83e3 (diff)
r600g: use blitter to do db->cb flushing.
use the blitter + custom stage to avoid doing a whole lot of state setup by hand. This makes life a lot easier for doing this on evergreen it also keeps all the state setup in one place. We setup a custom context state at the start with a flag to denote its for the flush, when it gets generated we generate the correct state for the flush and no longer have to do it all by hand. this should also make adding texture *to* depth easier.
Diffstat (limited to 'src/gallium/drivers/r600/r600_context.h')
-rw-r--r--src/gallium/drivers/r600/r600_context.h18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/gallium/drivers/r600/r600_context.h b/src/gallium/drivers/r600/r600_context.h
index 3107f189c7..8778f23a81 100644
--- a/src/gallium/drivers/r600/r600_context.h
+++ b/src/gallium/drivers/r600/r600_context.h
@@ -98,6 +98,7 @@ enum pipe_state_type {
};
#define R600_MAX_RSTATE 16
+#define R600_STATE_FLAG_DSA_FLUSH 1
struct r600_context_state {
union pipe_states state;
@@ -107,6 +108,7 @@ struct r600_context_state {
struct r600_shader shader;
struct radeon_ws_bo *bo;
unsigned nrstate;
+ unsigned flags;
};
struct r600_vertex_element
@@ -189,21 +191,6 @@ struct r600_context_hw_state_vtbl {
int (*vs_shader)(struct r600_context *rctx, struct r600_context_state *rpshader,
struct radeon_state *state);
void (*init_config)(struct r600_context *rctx);
-
-
- void (*texture_state_viewport)(struct r600_screen *rscreen,
- struct r600_resource_texture *rtexture,
- unsigned level);
- void (*texture_state_cb)(struct r600_screen *rscreen,
- struct r600_resource_texture *rtexture,
- unsigned cb,
- unsigned level);
- void (*texture_state_db)(struct r600_screen *rscreen,
- struct r600_resource_texture *rtexture,
- unsigned level);
- void (*texture_state_scissor)(struct r600_screen *rscreen,
- struct r600_resource_texture *rtexture,
- unsigned level);
};
extern struct r600_context_hw_state_vtbl r600_hw_state_vtbl;
extern struct r600_context_hw_state_vtbl eg_hw_state_vtbl;
@@ -257,6 +244,7 @@ struct r600_context {
struct u_upload_mgr *upload_ib;
bool any_user_vbs;
+ void *custom_dsa_flush;
};
/* Convenience cast wrapper. */