Glide Plugin GLES2 port from mupen64plus-ae, but with special FrameSkip code
[mupen64plus-pandora.git] / source / gles2glide64 / src / Glitch64 / inc / glide.h
CommitLineData
98e75f2d 1/*
2** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
3** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
4** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
5** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
6** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
7** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
8** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
9** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
10**
11** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
12** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
13** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
14** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
15** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
16** THE UNITED STATES.
17**
18** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
19*/
20
21/*
22** GLIDE.H
23**
24** The following #defines are relevant when using Glide:
25**
26** One of the following "platform constants" must be defined during
27** compilation:
28**
29** __DOS__ Defined for 32-bit DOS applications
30** __WIN32__ Defined for 32-bit Windows applications
31** __sparc__ Defined for Sun Solaris/SunOS
32** __linux__ Defined for Linux applications
33** __FreeBSD__ Defined for FreeBSD applications
34** __NetBSD__ Defined for NetBSD applications
35** __OpenBSD__ Defined for OpenBSD applications
36** __IRIX__ Defined for SGI Irix applications
37**
38*/
39#ifndef __GLIDE_H__
40#define __GLIDE_H__
41
42#include <3dfx.h>
43#include <glidesys.h>
44#include <sst1vid.h>
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/*
51** -----------------------------------------------------------------------
52** TYPE DEFINITIONS
53** -----------------------------------------------------------------------
54*/
55typedef FxU32 GrColor_t;
56typedef FxU8 GrAlpha_t;
57typedef FxU32 GrMipMapId_t;
58typedef FxU32 GrStipplePattern_t;
59typedef FxU8 GrFog_t;
60typedef FxU32 GrContext_t;
61typedef int (FX_CALL *GrProc)();
62
63#ifndef WIN32
64typedef int HWND;
65#endif
66
67/*
68** -----------------------------------------------------------------------
69** CONSTANTS AND TYPES
70** -----------------------------------------------------------------------
71*/
72#define GR_NULL_MIPMAP_HANDLE ((GrMipMapId_t) -1)
73
74#define GR_MIPMAPLEVELMASK_EVEN FXBIT(0)
75#define GR_MIPMAPLEVELMASK_ODD FXBIT(1)
76#define GR_MIPMAPLEVELMASK_BOTH (GR_MIPMAPLEVELMASK_EVEN | GR_MIPMAPLEVELMASK_ODD )
77
78#define GR_LODBIAS_BILINEAR 0.5
79#define GR_LODBIAS_TRILINEAR 0.0
80
81typedef FxI32 GrChipID_t;
82#define GR_TMU0 0x0
83#define GR_TMU1 0x1
84#define GR_TMU2 0x2
85
86#define GR_FBI 0x0
87
88typedef FxI32 GrCombineFunction_t;
89#define GR_COMBINE_FUNCTION_ZERO 0x0
90#define GR_COMBINE_FUNCTION_NONE GR_COMBINE_FUNCTION_ZERO
91#define GR_COMBINE_FUNCTION_LOCAL 0x1
92#define GR_COMBINE_FUNCTION_LOCAL_ALPHA 0x2
93#define GR_COMBINE_FUNCTION_SCALE_OTHER 0x3
94#define GR_COMBINE_FUNCTION_BLEND_OTHER GR_COMBINE_FUNCTION_SCALE_OTHER
95#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL 0x4
96#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA 0x5
97#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL 0x6
98#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL 0x7
99#define GR_COMBINE_FUNCTION_BLEND GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL
100#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x8
101#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL 0x9
102#define GR_COMBINE_FUNCTION_BLEND_LOCAL GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL
103#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x10
104
105typedef FxI32 GrCombineFactor_t;
106#define GR_COMBINE_FACTOR_ZERO 0x0
107#define GR_COMBINE_FACTOR_NONE GR_COMBINE_FACTOR_ZERO
108#define GR_COMBINE_FACTOR_LOCAL 0x1
109#define GR_COMBINE_FACTOR_OTHER_ALPHA 0x2
110#define GR_COMBINE_FACTOR_LOCAL_ALPHA 0x3
111#define GR_COMBINE_FACTOR_TEXTURE_ALPHA 0x4
112#define GR_COMBINE_FACTOR_TEXTURE_RGB 0x5
113#define GR_COMBINE_FACTOR_DETAIL_FACTOR GR_COMBINE_FACTOR_TEXTURE_ALPHA
114#define GR_COMBINE_FACTOR_LOD_FRACTION 0x5
115#define GR_COMBINE_FACTOR_ONE 0x8
116#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL 0x9
117#define GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA 0xa
118#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA 0xb
119#define GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA 0xc
120#define GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA
121#define GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION 0xd
122
123
124typedef FxI32 GrCombineLocal_t;
125#define GR_COMBINE_LOCAL_ITERATED 0x0
126#define GR_COMBINE_LOCAL_CONSTANT 0x1
127#define GR_COMBINE_LOCAL_NONE GR_COMBINE_LOCAL_CONSTANT
128#define GR_COMBINE_LOCAL_DEPTH 0x2
129
130typedef FxI32 GrCombineOther_t;
131#define GR_COMBINE_OTHER_ITERATED 0x0
132#define GR_COMBINE_OTHER_TEXTURE 0x1
133#define GR_COMBINE_OTHER_CONSTANT 0x2
134#define GR_COMBINE_OTHER_NONE GR_COMBINE_OTHER_CONSTANT
135
136
137typedef FxI32 GrAlphaSource_t;
138#define GR_ALPHASOURCE_CC_ALPHA 0x0
139#define GR_ALPHASOURCE_ITERATED_ALPHA 0x1
140#define GR_ALPHASOURCE_TEXTURE_ALPHA 0x2
141#define GR_ALPHASOURCE_TEXTURE_ALPHA_TIMES_ITERATED_ALPHA 0x3
142
143
144typedef FxI32 GrColorCombineFnc_t;
145#define GR_COLORCOMBINE_ZERO 0x0
146#define GR_COLORCOMBINE_CCRGB 0x1
147#define GR_COLORCOMBINE_ITRGB 0x2
148#define GR_COLORCOMBINE_ITRGB_DELTA0 0x3
149#define GR_COLORCOMBINE_DECAL_TEXTURE 0x4
150#define GR_COLORCOMBINE_TEXTURE_TIMES_CCRGB 0x5
151#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB 0x6
152#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_DELTA0 0x7
153#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_ADD_ALPHA 0x8
154#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA 0x9
155#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA_ADD_ITRGB 0xa
156#define GR_COLORCOMBINE_TEXTURE_ADD_ITRGB 0xb
157#define GR_COLORCOMBINE_TEXTURE_SUB_ITRGB 0xc
158#define GR_COLORCOMBINE_CCRGB_BLEND_ITRGB_ON_TEXALPHA 0xd
159#define GR_COLORCOMBINE_DIFF_SPEC_A 0xe
160#define GR_COLORCOMBINE_DIFF_SPEC_B 0xf
161#define GR_COLORCOMBINE_ONE 0x10
162
163typedef FxI32 GrAlphaBlendFnc_t;
164#define GR_BLEND_ZERO 0x0
165#define GR_BLEND_SRC_ALPHA 0x1
166#define GR_BLEND_SRC_COLOR 0x2
167#define GR_BLEND_DST_COLOR GR_BLEND_SRC_COLOR
168#define GR_BLEND_DST_ALPHA 0x3
169#define GR_BLEND_ONE 0x4
170#define GR_BLEND_ONE_MINUS_SRC_ALPHA 0x5
171#define GR_BLEND_ONE_MINUS_SRC_COLOR 0x6
172#define GR_BLEND_ONE_MINUS_DST_COLOR GR_BLEND_ONE_MINUS_SRC_COLOR
173#define GR_BLEND_ONE_MINUS_DST_ALPHA 0x7
174#define GR_BLEND_RESERVED_8 0x8
175#define GR_BLEND_RESERVED_9 0x9
176#define GR_BLEND_RESERVED_A 0xa
177#define GR_BLEND_RESERVED_B 0xb
178#define GR_BLEND_RESERVED_C 0xc
179#define GR_BLEND_RESERVED_D 0xd
180#define GR_BLEND_RESERVED_E 0xe
181#define GR_BLEND_ALPHA_SATURATE 0xf
182#define GR_BLEND_PREFOG_COLOR GR_BLEND_ALPHA_SATURATE
183
184typedef FxI32 GrAspectRatio_t;
185#define GR_ASPECT_LOG2_8x1 3 /* 8W x 1H */
186#define GR_ASPECT_LOG2_4x1 2 /* 4W x 1H */
187#define GR_ASPECT_LOG2_2x1 1 /* 2W x 1H */
188#define GR_ASPECT_LOG2_1x1 0 /* 1W x 1H */
189#define GR_ASPECT_LOG2_1x2 -1 /* 1W x 2H */
190#define GR_ASPECT_LOG2_1x4 -2 /* 1W x 4H */
191#define GR_ASPECT_LOG2_1x8 -3 /* 1W x 8H */
192
193typedef FxI32 GrBuffer_t;
194#define GR_BUFFER_FRONTBUFFER 0x0
195#define GR_BUFFER_BACKBUFFER 0x1
196#define GR_BUFFER_AUXBUFFER 0x2
197#define GR_BUFFER_DEPTHBUFFER 0x3
198#define GR_BUFFER_ALPHABUFFER 0x4
199#define GR_BUFFER_TRIPLEBUFFER 0x5
200
201typedef FxI32 GrChromakeyMode_t;
202#define GR_CHROMAKEY_DISABLE 0x0
203#define GR_CHROMAKEY_ENABLE 0x1
204
205typedef FxI32 GrChromaRangeMode_t;
206#define GR_CHROMARANGE_RGB_ALL_EXT 0x0
207
208#define GR_CHROMARANGE_DISABLE_EXT 0x00
209#define GR_CHROMARANGE_ENABLE_EXT 0x01
210
211typedef FxI32 GrTexChromakeyMode_t;
212#define GR_TEXCHROMA_DISABLE_EXT 0x0
213#define GR_TEXCHROMA_ENABLE_EXT 0x1
214
215#define GR_TEXCHROMARANGE_RGB_ALL_EXT 0x0
216
217typedef FxI32 GrCmpFnc_t;
218#define GR_CMP_NEVER 0x0
219#define GR_CMP_LESS 0x1
220#define GR_CMP_EQUAL 0x2
221#define GR_CMP_LEQUAL 0x3
222#define GR_CMP_GREATER 0x4
223#define GR_CMP_NOTEQUAL 0x5
224#define GR_CMP_GEQUAL 0x6
225#define GR_CMP_ALWAYS 0x7
226
227typedef FxI32 GrColorFormat_t;
228#define GR_COLORFORMAT_ARGB 0x0
229#define GR_COLORFORMAT_ABGR 0x1
230
231#define GR_COLORFORMAT_RGBA 0x2
232#define GR_COLORFORMAT_BGRA 0x3
233
234typedef FxI32 GrCullMode_t;
235#define GR_CULL_DISABLE 0x0
236#define GR_CULL_NEGATIVE 0x1
237#define GR_CULL_POSITIVE 0x2
238
239typedef FxI32 GrDepthBufferMode_t;
240#define GR_DEPTHBUFFER_DISABLE 0x0
241#define GR_DEPTHBUFFER_ZBUFFER 0x1
242#define GR_DEPTHBUFFER_WBUFFER 0x2
243#define GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS 0x3
244#define GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS 0x4
245
246typedef FxI32 GrDitherMode_t;
247#define GR_DITHER_DISABLE 0x0
248#define GR_DITHER_2x2 0x1
249#define GR_DITHER_4x4 0x2
250
251typedef FxI32 GrStippleMode_t;
252#define GR_STIPPLE_DISABLE 0x0
253#define GR_STIPPLE_PATTERN 0x1
254#define GR_STIPPLE_ROTATE 0x2
255
256typedef FxI32 GrFogMode_t;
257#define GR_FOG_DISABLE 0x0
258#define GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT 0x1
259#define GR_FOG_WITH_TABLE_ON_Q 0x2
260#define GR_FOG_WITH_TABLE_ON_W GR_FOG_WITH_TABLE_ON_Q
261#define GR_FOG_WITH_ITERATED_Z 0x3
262#define GR_FOG_WITH_ITERATED_ALPHA_EXT 0x4
263#define GR_FOG_MULT2 0x100
264#define GR_FOG_ADD2 0x200
265
266typedef FxU32 GrLock_t;
267#define GR_LFB_READ_ONLY 0x00
268#define GR_LFB_WRITE_ONLY 0x01
269#define GR_LFB_IDLE 0x00
270#define GR_LFB_NOIDLE 0x10
271
272#define GR_LFB_WRITE_ONLY_EXPLICIT_EXT 0x02 /* explicitly not allow reading from the lfb pointer */
273
274typedef FxI32 GrLfbBypassMode_t;
275#define GR_LFBBYPASS_DISABLE 0x0
276#define GR_LFBBYPASS_ENABLE 0x1
277
278typedef FxI32 GrLfbWriteMode_t;
279#define GR_LFBWRITEMODE_565 0x0 /* RGB:RGB */
280#define GR_LFBWRITEMODE_555 0x1 /* RGB:RGB */
281#define GR_LFBWRITEMODE_1555 0x2 /* ARGB:ARGB */
282#define GR_LFBWRITEMODE_RESERVED1 0x3
283#define GR_LFBWRITEMODE_888 0x4 /* RGB */
284#define GR_LFBWRITEMODE_8888 0x5 /* ARGB */
285#define GR_LFBWRITEMODE_RESERVED2 0x6
286#define GR_LFBWRITEMODE_RESERVED3 0x7
287#define GR_LFBWRITEMODE_RESERVED4 0x8
288#define GR_LFBWRITEMODE_RESERVED5 0x9
289#define GR_LFBWRITEMODE_RESERVED6 0xa
290#define GR_LFBWRITEMODE_RESERVED7 0xb
291#define GR_LFBWRITEMODE_565_DEPTH 0xc /* RGB:DEPTH */
292#define GR_LFBWRITEMODE_555_DEPTH 0xd /* RGB:DEPTH */
293#define GR_LFBWRITEMODE_1555_DEPTH 0xe /* ARGB:DEPTH */
294#define GR_LFBWRITEMODE_ZA16 0xf /* DEPTH:DEPTH */
295#define GR_LFBWRITEMODE_ANY 0xFF
296
297
298typedef FxI32 GrOriginLocation_t;
299#define GR_ORIGIN_UPPER_LEFT 0x0
300#define GR_ORIGIN_LOWER_LEFT 0x1
301#define GR_ORIGIN_ANY 0xFF
302
303typedef struct {
304 int size;
305 void *lfbPtr;
306 FxU32 strideInBytes;
307 GrLfbWriteMode_t writeMode;
308 GrOriginLocation_t origin;
309} GrLfbInfo_t;
310
311typedef FxI32 GrLOD_t;
312#define GR_LOD_LOG2_256 0x8
313#define GR_LOD_LOG2_128 0x7
314#define GR_LOD_LOG2_64 0x6
315#define GR_LOD_LOG2_32 0x5
316#define GR_LOD_LOG2_16 0x4
317#define GR_LOD_LOG2_8 0x3
318#define GR_LOD_LOG2_4 0x2
319#define GR_LOD_LOG2_2 0x1
320#define GR_LOD_LOG2_1 0x0
321
322typedef FxI32 GrMipMapMode_t;
323#define GR_MIPMAP_DISABLE 0x0 /* no mip mapping */
324#define GR_MIPMAP_NEAREST 0x1 /* use nearest mipmap */
325#define GR_MIPMAP_NEAREST_DITHER 0x2 /* GR_MIPMAP_NEAREST + LOD dith */
326
327typedef FxI32 GrSmoothingMode_t;
328#define GR_SMOOTHING_DISABLE 0x0
329#define GR_SMOOTHING_ENABLE 0x1
330
331typedef FxI32 GrTextureClampMode_t;
332#define GR_TEXTURECLAMP_WRAP 0x0
333#define GR_TEXTURECLAMP_CLAMP 0x1
334#define GR_TEXTURECLAMP_MIRROR_EXT 0x2
335
336typedef FxI32 GrTextureCombineFnc_t;
337#define GR_TEXTURECOMBINE_ZERO 0x0 /* texout = 0 */
338#define GR_TEXTURECOMBINE_DECAL 0x1 /* texout = texthis */
339#define GR_TEXTURECOMBINE_OTHER 0x2 /* this TMU in passthru mode */
340#define GR_TEXTURECOMBINE_ADD 0x3 /* tout = tthis + t(this+1) */
341#define GR_TEXTURECOMBINE_MULTIPLY 0x4 /* texout = tthis * t(this+1) */
342#define GR_TEXTURECOMBINE_SUBTRACT 0x5 /* Sutract from upstream TMU */
343#define GR_TEXTURECOMBINE_DETAIL 0x6 /* detail--detail on tthis */
344#define GR_TEXTURECOMBINE_DETAIL_OTHER 0x7 /* detail--detail on tthis+1 */
345#define GR_TEXTURECOMBINE_TRILINEAR_ODD 0x8 /* trilinear--odd levels tthis*/
346#define GR_TEXTURECOMBINE_TRILINEAR_EVEN 0x9 /*trilinear--even levels tthis*/
347#define GR_TEXTURECOMBINE_ONE 0xa /* texout = 0xFFFFFFFF */
348
349typedef FxI32 GrTextureFilterMode_t;
350#define GR_TEXTUREFILTER_POINT_SAMPLED 0x0
351#define GR_TEXTUREFILTER_BILINEAR 0x1
352
353typedef FxI32 GrTextureFormat_t;
354/* KoolSmoky - */
355#define GR_TEXFMT_8BIT 0x0
356#define GR_TEXFMT_RGB_332 GR_TEXFMT_8BIT
357#define GR_TEXFMT_YIQ_422 0x1
358#define GR_TEXFMT_ALPHA_8 0x2 /* (0..0xFF) alpha */
359#define GR_TEXFMT_INTENSITY_8 0x3 /* (0..0xFF) intensity */
360#define GR_TEXFMT_ALPHA_INTENSITY_44 0x4
361#define GR_TEXFMT_P_8 0x5 /* 8-bit palette */
362#define GR_TEXFMT_RSVD0 0x6 /* GR_TEXFMT_P_8_RGBA */
363#define GR_TEXFMT_P_8_6666 GR_TEXFMT_RSVD0
364#define GR_TEXFMT_P_8_6666_EXT GR_TEXFMT_RSVD0
365#define GR_TEXFMT_RSVD1 0x7
366#define GR_TEXFMT_16BIT 0x8
367#define GR_TEXFMT_ARGB_8332 GR_TEXFMT_16BIT
368#define GR_TEXFMT_AYIQ_8422 0x9
369#define GR_TEXFMT_RGB_565 0xa
370#define GR_TEXFMT_ARGB_1555 0xb
371#define GR_TEXFMT_ARGB_4444 0xc
372#define GR_TEXFMT_ALPHA_INTENSITY_88 0xd
373#define GR_TEXFMT_AP_88 0xe /* 8-bit alpha 8-bit palette */
374#define GR_TEXFMT_RSVD2 0xf
375#define GR_TEXFMT_RSVD4 GR_TEXFMT_RSVD2
376
377typedef FxU32 GrTexTable_t;
378#define GR_TEXTABLE_NCC0 0x0
379#define GR_TEXTABLE_NCC1 0x1
380#define GR_TEXTABLE_PALETTE 0x2
381#define GR_TEXTABLE_PALETTE_6666_EXT 0x3
382
383typedef FxU32 GrNCCTable_t;
384#define GR_NCCTABLE_NCC0 0x0
385#define GR_NCCTABLE_NCC1 0x1
386
387typedef FxU32 GrTexBaseRange_t;
388#define GR_TEXBASE_256 0x3
389#define GR_TEXBASE_128 0x2
390#define GR_TEXBASE_64 0x1
391#define GR_TEXBASE_32_TO_1 0x0
392
393
394typedef FxU32 GrEnableMode_t;
395#define GR_MODE_DISABLE 0x0
396#define GR_MODE_ENABLE 0x1
397
398#define GR_AA_ORDERED 0x01
399#define GR_ALLOW_MIPMAP_DITHER 0x02
400#define GR_PASSTHRU 0x03
401#define GR_SHAMELESS_PLUG 0x04
402#define GR_VIDEO_SMOOTHING 0x05
403
404typedef FxU32 GrCoordinateSpaceMode_t;
405#define GR_WINDOW_COORDS 0x00
406#define GR_CLIP_COORDS 0x01
407
408/* Types of data in strips */
409#define GR_FLOAT 0
410#define GR_U8 1
411
412/* Parameters for strips */
413#define GR_PARAM_XY 0x01
414#define GR_PARAM_Z 0x02
415#define GR_PARAM_W 0x03
416#define GR_PARAM_Q 0x04
417#define GR_PARAM_FOG_EXT 0x05
418
419#define GR_PARAM_A 0x10
420
421#define GR_PARAM_RGB 0x20
422
423#define GR_PARAM_PARGB 0x30
424
425#define GR_PARAM_ST0 0x40
426#define GR_PARAM_ST1 GR_PARAM_ST0+1
427#define GR_PARAM_ST2 GR_PARAM_ST0+2
428
429#define GR_PARAM_Q0 0x50
430#define GR_PARAM_Q1 GR_PARAM_Q0+1
431#define GR_PARAM_Q2 GR_PARAM_Q0+2
432
433#define GR_PARAM_DISABLE 0x00
434#define GR_PARAM_ENABLE 0x01
435
436/*
437** grDrawVertexArray/grDrawVertexArrayContiguous primitive type
438*/
439#define GR_POINTS 0
440#define GR_LINE_STRIP 1
441#define GR_LINES 2
442#define GR_POLYGON 3
443#define GR_TRIANGLE_STRIP 4
444#define GR_TRIANGLE_FAN 5
445#define GR_TRIANGLES 6
446#define GR_TRIANGLE_STRIP_CONTINUE 7
447#define GR_TRIANGLE_FAN_CONTINUE 8
448
449/*
450** grGet/grReset types
451*/
452#define GR_BITS_DEPTH 0x01
453#define GR_BITS_RGBA 0x02
454#define GR_FIFO_FULLNESS 0x03
455#define GR_FOG_TABLE_ENTRIES 0x04
456#define GR_GAMMA_TABLE_ENTRIES 0x05
457#define GR_GLIDE_STATE_SIZE 0x06
458#define GR_GLIDE_VERTEXLAYOUT_SIZE 0x07
459#define GR_IS_BUSY 0x08
460#define GR_LFB_PIXEL_PIPE 0x09
461#define GR_MAX_TEXTURE_SIZE 0x0a
462#define GR_MAX_TEXTURE_ASPECT_RATIO 0x0b
463#define GR_MEMORY_FB 0x0c
464#define GR_MEMORY_TMU 0x0d
465#define GR_MEMORY_UMA 0x0e
466#define GR_NUM_BOARDS 0x0f
467#define GR_NON_POWER_OF_TWO_TEXTURES 0x10
468#define GR_NUM_FB 0x11
469#define GR_NUM_SWAP_HISTORY_BUFFER 0x12
470#define GR_NUM_TMU 0x13
471#define GR_PENDING_BUFFERSWAPS 0x14
472#define GR_REVISION_FB 0x15
473#define GR_REVISION_TMU 0x16
474#define GR_STATS_LINES 0x17 /* grGet/grReset */
475#define GR_STATS_PIXELS_AFUNC_FAIL 0x18
476#define GR_STATS_PIXELS_CHROMA_FAIL 0x19
477#define GR_STATS_PIXELS_DEPTHFUNC_FAIL 0x1a
478#define GR_STATS_PIXELS_IN 0x1b
479#define GR_STATS_PIXELS_OUT 0x1c
480#define GR_STATS_PIXELS 0x1d /* grReset */
481#define GR_STATS_POINTS 0x1e /* grGet/grReset */
482#define GR_STATS_TRIANGLES_IN 0x1f
483#define GR_STATS_TRIANGLES_OUT 0x20
484#define GR_STATS_TRIANGLES 0x21 /* grReset */
485#define GR_SWAP_HISTORY 0x22
486#define GR_SUPPORTS_PASSTHRU 0x23
487#define GR_TEXTURE_ALIGN 0x24
488#define GR_VIDEO_POSITION 0x25
489#define GR_VIEWPORT 0x26
490#define GR_WDEPTH_MIN_MAX 0x27
491#define GR_ZDEPTH_MIN_MAX 0x28
492#define GR_VERTEX_PARAMETER 0x29
493#define GR_BITS_GAMMA 0x2a
494#define GR_GET_RESERVED_1 0x1000
495
496/*
497** grGetString types
498*/
499#define GR_EXTENSION 0xa0
500#define GR_HARDWARE 0xa1
501#define GR_RENDERER 0xa2
502#define GR_VENDOR 0xa3
503#define GR_VERSION 0xa4
504
505/*
506** -----------------------------------------------------------------------
507** STRUCTURES
508** -----------------------------------------------------------------------
509*/
510
511typedef struct {
512 GrLOD_t smallLodLog2;
513 GrLOD_t largeLodLog2;
514 GrAspectRatio_t aspectRatioLog2;
515 GrTextureFormat_t format;
516 void *data;
517} GrTexInfo;
518
519typedef struct GrSstPerfStats_s {
520 FxU32 pixelsIn; /* # pixels processed (minus buffer clears) */
521 FxU32 chromaFail; /* # pixels not drawn due to chroma key */
522 FxU32 zFuncFail; /* # pixels not drawn due to Z comparison */
523 FxU32 aFuncFail; /* # pixels not drawn due to alpha comparison */
524 FxU32 pixelsOut; /* # pixels drawn (including buffer clears) */
525} GrSstPerfStats_t;
526
527typedef struct {
528 GrScreenResolution_t resolution;
529 GrScreenRefresh_t refresh;
530 int numColorBuffers;
531 int numAuxBuffers;
532} GrResolution;
533
534typedef GrResolution GlideResolution;
535
536#define GR_QUERY_ANY ((FxU32)(~0))
537
538typedef FxU32 GrLfbSrcFmt_t;
539#define GR_LFB_SRC_FMT_565 0x00
540#define GR_LFB_SRC_FMT_555 0x01
541#define GR_LFB_SRC_FMT_1555 0x02
542#define GR_LFB_SRC_FMT_888 0x04
543#define GR_LFB_SRC_FMT_8888 0x05
544#define GR_LFB_SRC_FMT_565_DEPTH 0x0c
545#define GR_LFB_SRC_FMT_555_DEPTH 0x0d
546#define GR_LFB_SRC_FMT_1555_DEPTH 0x0e
547#define GR_LFB_SRC_FMT_ZA16 0x0f
548#define GR_LFB_SRC_FMT_RLE16 0x80
549
550#ifdef H3D
551#define GR_HINT_H3DENABLE 4
552#undef GR_HINTTYPE_MAX
553#define GR_HINTTYPE_MAX 4
554#endif
555
556/*
557** -----------------------------------------------------------------------
558** FUNCTION PROTOTYPES
559** -----------------------------------------------------------------------
560*/
561#ifndef FX_GLIDE_NO_FUNC_PROTO
562/*
563** rendering functions
564*/
565FX_ENTRY void FX_CALL
566grDrawPoint( const void *pt );
567
568FX_ENTRY void FX_CALL
569grDrawLine( const void *v1, const void *v2 );
570
571FX_ENTRY void FX_CALL
572grDrawTriangle( const void *a, const void *b, const void *c );
573
574FX_ENTRY void FX_CALL
575grVertexLayout(FxU32 param, FxI32 offset, FxU32 mode);
576
577FX_ENTRY void FX_CALL
578grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers);
579
580FX_ENTRY void FX_CALL
581grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride);
582
583/*
584** Antialiasing Functions
585*/
586
587FX_ENTRY void FX_CALL
588grAADrawTriangle(
589 const void *a, const void *b, const void *c,
590 FxBool ab_antialias, FxBool bc_antialias, FxBool ca_antialias
591 );
592
593/*
594** buffer management
595*/
596FX_ENTRY void FX_CALL
597grBufferClear( GrColor_t color, GrAlpha_t alpha, FxU32 depth );
598
599FX_ENTRY void FX_CALL
600grBufferSwap( FxU32 swap_interval );
601
602FX_ENTRY void FX_CALL
603grRenderBuffer( GrBuffer_t buffer );
604
605/*
606** error management
607*/
608typedef void (*GrErrorCallbackFnc_t)( const char *string, FxBool fatal );
609
610FX_ENTRY void FX_CALL
611grErrorSetCallback( GrErrorCallbackFnc_t fnc );
612
613/*
614** SST routines
615*/
616FX_ENTRY void FX_CALL
617grFinish(void);
618
619FX_ENTRY void FX_CALL
620grFlush(void);
621
622FX_ENTRY GrContext_t FX_CALL
623grSstWinOpen(
624 HWND hWnd,
625 GrScreenResolution_t screen_resolution,
626 GrScreenRefresh_t refresh_rate,
627 GrColorFormat_t color_format,
628 GrOriginLocation_t origin_location,
629 int nColBuffers,
630 int nAuxBuffers);
631
632FX_ENTRY FxBool FX_CALL
633grSstWinClose( GrContext_t context );
634
635FX_ENTRY void FX_CALL
636grSetNumPendingBuffers(FxI32 NumPendingBuffers);
637
638FX_ENTRY FxBool FX_CALL
639grSelectContext( GrContext_t context );
640
641FX_ENTRY void FX_CALL
642grSstOrigin(GrOriginLocation_t origin);
643
644FX_ENTRY void FX_CALL
645grSstSelect( int which_sst );
646
647/*
648** Glide configuration and special effect maintenance functions
649*/
650FX_ENTRY void FX_CALL
651grAlphaBlendFunction(
652 GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df,
653 GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df
654 );
655
656FX_ENTRY void FX_CALL
657grAlphaCombine(
658 GrCombineFunction_t function, GrCombineFactor_t factor,
659 GrCombineLocal_t local, GrCombineOther_t other,
660 FxBool invert
661 );
662
663FX_ENTRY void FX_CALL
664grAlphaControlsITRGBLighting( FxBool enable );
665
666FX_ENTRY void FX_CALL
667grAlphaTestFunction( GrCmpFnc_t function );
668
669FX_ENTRY void FX_CALL
670grAlphaTestReferenceValue( GrAlpha_t value );
671
672FX_ENTRY void FX_CALL
673grChromakeyMode( GrChromakeyMode_t mode );
674
675FX_ENTRY void FX_CALL
676grChromakeyValue( GrColor_t value );
677
678FX_ENTRY void FX_CALL
679grClipWindow( FxU32 minx, FxU32 miny, FxU32 maxx, FxU32 maxy );
680
681FX_ENTRY void FX_CALL
682grColorCombine(
683 GrCombineFunction_t function, GrCombineFactor_t factor,
684 GrCombineLocal_t local, GrCombineOther_t other,
685 FxBool invert );
686
687FX_ENTRY void FX_CALL
688grColorMask( FxBool rgb, FxBool a );
689
690FX_ENTRY void FX_CALL
691grCullMode( GrCullMode_t mode );
692
693FX_ENTRY void FX_CALL
694grConstantColorValue( GrColor_t value );
695
696FX_ENTRY void FX_CALL
697grDepthBiasLevel( FxI32 level );
698
699FX_ENTRY void FX_CALL
700grDepthBufferFunction( GrCmpFnc_t function );
701
702FX_ENTRY void FX_CALL
703grDepthBufferMode( GrDepthBufferMode_t mode );
704
705FX_ENTRY void FX_CALL
706grDepthMask( FxBool mask );
707
708FX_ENTRY void FX_CALL
709grDisableAllEffects( void );
710
711FX_ENTRY void FX_CALL
712grDitherMode( GrDitherMode_t mode );
713
714FX_ENTRY void FX_CALL
715grFogColorValue( GrColor_t fogcolor );
716
717FX_ENTRY void FX_CALL
718grFogMode( GrFogMode_t mode );
719
720FX_ENTRY void FX_CALL
721grFogTable( const GrFog_t ft[] );
722
723FX_ENTRY void FX_CALL
724grLoadGammaTable( FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);
725
726FX_ENTRY void FX_CALL
727grSplash(float x, float y, float width, float height, FxU32 frame);
728
729FX_ENTRY FxU32 FX_CALL
730grGet( FxU32 pname, FxU32 plength, FxI32 *params );
731
732FX_ENTRY const char * FX_CALL
733grGetString( FxU32 pname );
734
735FX_ENTRY FxI32 FX_CALL
736grQueryResolutions( const GrResolution *resTemplate, GrResolution *output );
737
738FX_ENTRY FxBool FX_CALL
739grReset( FxU32 what );
740
741FX_ENTRY GrProc FX_CALL
742grGetProcAddress( char *procName );
743
744FX_ENTRY void FX_CALL
745grEnable( GrEnableMode_t mode );
746
747FX_ENTRY void FX_CALL
748grDisable( GrEnableMode_t mode );
749
750FX_ENTRY void FX_CALL
751grCoordinateSpace( GrCoordinateSpaceMode_t mode );
752
753FX_ENTRY void FX_CALL
754grDepthRange( FxFloat n, FxFloat f );
755
756FX_ENTRY void FX_CALL
757grStippleMode( GrStippleMode_t mode );
758
759FX_ENTRY void FX_CALL
760grStipplePattern( GrStipplePattern_t mode );
761
762FX_ENTRY void FX_CALL
763grViewport( FxI32 x, FxI32 y, FxI32 width, FxI32 height );
764
765/*
766** texture mapping control functions
767*/
768FX_ENTRY FxU32 FX_CALL
769grTexCalcMemRequired(
770 GrLOD_t lodmin, GrLOD_t lodmax,
771 GrAspectRatio_t aspect, GrTextureFormat_t fmt);
772
773FX_ENTRY FxU32 FX_CALL
774grTexTextureMemRequired( FxU32 evenOdd,
775 GrTexInfo *info );
776
777FX_ENTRY FxU32 FX_CALL
778grTexMinAddress( GrChipID_t tmu );
779
780FX_ENTRY FxU32 FX_CALL
781grTexMaxAddress( GrChipID_t tmu );
782
783FX_ENTRY void FX_CALL
784grTexNCCTable( GrNCCTable_t table );
785
786FX_ENTRY void FX_CALL
787grTexSource( GrChipID_t tmu,
788 FxU32 startAddress,
789 FxU32 evenOdd,
790 GrTexInfo *info );
791
792FX_ENTRY void FX_CALL
793grTexClampMode(
794 GrChipID_t tmu,
795 GrTextureClampMode_t s_clampmode,
796 GrTextureClampMode_t t_clampmode
797 );
798
799FX_ENTRY void FX_CALL
800grTexCombine(
801 GrChipID_t tmu,
802 GrCombineFunction_t rgb_function,
803 GrCombineFactor_t rgb_factor,
804 GrCombineFunction_t alpha_function,
805 GrCombineFactor_t alpha_factor,
806 FxBool rgb_invert,
807 FxBool alpha_invert
808 );
809
810FX_ENTRY void FX_CALL
811grTexDetailControl(
812 GrChipID_t tmu,
813 int lod_bias,
814 FxU8 detail_scale,
815 float detail_max
816 );
817
818FX_ENTRY void FX_CALL
819grTexFilterMode(
820 GrChipID_t tmu,
821 GrTextureFilterMode_t minfilter_mode,
822 GrTextureFilterMode_t magfilter_mode
823 );
824
825
826FX_ENTRY void FX_CALL
827grTexLodBiasValue(GrChipID_t tmu, float bias );
828
829FX_ENTRY void FX_CALL
830grTexDownloadMipMap( GrChipID_t tmu,
831 FxU32 startAddress,
832 FxU32 evenOdd,
833 GrTexInfo *info );
834
835FX_ENTRY void FX_CALL
836grTexDownloadMipMapLevel( GrChipID_t tmu,
837 FxU32 startAddress,
838 GrLOD_t thisLod,
839 GrLOD_t largeLod,
840 GrAspectRatio_t aspectRatio,
841 GrTextureFormat_t format,
842 FxU32 evenOdd,
843 void *data );
844
845FX_ENTRY FxBool FX_CALL
846grTexDownloadMipMapLevelPartial( GrChipID_t tmu,
847 FxU32 startAddress,
848 GrLOD_t thisLod,
849 GrLOD_t largeLod,
850 GrAspectRatio_t aspectRatio,
851 GrTextureFormat_t format,
852 FxU32 evenOdd,
853 void *data,
854 int start,
855 int end );
856
857FX_ENTRY void FX_CALL
858grTexDownloadTable( GrTexTable_t type,
859 void *data );
860
861FX_ENTRY void FX_CALL
862grTexDownloadTablePartial( GrTexTable_t type,
863 void *data,
864 int start,
865 int end );
866
867FX_ENTRY void FX_CALL
868grTexMipMapMode( GrChipID_t tmu,
869 GrMipMapMode_t mode,
870 FxBool lodBlend );
871
872FX_ENTRY void FX_CALL
873grTexMultibase( GrChipID_t tmu,
874 FxBool enable );
875
876FX_ENTRY void FX_CALL
877grTexMultibaseAddress( GrChipID_t tmu,
878 GrTexBaseRange_t range,
879 FxU32 startAddress,
880 FxU32 evenOdd,
881 GrTexInfo *info );
882
883/*
884** linear frame buffer functions
885*/
886
887FX_ENTRY FxBool FX_CALL
888grLfbLock( GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode,
889 GrOriginLocation_t origin, FxBool pixelPipeline,
890 GrLfbInfo_t *info );
891
892FX_ENTRY FxBool FX_CALL
893grLfbUnlock( GrLock_t type, GrBuffer_t buffer );
894
895FX_ENTRY void FX_CALL
896grLfbConstantAlpha( GrAlpha_t alpha );
897
898FX_ENTRY void FX_CALL
899grLfbConstantDepth( FxU32 depth );
900
901FX_ENTRY void FX_CALL
902grLfbWriteColorSwizzle(FxBool swizzleBytes, FxBool swapWords);
903
904FX_ENTRY void FX_CALL
905grLfbWriteColorFormat(GrColorFormat_t colorFormat);
906
907FX_ENTRY FxBool FX_CALL
908grLfbWriteRegion( GrBuffer_t dst_buffer,
909 FxU32 dst_x, FxU32 dst_y,
910 GrLfbSrcFmt_t src_format,
911 FxU32 src_width, FxU32 src_height,
912 FxBool pixelPipeline,
913 FxI32 src_stride, void *src_data );
914
915FX_ENTRY FxBool FX_CALL
916grLfbReadRegion( GrBuffer_t src_buffer,
917 FxU32 src_x, FxU32 src_y,
918 FxU32 src_width, FxU32 src_height,
919 FxU32 dst_stride, void *dst_data );
920
921/*
922** glide management functions
923*/
924FX_ENTRY void FX_CALL
925grGlideInit( void );
926
927FX_ENTRY void FX_CALL
928grGlideShutdown( void );
929
930FX_ENTRY void FX_CALL
931grGlideGetState( void *state );
932
933FX_ENTRY void FX_CALL
934grGlideSetState( const void *state );
935
936FX_ENTRY void FX_CALL
937grGlideGetVertexLayout( void *layout );
938
939FX_ENTRY void FX_CALL
940grGlideSetVertexLayout( const void *layout );
941
942#endif /* FX_GLIDE_NO_FUNC_PROTO */
943
944#ifdef __cplusplus
945}
946#endif
947
948#include <glideutl.h>
949
950#endif /* __GLIDE_H__ */