r600: only decompress depth when its tile type is wrong.
If the tile type for the buffer is 1 then its been bound to the DB at some point, we need to decompress it, otherwise its only been bound as texture/cb so don't do anything. This fixes 5 piglit tests here on r600g.
This commit is contained in:
parent
3ef397dafc
commit
aee5f1e40c
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue