fixed a bunch of g++ warnings/errors. Compiling with g++ can help find lots of poten...
[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 "mtypes.h"
64
65 #include "GL/fxmesa.h"
66 #include "fxglidew.h"
67
68 #include "math/m_vector.h"
69
70
71 /* Define some shorter names for these things.
72 */
73 #define XCOORD GR_VERTEX_X_OFFSET
74 #define YCOORD GR_VERTEX_Y_OFFSET
75 #define ZCOORD GR_VERTEX_OOZ_OFFSET
76 #define OOWCOORD GR_VERTEX_OOW_OFFSET
77
78 #define RCOORD GR_VERTEX_R_OFFSET
79 #define GCOORD GR_VERTEX_G_OFFSET
80 #define BCOORD GR_VERTEX_B_OFFSET
81 #define ACOORD GR_VERTEX_A_OFFSET
82
83 #define S0COORD GR_VERTEX_SOW_TMU0_OFFSET
84 #define T0COORD GR_VERTEX_TOW_TMU0_OFFSET
85 #define S1COORD GR_VERTEX_SOW_TMU1_OFFSET
86 #define T1COORD GR_VERTEX_TOW_TMU1_OFFSET
87
88
89 extern float gl_ubyte_to_float_255_color_tab[256];
90 #define UBYTE_COLOR_TO_FLOAT_255_COLOR(c) gl_ubyte_to_float_255_color_tab[c]
91 #define UBYTE_COLOR_TO_FLOAT_255_COLOR2(f,c) \
92 (*(int *)&(f)) = ((int *)gl_ubyte_to_float_255_color_tab)[c]
93
94
95
96
97 /* Should have size == 16 * sizeof(float).
98 */
99 typedef union
100 {
101 GrVertex v;
102 GLfloat f[16];
103 GLuint ui[16];
104 }
105 fxVertex;
106
107 /* Used in the fxvtxfmt t&l engine.
108 */
109 typedef struct
110 {
111 GrVertex v;
112 GLfloat clip[4];
113 GLfloat texcoord[2][2];
114 GLubyte mask;
115 GLfloat normal[3]; /* for replay & fallback */
116 }
117 fxClipVertex;
118
119
120
121 typedef void (*vfmt_project_func) (GLcontext * ctx, fxClipVertex * v);
122 typedef void (*vfmt_interpolate_func) (GLfloat t,
123 fxClipVertex * O,
124 const fxClipVertex * I,
125 const fxClipVertex * J);
126
127
128
129 #if defined(FXMESA_USE_ARGB)
130 #define FXCOLOR4( c ) ( \
131 ( ((unsigned int)(c[3]))<<24 ) | \
132 ( ((unsigned int)(c[0]))<<16 ) | \
133 ( ((unsigned int)(c[1]))<<8 ) | \
134 ( (unsigned int)(c[2])) )
135
136 #else
137 #ifdef __i386__
138 #define FXCOLOR4( c ) (* (int *)c)
139 #else
140 #define FXCOLOR4( c ) ( \
141 ( ((unsigned int)(c[3]))<<24 ) | \
142 ( ((unsigned int)(c[2]))<<16 ) | \
143 ( ((unsigned int)(c[1]))<<8 ) | \
144 ( (unsigned int)(c[0])) )
145 #endif
146 #endif
147
148
149
150 /* fastpath/vtxfmt flags first
151 */
152 #define SETUP_TMU0 0x1
153 #define SETUP_TMU1 0x2
154 #define SETUP_RGBA 0x4
155 #define SETUP_SNAP 0x8
156 #define SETUP_XYZW 0x10
157 #define MAX_SETUP 0x20
158
159
160 #define FX_NUM_TMU 2
161
162 #define FX_TMU0 GR_TMU0
163 #define FX_TMU1 GR_TMU1
164 #define FX_TMU_SPLIT 98
165 #define FX_TMU_BOTH 99
166 #define FX_TMU_NONE 100
167
168 /* Used for fxMesa->lastUnitsMode */
169
170 #define FX_UM_NONE 0x00000000
171
172 #define FX_UM_E0_REPLACE 0x00000001
173 #define FX_UM_E0_MODULATE 0x00000002
174 #define FX_UM_E0_DECAL 0x00000004
175 #define FX_UM_E0_BLEND 0x00000008
176 #define FX_UM_E0_ADD 0x00000010
177
178 #define FX_UM_E1_REPLACE 0x00000020
179 #define FX_UM_E1_MODULATE 0x00000040
180 #define FX_UM_E1_DECAL 0x00000080
181 #define FX_UM_E1_BLEND 0x00000100
182 #define FX_UM_E1_ADD 0x00000200
183
184 #define FX_UM_E_ENVMODE 0x000003ff
185
186 #define FX_UM_E0_ALPHA 0x00001000
187 #define FX_UM_E0_LUMINANCE 0x00002000
188 #define FX_UM_E0_LUMINANCE_ALPHA 0x00004000
189 #define FX_UM_E0_INTENSITY 0x00008000
190 #define FX_UM_E0_RGB 0x00010000
191 #define FX_UM_E0_RGBA 0x00020000
192
193 #define FX_UM_E1_ALPHA 0x00040000
194 #define FX_UM_E1_LUMINANCE 0x00080000
195 #define FX_UM_E1_LUMINANCE_ALPHA 0x00100000
196 #define FX_UM_E1_INTENSITY 0x00200000
197 #define FX_UM_E1_RGB 0x00400000
198 #define FX_UM_E1_RGBA 0x00800000
199
200 #define FX_UM_E_IFMT 0x00fff000
201
202 #define FX_UM_COLOR_ITERATED 0x01000000
203 #define FX_UM_COLOR_CONSTANT 0x02000000
204 #define FX_UM_ALPHA_ITERATED 0x04000000
205 #define FX_UM_ALPHA_CONSTANT 0x08000000
206
207
208 /*
209 Memory range from startAddr to endAddr-1
210 */
211 typedef struct MemRange_t
212 {
213 struct MemRange_t *next;
214 FxU32 startAddr, endAddr;
215 }
216 MemRange;
217
218 typedef struct
219 {
220 GLsizei width, height; /* image size */
221 GLint wScale, hScale; /* image scale factor */
222 GrTextureFormat_t glideFormat; /* Glide image format */
223 }
224 tfxMipMapLevel;
225
226 /*
227 * TDFX-specific texture object data. This hangs off of the
228 * struct gl_texture_object DriverData pointer.
229 */
230 typedef struct tfxTexInfo_t
231 {
232 struct tfxTexInfo_t *next;
233 struct gl_texture_object *tObj;
234
235 GLuint lastTimeUsed;
236 FxU32 whichTMU;
237 GLboolean isInTM;
238
239 MemRange *tm[FX_NUM_TMU];
240
241 GLint minLevel, maxLevel;
242 GLint baseLevelInternalFormat;
243
244 GrTexInfo info;
245
246 GrTextureFilterMode_t minFilt;
247 GrTextureFilterMode_t maxFilt;
248 FxBool LODblend;
249
250 GrTextureClampMode_t sClamp;
251 GrTextureClampMode_t tClamp;
252
253 GrMipMapMode_t mmMode;
254
255 GLfloat sScale, tScale;
256 GLint int_sScale, int_tScale; /* x86 floating point trick for
257 * multiplication by powers of 2.
258 * Used in fxfasttmp.h
259 */
260
261 GuTexPalette palette;
262
263 GLboolean fixedPalette;
264 GLboolean validated;
265 }
266 tfxTexInfo;
267
268 typedef struct
269 {
270 GLuint swapBuffer;
271 GLuint reqTexUpload;
272 GLuint texUpload;
273 GLuint memTexUpload;
274 }
275 tfxStats;
276
277
278
279 typedef struct
280 {
281 /* Alpha test */
282
283 GLboolean alphaTestEnabled;
284 GrCmpFnc_t alphaTestFunc;
285 GrAlpha_t alphaTestRefValue;
286
287 /* Blend function */
288
289 GLboolean blendEnabled;
290 GrAlphaBlendFnc_t blendSrcFuncRGB;
291 GrAlphaBlendFnc_t blendDstFuncRGB;
292 GrAlphaBlendFnc_t blendSrcFuncAlpha;
293 GrAlphaBlendFnc_t blendDstFuncAlpha;
294
295 /* Depth test */
296
297 GLboolean depthTestEnabled;
298 GLboolean depthMask;
299 GrCmpFnc_t depthTestFunc;
300 }
301 tfxUnitsState;
302
303
304
305
306 /* Flags for fxMesa->new_state
307 */
308 #define FX_NEW_TEXTURING 0x1
309 #define FX_NEW_BLEND 0x2
310 #define FX_NEW_ALPHA 0x4
311 #define FX_NEW_DEPTH 0x8
312 #define FX_NEW_FOG 0x10
313 #define FX_NEW_SCISSOR 0x20
314 #define FX_NEW_COLOR_MASK 0x40
315 #define FX_NEW_CULL 0x80
316
317
318 #define FX_CONTEXT(ctx) ((fxMesaContext)((ctx)->DriverCtx))
319
320 #define FX_TEXTURE_DATA(texUnit) fxTMGetTexInfo((texUnit)->_Current)
321
322 #define fxTMGetTexInfo(o) ((tfxTexInfo*)((o)->DriverData))
323
324 #define FX_MIPMAP_DATA(img) ((tfxMipMapLevel *) (img)->DriverData)
325
326 #define BEGIN_BOARD_LOCK()
327 #define END_BOARD_LOCK()
328 #define BEGIN_CLIP_LOOP()
329 #define END_CLIP_LOOP()
330
331
332
333
334 /* Covers the state referenced by IsInHardware:
335 */
336 #define _FX_NEW_IS_IN_HARDWARE (_NEW_TEXTURE| \
337 _NEW_HINT| \
338 _NEW_STENCIL| \
339 _NEW_BUFFERS| \
340 _NEW_COLOR| \
341 _NEW_LIGHT)
342
343 /* Covers the state referenced by fxDDChooseRenderState
344 */
345 #define _FX_NEW_RENDERSTATE (_FX_NEW_IS_IN_HARDWARE | \
346 _DD_NEW_FLATSHADE | \
347 _DD_NEW_TRI_LIGHT_TWOSIDE| \
348 _DD_NEW_TRI_OFFSET | \
349 _DD_NEW_TRI_UNFILLED | \
350 _DD_NEW_TRI_SMOOTH | \
351 _DD_NEW_TRI_STIPPLE | \
352 _DD_NEW_LINE_SMOOTH | \
353 _DD_NEW_LINE_STIPPLE | \
354 _DD_NEW_LINE_WIDTH | \
355 _DD_NEW_POINT_SMOOTH | \
356 _DD_NEW_POINT_SIZE | \
357 _NEW_LINE)
358
359 /* Covers the state referenced by fxDDChooseSetupFunction.
360 */
361 #define _FX_NEW_SETUP_FUNCTION (_NEW_LIGHT| \
362 _NEW_FOG| \
363 _NEW_TEXTURE| \
364 _NEW_COLOR) \
365
366
367 /* Covers the state referenced in fxDDCheckVtxfmt.
368 */
369 #define _FX_NEW_VTXFMT (_NEW_TEXTURE | \
370 _NEW_TEXTURE_MATRIX | \
371 _NEW_TRANSFORM | \
372 _NEW_LIGHT | \
373 _NEW_PROJECTION | \
374 _NEW_MODELVIEW | \
375 _TNL_NEW_NEED_EYE_COORDS | \
376 _FX_NEW_RENDERSTATE)
377
378
379 /* These lookup table are used to extract RGB values in [0,255] from
380 * 16-bit pixel values.
381 */
382 extern GLubyte FX_PixelToR[0x10000];
383 extern GLubyte FX_PixelToG[0x10000];
384 extern GLubyte FX_PixelToB[0x10000];
385
386
387 typedef void (*fx_tri_func) (GLcontext *, const fxVertex *,
388 const fxVertex *, const fxVertex *);
389 typedef void (*fx_line_func) (GLcontext *, const fxVertex *,
390 const fxVertex *);
391 typedef void (*fx_point_func) (GLcontext *, const fxVertex *);
392
393 struct tfxMesaContext
394 {
395 GuTexPalette glbPalette;
396
397 GLcontext *glCtx; /* the core Mesa context */
398 GLvisual *glVis; /* describes the color buffer */
399 GLframebuffer *glBuffer; /* the ancillary buffers */
400
401 GLint board; /* the board used for this context */
402 GLint width, height; /* size of color buffer */
403
404 GrBuffer_t currentFB;
405
406 GLboolean bgrOrder;
407 GrColor_t color;
408 GrColor_t clearC;
409 GrAlpha_t clearA;
410 GLuint constColor;
411 GrCullMode_t cullMode;
412
413 tfxUnitsState unitsState;
414 tfxUnitsState restoreUnitsState; /* saved during multipass */
415
416
417 GLuint new_state;
418
419 /* Texture Memory Manager Data
420 */
421 GLuint texBindNumber;
422 GLint tmuSrc;
423 GLuint lastUnitsMode;
424 GLuint freeTexMem[FX_NUM_TMU];
425 MemRange *tmPool;
426 MemRange *tmFree[FX_NUM_TMU];
427
428 GLenum fogTableMode;
429 GLfloat fogDensity;
430 GLfloat fogStart, fogEnd;
431 GrFog_t *fogTable;
432 GLint textureAlign;
433
434 /* Vertex building and storage:
435 */
436 GLuint tmu_source[FX_NUM_TMU];
437 GLuint tex_dest[MAX_TEXTURE_UNITS];
438 GLuint setupindex;
439 GLuint setup_gone; /* for multipass */
440 GLuint stw_hint_state; /* for grHints */
441 fxVertex *verts;
442
443
444 /* Rasterization:
445 */
446 GLuint render_index;
447 GLuint passes, multipass;
448 GLuint is_in_hardware;
449 GLenum render_prim;
450
451 /* Current rasterization functions
452 */
453 fx_point_func draw_point;
454 fx_line_func draw_line;
455 fx_tri_func draw_tri;
456
457 /* System to turn culling on/off for tris/lines/points.
458 */
459 fx_point_func initial_point;
460 fx_line_func initial_line;
461 fx_tri_func initial_tri;
462
463 fx_point_func subsequent_point;
464 fx_line_func subsequent_line;
465 fx_tri_func subsequent_tri;
466
467 /* Keep texture scales somewhere handy:
468 */
469 GLfloat s0scale;
470 GLfloat s1scale;
471 GLfloat t0scale;
472 GLfloat t1scale;
473
474 GLfloat inv_s0scale;
475 GLfloat inv_s1scale;
476 GLfloat inv_t0scale;
477 GLfloat inv_t1scale;
478
479 /* Glide stuff
480 */
481 tfxStats stats;
482 void *state;
483
484 /* Options */
485
486 GLboolean verbose;
487 GLboolean haveTwoTMUs; /* True if we really have 2 tmu's */
488 GLboolean emulateTwoTMUs; /* True if we present 2 tmu's to mesa. */
489 GLboolean haveAlphaBuffer;
490 GLboolean haveZBuffer;
491 GLboolean haveDoubleBuffer;
492 GLboolean haveGlobalPaletteTexture;
493 GLint swapInterval;
494 GLint maxPendingSwapBuffers;
495
496 FX_GrContext_t glideContext;
497
498 int screen_width;
499 int screen_height;
500 int initDone;
501 int clipMinX;
502 int clipMaxX;
503 int clipMinY;
504 int clipMaxY;
505
506 /* fxvtxfmt
507 */
508 GLboolean allow_vfmt;
509 GLvertexformat vtxfmt;
510 fxClipVertex current;
511 fxClipVertex *vert; /* points into verts[] */
512 void (*fire_on_vertex) (GLcontext *);
513 void (*fire_on_end) (GLcontext *);
514 void (*fire_on_fallback) (GLcontext *);
515
516 vfmt_project_func project_vertex;
517 vfmt_interpolate_func interpolate_vertices;
518
519 int vtxfmt_fallback_count;
520 int vtxfmt_installed;
521 void (*old_begin) (GLenum);
522 GLenum prim;
523
524 GLuint accel_light;
525 GLfloat basecolor[4];
526
527
528 /* Projected vertices, fastpath data:
529 */
530 GLvector1ui clipped_elements;
531 fxVertex *last_vert;
532 GLuint size;
533 };
534
535 typedef void (*tfxSetupFunc) (GLcontext * ctx, GLuint, GLuint);
536
537 extern GrHwConfiguration glbHWConfig;
538 extern int glbCurrentBoard;
539
540 extern void fxSetupFXUnits(GLcontext *);
541 extern void fxSetupDDPointers(GLcontext *);
542
543 /* fxvsetup:
544 */
545 extern void fxDDSetupInit(void);
546 extern void fxAllocVB(GLcontext * ctx);
547 extern void fxFreeVB(GLcontext * ctx);
548 extern void fxPrintSetupFlags(const char *msg, GLuint flags);
549 extern void fx_BuildProjVerts(GLcontext * ctx,
550 GLuint start, GLuint count, GLuint newinputs);
551 extern void fx_validate_BuildProjVerts(GLcontext * ctx,
552 GLuint start, GLuint count,
553 GLuint newinputs);
554
555 /* fxtrifuncs:
556 */
557 extern void fxDDTrifuncInit(void);
558 extern void fxDDChooseRenderState(GLcontext * ctx);
559
560
561 extern void fxUpdateDDSpanPointers(GLcontext *);
562 extern void fxSetupDDSpanPointers(GLcontext *);
563
564 extern void fxPrintTextureData(tfxTexInfo * ti);
565 extern void fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
566 GLint internalFormat, GLint width, GLint height,
567 GLint border, GLenum format, GLenum type,
568 const GLvoid * pixels,
569 const struct gl_pixelstore_attrib *packing,
570 struct gl_texture_object *texObj,
571 struct gl_texture_image *texImage);
572
573 extern void fxDDTexSubImage2D(GLcontext * ctx, GLenum target, GLint level,
574 GLint xoffset, GLint yoffset,
575 GLsizei width, GLsizei height,
576 GLenum format, GLenum type,
577 const GLvoid * pixels,
578 const struct gl_pixelstore_attrib *packing,
579 struct gl_texture_object *texObj,
580 struct gl_texture_image *texImage);
581 extern void fxDDTexEnv(GLcontext *, GLenum, GLenum, const GLfloat *);
582 extern void fxDDTexParam(GLcontext *, GLenum, struct gl_texture_object *,
583 GLenum, const GLfloat *);
584 extern void fxDDTexBind(GLcontext *, GLenum, struct gl_texture_object *);
585 extern void fxDDTexDel(GLcontext *, struct gl_texture_object *);
586 extern void fxDDTexPalette(GLcontext *, struct gl_texture_object *);
587 extern void fxDDTexUseGlbPalette(GLcontext *, GLboolean);
588
589 extern void fxDDEnable(GLcontext *, GLenum, GLboolean);
590 extern void fxDDAlphaFunc(GLcontext *, GLenum, GLchan);
591 extern void fxDDBlendFunc(GLcontext *, GLenum, GLenum);
592 extern void fxDDDepthMask(GLcontext *, GLboolean);
593 extern void fxDDDepthFunc(GLcontext *, GLenum);
594
595 extern void fxDDInitExtensions(GLcontext * ctx);
596
597 extern void fxTMInit(fxMesaContext ctx);
598 extern void fxTMClose(fxMesaContext ctx);
599 extern void fxTMRestoreTextures_NoLock(fxMesaContext ctx);
600 extern void fxTMMoveInTM(fxMesaContext, struct gl_texture_object *, GLint);
601 extern void fxTMMoveOutTM(fxMesaContext, struct gl_texture_object *);
602 #define fxTMMoveOutTM_NoLock fxTMMoveOutTM
603 extern void fxTMFreeTexture(fxMesaContext, struct gl_texture_object *);
604 extern void fxTMReloadMipMapLevel(fxMesaContext, struct gl_texture_object *,
605 GLint);
606 extern void fxTMReloadSubMipMapLevel(fxMesaContext,
607 struct gl_texture_object *, GLint, GLint,
608 GLint);
609
610 extern void fxTexGetFormat(GLenum, GrTextureFormat_t *, GLint *);
611 extern int fxTexGetInfo(int, int, GrLOD_t *, GrAspectRatio_t *,
612 float *, float *, int *, int *, int *, int *);
613
614 extern void fxDDScissor(GLcontext * ctx,
615 GLint x, GLint y, GLsizei w, GLsizei h);
616 extern void fxDDFogfv(GLcontext * ctx, GLenum pname, const GLfloat * params);
617 extern void fxDDColorMask(GLcontext * ctx,
618 GLboolean r, GLboolean g, GLboolean b, GLboolean a);
619
620 extern void fxDDWriteDepthSpan(GLcontext * ctx, GLuint n, GLint x, GLint y,
621 const GLdepth depth[], const GLubyte mask[]);
622
623 extern void fxDDReadDepthSpan(GLcontext * ctx, GLuint n, GLint x, GLint y,
624 GLdepth depth[]);
625
626 extern void fxDDWriteDepthPixels(GLcontext * ctx, GLuint n,
627 const GLint x[], const GLint y[],
628 const GLdepth depth[], const GLubyte mask[]);
629
630 extern void fxDDReadDepthPixels(GLcontext * ctx, GLuint n,
631 const GLint x[], const GLint y[],
632 GLdepth depth[]);
633
634 extern void fxDDShadeModel(GLcontext * ctx, GLenum mode);
635
636 extern void fxDDCullFace(GLcontext * ctx, GLenum mode);
637 extern void fxDDFrontFace(GLcontext * ctx, GLenum mode);
638
639 extern void fxPrintRenderState(const char *msg, GLuint state);
640 extern void fxPrintHintState(const char *msg, GLuint state);
641
642 extern int fxDDInitFxMesaContext(fxMesaContext fxMesa);
643 extern void fxDDDestroyFxMesaContext(fxMesaContext fxMesa);
644
645
646
647
648 extern void fxSetScissorValues(GLcontext * ctx);
649 extern void fxTMMoveInTM_NoLock(fxMesaContext fxMesa,
650 struct gl_texture_object *tObj, GLint where);
651 extern void fxInitPixelTables(fxMesaContext fxMesa, GLboolean bgrOrder);
652
653
654 /* fxvtxfmt:
655 */
656 extern void fxDDCheckVtxfmt(GLcontext * ctx);
657 extern void fx_update_lighting(GLcontext * ctx);
658 extern void fxDDInitVtxfmt(GLcontext * ctx);
659
660 /* fxsimplerender
661 */
662 extern const struct gl_pipeline_stage fx_render_stage;
663
664 #endif