freedreno: mark stencil buffer valid too in case of z32x24s8
The separate stencil buffer was not also getting marked as valid if
written by a draw/clear, resulting in gmem2mem getting skipped. Move
this into fd_batch_resource_used() which also handles the separate
stencil case.
Also fix restore_buffers typo.
Fixes: 4ab6ab8036
freedreno: avoid mem2gmem for invalidated buffers
Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
e90f1a26c3
commit
1ec1ae47f7
|
@ -382,6 +382,9 @@ fd_batch_resource_used(struct fd_batch *batch, struct fd_resource *rsc, bool wri
|
|||
|
||||
DBG("%p: %s %p", batch, write ? "write" : "read", rsc);
|
||||
|
||||
if (write)
|
||||
rsc->valid = true;
|
||||
|
||||
/* note, invalidate write batch, to avoid further writes to rsc
|
||||
* resulting in a write-after-read hazard.
|
||||
*/
|
||||
|
|
|
@ -55,7 +55,6 @@ resource_written(struct fd_batch *batch, struct pipe_resource *prsc)
|
|||
{
|
||||
if (!prsc)
|
||||
return;
|
||||
fd_resource(prsc)->valid = true;
|
||||
fd_batch_resource_used(batch, fd_resource(prsc), true);
|
||||
}
|
||||
|
||||
|
@ -147,7 +146,7 @@ fd_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
|
|||
|
||||
if (fd_stencil_enabled(ctx)) {
|
||||
if (fd_resource(pfb->zsbuf->texture)->valid)
|
||||
restore_buffers |= FD_BUFFER_DEPTH;
|
||||
restore_buffers |= FD_BUFFER_STENCIL;
|
||||
buffers |= FD_BUFFER_STENCIL;
|
||||
resource_written(batch, pfb->zsbuf->texture);
|
||||
batch->gmem_reason |= FD_GMEM_STENCIL_ENABLED;
|
||||
|
|
Loading…
Reference in New Issue