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 <bruce.cherniak@intel.com>
This commit is contained in:
Tim Rowley
2017-06-07 13:16:15 -05:00
parent 7f3be3f0b8
commit b7eb86c617
@@ -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