radeonsi: save the contents of indirect buffers for debug contexts
This will be used by the IB parser. Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
a6a6c68955
commit
be6dc87776
|
@ -130,6 +130,14 @@ void si_context_gfx_flush(void *context, unsigned flags,
|
||||||
/* force to keep tiling flags */
|
/* force to keep tiling flags */
|
||||||
flags |= RADEON_FLUSH_KEEP_TILING_FLAGS;
|
flags |= RADEON_FLUSH_KEEP_TILING_FLAGS;
|
||||||
|
|
||||||
|
/* Save the IB for debug contexts. */
|
||||||
|
if (ctx->is_debug) {
|
||||||
|
free(ctx->last_ib);
|
||||||
|
ctx->last_ib_dw_size = cs->cdw;
|
||||||
|
ctx->last_ib = malloc(cs->cdw * 4);
|
||||||
|
memcpy(ctx->last_ib, cs->buf, cs->cdw * 4);
|
||||||
|
}
|
||||||
|
|
||||||
/* Flush the CS. */
|
/* Flush the CS. */
|
||||||
ws->cs_flush(cs, flags, &ctx->last_gfx_fence,
|
ws->cs_flush(cs, flags, &ctx->last_gfx_fence,
|
||||||
ctx->screen->b.cs_count++);
|
ctx->screen->b.cs_count++);
|
||||||
|
|
|
@ -81,6 +81,7 @@ static void si_destroy_context(struct pipe_context *context)
|
||||||
LLVMDisposeTargetMachine(sctx->tm);
|
LLVMDisposeTargetMachine(sctx->tm);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
free(sctx->last_ib);
|
||||||
FREE(sctx);
|
FREE(sctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,6 +113,7 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen,
|
||||||
sctx->b.b.destroy = si_destroy_context;
|
sctx->b.b.destroy = si_destroy_context;
|
||||||
sctx->b.set_atom_dirty = (void *)si_set_atom_dirty;
|
sctx->b.set_atom_dirty = (void *)si_set_atom_dirty;
|
||||||
sctx->screen = sscreen; /* Easy accessing of screen/winsys. */
|
sctx->screen = sscreen; /* Easy accessing of screen/winsys. */
|
||||||
|
sctx->is_debug = (flags & PIPE_CONTEXT_DEBUG) != 0;
|
||||||
|
|
||||||
if (!r600_common_context_init(&sctx->b, &sscreen->b))
|
if (!r600_common_context_init(&sctx->b, &sscreen->b))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
|
@ -243,6 +243,11 @@ struct si_context {
|
||||||
struct si_shader_selector *last_tcs;
|
struct si_shader_selector *last_tcs;
|
||||||
int last_num_tcs_input_cp;
|
int last_num_tcs_input_cp;
|
||||||
int last_tes_sh_base;
|
int last_tes_sh_base;
|
||||||
|
|
||||||
|
/* Debug state. */
|
||||||
|
bool is_debug;
|
||||||
|
uint32_t *last_ib;
|
||||||
|
unsigned last_ib_dw_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* cik_sdma.c */
|
/* cik_sdma.c */
|
||||||
|
|
Loading…
Reference in New Issue