2 * Copyright 2001 by Alan Hourihane.
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.
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.
22 * Authors: Alan Hourihane, <alanh@tungstengraphics.com>
23 * Kevin E. Martin <martin@valinux.com>
27 #include "gammacontext.h"
28 #include "glint_dri.h"
30 void gammaInitHW( gammaContextPtr gmesa
)
32 GLINTDRIPtr gDRIPriv
= (GLINTDRIPtr
)gmesa
->driScreen
->pDevPriv
;
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
);
47 gmesa
->AlphaBlendMode
= (AlphaBlendModeDisable
|
50 AB_NoAlphaBufferPresent
|
55 AB_ColorConversionScale
|
56 AB_AlphaConversionScale
);
58 gmesa
->DitherMode
= DitherModeEnable
| DM_ColorOrder_RGB
;
60 switch (gmesa
->gammaScreen
->cpp
) {
62 gmesa
->DitherMode
|= DM_ColorFmt_5555
;
63 gmesa
->AlphaBlendMode
|= AB_ColorFmt_5555
;
64 CHECK_DMA_BUFFER(gmesa
, 1);
65 WRITE(gmesa
->buf
, PixelSize
, 1);
68 gmesa
->DitherMode
|= DM_ColorFmt_8888
;
69 gmesa
->AlphaBlendMode
|= AB_ColorFmt_8888
;
70 WRITE(gmesa
->buf
, PixelSize
, 0);
74 /* FIXME for stencil, gid, etc */
75 switch (gmesa
->DepthSize
) {
82 LBRF_FrameCountPos24
|
85 gmesa
->LBWriteFormat
=
90 LBRF_FrameCountPos24
|
100 LBRF_FrameCountPos32
|
103 gmesa
->LBWriteFormat
=
108 LBRF_FrameCountPos32
|
113 gmesa
->LBReadFormat
=
118 LBRF_FrameCountPos40
|
121 gmesa
->LBWriteFormat
=
126 LBRF_FrameCountPos40
|
132 gmesa
->FBHardwareWriteMask
= 0xffffffff;
133 gmesa
->FogMode
= FogModeDisable
;
134 gmesa
->ClearDepth
= 0xffffffff;
135 gmesa
->AreaStippleMode
= AreaStippleModeDisable
;
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
;
150 for (i
= 0; i
< 16; i
++)
152 gmesa
->ModelView
[i
] =
154 gmesa
->ModelViewProj
[i
] =
155 gmesa
->Texture
[i
] = 1.0;
157 gmesa
->ModelView
[i
] =
159 gmesa
->ModelViewProj
[i
] =
160 gmesa
->Texture
[i
] = 0.0;
162 gmesa
->LBReadMode
= (LBReadSrcDisable
|
167 gmesa
->FBReadMode
= (FBReadSrcDisable
|
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);
181 gmesa
->LBWindowBase
= gmesa
->driScreen
->fbWidth
*
182 (gmesa
->driScreen
->fbHeight
- 1);
183 gmesa
->FBWindowBase
= gmesa
->driScreen
->fbWidth
*
184 (gmesa
->driScreen
->fbHeight
- 1);
187 gmesa
->Begin
= (B_AreaStippleDisable
|
188 B_LineStippleDisable
|
192 B_SubPixelCorrectEnable
|
195 gmesa
->ColorDDAMode
= (ColorDDAEnable
|
198 gmesa
->GeometryMode
= (GM_TextureDisable
|
206 GM_ClipShortLinesDisable
|
207 GM_ClipSmallTrisDisable
|
210 GM_CullFaceNormDisable
|
211 GM_AutoFaceNormDisable
|
214 GM_PolyOffsetPointDisable
|
215 GM_PolyOffsetLineDisable
|
216 GM_PolyOffsetFillDisable
|
217 GM_InvertFaceNormCullDisable
);
219 gmesa
->AlphaTestMode
= (AlphaTestModeDisable
|
222 gmesa
->AB_FBReadMode_Save
= gmesa
->AB_FBReadMode
= 0;
224 gmesa
->Window
= (WindowEnable
| /* For GID testing */
226 (0 << 5)); /* GID part is set from draw priv (below) */
228 gmesa
->NotClipped
= GL_FALSE
;
229 gmesa
->WindowChanged
= GL_TRUE
;
231 gmesa
->Texture1DEnabled
= GL_FALSE
;
232 gmesa
->Texture2DEnabled
= GL_FALSE
;
234 gmesa
->DepthMode
|= (DepthModeDisable
|
238 gmesa
->DeltaMode
|= (DM_SubPixlCorrectionEnable
|
239 DM_SmoothShadingEnable
|
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
;
260 gmesa
->LogicalOpMode
= LogicalOpModeDisable
;
262 gmesa
->MaterialMode
= MaterialModeDisable
;
264 gmesa
->ScissorMode
= UserScissorDisable
| ScreenScissorDisable
;
266 gmesa
->TransformMode
= XM_UseModelViewProjMatrix
|
267 XM_TexGenModeS_None
|
268 XM_TexGenModeT_None
|
269 XM_TexGenModeR_None
|
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
);
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
);
303 WRITE(gmesa
->buf
, FBPixelOffset
,
304 gmesa
->driScreen
->fbHeight
*gmesa
->driScreen
->fbWidth
);
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);
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
);
325 CHECK_DMA_BUFFER(gmesa
, 1);
326 WRITE(gmesa
->buf
, Rectangle2DControl
, 1);
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
);
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
);
344 CHECK_DMA_BUFFER(gmesa
, 1);
345 WRITE(gmesa
->buf
, EdgeFlag
, EdgeFlagEnable
);
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);
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);
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);
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);
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);
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);
435 CHECK_DMA_BUFFER(gmesa
, 2);
436 WRITEF(gmesa
->buf
, LineClipLengthThreshold
, 0.0);
437 WRITEF(gmesa
->buf
, TriangleClipAreaThreshold
, 0.0);
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
);
446 CHECK_DMA_BUFFER(gmesa
, 2);
447 WRITE(gmesa
->buf
, FrontSpecularExponent
, 0); /* fixed point */
448 WRITE(gmesa
->buf
, BackSpecularExponent
, 0); /* fixed point */
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);
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
);
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
);
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);
531 CHECK_DMA_BUFFER(gmesa
, 2);
532 WRITEF(gmesa
->buf
, XBias
, 0.0);
533 WRITEF(gmesa
->buf
, YBias
, 0.0);
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
);
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);
548 /* Send the initialization commands to the HW */
549 FLUSH_DMA_BUFFER(gmesa
);