dump_blit_info(info);
}
+ struct fd_resource *src = fd_resource(info->src.resource);
+ struct fd_resource *dst = fd_resource(info->dst.resource);
+
switch (info->dst.format) {
case PIPE_FORMAT_S8_UINT:
debug_assert(info->mask == PIPE_MASK_S);
blit.mask = PIPE_MASK_R;
blit.src.format = PIPE_FORMAT_R8_UINT;
blit.dst.format = PIPE_FORMAT_R8_UINT;
- blit.src.resource = &fd_resource(info->src.resource)->stencil->base;
- blit.dst.resource = &fd_resource(info->dst.resource)->stencil->base;
+ blit.src.resource = &src->stencil->base;
+ blit.dst.resource = &dst->stencil->base;
do_rewritten_blit(ctx, &blit);
}
blit.mask |= PIPE_MASK_A;
blit.src.format = PIPE_FORMAT_Z24_UNORM_S8_UINT_AS_R8G8B8A8;
blit.dst.format = PIPE_FORMAT_Z24_UNORM_S8_UINT_AS_R8G8B8A8;
+ /* non-UBWC Z24_UNORM_S8_UINT_AS_R8G8B8A8 is broken on a630, fall back to
+ * 8888_unorm.
+ */
+ if (!ctx->screen->info.a6xx.has_z24uint_s8uint) {
+ if (!src->layout.ubwc)
+ blit.src.format = PIPE_FORMAT_RGBA8888_UNORM;
+ if (!dst->layout.ubwc)
+ blit.dst.format = PIPE_FORMAT_RGBA8888_UNORM;
+ }
return fd_blitter_blit(ctx, &blit);
default: