freedreno/a6xx: add PROG_FB_RAST stateobj
For the handful of registers that depend on the union of program/ framebuffer/rasterizer state. Signed-off-by: Rob Clark <robdclark@chromium.org> Reviewed-by: Kristian H. Kristensen <hoegsberg@google.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3435> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3435>
This commit is contained in:
@@ -1030,6 +1030,9 @@ fd6_emit_state(struct fd_ringbuffer *ring, struct fd6_emit *emit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dirty & (FD_DIRTY_FRAMEBUFFER | FD_DIRTY_RASTERIZER | FD_DIRTY_PROG)) {
|
if (dirty & (FD_DIRTY_FRAMEBUFFER | FD_DIRTY_RASTERIZER | FD_DIRTY_PROG)) {
|
||||||
|
struct fd_ringbuffer *ring = fd_submit_new_ringbuffer(
|
||||||
|
emit->ctx->batch->submit, 5 * 4, FD_RINGBUFFER_STREAMING);
|
||||||
|
|
||||||
unsigned nr = pfb->nr_cbufs;
|
unsigned nr = pfb->nr_cbufs;
|
||||||
|
|
||||||
if (ctx->rasterizer->rasterizer_discard)
|
if (ctx->rasterizer->rasterizer_discard)
|
||||||
@@ -1043,6 +1046,8 @@ fd6_emit_state(struct fd_ringbuffer *ring, struct fd6_emit *emit)
|
|||||||
|
|
||||||
OUT_PKT4(ring, REG_A6XX_SP_FS_OUTPUT_CNTL1, 1);
|
OUT_PKT4(ring, REG_A6XX_SP_FS_OUTPUT_CNTL1, 1);
|
||||||
OUT_RING(ring, A6XX_SP_FS_OUTPUT_CNTL1_MRT(nr));
|
OUT_RING(ring, A6XX_SP_FS_OUTPUT_CNTL1_MRT(nr));
|
||||||
|
|
||||||
|
fd6_emit_take_group(emit, ring, FD6_GROUP_PROG_FB_RAST, ENABLE_DRAW);
|
||||||
}
|
}
|
||||||
|
|
||||||
fd6_emit_consts(emit, vs, PIPE_SHADER_VERTEX, FD6_GROUP_VS_CONST, ENABLE_ALL);
|
fd6_emit_consts(emit, vs, PIPE_SHADER_VERTEX, FD6_GROUP_VS_CONST, ENABLE_ALL);
|
||||||
|
@@ -47,6 +47,7 @@ enum fd6_state_id {
|
|||||||
FD6_GROUP_PROG,
|
FD6_GROUP_PROG,
|
||||||
FD6_GROUP_PROG_BINNING,
|
FD6_GROUP_PROG_BINNING,
|
||||||
FD6_GROUP_PROG_INTERP,
|
FD6_GROUP_PROG_INTERP,
|
||||||
|
FD6_GROUP_PROG_FB_RAST,
|
||||||
FD6_GROUP_LRZ,
|
FD6_GROUP_LRZ,
|
||||||
FD6_GROUP_LRZ_BINNING,
|
FD6_GROUP_LRZ_BINNING,
|
||||||
FD6_GROUP_VBO,
|
FD6_GROUP_VBO,
|
||||||
|
Reference in New Issue
Block a user