diff options
author | Marek Olšák <[email protected]> | 2012-07-08 01:54:24 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-07-12 02:08:30 +0200 |
commit | dee58f94af833906863b0ff2955b20f3ab407e63 (patch) | |
tree | 5099a89a659cd1d987977a3235c37e7a105a9a87 /src/gallium/drivers/r600/r600_resource.h | |
parent | df79eb59566f20a7fa8e11d87b63b81ec35eaf25 (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.h | 6 |
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, |