summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi/si_hw_context.c
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2016-06-20 16:30:29 +0200
committerNicolai Hähnle <nicolai.haehnle@amd.com>2016-06-24 12:36:02 +0200
commitad8438403b32088260ec845fc2e7304586328913 (patch)
treed646853f5f6968ac37f10438284a4878b4f8f328 /src/gallium/drivers/radeonsi/si_hw_context.c
parentb3de274b05c75565d14ec2d665a8bbfe55a7fb16 (diff)
downloadexternal_mesa3d-ad8438403b32088260ec845fc2e7304586328913.zip
external_mesa3d-ad8438403b32088260ec845fc2e7304586328913.tar.gz
external_mesa3d-ad8438403b32088260ec845fc2e7304586328913.tar.bz2
radeonsi: extract IB and bo list saving into separate functions
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Diffstat (limited to 'src/gallium/drivers/radeonsi/si_hw_context.c')
-rw-r--r--src/gallium/drivers/radeonsi/si_hw_context.c25
1 files changed, 2 insertions, 23 deletions
diff --git a/src/gallium/drivers/radeonsi/si_hw_context.c b/src/gallium/drivers/radeonsi/si_hw_context.c
index d1b9851..696217d 100644
--- a/src/gallium/drivers/radeonsi/si_hw_context.c
+++ b/src/gallium/drivers/radeonsi/si_hw_context.c
@@ -130,32 +130,11 @@ void si_context_gfx_flush(void *context, unsigned flags,
si_trace_emit(ctx);
if (ctx->is_debug) {
- uint32_t *buf;
- unsigned i;
-
/* Save the IB for debug contexts. */
- free(ctx->last_ib);
- ctx->last_ib_dw_size = cs->prev_dw + cs->current.cdw;
- ctx->last_ib = malloc(ctx->last_ib_dw_size * 4);
- buf = ctx->last_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);
+ radeon_clear_saved_cs(&ctx->last_gfx);
+ radeon_save_cs(ws, cs, &ctx->last_gfx);
r600_resource_reference(&ctx->last_trace_buf, ctx->trace_buf);
r600_resource_reference(&ctx->trace_buf, NULL);
-
- /* Save the buffer list. */
- if (ctx->last_bo_list) {
- for (i = 0; i < ctx->last_bo_count; i++)
- pb_reference(&ctx->last_bo_list[i].buf, NULL);
- free(ctx->last_bo_list);
- }
- ctx->last_bo_count = ws->cs_get_buffer_list(cs, NULL);
- ctx->last_bo_list = calloc(ctx->last_bo_count,
- sizeof(ctx->last_bo_list[0]));
- ws->cs_get_buffer_list(cs, ctx->last_bo_list);
}
/* Flush the CS. */