Signed-off-by: Niels Ole Salscheider <niels_...@salscheider-online.de> --- src/gallium/drivers/radeonsi/si_hw_context.c | 3 +++ src/gallium/drivers/radeonsi/si_pipe.c | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+)
diff --git a/src/gallium/drivers/radeonsi/si_hw_context.c b/src/gallium/drivers/radeonsi/si_hw_context.c index c952c8d..d9fba01 100644 --- a/src/gallium/drivers/radeonsi/si_hw_context.c +++ b/src/gallium/drivers/radeonsi/si_hw_context.c @@ -123,6 +123,9 @@ void si_context_flush(struct si_context *ctx, unsigned flags) #endif /* Flush the CS. */ + if (ctx->b.rings.dma.cs) { + ctx->b.ws->cs_flush(ctx->b.rings.dma.cs, flags, 0); + } ctx->b.ws->cs_flush(ctx->b.rings.gfx.cs, flags, 0); #if SI_TRACE_CS diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 827e9fe..21cbedf 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -74,6 +74,24 @@ static void si_flush_from_winsys(void *ctx, unsigned flags) si_flush((struct pipe_context*)ctx, NULL, flags); } +static void si_flush_dma_from_st(void *ctx, unsigned flags) +{ + struct si_context *sctx = (struct si_context *)ctx; + struct radeon_winsys_cs *cs = sctx->b.rings.dma.cs; + + if (!cs->cdw) { + return; + } + + sctx->b.ws->cs_flush(cs, flags, 0); +} + +static void si_flush_dma_from_winsys(void *ctx, unsigned flags) +{ + struct si_context *sctx = (struct si_context *)ctx; + sctx->b.rings.dma.flush(sctx, flags); +} + static void si_destroy_context(struct pipe_context *context) { struct si_context *sctx = (struct si_context *)context; @@ -163,6 +181,10 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen, void * sctx->b.ws->cs_set_flush_callback(sctx->b.rings.gfx.cs, si_flush_from_winsys, sctx); + sctx->b.rings.dma.cs = sctx->b.ws->cs_create(sctx->b.ws, RING_DMA, NULL); + sctx->b.rings.dma.flush = si_flush_dma_from_st; + sctx->b.ws->cs_set_flush_callback(sctx->b.rings.dma.cs, si_flush_dma_from_winsys, sctx); + sctx->blitter = util_blitter_create(&sctx->b.b); if (sctx->blitter == NULL) goto fail; -- 1.9.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev