freedreno/a6xx: move where we handle dirty vbo state
Historically this wasn't in fdN_emit_state(), because prior to addition of blitter in a5xx, fdN_emit_state() was also used in the clear path. These days that is only true for a2xx (a3xx and a4xx use u_blitter). So the reason for it not to be in fd6_emit_state() no longer exists. Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
ddb7fadaf8
commit
2a74d9ae8d
|
@ -123,18 +123,6 @@ draw_impl(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
const struct pipe_draw_info *info = emit->info;
|
||||
enum pc_di_primtype primtype = ctx->primtypes[info->mode];
|
||||
|
||||
if (emit->dirty & (FD_DIRTY_VTXBUF | FD_DIRTY_VTXSTATE)) {
|
||||
struct fd_ringbuffer *state;
|
||||
|
||||
state = fd6_build_vbo_state(emit, emit->vs);
|
||||
fd6_emit_add_group(emit, state, FD6_GROUP_VBO, 0x6);
|
||||
fd_ringbuffer_del(state);
|
||||
|
||||
state = fd6_build_vbo_state(emit, emit->bs);
|
||||
fd6_emit_add_group(emit, state, FD6_GROUP_VBO_BINNING, 0x1);
|
||||
fd_ringbuffer_del(state);
|
||||
}
|
||||
|
||||
fd6_emit_state(ring, emit);
|
||||
|
||||
OUT_PKT4(ring, REG_A6XX_VFD_INDEX_OFFSET, 2);
|
||||
|
|
|
@ -526,8 +526,8 @@ emit_ssbos(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
}
|
||||
}
|
||||
|
||||
struct fd_ringbuffer *
|
||||
fd6_build_vbo_state(struct fd6_emit *emit, const struct ir3_shader_variant *vp)
|
||||
static struct fd_ringbuffer *
|
||||
build_vbo_state(struct fd6_emit *emit, const struct ir3_shader_variant *vp)
|
||||
{
|
||||
const struct fd_vertex_state *vtx = emit->vtx;
|
||||
int32_t i, j;
|
||||
|
@ -626,6 +626,18 @@ fd6_emit_state(struct fd_ringbuffer *ring, struct fd6_emit *emit)
|
|||
|
||||
emit_marker6(ring, 5);
|
||||
|
||||
if (emit->dirty & (FD_DIRTY_VTXBUF | FD_DIRTY_VTXSTATE)) {
|
||||
struct fd_ringbuffer *state;
|
||||
|
||||
state = build_vbo_state(emit, emit->vs);
|
||||
fd6_emit_add_group(emit, state, FD6_GROUP_VBO, 0x6);
|
||||
fd_ringbuffer_del(state);
|
||||
|
||||
state = build_vbo_state(emit, emit->bs);
|
||||
fd6_emit_add_group(emit, state, FD6_GROUP_VBO_BINNING, 0x1);
|
||||
fd_ringbuffer_del(state);
|
||||
}
|
||||
|
||||
if (dirty & FD_DIRTY_ZSA) {
|
||||
struct fd6_zsa_stateobj *zsa = fd6_zsa_stateobj(ctx->zsa);
|
||||
|
||||
|
|
|
@ -174,8 +174,6 @@ bool fd6_emit_textures(struct fd_pipe *pipe, struct fd_ringbuffer *ring,
|
|||
enum a6xx_state_block sb, struct fd_texture_stateobj *tex,
|
||||
unsigned bcolor_offset);
|
||||
|
||||
struct fd_ringbuffer * fd6_build_vbo_state(struct fd6_emit *emit, const struct ir3_shader_variant *vp);
|
||||
|
||||
void fd6_emit_state(struct fd_ringbuffer *ring, struct fd6_emit *emit);
|
||||
|
||||
void fd6_emit_cs_state(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
||||
|
|
Loading…
Reference in New Issue