mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 11:08:03 +02:00
freedreno/a5xx: Refactor SHADER_OBJ emit to a helper function.
This will grow private mem setup shortly. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24358>
This commit is contained in:
parent
c361e1d0d9
commit
c9f9d71412
3 changed files with 15 additions and 6 deletions
|
|
@ -83,8 +83,7 @@ cs_program_emit(struct fd_ringbuffer *ring, struct ir3_shader_variant *v)
|
|||
OUT_RING(ring, constlen); /* HLSQ_CS_CONSTLEN */
|
||||
OUT_RING(ring, instrlen); /* HLSQ_CS_INSTRLEN */
|
||||
|
||||
OUT_PKT4(ring, REG_A5XX_SP_CS_OBJ_START_LO, 2);
|
||||
OUT_RELOC(ring, v->bo, 0, 0, 0); /* SP_CS_OBJ_START_LO/HI */
|
||||
fd5_emit_shader_obj(ring, v, REG_A5XX_SP_CS_OBJ_START_LO);
|
||||
|
||||
OUT_PKT4(ring, REG_A5XX_HLSQ_UPDATE_CNTL, 1);
|
||||
OUT_RING(ring, 0x1f00000);
|
||||
|
|
|
|||
|
|
@ -81,6 +81,14 @@ fd5_emit_shader(struct fd_ringbuffer *ring, const struct ir3_shader_variant *so)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
fd5_emit_shader_obj(struct fd_ringbuffer *ring,
|
||||
const struct ir3_shader_variant *so, uint32_t shader_obj_reg)
|
||||
{
|
||||
OUT_PKT4(ring, shader_obj_reg, 2);
|
||||
OUT_RELOC(ring, so->bo, 0, 0, 0); /* SP_VS_OBJ_START_LO/HI */
|
||||
}
|
||||
|
||||
/* TODO maybe some of this we could pre-compute once rather than having
|
||||
* so much draw-time logic?
|
||||
*/
|
||||
|
|
@ -487,8 +495,7 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
OUT_RING(ring, reg);
|
||||
}
|
||||
|
||||
OUT_PKT4(ring, REG_A5XX_SP_VS_OBJ_START_LO, 2);
|
||||
OUT_RELOC(ring, s[VS].v->bo, 0, 0, 0); /* SP_VS_OBJ_START_LO/HI */
|
||||
fd5_emit_shader_obj(ring, s[VS].v, REG_A5XX_SP_VS_OBJ_START_LO);
|
||||
|
||||
if (s[VS].instrlen)
|
||||
fd5_emit_shader(ring, s[VS].v);
|
||||
|
|
@ -512,8 +519,7 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
OUT_RING(ring, 0x00000000); /* SP_FS_OBJ_START_LO */
|
||||
OUT_RING(ring, 0x00000000); /* SP_FS_OBJ_START_HI */
|
||||
} else {
|
||||
OUT_PKT4(ring, REG_A5XX_SP_FS_OBJ_START_LO, 2);
|
||||
OUT_RELOC(ring, s[FS].v->bo, 0, 0, 0); /* SP_FS_OBJ_START_LO/HI */
|
||||
fd5_emit_shader_obj(ring, s[FS].v, REG_A5XX_SP_FS_OBJ_START_LO);
|
||||
}
|
||||
|
||||
OUT_PKT4(ring, REG_A5XX_HLSQ_CONTROL_0_REG, 5);
|
||||
|
|
|
|||
|
|
@ -51,6 +51,10 @@ fd5_program_state(struct ir3_program_state *state)
|
|||
void fd5_emit_shader(struct fd_ringbuffer *ring,
|
||||
const struct ir3_shader_variant *so);
|
||||
|
||||
void fd5_emit_shader_obj(struct fd_ringbuffer *ring,
|
||||
const struct ir3_shader_variant *so,
|
||||
uint32_t shader_obj_reg);
|
||||
|
||||
void fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
||||
struct fd5_emit *emit);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue