From ade53519001329938b8d2aef4aa0f563dddfd82d Mon Sep 17 00:00:00 2001 From: Tim Rowley <timothy.o.rowley@intel.com> Date: Thu, 16 Feb 2017 18:31:09 -0800 Subject: swr: [rasterizer common] Add InterpolateComponentFlat utility Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com> --- src/gallium/drivers/swr/rasterizer/common/simdintrin.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/drivers/swr/rasterizer/common/simdintrin.h b/src/gallium/drivers/swr/rasterizer/common/simdintrin.h index 8926e665173..ea79902a002 100644 --- a/src/gallium/drivers/swr/rasterizer/common/simdintrin.h +++ b/src/gallium/drivers/swr/rasterizer/common/simdintrin.h @@ -1122,6 +1122,19 @@ static INLINE simdscalar InterpolateComponent(simdscalar vI, simdscalar vJ, cons return vplaneps(vA, vB, vC, vI, vJ); } +////////////////////////////////////////////////////////////////////////// +/// @brief Interpolates a single component (flat shade). +/// @param pInterpBuffer - pointer to attribute barycentric coeffs +template<UINT Attrib, UINT Comp, UINT numComponents = 4> +static INLINE simdscalar InterpolateComponentFlat(const float *pInterpBuffer) +{ + const float *pInterpA = &pInterpBuffer[Attrib * 3 * numComponents + 0 + Comp]; + + simdscalar vA = _simd_broadcast_ss(pInterpA); + + return vA; +} + ////////////////////////////////////////////////////////////////////////// /// @brief Interpolates a single component. /// @param vI - barycentric I -- cgit v1.2.3