summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_resource.h
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2012-07-08 01:54:24 +0200
committerMarek Olšák <[email protected]>2012-07-12 02:08:30 +0200
commitdee58f94af833906863b0ff2955b20f3ab407e63 (patch)
tree5099a89a659cd1d987977a3235c37e7a105a9a87 /src/gallium/drivers/r600/r600_resource.h
parentdf79eb59566f20a7fa8e11d87b63b81ec35eaf25 (diff)
r600g: do fine-grained depth texture flushing
- maintain a mask of which mipmap levels are dirty (instead of one big flag) - only flush what was requested at a given point and not the whole resource (most often only one level and one layer has to be flushed) Reviewed-by: Alex Deucher <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_resource.h')
-rw-r--r--src/gallium/drivers/r600/r600_resource.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/r600_resource.h b/src/gallium/drivers/r600/r600_resource.h
index 7327ba6c2d7..a7570c7deec 100644
--- a/src/gallium/drivers/r600/r600_resource.h
+++ b/src/gallium/drivers/r600/r600_resource.h
@@ -59,7 +59,7 @@ struct r600_resource_texture {
unsigned tile_type;
bool is_depth;
bool is_rat;
- unsigned dirty_db;
+ unsigned dirty_db_mask; /* each bit says if that miplevel is dirty */
struct r600_resource_texture *stencil; /* Stencil is in a separate buffer on Evergreen. */
struct r600_resource_texture *flushed_depth_texture;
boolean is_flushing_texture;
@@ -93,7 +93,9 @@ void r600_init_flushed_depth_texture(struct pipe_context *ctx,
struct r600_resource_texture **staging);
void r600_texture_depth_flush(struct pipe_context *ctx,
struct pipe_resource *texture,
- struct r600_resource_texture **staging);
+ struct r600_resource_texture **staging,
+ unsigned first_level, unsigned last_level,
+ unsigned first_layer, unsigned last_layer);
/* r600_texture.c texture transfer functions. */
struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,