OSDN Git Service

swr: fix support for inverted depth scales
authorIlia Mirkin <imirkin@alum.mit.edu>
Wed, 9 Nov 2016 06:16:32 +0000 (01:16 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Thu, 10 Nov 2016 01:10:44 +0000 (20:10 -0500)
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
src/gallium/drivers/swr/swr_state.cpp

index ede475a..01cadce 100644 (file)
@@ -38,6 +38,7 @@
 #include "util/u_inlines.h"
 #include "util/u_helpers.h"
 #include "util/u_framebuffer.h"
+#include "util/u_viewport.h"
 
 #include "swr_state.h"
 #include "swr_context.h"
@@ -951,13 +952,8 @@ swr_update_derived(struct pipe_context *pipe,
       vp->width = state->translate[0] + state->scale[0];
       vp->y = state->translate[1] - fabs(state->scale[1]);
       vp->height = state->translate[1] + fabs(state->scale[1]);
-      if (rasterizer->clip_halfz == 0) {
-         vp->minZ = state->translate[2] - state->scale[2];
-         vp->maxZ = state->translate[2] + state->scale[2];
-      } else {
-         vp->minZ = state->translate[2];
-         vp->maxZ = state->translate[2] + state->scale[2];
-      }
+      util_viewport_zmin_zmax(state, rasterizer->clip_halfz,
+                              &vp->minZ, &vp->maxZ);
 
       vpm->m00[0] = state->scale[0];
       vpm->m11[0] = state->scale[1];