mesa: added "main/" prefix to includes, remove some -I paths from Makefile.template
[mesa.git] / src / mesa / drivers / dri / ffb / ffb_tritmp.h
1 /* $XFree86: xc/lib/GL/mesa/src/drv/ffb/ffb_tritmp.h,v 1.2 2002/02/22 21:32:59 dawes Exp $ */
2
3 static void TAG(ffb_triangle)( GLcontext *ctx,
4 ffb_vertex *v0,
5 ffb_vertex *v1,
6 ffb_vertex *v2 )
7 {
8 ffbContextPtr fmesa = FFB_CONTEXT(ctx);
9 ffb_fbcPtr ffb = fmesa->regs;
10 #if (IND & FFB_TRI_FLAT_BIT)
11 GLuint const_fg;
12 #endif
13 FFB_DELAYED_VIEWPORT_VARS;
14
15 #ifdef TRI_DEBUG
16 fprintf(stderr, "FFB: ffb_triangle ["
17 #if (IND & FFB_TRI_CULL_BIT)
18 " CULL"
19 #endif
20 #if (IND & FFB_TRI_FLAT_BIT)
21 " FLAT"
22 #endif
23 #if (IND & FFB_TRI_ALPHA_BIT)
24 " ALPHA"
25 #endif
26 " ]\n");
27 #endif
28
29 #if (IND & FFB_TRI_CULL_BIT)
30 { /* NOTE: These are not viewport transformed yet. */
31 GLfloat ex = v1->x - v0->x;
32 GLfloat ey = v1->y - v0->y;
33 GLfloat fx = v2->x - v0->x;
34 GLfloat fy = v2->y - v0->y;
35 GLfloat c = ex*fy-ey*fx;
36
37 /* Culled... */
38 if (c * fmesa->backface_sign > fmesa->ffb_zero)
39 return;
40 }
41 #endif
42
43 #if (IND & FFB_TRI_FLAT_BIT)
44 const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v2->color[0] );
45 #ifdef TRI_DEBUG
46 fprintf(stderr, "FFB_tri: const_fg %08x (B[%f] G[%f] R[%f])\n",
47 const_fg,
48 FFB_2_30_FIXED_TO_FLOAT(v2->color[0].blue),
49 FFB_2_30_FIXED_TO_FLOAT(v2->color[0].green),
50 FFB_2_30_FIXED_TO_FLOAT(v2->color[0].red));
51 #endif
52 #endif
53
54
55 #if (IND & FFB_TRI_FLAT_BIT)
56 FFBFifo(fmesa, 1);
57 ffb->fg = const_fg;
58 #endif
59
60 #if (IND & FFB_TRI_FLAT_BIT)
61 FFBFifo(fmesa, 9);
62 #else
63 #if (IND & FFB_TRI_ALPHA_BIT)
64 FFBFifo(fmesa, 21);
65 #else
66 FFBFifo(fmesa, 18);
67 #endif
68 #endif
69
70 FFB_DUMP_VERTEX(v0);
71 #if !(IND & FFB_TRI_FLAT_BIT)
72 #if (IND & FFB_TRI_ALPHA_BIT)
73 ffb->alpha = FFB_GET_ALPHA(v0);
74 #endif
75 ffb->red = FFB_GET_RED(v0);
76 ffb->green = FFB_GET_GREEN(v0);
77 ffb->blue = FFB_GET_BLUE(v0);
78 #endif
79 ffb->z = FFB_GET_Z(v0);
80 ffb->ryf = FFB_GET_Y(v0);
81 ffb->rxf = FFB_GET_X(v0);
82
83 FFB_DUMP_VERTEX(v1);
84 #if !(IND & FFB_TRI_FLAT_BIT)
85 #if (IND & FFB_TRI_ALPHA_BIT)
86 ffb->alpha = FFB_GET_ALPHA(v1);
87 #endif
88 ffb->red = FFB_GET_RED(v1);
89 ffb->green = FFB_GET_GREEN(v1);
90 ffb->blue = FFB_GET_BLUE(v1);
91 #endif
92 ffb->z = FFB_GET_Z(v1);
93 ffb->y = FFB_GET_Y(v1);
94 ffb->x = FFB_GET_X(v1);
95
96 FFB_DUMP_VERTEX(v2);
97 #if !(IND & FFB_TRI_FLAT_BIT)
98 #if (IND & FFB_TRI_ALPHA_BIT)
99 ffb->alpha = FFB_GET_ALPHA(v2);
100 #endif
101 ffb->red = FFB_GET_RED(v2);
102 ffb->green = FFB_GET_GREEN(v2);
103 ffb->blue = FFB_GET_BLUE(v2);
104 #endif
105 ffb->z = FFB_GET_Z(v2);
106 ffb->y = FFB_GET_Y(v2);
107 ffb->x = FFB_GET_X(v2);
108
109 fmesa->ffbScreen->rp_active = 1;
110 }
111
112
113 static void TAG(ffb_quad)(GLcontext *ctx,
114 ffb_vertex *v0,
115 ffb_vertex *v1,
116 ffb_vertex *v2,
117 ffb_vertex *v3 )
118 {
119 ffbContextPtr fmesa = FFB_CONTEXT(ctx);
120 ffb_fbcPtr ffb = fmesa->regs;
121 #if (IND & FFB_TRI_FLAT_BIT)
122 GLuint const_fg;
123 #endif
124 FFB_DELAYED_VIEWPORT_VARS;
125
126 #ifdef TRI_DEBUG
127 fprintf(stderr, "FFB: ffb_quad ["
128 #if (IND & FFB_TRI_CULL_BIT)
129 " CULL"
130 #endif
131 #if (IND & FFB_TRI_FLAT_BIT)
132 " FLAT"
133 #endif
134 #if (IND & FFB_TRI_ALPHA_BIT)
135 " ALPHA"
136 #endif
137 " ]\n");
138 #endif /* TRI_DEBUG */
139
140 #if (IND & FFB_TRI_CULL_BIT)
141 { /* NOTE: These are not viewport transformed yet. */
142 GLfloat ex = v2->x - v0->x;
143 GLfloat ey = v2->y - v0->y;
144 GLfloat fx = v3->x - v1->x;
145 GLfloat fy = v3->y - v1->y;
146 GLfloat c = ex*fy-ey*fx;
147
148 /* Culled... */
149 if (c * fmesa->backface_sign > fmesa->ffb_zero)
150 return;
151 }
152 #endif
153
154 #if (IND & FFB_TRI_FLAT_BIT)
155 const_fg = FFB_PACK_CONST_UBYTE_ARGB_COLOR( v3->color[0] );
156 #ifdef TRI_DEBUG
157 fprintf(stderr, "FFB_quad: const_fg %08x (B[%f] G[%f] R[%f])\n",
158 const_fg,
159 FFB_2_30_FIXED_TO_FLOAT(v3->color[0].blue),
160 FFB_2_30_FIXED_TO_FLOAT(v3->color[0].green),
161 FFB_2_30_FIXED_TO_FLOAT(v3->color[0].red));
162 #endif
163 #endif
164
165
166 #if (IND & FFB_TRI_FLAT_BIT)
167 FFBFifo(fmesa, 13);
168 ffb->fg = const_fg;
169 #else
170 #if (IND & FFB_TRI_ALPHA_BIT)
171 FFBFifo(fmesa, 28);
172 #else
173 FFBFifo(fmesa, 24);
174 #endif
175 #endif
176
177 FFB_DUMP_VERTEX(v0);
178 #if !(IND & FFB_TRI_FLAT_BIT)
179 #if (IND & FFB_TRI_ALPHA_BIT)
180 ffb->alpha = FFB_GET_ALPHA(v0);
181 #endif
182 ffb->red = FFB_GET_RED(v0);
183 ffb->green = FFB_GET_GREEN(v0);
184 ffb->blue = FFB_GET_BLUE(v0);
185 #endif
186 ffb->z = FFB_GET_Z(v0);
187 ffb->ryf = FFB_GET_Y(v0);
188 ffb->rxf = FFB_GET_X(v0);
189
190 FFB_DUMP_VERTEX(v1);
191 #if !(IND & FFB_TRI_FLAT_BIT)
192 #if (IND & FFB_TRI_ALPHA_BIT)
193 ffb->alpha = FFB_GET_ALPHA(v1);
194 #endif
195 ffb->red = FFB_GET_RED(v1);
196 ffb->green = FFB_GET_GREEN(v1);
197 ffb->blue = FFB_GET_BLUE(v1);
198 #endif
199 ffb->z = FFB_GET_Z(v1);
200 ffb->y = FFB_GET_Y(v1);
201 ffb->x = FFB_GET_X(v1);
202
203 FFB_DUMP_VERTEX(v2);
204 #if !(IND & FFB_TRI_FLAT_BIT)
205 #if (IND & FFB_TRI_ALPHA_BIT)
206 ffb->alpha = FFB_GET_ALPHA(v2);
207 #endif
208 ffb->red = FFB_GET_RED(v2);
209 ffb->green = FFB_GET_GREEN(v2);
210 ffb->blue = FFB_GET_BLUE(v2);
211 #endif
212 ffb->z = FFB_GET_Z(v2);
213 ffb->y = FFB_GET_Y(v2);
214 ffb->x = FFB_GET_X(v2);
215
216 FFB_DUMP_VERTEX(v3);
217 #if !(IND & FFB_TRI_FLAT_BIT)
218 #if (IND & FFB_TRI_ALPHA_BIT)
219 ffb->alpha = FFB_GET_ALPHA(v3);
220 #endif
221 ffb->red = FFB_GET_RED(v3);
222 ffb->green = FFB_GET_GREEN(v3);
223 ffb->blue = FFB_GET_BLUE(v3);
224 #endif
225 ffb->z = FFB_GET_Z(v3);
226 ffb->dmyf = FFB_GET_Y(v3);
227 ffb->dmxf = FFB_GET_X(v3);
228
229 fmesa->ffbScreen->rp_active = 1;
230 }
231
232 static void TAG(ffb_init)(void)
233 {
234 ffb_tri_tab[IND] = TAG(ffb_triangle);
235 ffb_quad_tab[IND] = TAG(ffb_quad);
236 }
237
238 #undef IND
239 #undef TAG