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

SWR rasterizer must remain C++11 compliant.

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
Tim Rowley 2017-08-10 16:11:35 -05:00
parent 9df5691fff
commit 1ebf6fc865
2 changed files with 14 additions and 6 deletions

View File

@ -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);

View File

@ -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);
}
};
//////////////////////////////////////////////////////////////////////////