Jerome, Could you please review this?
Thanks, Marek On Sat, Sep 20, 2014 at 12:26 PM, Marek Olšák <mar...@gmail.com> wrote: > From: Marek Olšák <marek.ol...@amd.com> > > --- > src/gallium/drivers/radeonsi/si_hw_context.c | 36 > ++-------------------------- > src/gallium/drivers/radeonsi/si_pipe.c | 3 ++- > src/gallium/drivers/radeonsi/si_state_draw.c | 21 ++++++++++++++++ > 3 files changed, 25 insertions(+), 35 deletions(-) > > diff --git a/src/gallium/drivers/radeonsi/si_hw_context.c > b/src/gallium/drivers/radeonsi/si_hw_context.c > index eaefa6a..e030c75 100644 > --- a/src/gallium/drivers/radeonsi/si_hw_context.c > +++ b/src/gallium/drivers/radeonsi/si_hw_context.c > @@ -102,20 +102,8 @@ void si_context_gfx_flush(void *context, unsigned flags, > /* force to keep tiling flags */ > flags |= RADEON_FLUSH_KEEP_TILING_FLAGS; > > -#if SI_TRACE_CS > - if (ctx->screen->b.trace_bo) { > - struct si_screen *sscreen = ctx->screen; > - unsigned i; > - > - for (i = 0; i < cs->cdw; i++) { > - fprintf(stderr, "[%4d] [%5d] 0x%08x\n", > sscreen->b.cs_count, i, cs->buf[i]); > - } > - sscreen->b.cs_count++; > - } > -#endif > - > /* Flush the CS. */ > - ctx->b.ws->cs_flush(cs, flags, fence, 0); > + ctx->b.ws->cs_flush(cs, flags, fence, ctx->screen->b.cs_count++); > ctx->b.rings.gfx.flushing = false; > > #if SI_TRACE_CS > @@ -125,7 +113,7 @@ void si_context_gfx_flush(void *context, unsigned flags, > > for (i = 0; i < 10; i++) { > usleep(5); > - if > (!ctx->ws->buffer_is_busy(sscreen->b.trace_bo->buf, RADEON_USAGE_READWRITE)) { > + if > (!ctx->b.ws->buffer_is_busy(sscreen->b.trace_bo->buf, > RADEON_USAGE_READWRITE)) { > break; > } > } > @@ -169,23 +157,3 @@ void si_begin_new_cs(struct si_context *ctx) > > ctx->b.initial_gfx_cs_size = ctx->b.rings.gfx.cs->cdw; > } > - > -#if SI_TRACE_CS > -void si_trace_emit(struct si_context *sctx) > -{ > - struct si_screen *sscreen = sctx->screen; > - struct radeon_winsys_cs *cs = sctx->cs; > - uint64_t va; > - > - va = sscreen->b.trace_bo->gpu_address; > - r600_context_bo_reloc(sctx, sscreen->b.trace_bo, > RADEON_USAGE_READWRITE); > - cs->buf[cs->cdw++] = PKT3(PKT3_WRITE_DATA, 4, 0); > - cs->buf[cs->cdw++] = > PKT3_WRITE_DATA_DST_SEL(PKT3_WRITE_DATA_DST_SEL_MEM_SYNC) | > - PKT3_WRITE_DATA_WR_CONFIRM | > - > PKT3_WRITE_DATA_ENGINE_SEL(PKT3_WRITE_DATA_ENGINE_SEL_ME); > - cs->buf[cs->cdw++] = va & 0xFFFFFFFFUL; > - cs->buf[cs->cdw++] = (va >> 32UL) & 0xFFFFFFFFUL; > - cs->buf[cs->cdw++] = cs->cdw; > - cs->buf[cs->cdw++] = sscreen->b.cs_count; > -} > -#endif > diff --git a/src/gallium/drivers/radeonsi/si_pipe.c > b/src/gallium/drivers/radeonsi/si_pipe.c > index 2cce5cc..cba6d98 100644 > --- a/src/gallium/drivers/radeonsi/si_pipe.c > +++ b/src/gallium/drivers/radeonsi/si_pipe.c > @@ -94,7 +94,8 @@ static struct pipe_context *si_create_context(struct > pipe_screen *screen, void * > } > > sctx->b.rings.gfx.cs = ws->cs_create(ws, RING_GFX, > si_context_gfx_flush, > - sctx, NULL); > + sctx, sscreen->b.trace_bo ? > + sscreen->b.trace_bo->cs_buf : > NULL); > sctx->b.rings.gfx.flush = si_context_gfx_flush; > > si_init_all_descriptors(sctx); > diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c > b/src/gallium/drivers/radeonsi/si_state_draw.c > index 0888841..a475344 100644 > --- a/src/gallium/drivers/radeonsi/si_state_draw.c > +++ b/src/gallium/drivers/radeonsi/si_state_draw.c > @@ -1025,3 +1025,24 @@ void si_draw_vbo(struct pipe_context *ctx, const > struct pipe_draw_info *info) > pipe_resource_reference(&ib.buffer, NULL); > sctx->b.num_draw_calls++; > } > + > +#if SI_TRACE_CS > +void si_trace_emit(struct si_context *sctx) > +{ > + struct si_screen *sscreen = sctx->screen; > + struct radeon_winsys_cs *cs = sctx->b.rings.gfx.cs; > + uint64_t va; > + > + va = sscreen->b.trace_bo->gpu_address; > + r600_context_bo_reloc(&sctx->b, &sctx->b.rings.gfx, > sscreen->b.trace_bo, > + RADEON_USAGE_READWRITE, RADEON_PRIO_MIN); > + radeon_emit(cs, PKT3(PKT3_WRITE_DATA, 4, 0)); > + radeon_emit(cs, > PKT3_WRITE_DATA_DST_SEL(PKT3_WRITE_DATA_DST_SEL_MEM_SYNC) | > + PKT3_WRITE_DATA_WR_CONFIRM | > + > PKT3_WRITE_DATA_ENGINE_SEL(PKT3_WRITE_DATA_ENGINE_SEL_ME)); > + radeon_emit(cs, va & 0xFFFFFFFFUL); > + radeon_emit(cs, (va >> 32UL) & 0xFFFFFFFFUL); > + radeon_emit(cs, cs->cdw); > + radeon_emit(cs, sscreen->b.cs_count); > +} > +#endif > -- > 1.9.1 > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev