mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
freedreno: Introduce emit_blit_fini
De-duplicate the code a bit and prepare for using this in clear_buffer function. Reviewed-by: Rob Clark <robclark@freedesktop.org> Signed-off-by: David Heidelberg <david@ixit.cz> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30284>
This commit is contained in:
parent
b2f919eaaf
commit
635a40cc5c
1 changed files with 25 additions and 59 deletions
|
|
@ -277,6 +277,26 @@ emit_setup(struct fd_batch *batch)
|
|||
fd6_emit_ccu_cntl<CHIP>(ring, screen, false);
|
||||
}
|
||||
|
||||
template <chip CHIP>
|
||||
static void
|
||||
emit_blit_fini(struct fd_context *ctx, struct fd_ringbuffer *ring)
|
||||
{
|
||||
fd6_event_write<CHIP>(ctx, ring, FD_LABEL);
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, ctx->screen->info->a6xx.magic.RB_DBG_ECO_CNTL_blit);
|
||||
|
||||
OUT_PKT7(ring, CP_BLIT, 1);
|
||||
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
|
||||
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, 0); /* RB_DBG_ECO_CNTL */
|
||||
}
|
||||
FD_GENX(emit_blit_fini);
|
||||
|
||||
template <chip CHIP>
|
||||
static void
|
||||
emit_blit_setup(struct fd_ringbuffer *ring, enum pipe_format pfmt,
|
||||
|
|
@ -463,19 +483,7 @@ emit_blit_buffer(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
OUT_RING(ring, A6XX_GRAS_2D_DST_BR_X(dshift + w - 1) |
|
||||
A6XX_GRAS_2D_DST_BR_Y(0));
|
||||
|
||||
fd6_event_write<CHIP>(ctx, ring, FD_LABEL);
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, ctx->screen->info->a6xx.magic.RB_DBG_ECO_CNTL_blit);
|
||||
|
||||
OUT_PKT7(ring, CP_BLIT, 1);
|
||||
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
|
||||
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, 0); /* RB_DBG_ECO_CNTL */
|
||||
emit_blit_fini<CHIP>(ctx, ring);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -541,20 +549,7 @@ fd6_clear_ubwc(struct fd_batch *batch, struct fd_resource *rsc) assert_dt
|
|||
OUT_RING(ring,
|
||||
A6XX_GRAS_2D_DST_BR_X(w - 1) | A6XX_GRAS_2D_DST_BR_Y(h - 1));
|
||||
|
||||
fd6_event_write<CHIP>(batch->ctx, ring, FD_LABEL);
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, batch->ctx->screen->info->a6xx.magic.RB_DBG_ECO_CNTL_blit);
|
||||
|
||||
OUT_PKT7(ring, CP_BLIT, 1);
|
||||
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
|
||||
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, 0); /* RB_DBG_ECO_CNTL */
|
||||
|
||||
emit_blit_fini<CHIP>(batch->ctx, ring);
|
||||
offset += w * h;
|
||||
size -= w * h;
|
||||
}
|
||||
|
|
@ -742,22 +737,7 @@ emit_blit_texture(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
emit_blit_dst(ring, info->dst.resource, info->dst.format, info->dst.level,
|
||||
dbox->z + i);
|
||||
|
||||
/*
|
||||
* Blit command:
|
||||
*/
|
||||
fd6_event_write<CHIP>(ctx, ring, FD_LABEL);
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, ctx->screen->info->a6xx.magic.RB_DBG_ECO_CNTL_blit);
|
||||
|
||||
OUT_PKT7(ring, CP_BLIT, 1);
|
||||
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
|
||||
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, 0); /* RB_DBG_ECO_CNTL */
|
||||
emit_blit_fini<CHIP>(ctx, ring);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -817,6 +797,7 @@ emit_clear_color(struct fd_ringbuffer *ring, enum pipe_format pfmt,
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
template <chip CHIP>
|
||||
void
|
||||
fd6_clear_lrz(struct fd_batch *batch, struct fd_resource *zsbuf,
|
||||
|
|
@ -915,22 +896,7 @@ fd6_clear_surface(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
i++) {
|
||||
emit_blit_dst(ring, psurf->texture, psurf->format, psurf->u.tex.level, i);
|
||||
|
||||
/*
|
||||
* Blit command:
|
||||
*/
|
||||
fd6_event_write<CHIP>(ctx, ring, FD_LABEL);
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, ctx->screen->info->a6xx.magic.RB_DBG_ECO_CNTL_blit);
|
||||
|
||||
OUT_PKT7(ring, CP_BLIT, 1);
|
||||
OUT_RING(ring, CP_BLIT_0_OP(BLIT_OP_SCALE));
|
||||
|
||||
OUT_WFI5(ring);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_RB_DBG_ECO_CNTL, 1);
|
||||
OUT_RING(ring, 0); /* RB_DBG_ECO_CNTL */
|
||||
emit_blit_fini<CHIP>(ctx, ring);
|
||||
}
|
||||
}
|
||||
FD_GENX(fd6_clear_surface);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue