swr: [rasterizer core] fix for possible int32 overflow condition
authorTim Rowley <timothy.o.rowley@intel.com>
Thu, 14 Jul 2016 18:10:39 +0000 (12:10 -0600)
committerTim Rowley <timothy.o.rowley@intel.com>
Wed, 20 Jul 2016 15:22:15 +0000 (10:22 -0500)
Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
src/gallium/drivers/swr/rasterizer/core/rasterizer.cpp

index 897556a052cc4c7ea6387b52aae2c0aa2b47266d..1909ddbcd6a2a7a7bddd3c31057681d48d253c58 100644 (file)
@@ -353,7 +353,7 @@ struct adjustEdgeConservative<RT, std::false_type>
 template <typename RT>
 INLINE void adjustScissorEdge(const double a, const double b, __m256d &vEdge)
 {
-    int32_t aabs = std::abs(static_cast<int32_t>(a)), babs = std::abs(static_cast<int32_t>(b));
+    int64_t aabs = std::abs(static_cast<int64_t>(a)), babs = std::abs(static_cast<int64_t>(b));
 
     int64_t manh = ((aabs * RT::ConservativeEdgeOffsetT::value) + (babs * RT::ConservativeEdgeOffsetT::value)) >>
         ((RT::PrecisionT::BitsT::value + RT::ConservativePrecisionT::BitsT::value) - RT::EdgePrecisionT::BitsT::value);