diff options
author | Kristian H. Kristensen <[email protected]> | 2019-02-07 15:35:07 -0800 |
---|---|---|
committer | Kristian H. Kristensen <[email protected]> | 2019-02-11 12:26:21 -0800 |
commit | bc8c813d5ae1f893b39a50d17f71bcfc2f76df01 (patch) | |
tree | a43e37329e7a6e490d5164df66fed849edeea1d9 | |
parent | 03a01e5d23a566cdde989cd98f6a757cb98b7154 (diff) |
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 <[email protected]>
Signed-off-by: Kristian H. Kristensen <[email protected]>
-rw-r--r-- | src/gallium/drivers/freedreno/a6xx/fd6_blitter.c | 7 |
1 files changed, 2 insertions, 5 deletions
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: "); |