aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/llvmpipe/lp_setup_tri.c
diff options
context:
space:
mode:
authorKeith Whitwell <[email protected]>2009-10-20 02:46:00 +0100
committerKeith Whitwell <[email protected]>2009-10-20 02:46:00 +0100
commit7670628061c2a6ce0a1a787556b0e33a38fd3049 (patch)
tree7aed343a2d002847cb33e0b6ec61454fcdb34156 /src/gallium/drivers/llvmpipe/lp_setup_tri.c
parent5b07d4de38b732f99237161d940f40e3ce6e29c3 (diff)
llvmpipe: precalculate some offsets
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_setup_tri.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_tri.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_tri.c b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
index 6c9f75e90ce..a5a0407a57e 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_tri.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_tri.c
@@ -359,6 +359,32 @@ do_triangle_ccw(struct setup_context *setup,
maxx = tri->maxx / TILESIZE;
maxy = tri->maxy / TILESIZE;
+ {
+ int xstep1 = -tri->dy12;
+ int xstep2 = -tri->dy23;
+ int xstep3 = -tri->dy31;
+
+ int ystep1 = tri->dx12;
+ int ystep2 = tri->dx23;
+ int ystep3 = tri->dx31;
+
+ int ix, iy;
+ int qx, qy;
+ int i = 0;
+
+ for (qy = 0; qy < 4; qy += 2) {
+ for (qx = 0; qx < 4; qx += 2) {
+ for (iy = 0; iy < 2; iy++) {
+ for (ix = 0; ix < 2; ix++, i++) {
+ tri->step[0][i] = (xstep1 * (qx+ix)) + (ystep1 * (qy+iy));
+ tri->step[1][i] = (xstep2 * (qx+ix)) + (ystep2 * (qy+iy));
+ tri->step[2][i] = (xstep3 * (qx+ix)) + (ystep3 * (qy+iy));
+ }
+ }
+ }
+ }
+ }
+
/* Convert to tile coordinates:
*/
if (miny == maxy && minx == maxx)