mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 15:22:16 +00:00
Evict floats from the block code (too bad it didn't make any difference to the speed)
This commit is contained in:
parent
f25579849a
commit
acb2e821f0
2 changed files with 22 additions and 18 deletions
|
@ -228,10 +228,20 @@ void DrawTriangleCodegen::LoopBlockX(TriDrawVariant variant, bool truecolor)
|
||||||
SSAFloat rcpWBR = 1.0f / (startW + offx1 * gradWX + offy1 * gradWY);
|
SSAFloat rcpWBR = 1.0f / (startW + offx1 * gradWX + offy1 * gradWY);
|
||||||
for (int i = 0; i < TriVertex::NumVarying; i++)
|
for (int i = 0; i < TriVertex::NumVarying; i++)
|
||||||
{
|
{
|
||||||
varyingTL[i] = (startVarying[i] + offx0 * gradVaryingX[i] + offy0 * gradVaryingY[i]) * rcpWTL;
|
SSAFloat varyingTL = (startVarying[i] + offx0 * gradVaryingX[i] + offy0 * gradVaryingY[i]) * rcpWTL;
|
||||||
varyingTR[i] = (startVarying[i] + offx1 * gradVaryingX[i] + offy0 * gradVaryingY[i]) * rcpWTR;
|
SSAFloat varyingTR = (startVarying[i] + offx1 * gradVaryingX[i] + offy0 * gradVaryingY[i]) * rcpWTR;
|
||||||
varyingBL[i] = ((startVarying[i] + offx0 * gradVaryingX[i] + offy1 * gradVaryingY[i]) * rcpWBL - varyingTL[i]) * (1.0f / q);
|
SSAFloat varyingBL = (startVarying[i] + offx0 * gradVaryingX[i] + offy1 * gradVaryingY[i]) * rcpWBL;
|
||||||
varyingBR[i] = ((startVarying[i] + offx1 * gradVaryingX[i] + offy1 * gradVaryingY[i]) * rcpWBR - varyingTR[i]) * (1.0f / q);
|
SSAFloat varyingBR = (startVarying[i] + offx1 * gradVaryingX[i] + offy1 * gradVaryingY[i]) * rcpWBR;
|
||||||
|
|
||||||
|
SSAFloat pos = varyingTL;
|
||||||
|
SSAFloat stepPos = (varyingBL - varyingTL) * (1.0f / q);
|
||||||
|
SSAFloat startStepX = (varyingTR - varyingTL) * (1.0f / q);
|
||||||
|
SSAFloat incrStepX = (varyingBR - varyingBL) * (1.0f / q) - startStepX;
|
||||||
|
|
||||||
|
varyingPos[i] = SSAInt(pos * SSAFloat((float)0x01000000), false);
|
||||||
|
varyingStepPos[i] = SSAInt(stepPos * SSAFloat((float)0x01000000), false);
|
||||||
|
varyingStartStepX[i] = SSAInt(startStepX * SSAFloat((float)0x01000000), false);
|
||||||
|
varyingIncrStepX[i] = SSAInt(incrStepX * SSAFloat((float)0x01000000), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
SSAFloat globVis = SSAFloat(1706.0f);
|
SSAFloat globVis = SSAFloat(1706.0f);
|
||||||
|
@ -296,11 +306,8 @@ void DrawTriangleCodegen::LoopFullBlock(TriDrawVariant variant, bool truecolor)
|
||||||
SSAInt varyingStep[TriVertex::NumVarying];
|
SSAInt varyingStep[TriVertex::NumVarying];
|
||||||
for (int i = 0; i < TriVertex::NumVarying; i++)
|
for (int i = 0; i < TriVertex::NumVarying; i++)
|
||||||
{
|
{
|
||||||
SSAFloat pos = varyingTL[i] + varyingBL[i] * SSAFloat(iy);
|
stack_varying[i].store((varyingPos[i] + varyingStepPos[i] * iy) << 8);
|
||||||
SSAFloat step = (varyingTR[i] + varyingBR[i] * SSAFloat(iy) - pos) * (1.0f / q);
|
varyingStep[i] = (varyingStartStepX[i] + varyingIncrStepX[i] * iy) << 8;
|
||||||
|
|
||||||
stack_varying[i].store(SSAInt((pos - SSAFloat::floor(pos)) * SSAFloat((float)0x100000000LL), true));
|
|
||||||
varyingStep[i] = SSAInt(step * SSAFloat((float)0x100000000LL), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stack_ix.store(SSAInt(0));
|
stack_ix.store(SSAInt(0));
|
||||||
|
@ -368,11 +375,8 @@ void DrawTriangleCodegen::LoopPartialBlock(TriDrawVariant variant, bool truecolo
|
||||||
SSAInt varyingStep[TriVertex::NumVarying];
|
SSAInt varyingStep[TriVertex::NumVarying];
|
||||||
for (int i = 0; i < TriVertex::NumVarying; i++)
|
for (int i = 0; i < TriVertex::NumVarying; i++)
|
||||||
{
|
{
|
||||||
SSAFloat pos = varyingTL[i] + varyingBL[i] * SSAFloat(iy);
|
stack_varying[i].store((varyingPos[i] + varyingStepPos[i] * iy) << 8);
|
||||||
SSAFloat step = (varyingTR[i] + varyingBR[i] * SSAFloat(iy) - pos) * (1.0f / q);
|
varyingStep[i] = (varyingStartStepX[i] + varyingIncrStepX[i] * iy) << 8;
|
||||||
|
|
||||||
stack_varying[i].store(SSAInt((pos - SSAFloat::floor(pos)) * SSAFloat((float)0x100000000LL), true));
|
|
||||||
varyingStep[i] = SSAInt(step * SSAFloat((float)0x100000000LL), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stack_CX1.store(CY1);
|
stack_CX1.store(CY1);
|
||||||
|
|
|
@ -116,10 +116,10 @@ private:
|
||||||
SSAInt x, y;
|
SSAInt x, y;
|
||||||
SSAInt x0, x1, y0, y1;
|
SSAInt x0, x1, y0, y1;
|
||||||
SSAInt diminishedlight;
|
SSAInt diminishedlight;
|
||||||
SSAFloat varyingTL[TriVertex::NumVarying];
|
SSAInt varyingPos[TriVertex::NumVarying];
|
||||||
SSAFloat varyingTR[TriVertex::NumVarying];
|
SSAInt varyingStepPos[TriVertex::NumVarying];
|
||||||
SSAFloat varyingBL[TriVertex::NumVarying];
|
SSAInt varyingStartStepX[TriVertex::NumVarying];
|
||||||
SSAFloat varyingBR[TriVertex::NumVarying];
|
SSAInt varyingIncrStepX[TriVertex::NumVarying];
|
||||||
|
|
||||||
SSAUBytePtr StencilBlock;
|
SSAUBytePtr StencilBlock;
|
||||||
SSAIntPtr StencilBlockMask;
|
SSAIntPtr StencilBlockMask;
|
||||||
|
|
Loading…
Reference in a new issue