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>
26 /* $XFree86: xc/lib/GL/mesa/src/drv/gamma/gamma_inithw.c,v 1.9 2002/10/30 12:51:29 alanh Exp $ */
28 #include "gamma_context.h"
29 #include "glint_dri.h"
31 void gammaInitHW( gammaContextPtr gmesa
)
33 GLINTDRIPtr gDRIPriv
= (GLINTDRIPtr
)gmesa
->driScreen
->pDevPriv
;
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
);
48 gmesa
->AlphaBlendMode
= (AlphaBlendModeDisable
|
51 AB_NoAlphaBufferPresent
|
56 AB_ColorConversionScale
|
57 AB_AlphaConversionScale
);
59 gmesa
->DitherMode
= DitherModeEnable
| DM_ColorOrder_RGB
;
61 switch (gmesa
->gammaScreen
->cpp
) {
63 gmesa
->DitherMode
|= DM_ColorFmt_5555
;
64 gmesa
->AlphaBlendMode
|= AB_ColorFmt_5555
;
65 CHECK_DMA_BUFFER(gmesa
, 1);
66 WRITE(gmesa
->buf
, PixelSize
, 1);
69 gmesa
->DitherMode
|= DM_ColorFmt_8888
;
70 gmesa
->AlphaBlendMode
|= AB_ColorFmt_8888
;
71 WRITE(gmesa
->buf
, PixelSize
, 0);
75 /* FIXME for stencil, gid, etc */
76 switch (gmesa
->DepthSize
) {
83 LBRF_FrameCountPos24
|
86 gmesa
->LBWriteFormat
=
91 LBRF_FrameCountPos24
|
101 LBRF_FrameCountPos32
|
104 gmesa
->LBWriteFormat
=
109 LBRF_FrameCountPos32
|
114 gmesa
->LBReadFormat
=
119 LBRF_FrameCountPos40
|
122 gmesa
->LBWriteFormat
=
127 LBRF_FrameCountPos40
|
133 gmesa
->FBHardwareWriteMask
= 0xffffffff;
134 gmesa
->FogMode
= FogModeDisable
;
135 gmesa
->ClearDepth
= 0xffffffff;
136 gmesa
->AreaStippleMode
= AreaStippleModeDisable
;
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
;
151 for (i
= 0; i
< 16; i
++)
153 gmesa
->ModelView
[i
] =
155 gmesa
->ModelViewProj
[i
] =
156 gmesa
->Texture
[i
] = 1.0;
158 gmesa
->ModelView
[i
] =
160 gmesa
->ModelViewProj
[i
] =
161 gmesa
->Texture
[i
] = 0.0;
163 gmesa
->LBReadMode
= (LBReadSrcDisable
|
168 gmesa
->FBReadMode
= (FBReadSrcDisable
|
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);
182 gmesa
->LBWindowBase
= gmesa
->driScreen
->fbWidth
*
183 (gmesa
->driScreen
->fbHeight
- 1);
184 gmesa
->FBWindowBase
= gmesa
->driScreen
->fbWidth
*
185 (gmesa
->driScreen
->fbHeight
- 1);
188 gmesa
->Begin
= (B_AreaStippleDisable
|
189 B_LineStippleDisable
|
193 B_SubPixelCorrectEnable
|
196 gmesa
->ColorDDAMode
= (ColorDDAEnable
|
199 gmesa
->GeometryMode
= (GM_TextureDisable
|
207 GM_ClipShortLinesDisable
|
208 GM_ClipSmallTrisDisable
|
211 GM_CullFaceNormDisable
|
212 GM_AutoFaceNormDisable
|
215 GM_PolyOffsetPointDisable
|
216 GM_PolyOffsetLineDisable
|
217 GM_PolyOffsetFillDisable
|
218 GM_InvertFaceNormCullDisable
);
220 gmesa
->AlphaTestMode
= (AlphaTestModeDisable
|
223 gmesa
->AB_FBReadMode_Save
= gmesa
->AB_FBReadMode
= 0;
225 gmesa
->Window
= (WindowEnable
| /* For GID testing */
227 (0 << 5)); /* GID part is set from draw priv (below) */
229 gmesa
->NotClipped
= GL_FALSE
;
230 gmesa
->WindowChanged
= GL_TRUE
;
232 gmesa
->Texture1DEnabled
= GL_FALSE
;
233 gmesa
->Texture2DEnabled
= GL_FALSE
;
235 gmesa
->DepthMode
|= (DepthModeDisable
|
239 gmesa
->DeltaMode
|= (DM_SubPixlCorrectionEnable
|
240 DM_SmoothShadingEnable
|
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
;
261 gmesa
->LogicalOpMode
= LogicalOpModeDisable
;
263 gmesa
->MaterialMode
= MaterialModeDisable
;
265 gmesa
->ScissorMode
= UserScissorDisable
| ScreenScissorDisable
;
267 gmesa
->TransformMode
= XM_UseModelViewProjMatrix
|
268 XM_TexGenModeS_None
|
269 XM_TexGenModeT_None
|
270 XM_TexGenModeR_None
|
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
);
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
);
304 WRITE(gmesa
->buf
, FBPixelOffset
,
305 gmesa
->driScreen
->fbHeight
*gmesa
->driScreen
->fbWidth
);
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);
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
);
326 CHECK_DMA_BUFFER(gmesa
, 1);
327 WRITE(gmesa
->buf
, Rectangle2DControl
, 1);
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
);
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
);
345 CHECK_DMA_BUFFER(gmesa
, 1);
346 WRITE(gmesa
->buf
, EdgeFlag
, EdgeFlagEnable
);
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);
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);
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);
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);
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);
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);
436 CHECK_DMA_BUFFER(gmesa
, 2);
437 WRITEF(gmesa
->buf
, LineClipLengthThreshold
, 0.0);
438 WRITEF(gmesa
->buf
, TriangleClipAreaThreshold
, 0.0);
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
);
447 CHECK_DMA_BUFFER(gmesa
, 2);
448 WRITE(gmesa
->buf
, FrontSpecularExponent
, 0); /* fixed point */
449 WRITE(gmesa
->buf
, BackSpecularExponent
, 0); /* fixed point */
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);
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
);
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
);
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);
532 CHECK_DMA_BUFFER(gmesa
, 2);
533 WRITEF(gmesa
->buf
, XBias
, 0.0);
534 WRITEF(gmesa
->buf
, YBias
, 0.0);
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
);
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);
549 /* Send the initialization commands to the HW */
550 FLUSH_DMA_BUFFER(gmesa
);