OUT_RING(ring, A6XX_CP_SET_MARKER_0_MODE(RM6_BLIT2DSCALE));
uint32_t nr_samples = fd_resource_nr_samples(&dst->base);
- sx1 = sbox->x * nr_samples;
- sy1 = sbox->y;
- sx2 = (sbox->x + sbox->width) * nr_samples - 1;
- sy2 = sbox->y + sbox->height - 1;
+
+ if (!color) {
+ sx1 = sbox->x * nr_samples;
+ sy1 = sbox->y;
+ sx2 = (sbox->x + sbox->width) * nr_samples - 1;
+ sy2 = sbox->y + sbox->height - 1;
+
+ OUT_PKT4(ring, REG_A6XX_GRAS_2D_SRC_TL_X, 4);
+ OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_X_X(sx1));
+ OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_X_X(sx2));
+ OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_Y_Y(sy1));
+ OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_Y_Y(sy2));
+ }
dx1 = dbox->x * nr_samples;
dy1 = dbox->y;
dx2 = (dbox->x + dbox->width) * nr_samples - 1;
dy2 = dbox->y + dbox->height - 1;
- OUT_PKT4(ring, REG_A6XX_GRAS_2D_SRC_TL_X, 4);
- OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_X_X(sx1));
- OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_X_X(sx2));
- OUT_RING(ring, A6XX_GRAS_2D_SRC_TL_Y_Y(sy1));
- OUT_RING(ring, A6XX_GRAS_2D_SRC_BR_Y_Y(sy2));
-
OUT_PKT4(ring, REG_A6XX_GRAS_2D_DST_TL, 2);
OUT_RING(ring, A6XX_GRAS_2D_DST_TL_X(dx1) | A6XX_GRAS_2D_DST_TL_Y(dy1));
OUT_RING(ring, A6XX_GRAS_2D_DST_BR_X(dx2) | A6XX_GRAS_2D_DST_BR_Y(dy2));
for (unsigned i = 0; i < info->dst.box.depth; i++) {
- emit_blit_src(ring, info, sbox->z + i, nr_samples);
+ if (!color)
+ emit_blit_src(ring, info, sbox->z + i, nr_samples);
emit_blit_dst(ring, info, dbox->z + i);