author | ohair |
Tue, 28 Dec 2010 15:53:50 -0800 | |
changeset 7668 | d4a77089c587 |
parent 7487 | 9b031d062ede |
child 7762 | 6e45e1e87347 |
permissions | -rw-r--r-- |
7487
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
1 |
/* |
7668 | 2 |
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. |
7487
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
4 |
* |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. Oracle designates this |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
8 |
* particular file as subject to the "Classpath" exception as provided |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
9 |
* by Oracle in the LICENSE file that accompanied this code. |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
10 |
* |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
15 |
* accompanied this code). |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
16 |
* |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
17 |
* You should have received a copy of the GNU General Public License version |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
20 |
* |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
22 |
* or visit www.oracle.com if you need additional information or have any |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
23 |
* questions. |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
24 |
*/ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
25 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
26 |
#include "math.h" |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
27 |
#include "GraphicsPrimitiveMgr.h" |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
28 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
29 |
#include "sun_java2d_loops_FillParallelogram.h" |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
30 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
31 |
#define PGRAM_MIN_MAX(bmin, bmax, v0, dv1, dv2) \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
32 |
do { \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
33 |
double vmin, vmax; \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
34 |
if (dv1 < 0) { \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
35 |
vmin = v0+dv1; \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
36 |
vmax = v0; \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
37 |
} else { \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
38 |
vmin = v0; \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
39 |
vmax = v0+dv1; \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
40 |
} \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
41 |
if (dv2 < 0) { \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
42 |
vmin -= dv2; \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
43 |
} else { \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
44 |
vmax += dv2; \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
45 |
} \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
46 |
bmin = (jint) floor(vmin + 0.5); \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
47 |
bmax = (jint) floor(vmax + 0.5); \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
48 |
} while(0) |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
49 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
50 |
#define PGRAM_INIT_X(starty, x, y, slope) \ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
51 |
(DblToLong((x) + (slope) * ((starty)+0.5 - (y))) + LongOneHalf - 1) |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
52 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
53 |
/* |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
54 |
* Class: sun_java2d_loops_FillParallelogram |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
55 |
* Method: FillParallelogram |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
56 |
* Signature: (Lsun/java2d/SunGraphics2D;Lsun/java2d/SurfaceData;DDDDDD)V |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
57 |
*/ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
58 |
JNIEXPORT void JNICALL |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
59 |
Java_sun_java2d_loops_FillParallelogram_FillParallelogram |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
60 |
(JNIEnv *env, jobject self, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
61 |
jobject sg2d, jobject sData, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
62 |
jdouble x0, jdouble y0, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
63 |
jdouble dx1, jdouble dy1, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
64 |
jdouble dx2, jdouble dy2) |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
65 |
{ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
66 |
SurfaceDataOps *sdOps; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
67 |
SurfaceDataRasInfo rasInfo; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
68 |
NativePrimitive *pPrim; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
69 |
CompositeInfo compInfo; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
70 |
jint pixel; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
71 |
jint ix1, iy1, ix2, iy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
72 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
73 |
if ((dy1 == 0 && dx1 == 0) || (dy2 == 0 && dx2 == 0)) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
74 |
return; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
75 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
76 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
77 |
/* |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
78 |
* Sort parallelogram by y values, ensure that each delta vector |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
79 |
* has a non-negative y delta, and eliminate degenerate parallelograms. |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
80 |
*/ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
81 |
if (dy1 < 0) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
82 |
x0 += dx1; y0 += dy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
83 |
dx1 = -dx1; dy1 = -dy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
84 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
85 |
if (dy2 < 0) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
86 |
x0 += dx2; y0 += dy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
87 |
dx2 = -dx2; dy2 = -dy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
88 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
89 |
/* Sort delta vectors so dxy1 is left of dxy2. */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
90 |
if (dx1 * dy2 > dx2 * dy1) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
91 |
double v = dx1; dx1 = dx2; dx2 = v; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
92 |
v = dy1; dy1 = dy2; dy2 = v; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
93 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
94 |
PGRAM_MIN_MAX(ix1, ix2, x0, dx1, dx2); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
95 |
iy1 = (jint) floor(y0 + 0.5); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
96 |
iy2 = (jint) floor(y0 + dy1 + dy2 + 0.5); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
97 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
98 |
pPrim = GetNativePrim(env, self); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
99 |
if (pPrim == NULL) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
100 |
return; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
101 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
102 |
pixel = GrPrim_Sg2dGetPixel(env, sg2d); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
103 |
if (pPrim->pCompType->getCompInfo != NULL) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
104 |
GrPrim_Sg2dGetCompInfo(env, sg2d, pPrim, &compInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
105 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
106 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
107 |
sdOps = SurfaceData_GetOps(env, sData); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
108 |
if (sdOps == NULL) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
109 |
return; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
110 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
111 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
112 |
GrPrim_Sg2dGetClip(env, sg2d, &rasInfo.bounds); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
113 |
SurfaceData_IntersectBoundsXYXY(&rasInfo.bounds, ix1, iy1, ix2, iy2); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
114 |
if (rasInfo.bounds.y2 <= rasInfo.bounds.y1 || |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
115 |
rasInfo.bounds.x2 <= rasInfo.bounds.x1) |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
116 |
{ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
117 |
return; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
118 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
119 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
120 |
if (sdOps->Lock(env, sdOps, &rasInfo, pPrim->dstflags) != SD_SUCCESS) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
121 |
return; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
122 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
123 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
124 |
ix1 = rasInfo.bounds.x1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
125 |
iy1 = rasInfo.bounds.y1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
126 |
ix2 = rasInfo.bounds.x2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
127 |
iy2 = rasInfo.bounds.y2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
128 |
if (ix2 > ix1 && iy2 > iy1) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
129 |
sdOps->GetRasInfo(env, sdOps, &rasInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
130 |
if (rasInfo.rasBase) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
131 |
jdouble lslope = (dy1 == 0) ? 0 : dx1 / dy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
132 |
jdouble rslope = (dy2 == 0) ? 0 : dx2 / dy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
133 |
jlong ldx = DblToLong(lslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
134 |
jlong rdx = DblToLong(rslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
135 |
jint cy1, cy2, loy, hiy; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
136 |
dx1 += x0; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
137 |
dy1 += y0; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
138 |
dx2 += x0; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
139 |
dy2 += y0; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
140 |
cy1 = (jint) floor(dy1 + 0.5); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
141 |
cy2 = (jint) floor(dy2 + 0.5); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
142 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
143 |
/* Top triangular portion. */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
144 |
loy = iy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
145 |
hiy = (cy1 < cy2) ? cy1 : cy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
146 |
if (hiy > iy2) hiy = iy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
147 |
if (loy < hiy) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
148 |
jlong lx = PGRAM_INIT_X(loy, x0, y0, lslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
149 |
jlong rx = PGRAM_INIT_X(loy, x0, y0, rslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
150 |
(*pPrim->funcs.fillparallelogram)(&rasInfo, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
151 |
ix1, loy, ix2, hiy, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
152 |
lx, ldx, rx, rdx, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
153 |
pixel, pPrim, &compInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
154 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
155 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
156 |
/* Middle parallelogram portion, which way does it slant? */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
157 |
if (cy1 < cy2) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
158 |
/* Middle parallelogram portion, slanted to right. */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
159 |
/* left leg turned a corner at y0+dy1 */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
160 |
/* right leg continuing on its initial trajectory from y0 */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
161 |
loy = cy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
162 |
hiy = cy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
163 |
if (loy < iy1) loy = iy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
164 |
if (hiy > iy2) hiy = iy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
165 |
if (loy < hiy) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
166 |
jlong lx = PGRAM_INIT_X(loy, dx1, dy1, rslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
167 |
jlong rx = PGRAM_INIT_X(loy, x0, y0, rslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
168 |
(*pPrim->funcs.fillparallelogram)(&rasInfo, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
169 |
ix1, loy, ix2, hiy, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
170 |
lx, rdx, rx, rdx, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
171 |
pixel, pPrim, &compInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
172 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
173 |
} else if (cy2 < cy1) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
174 |
/* Middle parallelogram portion, slanted to left. */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
175 |
/* left leg continuing on its initial trajectory from y0 */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
176 |
/* right leg turned a corner at y0+dy2 */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
177 |
loy = cy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
178 |
hiy = cy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
179 |
if (loy < iy1) loy = iy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
180 |
if (hiy > iy2) hiy = iy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
181 |
if (loy < hiy) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
182 |
jlong lx = PGRAM_INIT_X(loy, x0, y0, lslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
183 |
jlong rx = PGRAM_INIT_X(loy, dx2, dy2, lslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
184 |
(*pPrim->funcs.fillparallelogram)(&rasInfo, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
185 |
ix1, loy, ix2, hiy, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
186 |
lx, ldx, rx, ldx, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
187 |
pixel, pPrim, &compInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
188 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
189 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
190 |
|
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
191 |
/* Bottom triangular portion. */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
192 |
loy = (cy1 > cy2) ? cy1 : cy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
193 |
if (loy < iy1) loy = iy1; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
194 |
hiy = iy2; |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
195 |
if (loy < hiy) { |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
196 |
/* left leg turned its corner at y0+dy1, now moving right */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
197 |
/* right leg turned its corner at y0+dy2, now moving left */ |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
198 |
jlong lx = PGRAM_INIT_X(loy, dx1, dy1, rslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
199 |
jlong rx = PGRAM_INIT_X(loy, dx2, dy2, lslope); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
200 |
(*pPrim->funcs.fillparallelogram)(&rasInfo, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
201 |
ix1, loy, ix2, hiy, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
202 |
lx, rdx, rx, ldx, |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
203 |
pixel, pPrim, &compInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
204 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
205 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
206 |
SurfaceData_InvokeRelease(env, sdOps, &rasInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
207 |
} |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
208 |
SurfaceData_InvokeUnlock(env, sdOps, &rasInfo); |
9b031d062ede
6775317: Improve performance of non-AA transformed rectangles and single wide lines in software pipelines
flar
parents:
diff
changeset
|
209 |
} |