Mesa (master): radeonsi: fix quant_mode selection for large negative values

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Sep 16 08:05:19 UTC 2020


Module: Mesa
Branch: master
Commit: c493bb9a5700e3db02279a0073abac697c01d8d8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c493bb9a5700e3db02279a0073abac697c01d8d8

Author: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Date:   Fri Sep 11 11:52:04 2020 +0200

radeonsi: fix quant_mode selection for large negative values

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6685>

---

 src/gallium/drivers/radeonsi/si_state_viewport.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_viewport.c b/src/gallium/drivers/radeonsi/si_state_viewport.c
index 3bf701e314d..2db1e2b6570 100644
--- a/src/gallium/drivers/radeonsi/si_state_viewport.c
+++ b/src/gallium/drivers/radeonsi/si_state_viewport.c
@@ -375,7 +375,9 @@ static void si_set_viewport_states(struct pipe_context *pctx, unsigned start_slo
       unsigned h = scissor->maxy - scissor->miny;
       unsigned max_extent = MAX2(w, h);
 
-      int max_corner = MAX2(scissor->maxx, scissor->maxy);
+      int max_corner = MAX2(
+         MAX2(abs(scissor->maxx), abs(scissor->maxy)),
+         MAX2(abs(scissor->minx), abs(scissor->miny)));
 
       unsigned center_x = (scissor->maxx + scissor->minx) / 2;
       unsigned center_y = (scissor->maxy + scissor->miny) / 2;
@@ -415,9 +417,9 @@ static void si_set_viewport_states(struct pipe_context *pctx, unsigned start_slo
        * 4k x 4k of the render target.
        */
 
-      if (max_extent <= 1024 && max_corner < 4096) /* 4K scanline area for guardband */
+      if (max_extent <= 1024 && max_corner < (1 << 12)) /* 4K scanline area for guardband */
          scissor->quant_mode = SI_QUANT_MODE_12_12_FIXED_POINT_1_4096TH;
-      else if (max_extent <= 4096) /* 16K scanline area for guardband */
+      else if (max_extent <= 4096 && max_corner < (1 << 14)) /* 16K scanline area for guardband */
          scissor->quant_mode = SI_QUANT_MODE_14_10_FIXED_POINT_1_1024TH;
       else /* 64K scanline area for guardband */
          scissor->quant_mode = SI_QUANT_MODE_16_8_FIXED_POINT_1_256TH;



More information about the mesa-commit mailing list