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