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

Author: Tim Rowley <timothy.o.row...@intel.com>
Date:   Thu Aug 10 16:11:35 2017 -0500

swr/rast: Remove use of C++14 template variable

SWR rasterizer must remain C++11 compliant.

Reviewed-by: Bruce Cherniak <bruce.chern...@intel.com>

---

 src/gallium/drivers/swr/rasterizer/core/binner.cpp |  6 +++---
 src/gallium/drivers/swr/rasterizer/core/binner.h   | 14 +++++++++++---
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/swr/rasterizer/core/binner.cpp 
b/src/gallium/drivers/swr/rasterizer/core/binner.cpp
index 832c47d6e4..01c2f8f7a3 100644
--- a/src/gallium/drivers/swr/rasterizer/core/binner.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/binner.cpp
@@ -502,7 +502,7 @@ void SIMDCALL BinTrianglesImpl(
     }
 
     // Adjust for pixel center location
-    typename SIMD_T::Float offset = 
g_pixelOffsets<SIMD_T>[rastState.pixelLocation];
+    typename SIMD_T::Float offset = 
SwrPixelOffsets<SIMD_T>::GetOffset(rastState.pixelLocation);
 
     tri[0].x = SIMD_T::add_ps(tri[0].x, offset);
     tri[0].y = SIMD_T::add_ps(tri[0].y, offset);
@@ -1332,7 +1332,7 @@ void BinPointsImpl(
         }
     }
 
-    typename SIMD_T::Float offset = 
g_pixelOffsets<SIMD_T>[rastState.pixelLocation];
+    typename SIMD_T::Float offset = 
SwrPixelOffsets<SIMD_T>::GetOffset(rastState.pixelLocation);
 
     prim[0].x = SIMD_T::add_ps(prim[0].x, offset);
     prim[0].y = SIMD_T::add_ps(prim[0].y, offset);
@@ -1666,7 +1666,7 @@ void SIMDCALL BinLinesImpl(
     }
 
     // adjust for pixel center location
-    typename SIMD_T::Float offset = 
g_pixelOffsets<SIMD_T>[rastState.pixelLocation];
+    typename SIMD_T::Float offset = 
SwrPixelOffsets<SIMD_T>::GetOffset(rastState.pixelLocation);
 
     prim[0].x = SIMD_T::add_ps(prim[0].x, offset);
     prim[0].y = SIMD_T::add_ps(prim[0].y, offset);
diff --git a/src/gallium/drivers/swr/rasterizer/core/binner.h 
b/src/gallium/drivers/swr/rasterizer/core/binner.h
index e842aa663b..97e113f7f2 100644
--- a/src/gallium/drivers/swr/rasterizer/core/binner.h
+++ b/src/gallium/drivers/swr/rasterizer/core/binner.h
@@ -31,11 +31,19 @@
 //////////////////////////////////////////////////////////////////////////
 /// @brief Offsets added to post-viewport vertex positions based on
 /// raster state.
+///
+/// Can't use templated variable because we must stick with C++11 features.
+/// Template variables were introduced with C++14
 template <typename SIMD_T>
-static const typename SIMD_T::Float g_pixelOffsets[SWR_PIXEL_LOCATION_UL + 1] =
+struct SwrPixelOffsets
 {
-    SIMD_T::set1_ps(0.0f),  // SWR_PIXEL_LOCATION_CENTER
-    SIMD_T::set1_ps(0.5f),  // SWR_PIXEL_LOCATION_UL
+public:
+    INLINE static typename SIMD_T::Float GetOffset(uint32_t loc)
+    {
+        SWR_ASSERT(loc <= 1);
+
+        return SIMD_T::set1_ps(loc ? 0.5f : 0.0f);
+    }
 };
 
 //////////////////////////////////////////////////////////////////////////

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to