nvc0: fix viewport rectangle calculation
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 16 Apr 2011 22:14:31 +0000 (00:14 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Sat, 16 Apr 2011 22:17:14 +0000 (00:17 +0200)
src/gallium/drivers/nvc0/nvc0_state_validate.c

index 23a552622e15b45af8644ceb51d12288d31c7fdf..9b2a28150b1f4dda59b036b21ac8288de8aa775f 100644 (file)
@@ -1,6 +1,7 @@
 
+#include "util/u_math.h"
+
 #include "nvc0_context.h"
-#include "os/os_time.h"
 
 static void
 nvc0_validate_zcull(struct nvc0_context *nvc0)
@@ -213,10 +214,11 @@ nvc0_validate_viewport(struct nvc0_context *nvc0)
 
     /* now set the viewport rectangle to viewport dimensions for clipping */
 
-    x = (int)(vp->translate[0] - fabsf(vp->scale[0]));
-    y = (int)(vp->translate[1] - fabsf(vp->scale[1]));
-    w = (int)fabsf(2.0f * vp->scale[0]);
-    h = (int)fabsf(2.0f * vp->scale[1]);
+    x = util_iround(MAX2(0.0f, vp->translate[0] - fabsf(vp->scale[0])));
+    y = util_iround(MAX2(0.0f, vp->translate[1] - fabsf(vp->scale[1])));
+    w = util_iround(vp->translate[0] + fabsf(vp->scale[0])) - x;
+    h = util_iround(vp->translate[1] + fabsf(vp->scale[1])) - y;
+
     zmin = vp->translate[2] - fabsf(vp->scale[2]);
     zmax = vp->translate[2] + fabsf(vp->scale[2]);