From: Kristian H. Kristensen Date: Thu, 7 Feb 2019 23:35:07 +0000 (-0800) Subject: freedreno/a6xx: Support y-inverted blits X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bc8c813d5ae1f893b39a50d17f71bcfc2f76df01;p=mesa.git freedreno/a6xx: Support y-inverted blits The src coordinates are s24.8. For an inverted blit that ends at y=0 we need to program -1 for sy2, so we need to handle negative values correctly. Fixes dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_y dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_y dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_y dEQP-GLES3.functional.fbo.invalidate.sub.unbind_blit_color dEQP-GLES3.functional.fbo.invalidate.whole.unbind_blit_color Reviewed-by: Rob Clark Signed-off-by: Kristian H. Kristensen --- diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c index 0a741acf1d8..08fbe4b7057 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c @@ -114,9 +114,6 @@ can_do_blit(const struct pipe_blit_info *info) fail_if(util_format_is_compressed(info->src.format) && info->src.format != info->dst.format); - /* src box can be inverted, which we don't support.. dst box cannot: */ - fail_if((info->src.box.width < 0) || (info->src.box.height < 0)); - fail_if(!ok_dims(info->src.resource, &info->src.box, info->src.level)); fail_if(!ok_dims(info->dst.resource, &info->dst.box, info->dst.level)); @@ -347,8 +344,8 @@ emit_blit_texture(struct fd_ringbuffer *ring, const struct pipe_blit_info *info) enum a6xx_tile_mode stile, dtile; enum a3xx_color_swap sswap, dswap; unsigned spitch, dpitch; - unsigned sx1, sy1, sx2, sy2; - unsigned dx1, dy1, dx2, dy2; + int sx1, sy1, sx2, sy2; + int dx1, dy1, dx2, dy2; if (DEBUG_BLIT_FALLBACK) { fprintf(stderr, "texture blit: ");