OUT_PKT4(ring, REG_A6XX_SP_FS_RENDER_COMPONENTS, 1);
OUT_RING(ring,
A6XX_SP_FS_RENDER_COMPONENTS_RT0(mrt_comp[0]) |
- A6XX_SP_FS_RENDER_COMPONENTS_RT1(mrt_comp[0]) |
- A6XX_SP_FS_RENDER_COMPONENTS_RT2(mrt_comp[0]) |
- A6XX_SP_FS_RENDER_COMPONENTS_RT3(mrt_comp[0]) |
- A6XX_SP_FS_RENDER_COMPONENTS_RT4(mrt_comp[0]) |
- A6XX_SP_FS_RENDER_COMPONENTS_RT5(mrt_comp[0]) |
- A6XX_SP_FS_RENDER_COMPONENTS_RT6(mrt_comp[0]) |
- A6XX_SP_FS_RENDER_COMPONENTS_RT7(mrt_comp[0]));
+ A6XX_SP_FS_RENDER_COMPONENTS_RT1(mrt_comp[1]) |
+ A6XX_SP_FS_RENDER_COMPONENTS_RT2(mrt_comp[2]) |
+ A6XX_SP_FS_RENDER_COMPONENTS_RT3(mrt_comp[3]) |
+ A6XX_SP_FS_RENDER_COMPONENTS_RT4(mrt_comp[4]) |
+ A6XX_SP_FS_RENDER_COMPONENTS_RT5(mrt_comp[5]) |
+ A6XX_SP_FS_RENDER_COMPONENTS_RT6(mrt_comp[6]) |
+ A6XX_SP_FS_RENDER_COMPONENTS_RT7(mrt_comp[7]));
}
if (dirty & FD_DIRTY_ZSA) {
}
if (dirty & (FD_DIRTY_ZSA | FD_DIRTY_BLEND | FD_DIRTY_PROG)) {
- struct fd6_blend_stateobj *blend = fd6_blend_stateobj(ctx->blend);
struct fd6_zsa_stateobj *zsa = fd6_zsa_stateobj(ctx->zsa);
if (pfb->zsbuf) {
struct fd_resource *rsc = fd_resource(pfb->zsbuf->texture);
uint32_t gras_lrz_cntl = zsa->gras_lrz_cntl;
+ uint32_t rb_lrz_cntl = zsa->rb_lrz_cntl;
- if (emit->no_lrz_write || !rsc->lrz || !rsc->lrz_valid)
+ if (emit->no_lrz_write || !rsc->lrz || !rsc->lrz_valid) {
gras_lrz_cntl = 0;
- else if (emit->key.binning_pass && blend->lrz_write && zsa->lrz_write)
+ rb_lrz_cntl = 0;
+ } else if (emit->key.binning_pass && zsa->lrz_write) {
gras_lrz_cntl |= A6XX_GRAS_LRZ_CNTL_LRZ_WRITE;
+ }
OUT_PKT4(ring, REG_A6XX_GRAS_LRZ_CNTL, 1);
OUT_RING(ring, gras_lrz_cntl);
+
+ OUT_PKT4(ring, REG_A6XX_RB_LRZ_CNTL, 1);
+ OUT_RING(ring, rb_lrz_cntl);
}
}
struct pipe_stencil_ref *sr = &ctx->stencil_ref;
OUT_PKT4(ring, REG_A6XX_RB_STENCILREF, 3);
- OUT_RING(ring, A6XX_RB_STENCILREF_REF(sr->ref_value[0])); // TODO bf?
+ OUT_RING(ring, A6XX_RB_STENCILREF_REF(sr->ref_value[0]) |
+ A6XX_RB_STENCILREF_BFREF(sr->ref_value[1]));
OUT_RING(ring, zsa->rb_stencilmask);
OUT_RING(ring, zsa->rb_stencilwrmask);
}
OUT_RING(ring, 0);
WRITE(REG_A6XX_GRAS_UNKNOWN_8101, 0);
- WRITE(REG_A6XX_GRAS_2D_BLIT_INFO,
- A6XX_GRAS_2D_BLIT_INFO_COLOR_FORMAT(RB6_R8G8B8_UNORM));
WRITE(REG_A6XX_GRAS_UNKNOWN_8109, 0);
WRITE(REG_A6XX_GRAS_UNKNOWN_8110, 0);
OUT_PKT4(ring, REG_A6XX_SP_GS_CTRL_REG0, 1);
OUT_RING(ring, 0x00000000);
+
+ OUT_PKT4(ring, REG_A6XX_GRAS_LRZ_CNTL, 1);
+ OUT_RING(ring, 0x00000000);
+
+ OUT_PKT4(ring, REG_A6XX_RB_LRZ_CNTL, 1);
+ OUT_RING(ring, 0x00000000);
}
static void