Fixed off by one errors in clipping.
[mesa.git] / src / mesa / drivers / dri / gamma / gamma_inithw.c
1 /*
2 * Copyright 2001 by Alan Hourihane.
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of Alan Hourihane not be used in
9 * advertising or publicity pertaining to distribution of the software without
10 * specific, written prior permission. Alan Hourihane makes no representations
11 * about the suitability of this software for any purpose. It is provided
12 * "as is" without express or implied warranty.
13 *
14 * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
16 * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
21 *
22 * Authors: Alan Hourihane, <alanh@tungstengraphics.com>
23 * Kevin E. Martin <martin@valinux.com>
24 *
25 */
26 /* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.9 2002/10/30 12:51:29 alanh Exp $ */
27
28 #include "gamma_context.h"
29 #include "glint_dri.h"
30
31 void gammaInitHW( gammaContextPtr gmesa )
32 {
33 GLINTDRIPtr gDRIPriv = (GLINTDRIPtr)gmesa->driScreen->pDevPriv;
34 int i;
35
36 if (gDRIPriv->numMultiDevices == 2) {
37 /* Set up each MX's ScanLineOwnership for OpenGL */
38 CHECK_DMA_BUFFER(gmesa, 5);
39 WRITE(gmesa->buf, BroadcastMask, 1);
40 WRITE(gmesa->buf, ScanLineOwnership, 5); /* Use bottom left as [0,0] */
41 WRITE(gmesa->buf, BroadcastMask, 2);
42 WRITE(gmesa->buf, ScanLineOwnership, 1); /* Use bottom left as [0,0] */
43 /* Broadcast to both MX's */
44 WRITE(gmesa->buf, BroadcastMask, 3);
45 FLUSH_DMA_BUFFER(gmesa);
46 }
47
48 gmesa->AlphaBlendMode = (AlphaBlendModeDisable |
49 AB_Src_One |
50 AB_Dst_Zero |
51 AB_NoAlphaBufferPresent |
52 AB_ColorFmt_8888 |
53 AB_ColorOrder_RGB |
54 AB_OpenGLType |
55 AB_AlphaDst_FBData |
56 AB_ColorConversionScale |
57 AB_AlphaConversionScale);
58
59 gmesa->DitherMode = DitherModeEnable | DM_ColorOrder_RGB;
60
61 switch (gmesa->gammaScreen->cpp) {
62 case 2:
63 gmesa->DitherMode |= DM_ColorFmt_5555;
64 gmesa->AlphaBlendMode |= AB_ColorFmt_5555;
65 CHECK_DMA_BUFFER(gmesa, 1);
66 WRITE(gmesa->buf, PixelSize, 1);
67 break;
68 case 4:
69 gmesa->DitherMode |= DM_ColorFmt_8888;
70 gmesa->AlphaBlendMode |= AB_ColorFmt_8888;
71 WRITE(gmesa->buf, PixelSize, 0);
72 break;
73 }
74
75 /* FIXME for stencil, gid, etc */
76 switch (gmesa->DepthSize) {
77 case 16:
78 gmesa->LBReadFormat =
79 (LBRF_DepthWidth16 |
80 LBRF_StencilWidth8 |
81 LBRF_StencilPos16 |
82 LBRF_FrameCount8 |
83 LBRF_FrameCountPos24 |
84 LBRF_GIDWidth4 |
85 LBRF_GIDPos32 );
86 gmesa->LBWriteFormat =
87 (LBRF_DepthWidth16 |
88 LBRF_StencilWidth8 |
89 LBRF_StencilPos16 |
90 LBRF_FrameCount8 |
91 LBRF_FrameCountPos24 |
92 LBRF_GIDWidth4 |
93 LBRF_GIDPos32 );
94 break;
95 case 24:
96 gmesa->LBReadFormat =
97 (LBRF_DepthWidth24 |
98 LBRF_StencilWidth8 |
99 LBRF_StencilPos24 |
100 LBRF_FrameCount8 |
101 LBRF_FrameCountPos32 |
102 LBRF_GIDWidth4 |
103 LBRF_GIDPos36 );
104 gmesa->LBWriteFormat =
105 (LBRF_DepthWidth24 |
106 LBRF_StencilWidth8 |
107 LBRF_StencilPos24 |
108 LBRF_FrameCount8 |
109 LBRF_FrameCountPos32 |
110 LBRF_GIDWidth4 |
111 LBRF_GIDPos36 );
112 break;
113 case 32:
114 gmesa->LBReadFormat =
115 (LBRF_DepthWidth32 |
116 LBRF_StencilWidth8 |
117 LBRF_StencilPos32 |
118 LBRF_FrameCount8 |
119 LBRF_FrameCountPos40 |
120 LBRF_GIDWidth4 |
121 LBRF_GIDPos44 );
122 gmesa->LBWriteFormat =
123 (LBRF_DepthWidth32 |
124 LBRF_StencilWidth8 |
125 LBRF_StencilPos32 |
126 LBRF_FrameCount8 |
127 LBRF_FrameCountPos40 |
128 LBRF_GIDWidth4 |
129 LBRF_GIDPos44 );
130 break;
131 }
132
133 gmesa->FBHardwareWriteMask = 0xffffffff;
134 gmesa->FogMode = FogModeDisable;
135 gmesa->ClearDepth = 0xffffffff;
136 gmesa->AreaStippleMode = AreaStippleModeDisable;
137 gmesa->x = 0;
138 gmesa->y = 0;
139 gmesa->w = 0;
140 gmesa->h = 0;
141 gmesa->FrameCount = 0;
142 gmesa->MatrixMode = GL_MODELVIEW;
143 gmesa->ModelViewCount = 0;
144 gmesa->ProjCount = 0;
145 gmesa->TextureCount = 0;
146 gmesa->PointMode = PM_AntialiasQuality_4x4;
147 gmesa->LineMode = LM_AntialiasQuality_4x4;
148 gmesa->TriangleMode = TM_AntialiasQuality_4x4;
149 gmesa->AntialiasMode = AntialiasModeDisable;
150
151 for (i = 0; i < 16; i++)
152 if (i % 5 == 0)
153 gmesa->ModelView[i] =
154 gmesa->Proj[i] =
155 gmesa->ModelViewProj[i] =
156 gmesa->Texture[i] = 1.0;
157 else
158 gmesa->ModelView[i] =
159 gmesa->Proj[i] =
160 gmesa->ModelViewProj[i] =
161 gmesa->Texture[i] = 0.0;
162
163 gmesa->LBReadMode = (LBReadSrcDisable |
164 LBReadDstDisable |
165 LBDataTypeDefault |
166 LBWindowOriginBot |
167 gDRIPriv->pprod);
168 gmesa->FBReadMode = (FBReadSrcDisable |
169 FBReadDstDisable |
170 FBDataTypeDefault |
171 FBWindowOriginBot |
172 gDRIPriv->pprod);
173
174 if (gDRIPriv->numMultiDevices == 2) {
175 gmesa->LBReadMode |= LBScanLineInt2;
176 gmesa->FBReadMode |= FBScanLineInt2;
177 gmesa->LBWindowBase = gmesa->driScreen->fbWidth *
178 (gmesa->driScreen->fbHeight/2 - 1);
179 gmesa->FBWindowBase = gmesa->driScreen->fbWidth *
180 (gmesa->driScreen->fbHeight/2 - 1);
181 } else {
182 gmesa->LBWindowBase = gmesa->driScreen->fbWidth *
183 (gmesa->driScreen->fbHeight - 1);
184 gmesa->FBWindowBase = gmesa->driScreen->fbWidth *
185 (gmesa->driScreen->fbHeight - 1);
186 }
187
188 gmesa->Begin = (B_AreaStippleDisable |
189 B_LineStippleDisable |
190 B_AntiAliasDisable |
191 B_TextureDisable |
192 B_FogDisable |
193 B_SubPixelCorrectEnable |
194 B_PrimType_Null);
195
196 gmesa->ColorDDAMode = (ColorDDAEnable |
197 ColorDDAGouraud);
198
199 gmesa->GeometryMode = (GM_TextureDisable |
200 GM_FogDisable |
201 GM_FogExp |
202 GM_FrontPolyFill |
203 GM_BackPolyFill |
204 GM_FrontFaceCCW |
205 GM_PolyCullDisable |
206 GM_PolyCullBack |
207 GM_ClipShortLinesDisable |
208 GM_ClipSmallTrisDisable |
209 GM_RenderMode |
210 GM_Feedback2D |
211 GM_CullFaceNormDisable |
212 GM_AutoFaceNormDisable |
213 GM_GouraudShading |
214 GM_UserClipNone |
215 GM_PolyOffsetPointDisable |
216 GM_PolyOffsetLineDisable |
217 GM_PolyOffsetFillDisable |
218 GM_InvertFaceNormCullDisable);
219
220 gmesa->AlphaTestMode = (AlphaTestModeDisable |
221 AT_Always);
222
223 gmesa->AB_FBReadMode_Save = gmesa->AB_FBReadMode = 0;
224
225 gmesa->Window = (WindowEnable | /* For GID testing */
226 W_PassIfEqual |
227 (0 << 5)); /* GID part is set from draw priv (below) */
228
229 gmesa->NotClipped = GL_FALSE;
230 gmesa->WindowChanged = GL_TRUE;
231
232 gmesa->Texture1DEnabled = GL_FALSE;
233 gmesa->Texture2DEnabled = GL_FALSE;
234
235 gmesa->DepthMode |= (DepthModeDisable |
236 DM_WriteMask |
237 DM_Less);
238
239 gmesa->DeltaMode |= (DM_SubPixlCorrectionEnable |
240 DM_SmoothShadingEnable |
241 DM_Target500TXMX);
242
243 gmesa->LightingMode = LightingModeDisable | LightingModeSpecularEnable;
244 gmesa->Light0Mode = LNM_Off;
245 gmesa->Light1Mode = LNM_Off;
246 gmesa->Light2Mode = LNM_Off;
247 gmesa->Light3Mode = LNM_Off;
248 gmesa->Light4Mode = LNM_Off;
249 gmesa->Light5Mode = LNM_Off;
250 gmesa->Light6Mode = LNM_Off;
251 gmesa->Light7Mode = LNM_Off;
252 gmesa->Light8Mode = LNM_Off;
253 gmesa->Light9Mode = LNM_Off;
254 gmesa->Light10Mode = LNM_Off;
255 gmesa->Light11Mode = LNM_Off;
256 gmesa->Light12Mode = LNM_Off;
257 gmesa->Light13Mode = LNM_Off;
258 gmesa->Light14Mode = LNM_Off;
259 gmesa->Light15Mode = LNM_Off;
260
261 gmesa->LogicalOpMode = LogicalOpModeDisable;
262
263 gmesa->MaterialMode = MaterialModeDisable;
264
265 gmesa->ScissorMode = UserScissorDisable | ScreenScissorDisable;
266
267 gmesa->TransformMode = XM_UseModelViewProjMatrix |
268 XM_TexGenModeS_None |
269 XM_TexGenModeT_None |
270 XM_TexGenModeR_None |
271 XM_TexGenModeQ_None;
272
273 CHECK_DMA_BUFFER(gmesa, 20);
274 WRITE(gmesa->buf, LineStippleMode, 0);
275 WRITE(gmesa->buf, RouterMode, 0);
276 WRITE(gmesa->buf, TextureAddressMode, 0);
277 WRITE(gmesa->buf, TextureReadMode, 0);
278 WRITE(gmesa->buf, TextureFilterMode, 0);
279 WRITE(gmesa->buf, TextureColorMode, 0);
280 WRITE(gmesa->buf, StencilMode, 0);
281 WRITE(gmesa->buf, PatternRamMode, 0);
282 WRITE(gmesa->buf, ChromaTestMode, 0);
283 WRITE(gmesa->buf, StatisticMode, 0);
284 WRITE(gmesa->buf, AreaStippleMode, gmesa->AreaStippleMode);
285 WRITE(gmesa->buf, ScissorMode, gmesa->ScissorMode);
286 WRITE(gmesa->buf, FogMode, gmesa->FogMode);
287 WRITE(gmesa->buf, AntialiasMode, gmesa->AntialiasMode);
288 WRITE(gmesa->buf, LogicalOpMode, gmesa->LogicalOpMode);
289 WRITE(gmesa->buf, TriangleMode, gmesa->TriangleMode);
290 WRITE(gmesa->buf, PointMode, gmesa->PointMode);
291 WRITE(gmesa->buf, LineMode, gmesa->LineMode);
292 WRITE(gmesa->buf, LBWriteFormat, gmesa->LBWriteFormat);
293 WRITE(gmesa->buf, LBReadFormat, gmesa->LBReadFormat);
294
295 /* Framebuffer initialization */
296 CHECK_DMA_BUFFER(gmesa, 10);
297 WRITE(gmesa->buf, FBSourceData, 0);
298 WRITE(gmesa->buf, FBReadMode, gmesa->FBReadMode);
299 if (gmesa->EnabledFlags & GAMMA_BACK_BUFFER) {
300 if (gDRIPriv->numMultiDevices == 2) {
301 WRITE(gmesa->buf, FBPixelOffset,
302 (gmesa->driScreen->fbHeight/2)*gmesa->driScreen->fbWidth);
303 } else {
304 WRITE(gmesa->buf, FBPixelOffset,
305 gmesa->driScreen->fbHeight*gmesa->driScreen->fbWidth);
306 }
307 } else
308 WRITE(gmesa->buf, FBPixelOffset, 0);
309 WRITE(gmesa->buf, FBSourceOffset, 0);
310 WRITE(gmesa->buf, FBHardwareWriteMask, 0xffffffff);
311 WRITE(gmesa->buf, FBSoftwareWriteMask, 0xffffffff);
312 WRITE(gmesa->buf, FBWriteMode, FBWriteModeEnable);
313 WRITE(gmesa->buf, FBWindowBase, gmesa->FBWindowBase);
314 WRITE(gmesa->buf, ScreenSize, ((gmesa->driScreen->fbHeight << 16) |
315 (gmesa->driScreen->fbWidth)));
316 WRITE(gmesa->buf, WindowOrigin, 0x00000000);
317
318 /* Localbuffer initialization */
319 CHECK_DMA_BUFFER(gmesa, 5);
320 WRITE(gmesa->buf, LBReadMode, gmesa->LBReadMode);
321 WRITE(gmesa->buf, LBSourceOffset, 0);
322 WRITE(gmesa->buf, LBWriteMode, LBWriteModeEnable);
323 WRITE(gmesa->buf, LBWindowOffset, 0);
324 WRITE(gmesa->buf, LBWindowBase, gmesa->LBWindowBase);
325
326 CHECK_DMA_BUFFER(gmesa, 1);
327 WRITE(gmesa->buf, Rectangle2DControl, 1);
328
329 CHECK_DMA_BUFFER(gmesa, 11);
330 WRITE(gmesa->buf, DepthMode, gmesa->DepthMode);
331 WRITE(gmesa->buf, ColorDDAMode, gmesa->ColorDDAMode);
332 WRITE(gmesa->buf, FBBlockColor, 0x00000000);
333 WRITE(gmesa->buf, ConstantColor, 0x00000000);
334 WRITE(gmesa->buf, AlphaTestMode, gmesa->AlphaTestMode);
335 WRITE(gmesa->buf, AlphaBlendMode, gmesa->AlphaBlendMode);
336 WRITE(gmesa->buf, DitherMode, gmesa->DitherMode);
337 if (gDRIPriv->numMultiDevices == 2)
338 WRITE(gmesa->buf, RasterizerMode, RM_MultiGLINT | RM_BiasCoordNearHalf);
339 else
340 WRITE(gmesa->buf, RasterizerMode, RM_BiasCoordNearHalf);
341 WRITE(gmesa->buf, GLINTWindow, gmesa->Window);
342 WRITE(gmesa->buf, FastClearDepth, gmesa->ClearDepth);
343 WRITE(gmesa->buf, GLINTDepth, gmesa->ClearDepth);
344
345 CHECK_DMA_BUFFER(gmesa, 1);
346 WRITE(gmesa->buf, EdgeFlag, EdgeFlagEnable);
347
348 CHECK_DMA_BUFFER(gmesa, 16);
349 WRITEF(gmesa->buf, ModelViewMatrix0, 1.0);
350 WRITEF(gmesa->buf, ModelViewMatrix1, 0.0);
351 WRITEF(gmesa->buf, ModelViewMatrix2, 0.0);
352 WRITEF(gmesa->buf, ModelViewMatrix3, 0.0);
353 WRITEF(gmesa->buf, ModelViewMatrix4, 0.0);
354 WRITEF(gmesa->buf, ModelViewMatrix5, 1.0);
355 WRITEF(gmesa->buf, ModelViewMatrix6, 0.0);
356 WRITEF(gmesa->buf, ModelViewMatrix7, 0.0);
357 WRITEF(gmesa->buf, ModelViewMatrix8, 0.0);
358 WRITEF(gmesa->buf, ModelViewMatrix9, 0.0);
359 WRITEF(gmesa->buf, ModelViewMatrix10, 1.0);
360 WRITEF(gmesa->buf, ModelViewMatrix11, 0.0);
361 WRITEF(gmesa->buf, ModelViewMatrix12, 0.0);
362 WRITEF(gmesa->buf, ModelViewMatrix13, 0.0);
363 WRITEF(gmesa->buf, ModelViewMatrix14, 0.0);
364 WRITEF(gmesa->buf, ModelViewMatrix15, 1.0);
365
366 CHECK_DMA_BUFFER(gmesa, 16);
367 WRITEF(gmesa->buf, ModelViewProjectionMatrix0, 1.0);
368 WRITEF(gmesa->buf, ModelViewProjectionMatrix1, 0.0);
369 WRITEF(gmesa->buf, ModelViewProjectionMatrix2, 0.0);
370 WRITEF(gmesa->buf, ModelViewProjectionMatrix3, 0.0);
371 WRITEF(gmesa->buf, ModelViewProjectionMatrix4, 0.0);
372 WRITEF(gmesa->buf, ModelViewProjectionMatrix5, 1.0);
373 WRITEF(gmesa->buf, ModelViewProjectionMatrix6, 0.0);
374 WRITEF(gmesa->buf, ModelViewProjectionMatrix7, 0.0);
375 WRITEF(gmesa->buf, ModelViewProjectionMatrix8, 0.0);
376 WRITEF(gmesa->buf, ModelViewProjectionMatrix9, 0.0);
377 WRITEF(gmesa->buf, ModelViewProjectionMatrix10, 1.0);
378 WRITEF(gmesa->buf, ModelViewProjectionMatrix11, 0.0);
379 WRITEF(gmesa->buf, ModelViewProjectionMatrix12, 0.0);
380 WRITEF(gmesa->buf, ModelViewProjectionMatrix13, 0.0);
381 WRITEF(gmesa->buf, ModelViewProjectionMatrix14, 0.0);
382 WRITEF(gmesa->buf, ModelViewProjectionMatrix15, 1.0);
383
384 CHECK_DMA_BUFFER(gmesa, 16);
385 WRITEF(gmesa->buf, TextureMatrix0, 1.0);
386 WRITEF(gmesa->buf, TextureMatrix1, 0.0);
387 WRITEF(gmesa->buf, TextureMatrix2, 0.0);
388 WRITEF(gmesa->buf, TextureMatrix3, 0.0);
389 WRITEF(gmesa->buf, TextureMatrix4, 0.0);
390 WRITEF(gmesa->buf, TextureMatrix5, 1.0);
391 WRITEF(gmesa->buf, TextureMatrix6, 0.0);
392 WRITEF(gmesa->buf, TextureMatrix7, 0.0);
393 WRITEF(gmesa->buf, TextureMatrix8, 0.0);
394 WRITEF(gmesa->buf, TextureMatrix9, 0.0);
395 WRITEF(gmesa->buf, TextureMatrix10, 1.0);
396 WRITEF(gmesa->buf, TextureMatrix11, 0.0);
397 WRITEF(gmesa->buf, TextureMatrix12, 0.0);
398 WRITEF(gmesa->buf, TextureMatrix13, 0.0);
399 WRITEF(gmesa->buf, TextureMatrix14, 0.0);
400 WRITEF(gmesa->buf, TextureMatrix15, 1.0);
401
402 CHECK_DMA_BUFFER(gmesa, 16);
403 WRITEF(gmesa->buf, TexGen0, 0.0);
404 WRITEF(gmesa->buf, TexGen1, 0.0);
405 WRITEF(gmesa->buf, TexGen2, 0.0);
406 WRITEF(gmesa->buf, TexGen3, 0.0);
407 WRITEF(gmesa->buf, TexGen4, 0.0);
408 WRITEF(gmesa->buf, TexGen5, 0.0);
409 WRITEF(gmesa->buf, TexGen6, 0.0);
410 WRITEF(gmesa->buf, TexGen7, 0.0);
411 WRITEF(gmesa->buf, TexGen8, 0.0);
412 WRITEF(gmesa->buf, TexGen9, 0.0);
413 WRITEF(gmesa->buf, TexGen10, 0.0);
414 WRITEF(gmesa->buf, TexGen11, 0.0);
415 WRITEF(gmesa->buf, TexGen12, 0.0);
416 WRITEF(gmesa->buf, TexGen13, 0.0);
417 WRITEF(gmesa->buf, TexGen14, 0.0);
418 WRITEF(gmesa->buf, TexGen15, 0.0);
419
420 CHECK_DMA_BUFFER(gmesa, 9);
421 WRITEF(gmesa->buf, NormalMatrix0, 1.0);
422 WRITEF(gmesa->buf, NormalMatrix1, 0.0);
423 WRITEF(gmesa->buf, NormalMatrix2, 0.0);
424 WRITEF(gmesa->buf, NormalMatrix3, 0.0);
425 WRITEF(gmesa->buf, NormalMatrix4, 1.0);
426 WRITEF(gmesa->buf, NormalMatrix5, 0.0);
427 WRITEF(gmesa->buf, NormalMatrix6, 0.0);
428 WRITEF(gmesa->buf, NormalMatrix7, 0.0);
429 WRITEF(gmesa->buf, NormalMatrix8, 1.0);
430
431 CHECK_DMA_BUFFER(gmesa, 3);
432 WRITEF(gmesa->buf, FogDensity, 0.0);
433 WRITEF(gmesa->buf, FogEnd, 0.0);
434 WRITEF(gmesa->buf, FogScale, 0.0);
435
436 CHECK_DMA_BUFFER(gmesa, 2);
437 WRITEF(gmesa->buf, LineClipLengthThreshold, 0.0);
438 WRITEF(gmesa->buf, TriangleClipAreaThreshold, 0.0);
439
440 CHECK_DMA_BUFFER(gmesa, 5);
441 WRITE(gmesa->buf, GeometryMode, gmesa->GeometryMode);
442 WRITE(gmesa->buf, NormalizeMode, NormalizeModeDisable);
443 WRITE(gmesa->buf, LightingMode, gmesa->LightingMode);
444 WRITE(gmesa->buf, ColorMaterialMode, ColorMaterialModeDisable);
445 WRITE(gmesa->buf, MaterialMode, MaterialModeDisable);
446
447 CHECK_DMA_BUFFER(gmesa, 2);
448 WRITE(gmesa->buf, FrontSpecularExponent, 0); /* fixed point */
449 WRITE(gmesa->buf, BackSpecularExponent, 0); /* fixed point */
450
451 CHECK_DMA_BUFFER(gmesa, 29);
452 WRITEF(gmesa->buf, FrontAmbientColorRed, 0.2);
453 WRITEF(gmesa->buf, FrontAmbientColorGreen, 0.2);
454 WRITEF(gmesa->buf, FrontAmbientColorBlue, 0.2);
455 WRITEF(gmesa->buf, BackAmbientColorRed, 0.2);
456 WRITEF(gmesa->buf, BackAmbientColorGreen, 0.2);
457 WRITEF(gmesa->buf, BackAmbientColorBlue, 0.2);
458 WRITEF(gmesa->buf, FrontDiffuseColorRed, 0.8);
459 WRITEF(gmesa->buf, FrontDiffuseColorGreen, 0.8);
460 WRITEF(gmesa->buf, FrontDiffuseColorBlue, 0.8);
461 WRITEF(gmesa->buf, BackDiffuseColorRed, 0.8);
462 WRITEF(gmesa->buf, BackDiffuseColorGreen, 0.8);
463 WRITEF(gmesa->buf, BackDiffuseColorBlue, 0.8);
464 WRITEF(gmesa->buf, FrontSpecularColorRed, 0.0);
465 WRITEF(gmesa->buf, FrontSpecularColorGreen, 0.0);
466 WRITEF(gmesa->buf, FrontSpecularColorBlue, 0.0);
467 WRITEF(gmesa->buf, BackSpecularColorRed, 0.0);
468 WRITEF(gmesa->buf, BackSpecularColorGreen, 0.0);
469 WRITEF(gmesa->buf, BackSpecularColorBlue, 0.0);
470 WRITEF(gmesa->buf, FrontEmissiveColorRed, 0.0);
471 WRITEF(gmesa->buf, FrontEmissiveColorGreen, 0.0);
472 WRITEF(gmesa->buf, FrontEmissiveColorBlue, 0.0);
473 WRITEF(gmesa->buf, BackEmissiveColorRed, 0.0);
474 WRITEF(gmesa->buf, BackEmissiveColorGreen, 0.0);
475 WRITEF(gmesa->buf, BackEmissiveColorBlue, 0.0);
476 WRITEF(gmesa->buf, SceneAmbientColorRed, 0.2);
477 WRITEF(gmesa->buf, SceneAmbientColorGreen, 0.2);
478 WRITEF(gmesa->buf, SceneAmbientColorBlue, 0.2);
479 WRITEF(gmesa->buf, FrontAlpha, 1.0);
480 WRITEF(gmesa->buf, BackAlpha, 1.0);
481
482 CHECK_DMA_BUFFER(gmesa, 7);
483 WRITE(gmesa->buf, PointSize, 1);
484 WRITEF(gmesa->buf, AApointSize, 1.0);
485 WRITE(gmesa->buf, LineWidth, 1);
486 WRITEF(gmesa->buf, AAlineWidth, 1.0);
487 WRITE(gmesa->buf, LineWidthOffset, 0);
488 WRITE(gmesa->buf, TransformMode, gmesa->TransformMode);
489 WRITE(gmesa->buf, DeltaMode, gmesa->DeltaMode);
490
491 CHECK_DMA_BUFFER(gmesa, 16);
492 WRITE(gmesa->buf, Light0Mode, LNM_Off);
493 WRITE(gmesa->buf, Light1Mode, LNM_Off);
494 WRITE(gmesa->buf, Light2Mode, LNM_Off);
495 WRITE(gmesa->buf, Light3Mode, LNM_Off);
496 WRITE(gmesa->buf, Light4Mode, LNM_Off);
497 WRITE(gmesa->buf, Light5Mode, LNM_Off);
498 WRITE(gmesa->buf, Light6Mode, LNM_Off);
499 WRITE(gmesa->buf, Light7Mode, LNM_Off);
500 WRITE(gmesa->buf, Light8Mode, LNM_Off);
501 WRITE(gmesa->buf, Light9Mode, LNM_Off);
502 WRITE(gmesa->buf, Light10Mode, LNM_Off);
503 WRITE(gmesa->buf, Light11Mode, LNM_Off);
504 WRITE(gmesa->buf, Light12Mode, LNM_Off);
505 WRITE(gmesa->buf, Light13Mode, LNM_Off);
506 WRITE(gmesa->buf, Light14Mode, LNM_Off);
507 WRITE(gmesa->buf, Light15Mode, LNM_Off);
508
509 CHECK_DMA_BUFFER(gmesa, 22);
510 WRITEF(gmesa->buf, Light0AmbientIntensityBlue, 0.0);
511 WRITEF(gmesa->buf, Light0AmbientIntensityGreen, 0.0);
512 WRITEF(gmesa->buf, Light0AmbientIntensityRed, 0.0);
513 WRITEF(gmesa->buf, Light0DiffuseIntensityBlue, 1.0);
514 WRITEF(gmesa->buf, Light0DiffuseIntensityGreen, 1.0);
515 WRITEF(gmesa->buf, Light0DiffuseIntensityRed, 1.0);
516 WRITEF(gmesa->buf, Light0SpecularIntensityBlue, 1.0);
517 WRITEF(gmesa->buf, Light0SpecularIntensityGreen, 1.0);
518 WRITEF(gmesa->buf, Light0SpecularIntensityRed, 1.0);
519 WRITEF(gmesa->buf, Light0SpotlightDirectionZ, 0.0);
520 WRITEF(gmesa->buf, Light0SpotlightDirectionY, 0.0);
521 WRITEF(gmesa->buf, Light0SpotlightDirectionX, -1.0);
522 WRITEF(gmesa->buf, Light0SpotlightExponent, 0.0);
523 WRITEF(gmesa->buf, Light0PositionZ, 0.0);
524 WRITEF(gmesa->buf, Light0PositionY, 0.0);
525 WRITEF(gmesa->buf, Light0PositionX, 1.0);
526 WRITEF(gmesa->buf, Light0PositionW, 0.0);
527 WRITEF(gmesa->buf, Light0CosSpotlightCutoffAngle, -1.0);
528 WRITEF(gmesa->buf, Light0ConstantAttenuation, 1.0);
529 WRITEF(gmesa->buf, Light0LinearAttenuation, 0.0);
530 WRITEF(gmesa->buf, Light0QuadraticAttenuation,0.0);
531
532 CHECK_DMA_BUFFER(gmesa, 2);
533 WRITEF(gmesa->buf, XBias, 0.0);
534 WRITEF(gmesa->buf, YBias, 0.0);
535
536 CHECK_DMA_BUFFER(gmesa, 6);
537 WRITEF(gmesa->buf, ViewPortScaleX, gmesa->driScreen->fbWidth/4);
538 WRITEF(gmesa->buf, ViewPortScaleY, gmesa->driScreen->fbHeight/4);
539 WRITEF(gmesa->buf, ViewPortScaleZ, 1.0f);
540 WRITEF(gmesa->buf, ViewPortOffsetX, gmesa->x);
541 WRITEF(gmesa->buf, ViewPortOffsetY, gmesa->y);
542 WRITEF(gmesa->buf, ViewPortOffsetZ, 0.0f);
543
544 CHECK_DMA_BUFFER(gmesa, 3);
545 WRITEF(gmesa->buf, Nz, 1.0);
546 WRITEF(gmesa->buf, Ny, 0.0);
547 WRITEF(gmesa->buf, Nx, 0.0);
548
549 /* Send the initialization commands to the HW */
550 FLUSH_DMA_BUFFER(gmesa);
551 }