freedreno/a6xx: Program RB_UNKNOWN_8C01 in setup helper
[mesa.git] / src / gallium / drivers / freedreno / a6xx / fd6_blitter.c
index 24e3f7225bc6c8aca9d18d676995b46f32d9d583..c4917c335052889ca2923d569e17d962df958049 100644 (file)
@@ -240,6 +240,9 @@ emit_blit_setup(struct fd_ringbuffer *ring,
        bool is_srgb = util_format_is_srgb(pfmt);
        enum a6xx_2d_ifmt ifmt = fd6_ifmt(fmt);
 
+       OUT_PKT7(ring, CP_SET_MARKER, 1);
+       OUT_RING(ring, A6XX_CP_SET_MARKER_0_MODE(RM6_BLIT2DSCALE));
+
        if (is_srgb) {
                assert(ifmt == R2D_UNORM8);
                ifmt = R2D_UNORM8_SRGB;
@@ -279,6 +282,9 @@ emit_blit_setup(struct fd_ringbuffer *ring,
                                        A6XX_SP_2D_SRC_FORMAT_NORM) |
                        COND(is_srgb, A6XX_SP_2D_SRC_FORMAT_SRGB) |
                        A6XX_SP_2D_SRC_FORMAT_MASK(0xf));
+
+       OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8C01, 1);
+       OUT_RING(ring, 0);
 }
 
 /* buffers need to be handled specially since x/width can exceed the bounds
@@ -338,9 +344,6 @@ emit_blit_buffer(struct fd_context *ctx, struct fd_ringbuffer *ring,
        sshift = sbox->x & 0x3f;
        dshift = dbox->x & 0x3f;
 
-       OUT_PKT7(ring, CP_SET_MARKER, 1);
-       OUT_RING(ring, A6XX_CP_SET_MARKER_0_MODE(RM6_BLIT2DSCALE));
-
        emit_blit_setup(ring, PIPE_FORMAT_R8_UNORM, false, NULL);
 
        for (unsigned off = 0; off < sbox->width; off += (0x4000 - 0x40)) {
@@ -406,9 +409,6 @@ emit_blit_buffer(struct fd_context *ctx, struct fd_ringbuffer *ring,
                OUT_RING(ring, 0x3f);
                OUT_WFI5(ring);
 
-               OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8C01, 1);
-               OUT_RING(ring, 0);
-
                OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8E04, 1);
                OUT_RING(ring, fd6_context(ctx)->magic.RB_UNKNOWN_8E04_blit);
 
@@ -536,9 +536,6 @@ emit_blit_or_clear_texture(struct fd_context *ctx, struct fd_ringbuffer *ring,
 
        dfmt = fd6_pipe2color(info->dst.format);
 
-       OUT_PKT7(ring, CP_SET_MARKER, 1);
-       OUT_RING(ring, A6XX_CP_SET_MARKER_0_MODE(RM6_BLIT2DSCALE));
-
        uint32_t nr_samples = fd_resource_nr_samples(&dst->base);
 
        if (!color) {
@@ -633,9 +630,6 @@ emit_blit_or_clear_texture(struct fd_context *ctx, struct fd_ringbuffer *ring,
                OUT_RING(ring, 0x3f);
                OUT_WFI5(ring);
 
-               OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8C01, 1);
-               OUT_RING(ring, 0);
-
                OUT_PKT4(ring, REG_A6XX_RB_UNKNOWN_8E04, 1);
                OUT_RING(ring, fd6_context(ctx)->magic.RB_UNKNOWN_8E04_blit);