diff options
author | Dave Airlie <[email protected]> | 2011-02-03 13:43:37 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2011-02-03 14:19:52 +1000 |
commit | aa31a5cbc7b52eb1d03c6eab414479249830eabf (patch) | |
tree | 47d245b51db6f11d87d56ba0fb4b1685117b3044 /src/gallium/drivers/r600/r600_texture.c | |
parent | 417cfa60b2fec89423be6ce51ab8b1f3063abb2a (diff) |
r600g: flush differences back to DB copy.
Diffstat (limited to 'src/gallium/drivers/r600/r600_texture.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_texture.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c index c773c4b84a6..eac40965243 100644 --- a/src/gallium/drivers/r600/r600_texture.c +++ b/src/gallium/drivers/r600/r600_texture.c @@ -630,6 +630,8 @@ void r600_texture_transfer_destroy(struct pipe_context *ctx, struct pipe_transfer *transfer) { struct r600_transfer *rtransfer = (struct r600_transfer*)transfer; + struct pipe_resource *texture = transfer->resource; + struct r600_resource_texture *rtex = (struct r600_resource_texture*)texture; if (rtransfer->staging_texture) { if (transfer->usage & PIPE_TRANSFER_WRITE) { @@ -637,6 +639,12 @@ void r600_texture_transfer_destroy(struct pipe_context *ctx, } pipe_resource_reference(&rtransfer->staging_texture, NULL); } + + if (rtex->depth && !rtex->is_flushing_texture) { + if ((transfer->usage & PIPE_TRANSFER_WRITE) && rtex->flushed_depth_texture) + r600_blit_push_depth(ctx, rtex); + } + pipe_resource_reference(&transfer->resource, NULL); FREE(transfer); } |