swr/rast: Binner fixes for viewport index offset handling

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
Tim Rowley 2017-11-29 10:46:49 -06:00
parent f2e3900a1e
commit 0e9e247687
2 changed files with 12 additions and 2 deletions

View File

@ -470,6 +470,10 @@ void SIMDCALL BinTrianglesImpl(
typename SIMD_T::Integer vClearMask = SIMD_T::cmplt_epi32(vpai, vNumViewports);
viewportIdx = SIMD_T::and_si(vClearMask, vpai);
}
else
{
viewportIdx = vpai;
}
if (feState.vpTransformDisable)
{
@ -1326,6 +1330,10 @@ void BinPointsImpl(
typename SIMD_T::Integer vClearMask = SIMD_T::cmplt_epi32(vpai, vNumViewports);
viewportIdx = SIMD_T::and_si(vClearMask, vpai);
}
else
{
viewportIdx = vpai;
}
if (!feState.vpTransformDisable)
{
@ -1647,7 +1655,6 @@ void SIMDCALL BinLinesImpl(
if (state.backendState.readViewportArrayIndex)
{
pa.Assemble(VERTEX_SGV_SLOT, vpiAttrib);
vpai = SIMD_T::castps_si(vpiAttrib[0][VERTEX_SGV_VAI_COMP]);
}

View File

@ -694,7 +694,6 @@ public:
if (state.backendState.readViewportArrayIndex)
{
pa.Assemble(VERTEX_SGV_SLOT, vpiAttrib);
vpai = SIMD_T::castps_si(vpiAttrib[0][VERTEX_SGV_VAI_COMP]);
}
@ -707,6 +706,10 @@ public:
typename SIMD_T::Integer vClearMask = SIMD_T::cmplt_epi32(vpai, vNumViewports);
viewportIdx = SIMD_T::and_si(vClearMask, vpai);
}
else
{
viewportIdx = vpai;
}
ComputeClipCodes(prim, viewportIdx);