c, &shader_bo, &shader_offset);
}
}
+
+ if (shader_bo)
+ perf_debug_ctx(batch->ctx, "Blend shader use");
}
#if PAN_ARCH >= 5
if (count == 0)
return;
+ perf_debug_ctx(batch->ctx, "Emulating transform feedback");
+
struct panfrost_shader_state *vs = panfrost_get_shader_state(ctx, PIPE_SHADER_VERTEX);
struct panfrost_shader_variants v = { .variants = vs->xfb };
struct panfrost_context *ctx = batch->ctx;
struct panfrost_device *dev = pan_device(ctx->base.screen);
+ perf_debug(dev, "Emulating indirect draw on the GPU");
+
/* TODO: update statistics (see panfrost_statistics_record()) */
/* TODO: Increment transform feedback offsets */
assert(ctx->streamout.num_targets == 0);
if ((!(dev->debug & PAN_DBG_INDIRECT) || !PAN_GPU_INDIRECTS) && indirect && indirect->buffer) {
assert(num_draws == 1);
util_draw_indirect(pipe, info, indirect);
+ perf_debug(dev, "Emulating indirect draw on the CPU");
return;
}
/* Once there is content, clear with a fullscreen quad */
panfrost_blitter_save(ctx, false /* render condition */);
+ perf_debug_ctx(ctx, "Clearing with quad");
util_blitter_clear(ctx->blitter,
ctx->pipe_framebuffer.width,
ctx->pipe_framebuffer.height,
{
struct panfrost_resource *rsrc = pan_resource(prsrc);
+ perf_debug_ctx(pan_context(pctx), "Unoptimized mipmap generation");
+
/* Generating a mipmap invalidates the written levels, so make that
* explicit so we don't try to wallpaper them back and end up with
* u_blitter recursion */