mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 02:20:11 +01:00
r600g: flush differences back to DB copy.
This commit is contained in:
parent
417cfa60b2
commit
aa31a5cbc7
3 changed files with 29 additions and 0 deletions
|
|
@ -219,3 +219,23 @@ void r600_init_blit_functions(struct r600_pipe_context *rctx)
|
|||
rctx->context.clear_depth_stencil = r600_clear_depth_stencil;
|
||||
rctx->context.resource_copy_region = r600_resource_copy_region;
|
||||
}
|
||||
|
||||
void r600_blit_push_depth(struct pipe_context *ctx, struct r600_resource_texture *texture)
|
||||
{
|
||||
struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx;
|
||||
struct pipe_surface *zsurf, *cbsurf, surf_tmpl;
|
||||
int level = 0;
|
||||
float depth = 1.0f;
|
||||
struct pipe_box sbox;
|
||||
|
||||
sbox.x = sbox.y = sbox.z = 0;
|
||||
sbox.width = texture->resource.base.b.width0;
|
||||
sbox.height = texture->resource.base.b.height0;
|
||||
/* XXX that might be wrong */
|
||||
sbox.depth = 1;
|
||||
|
||||
r600_hw_copy_region(ctx, (struct pipe_resource *)texture, 0,
|
||||
0, 0, 0,
|
||||
(struct pipe_resource *)texture->flushed_depth_texture, 0,
|
||||
&sbox);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -198,6 +198,7 @@ void evergreen_pipe_add_vertex_attrib(struct r600_pipe_context *rctx,
|
|||
/* r600_blit.c */
|
||||
void r600_init_blit_functions(struct r600_pipe_context *rctx);
|
||||
void r600_blit_uncompress_depth(struct pipe_context *ctx, struct r600_resource_texture *texture);
|
||||
void r600_blit_push_depth(struct pipe_context *ctx, struct r600_resource_texture *texture);
|
||||
void r600_flush_depth_textures(struct r600_pipe_context *rctx);
|
||||
|
||||
/* r600_buffer.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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue