Removed fixed.h (GLfixed now in mtypes.h, fixed-pt macros in mmath.h)
[mesa.git] / src / mesa / drivers / glide / fxdrv.h
1
2 /*
3 * Mesa 3-D graphics library
4 * Version: 3.3
5 *
6 * Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
22 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 *
25 *
26 * Original Mesa / 3Dfx device driver (C) 1999 David Bucciarelli, by the
27 * terms stated above.
28 *
29 * Thank you for your contribution, David!
30 *
31 * Please make note of the above copyright/license statement. If you
32 * contributed code or bug fixes to this code under the previous (GNU
33 * Library) license and object to the new license, your code will be
34 * removed at your request. Please see the Mesa docs/COPYRIGHT file
35 * for more information.
36 *
37 * Additional Mesa/3Dfx driver developers:
38 * Daryll Strauss <daryll@precisioninsight.com>
39 * Keith Whitwell <keith@precisioninsight.com>
40 *
41 * See fxapi.h for more revision/author details.
42 */
43
44
45 #ifndef FXDRV_H
46 #define FXDRV_H
47
48 /* If you comment out this define, a variable takes its place, letting
49 * you turn debugging on/off from the debugger.
50 */
51
52 #include "glheader.h"
53
54
55 #if defined(__linux__)
56 #include <signal.h>
57 #endif
58
59 #include "context.h"
60 #include "macros.h"
61 #include "matrix.h"
62 #include "mem.h"
63 #include "texture.h"
64 #include "mtypes.h"
65
66 #include "GL/fxmesa.h"
67 #include "fxglidew.h"
68
69 #include "math/m_vector.h"
70
71
72 /* Define some shorter names for these things.
73 */
74 #define XCOORD GR_VERTEX_X_OFFSET
75 #define YCOORD GR_VERTEX_Y_OFFSET
76 #define ZCOORD GR_VERTEX_OOZ_OFFSET
77 #define OOWCOORD GR_VERTEX_OOW_OFFSET
78
79 #define RCOORD GR_VERTEX_R_OFFSET
80 #define GCOORD GR_VERTEX_G_OFFSET
81 #define BCOORD GR_VERTEX_B_OFFSET
82 #define ACOORD GR_VERTEX_A_OFFSET
83
84 #define S0COORD GR_VERTEX_SOW_TMU0_OFFSET
85 #define T0COORD GR_VERTEX_TOW_TMU0_OFFSET
86 #define S1COORD GR_VERTEX_SOW_TMU1_OFFSET
87 #define T1COORD GR_VERTEX_TOW_TMU1_OFFSET
88
89
90 extern float gl_ubyte_to_float_255_color_tab[256];
91 #define UBYTE_COLOR_TO_FLOAT_255_COLOR(c) gl_ubyte_to_float_255_color_tab[c]
92 #define UBYTE_COLOR_TO_FLOAT_255_COLOR2(f,c) \
93 (*(int *)&(f)) = ((int *)gl_ubyte_to_float_255_color_tab)[c]
94
95
96 #define LINTERP(T, A, B) ((A) + (T) * ((B) - (A)))
97
98
99
100 /* Should have size == 16 * sizeof(float).
101 */
102 typedef union {
103 GrVertex v;
104 GLfloat f[16];
105 GLuint ui[16];
106 } fxVertex;
107
108 /* Used in the fxvtxfmt t&l engine.
109 */
110 typedef struct {
111 GrVertex v;
112 GLfloat clip[4];
113 GLfloat texcoord[2][2];
114 GLubyte mask;
115 GLfloat normal[3]; /* for replay & fallback */
116 } fxClipVertex;
117
118
119
120 typedef void (*vfmt_project_func)( GLcontext *ctx, fxClipVertex *v );
121 typedef void (*vfmt_interpolate_func)( GLfloat t,
122 fxClipVertex *O,
123 const fxClipVertex *I,
124 const fxClipVertex *J );
125
126
127
128 #if defined(FXMESA_USE_ARGB)
129 #define FXCOLOR4( c ) ( \
130 ( ((unsigned int)(c[3]))<<24 ) | \
131 ( ((unsigned int)(c[0]))<<16 ) | \
132 ( ((unsigned int)(c[1]))<<8 ) | \
133 ( (unsigned int)(c[2])) )
134
135 #else
136 #ifdef __i386__
137 #define FXCOLOR4( c ) (* (int *)c)
138 #else
139 #define FXCOLOR4( c ) ( \
140 ( ((unsigned int)(c[3]))<<24 ) | \
141 ( ((unsigned int)(c[2]))<<16 ) | \
142 ( ((unsigned int)(c[1]))<<8 ) | \
143 ( (unsigned int)(c[0])) )
144 #endif
145 #endif
146
147
148
149 /* fastpath/vtxfmt flags first
150 */
151 #define SETUP_TMU0 0x1
152 #define SETUP_TMU1 0x2
153 #define SETUP_RGBA 0x4
154 #define SETUP_SNAP 0x8
155 #define SETUP_XYZW 0x10
156 #define MAX_SETUP 0x20
157
158
159 #define FX_NUM_TMU 2
160
161 #define FX_TMU0 GR_TMU0
162 #define FX_TMU1 GR_TMU1
163 #define FX_TMU_SPLIT 98
164 #define FX_TMU_BOTH 99
165 #define FX_TMU_NONE 100
166
167 /* Used for fxMesa->lastUnitsMode */
168
169 #define FX_UM_NONE 0x00000000
170
171 #define FX_UM_E0_REPLACE 0x00000001
172 #define FX_UM_E0_MODULATE 0x00000002
173 #define FX_UM_E0_DECAL 0x00000004
174 #define FX_UM_E0_BLEND 0x00000008
175 #define FX_UM_E0_ADD 0x00000010
176
177 #define FX_UM_E1_REPLACE 0x00000020
178 #define FX_UM_E1_MODULATE 0x00000040
179 #define FX_UM_E1_DECAL 0x00000080
180 #define FX_UM_E1_BLEND 0x00000100
181 #define FX_UM_E1_ADD 0x00000200
182
183 #define FX_UM_E_ENVMODE 0x000003ff
184
185 #define FX_UM_E0_ALPHA 0x00001000
186 #define FX_UM_E0_LUMINANCE 0x00002000
187 #define FX_UM_E0_LUMINANCE_ALPHA 0x00004000
188 #define FX_UM_E0_INTENSITY 0x00008000
189 #define FX_UM_E0_RGB 0x00010000
190 #define FX_UM_E0_RGBA 0x00020000
191
192 #define FX_UM_E1_ALPHA 0x00040000
193 #define FX_UM_E1_LUMINANCE 0x00080000
194 #define FX_UM_E1_LUMINANCE_ALPHA 0x00100000
195 #define FX_UM_E1_INTENSITY 0x00200000
196 #define FX_UM_E1_RGB 0x00400000
197 #define FX_UM_E1_RGBA 0x00800000
198
199 #define FX_UM_E_IFMT 0x00fff000
200
201 #define FX_UM_COLOR_ITERATED 0x01000000
202 #define FX_UM_COLOR_CONSTANT 0x02000000
203 #define FX_UM_ALPHA_ITERATED 0x04000000
204 #define FX_UM_ALPHA_CONSTANT 0x08000000
205
206
207 /*
208 Memory range from startAddr to endAddr-1
209 */
210 typedef struct MemRange_t {
211 struct MemRange_t *next;
212 FxU32 startAddr, endAddr;
213 } MemRange;
214
215 typedef struct {
216 GLsizei width, height; /* image size */
217 GrTextureFormat_t glideFormat; /* Glide image format */
218 unsigned short *data; /* Glide-formated texture image */
219 } tfxMipMapLevel;
220
221 typedef struct tfxTexInfo_t {
222 struct tfxTexInfo *next;
223 struct gl_texture_object *tObj;
224
225 GLuint lastTimeUsed;
226 FxU32 whichTMU;
227 GLboolean isInTM;
228
229 tfxMipMapLevel mipmapLevel[MAX_TEXTURE_LEVELS];
230
231 MemRange *tm[FX_NUM_TMU];
232
233 GLint minLevel, maxLevel;
234 GLint baseLevelInternalFormat;
235
236 GrTexInfo info;
237
238 GrTextureFilterMode_t minFilt;
239 GrTextureFilterMode_t maxFilt;
240 FxBool LODblend;
241
242 GrTextureClampMode_t sClamp;
243 GrTextureClampMode_t tClamp;
244
245 GrMipMapMode_t mmMode;
246
247 GLfloat sScale, tScale;
248 GLint int_sScale, int_tScale; /* x86 floating point trick for
249 * multiplication by powers of 2.
250 * Used in fxfasttmp.h
251 */
252
253 GuTexPalette palette;
254
255 GLboolean fixedPalette;
256 GLboolean validated;
257 } tfxTexInfo;
258
259 typedef struct {
260 GLuint swapBuffer;
261 GLuint reqTexUpload;
262 GLuint texUpload;
263 GLuint memTexUpload;
264 } tfxStats;
265
266
267
268 typedef struct {
269 /* Alpha test */
270
271 GLboolean alphaTestEnabled;
272 GrCmpFnc_t alphaTestFunc;
273 GrAlpha_t alphaTestRefValue;
274
275 /* Blend function */
276
277 GLboolean blendEnabled;
278 GrAlphaBlendFnc_t blendSrcFuncRGB;
279 GrAlphaBlendFnc_t blendDstFuncRGB;
280 GrAlphaBlendFnc_t blendSrcFuncAlpha;
281 GrAlphaBlendFnc_t blendDstFuncAlpha;
282
283 /* Depth test */
284
285 GLboolean depthTestEnabled;
286 GLboolean depthMask;
287 GrCmpFnc_t depthTestFunc;
288 } tfxUnitsState;
289
290
291
292
293 /* Flags for fxMesa->new_state
294 */
295 #define FX_NEW_TEXTURING 0x1
296 #define FX_NEW_BLEND 0x2
297 #define FX_NEW_ALPHA 0x4
298 #define FX_NEW_DEPTH 0x8
299 #define FX_NEW_FOG 0x10
300 #define FX_NEW_SCISSOR 0x20
301 #define FX_NEW_COLOR_MASK 0x40
302 #define FX_NEW_CULL 0x80
303
304
305 #define FX_CONTEXT(ctx) ((fxMesaContext)((ctx)->DriverCtx))
306 #define FX_TEXTURE_DATA(t) fxTMGetTexInfo((t)->_Current)
307
308 #define BEGIN_BOARD_LOCK()
309 #define END_BOARD_LOCK()
310 #define BEGIN_CLIP_LOOP()
311 #define END_CLIP_LOOP()
312
313
314
315
316 /* Covers the state referenced by IsInHardware:
317 */
318 #define _FX_NEW_IS_IN_HARDWARE (_NEW_TEXTURE| \
319 _NEW_HINT| \
320 _NEW_STENCIL| \
321 _NEW_BUFFERS| \
322 _NEW_COLOR| \
323 _NEW_LIGHT)
324
325 /* Covers the state referenced by fxDDChooseRenderState
326 */
327 #define _FX_NEW_RENDERSTATE (_FX_NEW_IS_IN_HARDWARE | \
328 _DD_NEW_FLATSHADE | \
329 _DD_NEW_TRI_LIGHT_TWOSIDE| \
330 _DD_NEW_TRI_OFFSET | \
331 _DD_NEW_TRI_UNFILLED | \
332 _DD_NEW_TRI_SMOOTH | \
333 _DD_NEW_TRI_STIPPLE | \
334 _DD_NEW_LINE_SMOOTH | \
335 _DD_NEW_LINE_STIPPLE | \
336 _DD_NEW_LINE_WIDTH | \
337 _DD_NEW_POINT_SMOOTH | \
338 _DD_NEW_POINT_SIZE | \
339 _NEW_LINE)
340
341 /* Covers the state referenced by fxDDChooseSetupFunction.
342 */
343 #define _FX_NEW_SETUP_FUNCTION (_NEW_LIGHT| \
344 _NEW_FOG| \
345 _NEW_TEXTURE| \
346 _NEW_COLOR) \
347
348
349 /* Covers the state referenced in fxDDCheckVtxfmt.
350 */
351 #define _FX_NEW_VTXFMT (_NEW_TEXTURE | \
352 _NEW_TEXTURE_MATRIX | \
353 _NEW_TRANSFORM | \
354 _NEW_LIGHT | \
355 _NEW_PROJECTION | \
356 _NEW_MODELVIEW | \
357 _TNL_NEW_NEED_EYE_COORDS | \
358 _FX_NEW_RENDERSTATE)
359
360
361 /* These lookup table are used to extract RGB values in [0,255] from
362 * 16-bit pixel values.
363 */
364 extern GLubyte FX_PixelToR[0x10000];
365 extern GLubyte FX_PixelToG[0x10000];
366 extern GLubyte FX_PixelToB[0x10000];
367
368
369 typedef void (*fx_tri_func)( GLcontext *, const fxVertex *,
370 const fxVertex *, const fxVertex * );
371 typedef void (*fx_line_func)( GLcontext *, const fxVertex *, const fxVertex * );
372 typedef void (*fx_point_func)( GLcontext *, const fxVertex * );
373
374 struct tfxMesaContext {
375 GuTexPalette glbPalette;
376
377 GLcontext *glCtx; /* the core Mesa context */
378 GLvisual *glVis; /* describes the color buffer */
379 GLframebuffer *glBuffer; /* the ancillary buffers */
380
381 GLint board; /* the board used for this context */
382 GLint width, height; /* size of color buffer */
383
384 GrBuffer_t currentFB;
385
386 GLboolean bgrOrder;
387 GrColor_t color;
388 GrColor_t clearC;
389 GrAlpha_t clearA;
390 GLuint constColor;
391 GrCullMode_t cullMode;
392
393 tfxUnitsState unitsState;
394 tfxUnitsState restoreUnitsState; /* saved during multipass */
395
396
397 GLuint new_state;
398
399 /* Texture Memory Manager Data
400 */
401 GLuint texBindNumber;
402 GLint tmuSrc;
403 GLuint lastUnitsMode;
404 GLuint freeTexMem[FX_NUM_TMU];
405 MemRange *tmPool;
406 MemRange *tmFree[FX_NUM_TMU];
407
408 GLenum fogTableMode;
409 GLfloat fogDensity;
410 GLfloat fogStart, fogEnd;
411 GrFog_t *fogTable;
412 GLint textureAlign;
413
414 /* Vertex building and storage:
415 */
416 GLuint tmu_source[FX_NUM_TMU];
417 GLuint tex_dest[MAX_TEXTURE_UNITS];
418 GLuint setupindex;
419 GLuint setup_gone; /* for multipass */
420 GLuint stw_hint_state; /* for grHints */
421 fxVertex *verts;
422
423
424 /* Rasterization:
425 */
426 GLuint render_index;
427 GLuint passes, multipass;
428 GLuint is_in_hardware;
429
430 /* Current rasterization functions
431 */
432 fx_point_func draw_point;
433 fx_line_func draw_line;
434 fx_tri_func draw_tri;
435
436 /* System to turn culling on/off for tris/lines/points.
437 */
438 fx_point_func initial_point;
439 fx_line_func initial_line;
440 fx_tri_func initial_tri;
441
442 fx_point_func subsequent_point;
443 fx_line_func subsequent_line;
444 fx_tri_func subsequent_tri;
445
446 /* Keep texture scales somewhere handy:
447 */
448 GLfloat s0scale;
449 GLfloat s1scale;
450 GLfloat t0scale;
451 GLfloat t1scale;
452
453 GLfloat inv_s0scale;
454 GLfloat inv_s1scale;
455 GLfloat inv_t0scale;
456 GLfloat inv_t1scale;
457
458 /* Glide stuff
459 */
460 tfxStats stats;
461 void *state;
462
463 /* Options */
464
465 GLboolean verbose;
466 GLboolean haveTwoTMUs; /* True if we really have 2 tmu's */
467 GLboolean emulateTwoTMUs; /* True if we present 2 tmu's to mesa. */
468 GLboolean haveAlphaBuffer;
469 GLboolean haveZBuffer;
470 GLboolean haveDoubleBuffer;
471 GLboolean haveGlobalPaletteTexture;
472 GLint swapInterval;
473 GLint maxPendingSwapBuffers;
474
475 FX_GrContext_t glideContext;
476
477 int screen_width;
478 int screen_height;
479 int initDone;
480 int clipMinX;
481 int clipMaxX;
482 int clipMinY;
483 int clipMaxY;
484
485 /* fxvtxfmt
486 */
487 GLboolean allow_vfmt;
488 GLvertexformat vtxfmt;
489 fxClipVertex current;
490 fxClipVertex *vert; /* points into verts[] */
491 void (*fire_on_vertex)( GLcontext * );
492 void (*fire_on_end)( GLcontext * );
493 void (*fire_on_fallback)( GLcontext * );
494
495 vfmt_project_func project_vertex;
496 vfmt_interpolate_func interpolate_vertices;
497
498 int vtxfmt_fallback_count;
499 int vtxfmt_installed;
500 void (*old_begin)( GLenum );
501 GLenum prim;
502
503 GLuint accel_light;
504 GLfloat basecolor[4];
505
506
507 /* Projected vertices, fastpath data:
508 */
509 GLvector1ui clipped_elements;
510 fxVertex *last_vert;
511 GLuint size;
512 };
513
514 typedef void (*tfxSetupFunc)(GLcontext *ctx, GLuint, GLuint, GLuint);
515
516 extern GrHwConfiguration glbHWConfig;
517 extern int glbCurrentBoard;
518
519 extern void fxSetupFXUnits(GLcontext *);
520 extern void fxSetupDDPointers(GLcontext *);
521
522 /* fxvsetup:
523 */
524 extern void fxDDSetupInit(void);
525 extern void fxAllocVB( GLcontext *ctx );
526 extern void fxFreeVB( GLcontext *ctx );
527 extern void fxPrintSetupFlags( const char *msg, GLuint flags );
528 extern void fx_BuildProjVerts( GLcontext *ctx,
529 GLuint start, GLuint count,
530 GLuint newinputs );
531 extern void fx_validate_BuildProjVerts(GLcontext *ctx,
532 GLuint start, GLuint count,
533 GLuint newinputs );
534
535 /* fxtrifuncs:
536 */
537 extern void fxDDTrifuncInit(void);
538 extern void fxDDChooseRenderState( GLcontext *ctx );
539
540
541 extern void fxUpdateDDSpanPointers(GLcontext *);
542 extern void fxSetupDDSpanPointers(GLcontext *);
543
544 extern void fxPrintTextureData(tfxTexInfo *ti);
545 extern GLboolean fxDDTexImage2D(GLcontext *ctx, GLenum target, GLint level,
546 GLenum format, GLenum type, const GLvoid *pixels,
547 const struct gl_pixelstore_attrib *packing,
548 struct gl_texture_object *texObj,
549 struct gl_texture_image *texImage,
550 GLboolean *retainInternalCopy);
551 extern GLboolean fxDDTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
552 GLint xoffset, GLint yoffset,
553 GLsizei width, GLsizei height,
554 GLenum format, GLenum type, const GLvoid *pixels,
555 const struct gl_pixelstore_attrib *packing,
556 struct gl_texture_object *texObj,
557 struct gl_texture_image *texImage);
558 extern GLvoid *fxDDGetTexImage(GLcontext *ctx, GLenum target, GLint level,
559 const struct gl_texture_object *texObj,
560 GLenum *formatOut, GLenum *typeOut,
561 GLboolean *freeImageOut );
562 extern void fxDDTexEnv(GLcontext *, GLenum, GLenum, const GLfloat *);
563 extern void fxDDTexParam(GLcontext *, GLenum, struct gl_texture_object *,
564 GLenum, const GLfloat *);
565 extern void fxDDTexBind(GLcontext *, GLenum, struct gl_texture_object *);
566 extern void fxDDTexDel(GLcontext *, struct gl_texture_object *);
567 extern void fxDDTexPalette(GLcontext *, struct gl_texture_object *);
568 extern void fxDDTexUseGlbPalette(GLcontext *, GLboolean);
569
570 extern void fxDDEnable(GLcontext *, GLenum, GLboolean);
571 extern void fxDDAlphaFunc(GLcontext *, GLenum, GLclampf);
572 extern void fxDDBlendFunc(GLcontext *, GLenum, GLenum);
573 extern void fxDDDepthMask(GLcontext *, GLboolean);
574 extern void fxDDDepthFunc(GLcontext *, GLenum);
575
576 extern void fxDDInitExtensions( GLcontext *ctx );
577
578 #define fxTMGetTexInfo(o) ((tfxTexInfo*)((o)->DriverData))
579 extern void fxTMInit(fxMesaContext ctx);
580 extern void fxTMClose(fxMesaContext ctx);
581 extern void fxTMRestoreTextures_NoLock(fxMesaContext ctx);
582 extern void fxTMMoveInTM(fxMesaContext, struct gl_texture_object *, GLint);
583 extern void fxTMMoveOutTM(fxMesaContext, struct gl_texture_object *);
584 #define fxTMMoveOutTM_NoLock fxTMMoveOutTM
585 extern void fxTMFreeTexture(fxMesaContext, struct gl_texture_object *);
586 extern void fxTMReloadMipMapLevel(fxMesaContext, struct gl_texture_object *, GLint);
587 extern void fxTMReloadSubMipMapLevel(fxMesaContext, struct gl_texture_object *,
588 GLint, GLint, GLint);
589
590 extern void fxTexGetFormat(GLenum, GrTextureFormat_t *, GLint *);
591 extern int fxTexGetInfo(int, int, GrLOD_t *, GrAspectRatio_t *,
592 float *, float *, int *, int *, int *, int *);
593
594 extern void fxDDScissor( GLcontext *ctx,
595 GLint x, GLint y, GLsizei w, GLsizei h );
596 extern void fxDDFogfv( GLcontext *ctx, GLenum pname, const GLfloat *params );
597 extern void fxDDColorMask(GLcontext *ctx,
598 GLboolean r, GLboolean g,
599 GLboolean b, GLboolean a );
600
601 extern void fxDDWriteDepthSpan(GLcontext *ctx, GLuint n, GLint x, GLint y,
602 const GLdepth depth[], const GLubyte mask[]);
603
604 extern void fxDDReadDepthSpan(GLcontext *ctx, GLuint n, GLint x, GLint y,
605 GLdepth depth[]);
606
607 extern void fxDDWriteDepthPixels(GLcontext *ctx, GLuint n,
608 const GLint x[], const GLint y[],
609 const GLdepth depth[], const GLubyte mask[]);
610
611 extern void fxDDReadDepthPixels(GLcontext *ctx, GLuint n,
612 const GLint x[], const GLint y[],
613 GLdepth depth[]);
614
615 extern void fxDDShadeModel(GLcontext *ctx, GLenum mode);
616
617 extern void fxDDCullFace(GLcontext *ctx, GLenum mode);
618 extern void fxDDFrontFace(GLcontext *ctx, GLenum mode);
619
620 extern void fxPrintRenderState( const char *msg, GLuint state );
621 extern void fxPrintHintState( const char *msg, GLuint state );
622
623 extern int fxDDInitFxMesaContext( fxMesaContext fxMesa );
624 extern void fxDDDestroyFxMesaContext( fxMesaContext fxMesa );
625
626
627
628
629 extern void fxSetScissorValues(GLcontext *ctx);
630 extern void fxTMMoveInTM_NoLock(fxMesaContext fxMesa,
631 struct gl_texture_object *tObj,
632 GLint where);
633 extern void fxInitPixelTables(fxMesaContext fxMesa, GLboolean bgrOrder);
634
635
636 /* fxvtxfmt:
637 */
638 extern void fxDDCheckVtxfmt( GLcontext *ctx );
639 extern void fx_update_lighting( GLcontext *ctx );
640 extern void fxDDInitVtxfmt( GLcontext *ctx );
641
642 /* fxsimplerender
643 */
644 extern const struct gl_pipeline_stage fx_render_stage;
645
646 #endif