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