OSDN Git Service

radeonsi: check ctx->sdma_cs before using it
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Tue, 7 Jan 2020 14:57:10 +0000 (15:57 +0100)
committerDylan Baker <dylan@pnwbakers.com>
Wed, 8 Jan 2020 19:32:35 +0000 (11:32 -0800)
e5167a9276de1f383888714b41d3a9be2b9c1da9 disabled SDMA for gfx8.
This caused 3 piglit arb_sparse_buffer tests (basic, buffer-data
and commit) to crash on GFX8.

Reported-by: Michel Dänzer <michel@daenzer.net>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Fixes: e5167a9276d ("radeonsi: disable SDMA on gfx8 to fix corruption on RX 580")
(cherry picked from commit 5f8daae4d829c9f734d2f41058990809d2dba349)
Conflicts resolved by Dylan Baker

Conflicts:
src/gallium/drivers/radeonsi/si_buffer.c

src/gallium/drivers/radeonsi/si_buffer.c

index 4fda5cb..8f7e417 100644 (file)
@@ -797,7 +797,8 @@ static bool si_resource_commit(struct pipe_context *pctx,
                si_flush_dma_cs(ctx, PIPE_FLUSH_ASYNC, NULL);
        }
 
-       ctx->ws->cs_sync_flush(ctx->dma_cs);
+       if (ctx->dma_cs)
+               ctx->ws->cs_sync_flush(ctx->dma_cs);
        ctx->ws->cs_sync_flush(ctx->gfx_cs);
 
        assert(resource->target == PIPE_BUFFER);