Mesa (master): v3d: Fix Z clipping when viewport.scale[2] is negative.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 27 16:36:29 UTC 2018


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

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Jun 25 13:29:42 2018 -0700

v3d: Fix Z clipping when viewport.scale[2] is negative.

Fixes:
dEQP-GLES3.functional.shaders.builtin_variable.depth_range_fragment
dEQP-GLES3.functional.shaders.builtin_variable.depth_range_vertex

---

 src/gallium/drivers/v3d/v3dx_emit.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/v3d/v3dx_emit.c b/src/gallium/drivers/v3d/v3dx_emit.c
index e0bb95efb2..d5549bb945 100644
--- a/src/gallium/drivers/v3d/v3dx_emit.c
+++ b/src/gallium/drivers/v3d/v3dx_emit.c
@@ -465,10 +465,12 @@ v3dX(emit_state)(struct pipe_context *pctx)
                                 v3d->viewport.scale[2];
                 }
                 cl_emit(&job->bcl, CLIPPER_Z_MIN_MAX_CLIPPING_PLANES, clip) {
-                        clip.minimum_zw = (v3d->viewport.translate[2] -
-                                           v3d->viewport.scale[2]);
-                        clip.maximum_zw = (v3d->viewport.translate[2] +
-                                           v3d->viewport.scale[2]);
+                        float z1 = (v3d->viewport.translate[2] -
+                                    v3d->viewport.scale[2]);
+                        float z2 = (v3d->viewport.translate[2] +
+                                    v3d->viewport.scale[2]);
+                        clip.minimum_zw = MIN2(z1, z2);
+                        clip.maximum_zw = MAX2(z1, z2);
                 }
 
                 cl_emit(&job->bcl, VIEWPORT_OFFSET, vp) {




More information about the mesa-commit mailing list