swr: [rasterizer core] viewport rounding for disabled scissor
authorTim Rowley <timothy.o.rowley@intel.com>
Thu, 7 Jul 2016 23:32:39 +0000 (17:32 -0600)
committerTim Rowley <timothy.o.rowley@intel.com>
Wed, 20 Jul 2016 15:22:14 +0000 (10:22 -0500)
Adjust viewport rounding when scissor rect is disabled during macro
tile scissor setup.

Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
src/gallium/drivers/swr/rasterizer/core/api.cpp

index 6460a16ec3f639309c69cefced2f0e4ec16efa6a..aface7a77ef0b269f9c67deaf8056932c34a83a6 100644 (file)
@@ -732,10 +732,12 @@ void SetupMacroTileScissors(DRAW_CONTEXT *pDC)
     }
     else
     {
+        // the vp width and height must be added to origin un-rounded then the result round to -inf.
+        // The cast to int works for rounding assuming all [left, right, top, bottom] are positive.
         left = (int32_t)pState->vp[0].x;
-        right = (int32_t)pState->vp[0].x + (int32_t)pState->vp[0].width;
+        right = (int32_t)(pState->vp[0].x + pState->vp[0].width);
         top = (int32_t)pState->vp[0].y;
-        bottom = (int32_t)pState->vp[0].y + (int32_t)pState->vp[0].height;
+        bottom = (int32_t)(pState->vp[0].y + pState->vp[0].height);
     }
 
     right = std::min<uint32_t>(right, KNOB_MAX_SCISSOR_X);