From fbc27ff0279c76542fd8e3c61562ca69fa539272 Mon Sep 17 00:00:00 2001 From: Tim Rowley Date: Thu, 7 Dec 2017 17:54:40 -0600 Subject: swr/rast: Pass prim to ClipSimd Reviewed-by: Bruce Cherniak --- src/gallium/drivers/swr/rasterizer/core/clip.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/swr/rasterizer/core/clip.h b/src/gallium/drivers/swr/rasterizer/core/clip.h index 148f661ab42..8b947668d3f 100644 --- a/src/gallium/drivers/swr/rasterizer/core/clip.h +++ b/src/gallium/drivers/swr/rasterizer/core/clip.h @@ -437,7 +437,7 @@ public: return SIMD_T::movemask_ps(vClipCullMask); } - void ClipSimd(const typename SIMD_T::Float &vPrimMask, const typename SIMD_T::Float &vClipMask, PA_STATE &pa, const typename SIMD_T::Integer &vPrimId, const typename SIMD_T::Integer &vViewportIdx) + void ClipSimd(const typename SIMD_T::Vec4 prim[], const typename SIMD_T::Float &vPrimMask, const typename SIMD_T::Float &vClipMask, PA_STATE &pa, const typename SIMD_T::Integer &vPrimId, const typename SIMD_T::Integer &vViewportIdx) { // input/output vertex store for clipper SIMDVERTEX_T vertices[7]; // maximum 7 verts generated per triangle @@ -452,10 +452,9 @@ public: // assemble pos typename SIMD_T::Vec4 tmpVector[NumVertsPerPrim]; - pa.Assemble(VERTEX_POSITION_SLOT, tmpVector); for (uint32_t i = 0; i < NumVertsPerPrim; ++i) { - vertices[i].attrib[VERTEX_POSITION_SLOT] = tmpVector[i]; + vertices[i].attrib[VERTEX_POSITION_SLOT] = prim[i]; } // assemble attribs @@ -568,7 +567,8 @@ public: SIMDVERTEX_T transposedPrims[2]; #endif - for (uint32_t inputPrim = 0; inputPrim < pa.NumPrims(); ++inputPrim) + uint32_t numInputPrims = pa.NumPrims(); + for (uint32_t inputPrim = 0; inputPrim < numInputPrims; ++inputPrim) { uint32_t numEmittedVerts = pVertexCount[inputPrim]; if (numEmittedVerts < NumVertsPerPrim) @@ -716,7 +716,7 @@ public: AR_BEGIN(FEGuardbandClip, pa.pDC->drawId); // we have to clip tris, execute the clipper, which will also // call the binner - ClipSimd(SIMD_T::vmask_ps(primMask), SIMD_T::vmask_ps(clipMask), pa, primId, viewportIdx); + ClipSimd(prim, SIMD_T::vmask_ps(primMask), SIMD_T::vmask_ps(clipMask), pa, primId, viewportIdx); AR_END(FEGuardbandClip, 1); } else if (validMask) -- cgit v1.2.3