radeonsi: move saved_cs functions from r600_pipe_common.c to si_debug.c
Acked-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
@@ -31,57 +31,6 @@
|
|||||||
* pipe_context
|
* pipe_context
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* Store a linearized copy of all chunks of \p cs together with the buffer
|
|
||||||
* list in \p saved.
|
|
||||||
*/
|
|
||||||
void si_save_cs(struct radeon_winsys *ws, struct radeon_winsys_cs *cs,
|
|
||||||
struct radeon_saved_cs *saved, bool get_buffer_list)
|
|
||||||
{
|
|
||||||
uint32_t *buf;
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
/* Save the IB chunks. */
|
|
||||||
saved->num_dw = cs->prev_dw + cs->current.cdw;
|
|
||||||
saved->ib = MALLOC(4 * saved->num_dw);
|
|
||||||
if (!saved->ib)
|
|
||||||
goto oom;
|
|
||||||
|
|
||||||
buf = saved->ib;
|
|
||||||
for (i = 0; i < cs->num_prev; ++i) {
|
|
||||||
memcpy(buf, cs->prev[i].buf, cs->prev[i].cdw * 4);
|
|
||||||
buf += cs->prev[i].cdw;
|
|
||||||
}
|
|
||||||
memcpy(buf, cs->current.buf, cs->current.cdw * 4);
|
|
||||||
|
|
||||||
if (!get_buffer_list)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Save the buffer list. */
|
|
||||||
saved->bo_count = ws->cs_get_buffer_list(cs, NULL);
|
|
||||||
saved->bo_list = CALLOC(saved->bo_count,
|
|
||||||
sizeof(saved->bo_list[0]));
|
|
||||||
if (!saved->bo_list) {
|
|
||||||
FREE(saved->ib);
|
|
||||||
goto oom;
|
|
||||||
}
|
|
||||||
ws->cs_get_buffer_list(cs, saved->bo_list);
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
oom:
|
|
||||||
fprintf(stderr, "%s: out of memory\n", __func__);
|
|
||||||
memset(saved, 0, sizeof(*saved));
|
|
||||||
}
|
|
||||||
|
|
||||||
void si_clear_saved_cs(struct radeon_saved_cs *saved)
|
|
||||||
{
|
|
||||||
FREE(saved->ib);
|
|
||||||
FREE(saved->bo_list);
|
|
||||||
|
|
||||||
memset(saved, 0, sizeof(*saved));
|
|
||||||
}
|
|
||||||
|
|
||||||
static enum pipe_reset_status r600_get_reset_status(struct pipe_context *ctx)
|
static enum pipe_reset_status r600_get_reset_status(struct pipe_context *ctx)
|
||||||
{
|
{
|
||||||
struct r600_common_context *rctx = (struct r600_common_context *)ctx;
|
struct r600_common_context *rctx = (struct r600_common_context *)ctx;
|
||||||
|
@@ -515,9 +515,6 @@ bool si_common_context_init(struct r600_common_context *rctx,
|
|||||||
struct si_screen *sscreen,
|
struct si_screen *sscreen,
|
||||||
unsigned context_flags);
|
unsigned context_flags);
|
||||||
void si_common_context_cleanup(struct r600_common_context *rctx);
|
void si_common_context_cleanup(struct r600_common_context *rctx);
|
||||||
void si_save_cs(struct radeon_winsys *ws, struct radeon_winsys_cs *cs,
|
|
||||||
struct radeon_saved_cs *saved, bool get_buffer_list);
|
|
||||||
void si_clear_saved_cs(struct radeon_saved_cs *saved);
|
|
||||||
bool si_check_device_reset(struct r600_common_context *rctx);
|
bool si_check_device_reset(struct r600_common_context *rctx);
|
||||||
|
|
||||||
/* r600_gpu_load.c */
|
/* r600_gpu_load.c */
|
||||||
|
@@ -37,6 +37,57 @@ static void si_dump_bo_list(struct si_context *sctx,
|
|||||||
|
|
||||||
DEBUG_GET_ONCE_OPTION(replace_shaders, "RADEON_REPLACE_SHADERS", NULL)
|
DEBUG_GET_ONCE_OPTION(replace_shaders, "RADEON_REPLACE_SHADERS", NULL)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a linearized copy of all chunks of \p cs together with the buffer
|
||||||
|
* list in \p saved.
|
||||||
|
*/
|
||||||
|
void si_save_cs(struct radeon_winsys *ws, struct radeon_winsys_cs *cs,
|
||||||
|
struct radeon_saved_cs *saved, bool get_buffer_list)
|
||||||
|
{
|
||||||
|
uint32_t *buf;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
/* Save the IB chunks. */
|
||||||
|
saved->num_dw = cs->prev_dw + cs->current.cdw;
|
||||||
|
saved->ib = MALLOC(4 * saved->num_dw);
|
||||||
|
if (!saved->ib)
|
||||||
|
goto oom;
|
||||||
|
|
||||||
|
buf = saved->ib;
|
||||||
|
for (i = 0; i < cs->num_prev; ++i) {
|
||||||
|
memcpy(buf, cs->prev[i].buf, cs->prev[i].cdw * 4);
|
||||||
|
buf += cs->prev[i].cdw;
|
||||||
|
}
|
||||||
|
memcpy(buf, cs->current.buf, cs->current.cdw * 4);
|
||||||
|
|
||||||
|
if (!get_buffer_list)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Save the buffer list. */
|
||||||
|
saved->bo_count = ws->cs_get_buffer_list(cs, NULL);
|
||||||
|
saved->bo_list = CALLOC(saved->bo_count,
|
||||||
|
sizeof(saved->bo_list[0]));
|
||||||
|
if (!saved->bo_list) {
|
||||||
|
FREE(saved->ib);
|
||||||
|
goto oom;
|
||||||
|
}
|
||||||
|
ws->cs_get_buffer_list(cs, saved->bo_list);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
oom:
|
||||||
|
fprintf(stderr, "%s: out of memory\n", __func__);
|
||||||
|
memset(saved, 0, sizeof(*saved));
|
||||||
|
}
|
||||||
|
|
||||||
|
void si_clear_saved_cs(struct radeon_saved_cs *saved)
|
||||||
|
{
|
||||||
|
FREE(saved->ib);
|
||||||
|
FREE(saved->bo_list);
|
||||||
|
|
||||||
|
memset(saved, 0, sizeof(*saved));
|
||||||
|
}
|
||||||
|
|
||||||
void si_destroy_saved_cs(struct si_saved_cs *scs)
|
void si_destroy_saved_cs(struct si_saved_cs *scs)
|
||||||
{
|
{
|
||||||
si_clear_saved_cs(&scs->gfx);
|
si_clear_saved_cs(&scs->gfx);
|
||||||
|
@@ -705,6 +705,9 @@ void cik_emit_prefetch_L2(struct si_context *sctx);
|
|||||||
void si_init_cp_dma_functions(struct si_context *sctx);
|
void si_init_cp_dma_functions(struct si_context *sctx);
|
||||||
|
|
||||||
/* si_debug.c */
|
/* si_debug.c */
|
||||||
|
void si_save_cs(struct radeon_winsys *ws, struct radeon_winsys_cs *cs,
|
||||||
|
struct radeon_saved_cs *saved, bool get_buffer_list);
|
||||||
|
void si_clear_saved_cs(struct radeon_saved_cs *saved);
|
||||||
void si_destroy_saved_cs(struct si_saved_cs *scs);
|
void si_destroy_saved_cs(struct si_saved_cs *scs);
|
||||||
void si_auto_log_cs(void *data, struct u_log_context *log);
|
void si_auto_log_cs(void *data, struct u_log_context *log);
|
||||||
void si_log_hw_flush(struct si_context *sctx);
|
void si_log_hw_flush(struct si_context *sctx);
|
||||||
|
Reference in New Issue
Block a user