Compute the primitive's origin coordinates only once
Bug: b/237494823
Change-Id: I62874a18d396653852ad3a8fae8ae987a8d559b9
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/67528
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Sean Risser <srisser@google.com>
diff --git a/src/Pipeline/SetupRoutine.cpp b/src/Pipeline/SetupRoutine.cpp
index ceb6e9e..b04ba31 100644
--- a/src/Pipeline/SetupRoutine.cpp
+++ b/src/Pipeline/SetupRoutine.cpp
@@ -314,10 +314,13 @@
Int Y1 = *Pointer<Int>(v1 + OFFSET(Vertex, projected.y));
Int Y2 = *Pointer<Int>(v2 + OFFSET(Vertex, projected.y));
+ Float x0 = Float(X0) * (1.0f / subPixF);
+ Float y0 = Float(Y0) * (1.0f / subPixF);
+
if(point)
{
- *Pointer<Float>(primitive + OFFSET(Primitive, pointCoordX)) = Float(1.0f / subPixF) * Float(X0);
- *Pointer<Float>(primitive + OFFSET(Primitive, pointCoordY)) = Float(1.0f / subPixF) * Float(Y0);
+ *Pointer<Float>(primitive + OFFSET(Primitive, pointCoordX)) = x0;
+ *Pointer<Float>(primitive + OFFSET(Primitive, pointCoordY)) = y0;
}
if(line)
@@ -326,9 +329,6 @@
Y2 = Y1 + X0 - X1;
}
- Float dx = Float(X0) * (1.0f / subPixF);
- Float dy = Float(Y0) * (1.0f / subPixF);
-
X1 -= X0;
Y1 -= Y0;
@@ -343,8 +343,8 @@
Float a = x1 * y2 - x2 * y1;
- Float4 xQuad = Float4(0, 1, 0, 1) - Float4(dx);
- Float4 yQuad = Float4(0, 0, 1, 1) - Float4(dy);
+ Float4 xQuad = Float4(0, 1, 0, 1) - Float4(x0);
+ Float4 yQuad = Float4(0, 0, 1, 1) - Float4(y0);
*Pointer<Float4>(primitive + OFFSET(Primitive, xQuad), 16) = xQuad;
*Pointer<Float4>(primitive + OFFSET(Primitive, yQuad), 16) = yQuad;