radeonsi: remove the primitive discard compute shader
It doesn't always work, it's only useful on gfx9 and older, and it's too complicated. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4011 Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12812>
This commit is contained in:
@@ -344,7 +344,6 @@ struct si_log_chunk_cs {
|
||||
struct si_saved_cs *cs;
|
||||
bool dump_bo_list;
|
||||
unsigned gfx_begin, gfx_end;
|
||||
unsigned compute_begin, compute_end;
|
||||
};
|
||||
|
||||
static void si_log_chunk_type_cs_destroy(void *data)
|
||||
@@ -402,7 +401,6 @@ static void si_log_chunk_type_cs_print(void *data, FILE *f)
|
||||
struct si_context *ctx = chunk->ctx;
|
||||
struct si_saved_cs *scs = chunk->cs;
|
||||
int last_trace_id = -1;
|
||||
int last_compute_trace_id = -1;
|
||||
|
||||
/* We are expecting that the ddebug pipe has already
|
||||
* waited for the context, so this buffer should be idle.
|
||||
@@ -410,10 +408,8 @@ static void si_log_chunk_type_cs_print(void *data, FILE *f)
|
||||
*/
|
||||
uint32_t *map = ctx->ws->buffer_map(ctx->ws, scs->trace_buf->buf, NULL,
|
||||
PIPE_MAP_UNSYNCHRONIZED | PIPE_MAP_READ);
|
||||
if (map) {
|
||||
if (map)
|
||||
last_trace_id = map[0];
|
||||
last_compute_trace_id = map[1];
|
||||
}
|
||||
|
||||
if (chunk->gfx_end != chunk->gfx_begin) {
|
||||
if (chunk->gfx_begin == 0) {
|
||||
@@ -435,20 +431,6 @@ static void si_log_chunk_type_cs_print(void *data, FILE *f)
|
||||
}
|
||||
}
|
||||
|
||||
if (chunk->compute_end != chunk->compute_begin) {
|
||||
assert(ctx->prim_discard_compute_cs.priv);
|
||||
|
||||
if (scs->flushed) {
|
||||
ac_parse_ib(f, scs->compute.ib + chunk->compute_begin,
|
||||
chunk->compute_end - chunk->compute_begin, &last_compute_trace_id, map ? 1 : 0,
|
||||
"Compute IB", ctx->chip_class, NULL, NULL);
|
||||
} else {
|
||||
si_parse_current_ib(f, &ctx->prim_discard_compute_cs, chunk->compute_begin,
|
||||
chunk->compute_end, &last_compute_trace_id, map ? 1 : 0, "Compute IB",
|
||||
ctx->chip_class);
|
||||
}
|
||||
}
|
||||
|
||||
if (chunk->dump_bo_list) {
|
||||
fprintf(f, "Flushing. Time: ");
|
||||
util_dump_ns(f, scs->time_flush);
|
||||
@@ -468,13 +450,8 @@ static void si_log_cs(struct si_context *ctx, struct u_log_context *log, bool du
|
||||
|
||||
struct si_saved_cs *scs = ctx->current_saved_cs;
|
||||
unsigned gfx_cur = ctx->gfx_cs.prev_dw + ctx->gfx_cs.current.cdw;
|
||||
unsigned compute_cur = 0;
|
||||
|
||||
if (ctx->prim_discard_compute_cs.priv)
|
||||
compute_cur =
|
||||
ctx->prim_discard_compute_cs.prev_dw + ctx->prim_discard_compute_cs.current.cdw;
|
||||
|
||||
if (!dump_bo_list && gfx_cur == scs->gfx_last_dw && compute_cur == scs->compute_last_dw)
|
||||
if (!dump_bo_list && gfx_cur == scs->gfx_last_dw)
|
||||
return;
|
||||
|
||||
struct si_log_chunk_cs *chunk = calloc(1, sizeof(*chunk));
|
||||
@@ -487,10 +464,6 @@ static void si_log_cs(struct si_context *ctx, struct u_log_context *log, bool du
|
||||
chunk->gfx_end = gfx_cur;
|
||||
scs->gfx_last_dw = gfx_cur;
|
||||
|
||||
chunk->compute_begin = scs->compute_last_dw;
|
||||
chunk->compute_end = compute_cur;
|
||||
scs->compute_last_dw = compute_cur;
|
||||
|
||||
u_log_chunk(log, &si_log_chunk_type_cs, chunk);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user