summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Rowley <[email protected]>2017-06-07 13:16:15 -0500
committerTim Rowley <[email protected]>2017-06-16 16:20:16 -0500
commitb7eb86c617ee8f73b552dc64a6d776d26672c38f (patch)
tree3956c764469ddd9d060ccf398d60a7ecdd622867
parent7f3be3f0b8df1eb85130c58e545a7e73f4369069 (diff)
swr/rast: Share vertex memory between VS input/output
Removes large simdvertex stack allocation. Vertex shader must ensure reads happen before writes. Reviewed-by: Bruce Cherniak <[email protected]>
-rw-r--r--src/gallium/drivers/swr/rasterizer/core/frontend.cpp7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/core/frontend.cpp b/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
index 157a3180092..902253b1481 100644
--- a/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
@@ -1727,11 +1727,7 @@ void ProcessDraw(
}
#else
- simdvertex vin;
SWR_VS_CONTEXT vsContext;
-
- vsContext.pVin = &vin;
-
SWR_FETCH_CONTEXT fetchInfo = { 0 };
fetchInfo.pStreams = &state.vertexBuffers[0];
@@ -1787,6 +1783,7 @@ void ProcessDraw(
}
simdvertex& vout = pa.GetNextVsOutput();
+ vsContext.pVin = &vout;
vsContext.pVout = &vout;
if (i < endVertex)
@@ -1794,7 +1791,7 @@ void ProcessDraw(
// 1. Execute FS/VS for a single SIMD.
AR_BEGIN(FEFetchShader, pDC->drawId);
- state.pfnFetchFunc(fetchInfo, vin);
+ state.pfnFetchFunc(fetchInfo, vout);
AR_END(FEFetchShader, 0);
// forward fetch generated vertex IDs to the vertex shader