freedreno/a6xx: inline draw_impl()
Now that it is just called once per draw (instead of once for binning and once for draw), let's just inline it. If nothing else, it makes perf-annotate easier to look at. Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
604b5f1dca
commit
c41772d17a
|
@ -116,43 +116,6 @@ draw_emit(struct fd_batch *batch, struct fd_ringbuffer *ring,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
draw_impl(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|
||||||
struct fd6_emit *emit, unsigned index_offset)
|
|
||||||
{
|
|
||||||
const struct pipe_draw_info *info = emit->info;
|
|
||||||
enum pc_di_primtype primtype = ctx->primtypes[info->mode];
|
|
||||||
|
|
||||||
fd6_emit_state(ring, emit);
|
|
||||||
|
|
||||||
OUT_PKT4(ring, REG_A6XX_VFD_INDEX_OFFSET, 2);
|
|
||||||
OUT_RING(ring, info->index_size ? info->index_bias : info->start); /* VFD_INDEX_OFFSET */
|
|
||||||
OUT_RING(ring, info->start_instance); /* VFD_INSTANCE_START_OFFSET */
|
|
||||||
|
|
||||||
OUT_PKT4(ring, REG_A6XX_PC_RESTART_INDEX, 1);
|
|
||||||
OUT_RING(ring, info->primitive_restart ? /* PC_RESTART_INDEX */
|
|
||||||
info->restart_index : 0xffffffff);
|
|
||||||
|
|
||||||
/* for debug after a lock up, write a unique counter value
|
|
||||||
* to scratch7 for each draw, to make it easier to match up
|
|
||||||
* register dumps to cmdstream. The combination of IB
|
|
||||||
* (scratch6) and DRAW is enough to "triangulate" the
|
|
||||||
* particular draw that caused lockup.
|
|
||||||
*/
|
|
||||||
emit_marker6(ring, 7);
|
|
||||||
|
|
||||||
if (info->indirect) {
|
|
||||||
draw_emit_indirect(ctx->batch, ring, primtype,
|
|
||||||
info, index_offset);
|
|
||||||
} else {
|
|
||||||
draw_emit(ctx->batch, ring, primtype,
|
|
||||||
info, index_offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
emit_marker6(ring, 7);
|
|
||||||
fd_reset_wfi(ctx->batch);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* fixup dirty shader state in case some "unrelated" (from the state-
|
/* fixup dirty shader state in case some "unrelated" (from the state-
|
||||||
* tracker's perspective) state change causes us to switch to a
|
* tracker's perspective) state change causes us to switch to a
|
||||||
* different variant.
|
* different variant.
|
||||||
|
@ -244,7 +207,37 @@ fd6_draw_vbo(struct fd_context *ctx, const struct pipe_draw_info *info,
|
||||||
*/
|
*/
|
||||||
emit.no_lrz_write = fp->writes_pos || fp->has_kill;
|
emit.no_lrz_write = fp->writes_pos || fp->has_kill;
|
||||||
|
|
||||||
draw_impl(ctx, ctx->batch->draw, &emit, index_offset);
|
struct fd_ringbuffer *ring = ctx->batch->draw;
|
||||||
|
enum pc_di_primtype primtype = ctx->primtypes[info->mode];
|
||||||
|
|
||||||
|
fd6_emit_state(ring, &emit);
|
||||||
|
|
||||||
|
OUT_PKT4(ring, REG_A6XX_VFD_INDEX_OFFSET, 2);
|
||||||
|
OUT_RING(ring, info->index_size ? info->index_bias : info->start); /* VFD_INDEX_OFFSET */
|
||||||
|
OUT_RING(ring, info->start_instance); /* VFD_INSTANCE_START_OFFSET */
|
||||||
|
|
||||||
|
OUT_PKT4(ring, REG_A6XX_PC_RESTART_INDEX, 1);
|
||||||
|
OUT_RING(ring, info->primitive_restart ? /* PC_RESTART_INDEX */
|
||||||
|
info->restart_index : 0xffffffff);
|
||||||
|
|
||||||
|
/* for debug after a lock up, write a unique counter value
|
||||||
|
* to scratch7 for each draw, to make it easier to match up
|
||||||
|
* register dumps to cmdstream. The combination of IB
|
||||||
|
* (scratch6) and DRAW is enough to "triangulate" the
|
||||||
|
* particular draw that caused lockup.
|
||||||
|
*/
|
||||||
|
emit_marker6(ring, 7);
|
||||||
|
|
||||||
|
if (info->indirect) {
|
||||||
|
draw_emit_indirect(ctx->batch, ring, primtype,
|
||||||
|
info, index_offset);
|
||||||
|
} else {
|
||||||
|
draw_emit(ctx->batch, ring, primtype,
|
||||||
|
info, index_offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
emit_marker6(ring, 7);
|
||||||
|
fd_reset_wfi(ctx->batch);
|
||||||
|
|
||||||
if (emit.streamout_mask) {
|
if (emit.streamout_mask) {
|
||||||
struct fd_ringbuffer *ring = ctx->batch->draw;
|
struct fd_ringbuffer *ring = ctx->batch->draw;
|
||||||
|
|
Loading…
Reference in New Issue