- add SIMDAPI decorator to a few functions in the binner and clipper. - disabling buffer overrun warning for Assemble(uint32_t slot, simdvector *verts) due to what looks like a compiler bug when compiling the 16 wide frontend. --- src/gallium/drivers/swr/rasterizer/core/binner.cpp | 6 +++--- src/gallium/drivers/swr/rasterizer/core/clip.cpp | 6 +++--- src/gallium/drivers/swr/rasterizer/core/clip.h | 4 ++-- src/gallium/drivers/swr/rasterizer/core/pa.h | 6 ++++-- 4 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/src/gallium/drivers/swr/rasterizer/core/binner.cpp b/src/gallium/drivers/swr/rasterizer/core/binner.cpp index 9d36f21..3c94004 100644 --- a/src/gallium/drivers/swr/rasterizer/core/binner.cpp +++ b/src/gallium/drivers/swr/rasterizer/core/binner.cpp @@ -1008,7 +1008,7 @@ endBinTriangles: #if USE_SIMD16_FRONTEND template <typename CT> -void BinTriangles_simd16( +void SIMDAPI BinTriangles_simd16( DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, @@ -1838,7 +1838,7 @@ void BinPoints( } #if USE_SIMD16_FRONTEND -void BinPoints_simd16( +void SIMDAPI BinPoints_simd16( DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, @@ -2691,7 +2691,7 @@ void BinLines( } #if USE_SIMD16_FRONTEND -void BinLines_simd16( +void SIMDAPI BinLines_simd16( DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, diff --git a/src/gallium/drivers/swr/rasterizer/core/clip.cpp b/src/gallium/drivers/swr/rasterizer/core/clip.cpp index 6a5bf6c..c93e0fb 100644 --- a/src/gallium/drivers/swr/rasterizer/core/clip.cpp +++ b/src/gallium/drivers/swr/rasterizer/core/clip.cpp @@ -188,7 +188,7 @@ void ClipPoints(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simdvector p } #if USE_SIMD16_FRONTEND -void ClipTriangles_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simd16vector prims[], uint32_t primMask, simd16scalari primId, simd16scalari viewportIdx) +void SIMDAPI ClipTriangles_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simd16vector prims[], uint32_t primMask, simd16scalari primId, simd16scalari viewportIdx) { SWR_CONTEXT *pContext = pDC->pContext; AR_BEGIN(FEClipTriangles, pDC->drawId); @@ -203,7 +203,7 @@ void ClipTriangles_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, si AR_END(FEClipTriangles, 1); } -void ClipLines_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simd16vector prims[], uint32_t primMask, simd16scalari primId, simd16scalari viewportIdx) +void SIMDAPI ClipLines_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simd16vector prims[], uint32_t primMask, simd16scalari primId, simd16scalari viewportIdx) { SWR_CONTEXT *pContext = pDC->pContext; AR_BEGIN(FEClipLines, pDC->drawId); @@ -218,7 +218,7 @@ void ClipLines_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simd16 AR_END(FEClipLines, 1); } -void ClipPoints_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simd16vector prims[], uint32_t primMask, simd16scalari primId, simd16scalari viewportIdx) +void SIMDAPI ClipPoints_simd16(DRAW_CONTEXT *pDC, PA_STATE& pa, uint32_t workerId, simd16vector prims[], uint32_t primMask, simd16scalari primId, simd16scalari viewportIdx) { SWR_CONTEXT *pContext = pDC->pContext; AR_BEGIN(FEClipPoints, pDC->drawId); diff --git a/src/gallium/drivers/swr/rasterizer/core/clip.h b/src/gallium/drivers/swr/rasterizer/core/clip.h index 28042d5..ad2745b 100644 --- a/src/gallium/drivers/swr/rasterizer/core/clip.h +++ b/src/gallium/drivers/swr/rasterizer/core/clip.h @@ -610,7 +610,7 @@ public: uint8_t* pBase = (uint8_t*)(&vertices[0].attrib[VERTEX_POSITION_SLOT]) + sizeof(float) * inputPrim; #if USE_SIMD16_FRONTEND - // TEMPORARY WORKAROUND for bizarre VS2015 code-gen bug - use dx11_clipping_03-09 failures to check for existence of bug + // TEMPORARY WORKAROUND for bizarre VS2015 code-gen bug static const float *dummy = reinterpret_cast<const float *>(pBase); #endif @@ -867,7 +867,7 @@ public: uint8_t* pBase = (uint8_t*)(&vertices[0].attrib[VERTEX_POSITION_SLOT]) + sizeof(float) * inputPrim; #if 0 - // TEMPORARY WORKAROUND for bizarre VS2015 code-gen bug - use dx11_clipping_03-09 failures to check for existence of bug + // TEMPORARY WORKAROUND for bizarre VS2015 code-gen bug static const float *dummy = reinterpret_cast<const float *>(pBase); #endif diff --git a/src/gallium/drivers/swr/rasterizer/core/pa.h b/src/gallium/drivers/swr/rasterizer/core/pa.h index 781c094..10570f4 100644 --- a/src/gallium/drivers/swr/rasterizer/core/pa.h +++ b/src/gallium/drivers/swr/rasterizer/core/pa.h @@ -645,7 +645,9 @@ struct PA_STATE_CUT : public PA_STATE } } - bool Assemble(uint32_t slot, simdvector verts[]) +// disabling buffer overrun warning for this function for what appears to be a bug in MSVC 2017 +PRAGMA_WARNING_PUSH_DISABLE(4789) + bool Assemble(uint32_t slot, simdvector *verts) { // process any outstanding verts ProcessVerts(); @@ -689,9 +691,9 @@ struct PA_STATE_CUT : public PA_STATE pBase += SIMD_WIDTH; } } - return true; } +PRAGMA_WARNING_POP() #if ENABLE_AVX512_SIMD16 bool Assemble_simd16(uint32_t slot, simd16vector verts[]) -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev