summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/r600/r600_blit.c6
-rw-r--r--src/gallium/drivers/r600/r600_state.c2
-rw-r--r--src/gallium/drivers/r600/r600_texture.c2
3 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c
index 83c02e5580..a8e85df3c4 100644
--- a/src/gallium/drivers/r600/r600_blit.c
+++ b/src/gallium/drivers/r600/r600_blit.c
@@ -129,7 +129,11 @@ void r600_flush_depth_textures(struct r600_pipe_context *rctx)
if (!view) continue;
tex = (struct r600_resource_texture *)view->base.texture;
- if (!tex->depth) continue;
+ if (!tex->depth)
+ continue;
+
+ if (tex->tile_type == 0)
+ continue;
r600_blit_uncompress_depth(&rctx->context, tex);
}
diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c
index d23f242e56..acaa5c05ae 100644
--- a/src/gallium/drivers/r600/r600_state.c
+++ b/src/gallium/drivers/r600/r600_state.c
@@ -429,7 +429,7 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c
R600_ERR("unknow format %d\n", state->format);
}
tmp = (struct r600_resource_texture *)texture;
- if (tmp->depth) {
+ if (tmp->depth && tmp->tile_type == 1) {
r600_texture_depth_flush(ctx, texture);
tmp = tmp->flushed_depth_texture;
}
diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
index e45f4a517e..dd28049198 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -574,7 +574,7 @@ struct pipe_transfer* r600_texture_get_transfer(struct pipe_context *ctx,
trans->transfer.level = level;
trans->transfer.usage = usage;
trans->transfer.box = *box;
- if (rtex->depth) {
+ if (rtex->depth && rtex->tile_type == 1) {
/* XXX: only readback the rectangle which is being mapped?
*/
/* XXX: when discard is true, no need to read back from depth texture