Module: Mesa
Branch: master
Commit: d2f669e6c72a16dede22f107c3b015ec0516bc56
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2f669e6c72a16dede22f107c3b015ec0516bc56

Author: Rob Clark <[email protected]>
Date:   Mon Aug 10 07:11:56 2015 -0400

freedreno/a4xx: clear cached fp when switching blit prog

For gmem restore (mem2gmem), we swap blit programs, in order to have a
different frag shader for depth vs color restore.  But we weren't
actually clearing the cached fp, so it would not actually change the
frag shader as expected.

Signed-off-by: Rob Clark <[email protected]>

---

 src/gallium/drivers/freedreno/a4xx/fd4_gmem.c |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c 
b/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c
index fce5d7a..890e71e 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_gmem.c
@@ -396,12 +396,14 @@ fd4_emit_tile_mem2gmem(struct fd_context *ctx, struct 
fd_tile *tile)
 
        if (fd_gmem_needs_restore(ctx, tile, FD_BUFFER_DEPTH | 
FD_BUFFER_STENCIL)) {
                emit.prog = &ctx->blit_prog[0];
+               emit.fp = NULL;      /* frag shader changed so clear cache */
                fd4_program_emit(ring, &emit, 1, &pfb->zsbuf);
                emit_mem2gmem_surf(ctx, gmem->zsbuf_base, &pfb->zsbuf, 1, 
bin_w);
        }
 
        if (fd_gmem_needs_restore(ctx, tile, FD_BUFFER_COLOR)) {
                emit.prog = &ctx->blit_prog[pfb->nr_cbufs - 1];
+               emit.fp = NULL;      /* frag shader changed so clear cache */
                fd4_program_emit(ring, &emit, pfb->nr_cbufs, pfb->cbufs);
                emit_mem2gmem_surf(ctx, gmem->cbuf_base, pfb->cbufs, 
pfb->nr_cbufs, bin_w);
        }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to