Path: blob/master/libmupen64plus/mupen64plus-video-glide64mk2/src/Glitch64/inc/glide.h
2 views
/*1** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY2** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT3** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX4** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE5** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC([email protected]).6** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER7** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A8** FULL TEXT OF THE NON-WARRANTY PROVISIONS.9**10** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO11** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN12** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,13** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR14** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF15** THE UNITED STATES.16**17** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED18*/1920/*21** GLIDE.H22**23** The following #defines are relevant when using Glide:24**25** One of the following "platform constants" must be defined during26** compilation:27**28** __DOS__ Defined for 32-bit DOS applications29** __WIN32__ Defined for 32-bit Windows applications30** __sparc__ Defined for Sun Solaris/SunOS31** __linux__ Defined for Linux applications32** __FreeBSD__ Defined for FreeBSD applications33** __NetBSD__ Defined for NetBSD applications34** __OpenBSD__ Defined for OpenBSD applications35** __IRIX__ Defined for SGI Irix applications36**37*/38#ifndef __GLIDE_H__39#define __GLIDE_H__4041#include <3dfx.h>42#include <glidesys.h>43#include <sst1vid.h>4445#ifdef __cplusplus46extern "C" {47#endif4849/*50** -----------------------------------------------------------------------51** TYPE DEFINITIONS52** -----------------------------------------------------------------------53*/54typedef FxU32 GrColor_t;55typedef FxU8 GrAlpha_t;56typedef FxU32 GrMipMapId_t;57typedef FxU32 GrStipplePattern_t;58typedef FxU8 GrFog_t;59typedef FxU32 GrContext_t;60typedef int (FX_CALL *GrProc)();6162#ifndef WIN3263typedef int HWND;64#endif6566/*67** -----------------------------------------------------------------------68** CONSTANTS AND TYPES69** -----------------------------------------------------------------------70*/71#define GR_NULL_MIPMAP_HANDLE ((GrMipMapId_t) -1)7273#define GR_MIPMAPLEVELMASK_EVEN FXBIT(0)74#define GR_MIPMAPLEVELMASK_ODD FXBIT(1)75#define GR_MIPMAPLEVELMASK_BOTH (GR_MIPMAPLEVELMASK_EVEN | GR_MIPMAPLEVELMASK_ODD )7677#define GR_LODBIAS_BILINEAR 0.578#define GR_LODBIAS_TRILINEAR 0.07980typedef FxI32 GrChipID_t;81#define GR_TMU0 0x082#define GR_TMU1 0x183#define GR_TMU2 0x28485#define GR_FBI 0x08687typedef FxI32 GrCombineFunction_t;88#define GR_COMBINE_FUNCTION_ZERO 0x089#define GR_COMBINE_FUNCTION_NONE GR_COMBINE_FUNCTION_ZERO90#define GR_COMBINE_FUNCTION_LOCAL 0x191#define GR_COMBINE_FUNCTION_LOCAL_ALPHA 0x292#define GR_COMBINE_FUNCTION_SCALE_OTHER 0x393#define GR_COMBINE_FUNCTION_BLEND_OTHER GR_COMBINE_FUNCTION_SCALE_OTHER94#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL 0x495#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA 0x596#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL 0x697#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL 0x798#define GR_COMBINE_FUNCTION_BLEND GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL99#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x8100#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL 0x9101#define GR_COMBINE_FUNCTION_BLEND_LOCAL GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL102#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x10103104typedef FxI32 GrCombineFactor_t;105#define GR_COMBINE_FACTOR_ZERO 0x0106#define GR_COMBINE_FACTOR_NONE GR_COMBINE_FACTOR_ZERO107#define GR_COMBINE_FACTOR_LOCAL 0x1108#define GR_COMBINE_FACTOR_OTHER_ALPHA 0x2109#define GR_COMBINE_FACTOR_LOCAL_ALPHA 0x3110#define GR_COMBINE_FACTOR_TEXTURE_ALPHA 0x4111#define GR_COMBINE_FACTOR_TEXTURE_RGB 0x5112#define GR_COMBINE_FACTOR_DETAIL_FACTOR GR_COMBINE_FACTOR_TEXTURE_ALPHA113#define GR_COMBINE_FACTOR_LOD_FRACTION 0x5114#define GR_COMBINE_FACTOR_ONE 0x8115#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL 0x9116#define GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA 0xa117#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA 0xb118#define GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA 0xc119#define GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA120#define GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION 0xd121122123typedef FxI32 GrCombineLocal_t;124#define GR_COMBINE_LOCAL_ITERATED 0x0125#define GR_COMBINE_LOCAL_CONSTANT 0x1126#define GR_COMBINE_LOCAL_NONE GR_COMBINE_LOCAL_CONSTANT127#define GR_COMBINE_LOCAL_DEPTH 0x2128129typedef FxI32 GrCombineOther_t;130#define GR_COMBINE_OTHER_ITERATED 0x0131#define GR_COMBINE_OTHER_TEXTURE 0x1132#define GR_COMBINE_OTHER_CONSTANT 0x2133#define GR_COMBINE_OTHER_NONE GR_COMBINE_OTHER_CONSTANT134135136typedef FxI32 GrAlphaSource_t;137#define GR_ALPHASOURCE_CC_ALPHA 0x0138#define GR_ALPHASOURCE_ITERATED_ALPHA 0x1139#define GR_ALPHASOURCE_TEXTURE_ALPHA 0x2140#define GR_ALPHASOURCE_TEXTURE_ALPHA_TIMES_ITERATED_ALPHA 0x3141142143typedef FxI32 GrColorCombineFnc_t;144#define GR_COLORCOMBINE_ZERO 0x0145#define GR_COLORCOMBINE_CCRGB 0x1146#define GR_COLORCOMBINE_ITRGB 0x2147#define GR_COLORCOMBINE_ITRGB_DELTA0 0x3148#define GR_COLORCOMBINE_DECAL_TEXTURE 0x4149#define GR_COLORCOMBINE_TEXTURE_TIMES_CCRGB 0x5150#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB 0x6151#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_DELTA0 0x7152#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_ADD_ALPHA 0x8153#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA 0x9154#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA_ADD_ITRGB 0xa155#define GR_COLORCOMBINE_TEXTURE_ADD_ITRGB 0xb156#define GR_COLORCOMBINE_TEXTURE_SUB_ITRGB 0xc157#define GR_COLORCOMBINE_CCRGB_BLEND_ITRGB_ON_TEXALPHA 0xd158#define GR_COLORCOMBINE_DIFF_SPEC_A 0xe159#define GR_COLORCOMBINE_DIFF_SPEC_B 0xf160#define GR_COLORCOMBINE_ONE 0x10161162typedef FxI32 GrAlphaBlendFnc_t;163#define GR_BLEND_ZERO 0x0164#define GR_BLEND_SRC_ALPHA 0x1165#define GR_BLEND_SRC_COLOR 0x2166#define GR_BLEND_DST_COLOR GR_BLEND_SRC_COLOR167#define GR_BLEND_DST_ALPHA 0x3168#define GR_BLEND_ONE 0x4169#define GR_BLEND_ONE_MINUS_SRC_ALPHA 0x5170#define GR_BLEND_ONE_MINUS_SRC_COLOR 0x6171#define GR_BLEND_ONE_MINUS_DST_COLOR GR_BLEND_ONE_MINUS_SRC_COLOR172#define GR_BLEND_ONE_MINUS_DST_ALPHA 0x7173#define GR_BLEND_RESERVED_8 0x8174#define GR_BLEND_RESERVED_9 0x9175#define GR_BLEND_RESERVED_A 0xa176#define GR_BLEND_RESERVED_B 0xb177#define GR_BLEND_RESERVED_C 0xc178#define GR_BLEND_RESERVED_D 0xd179#define GR_BLEND_RESERVED_E 0xe180#define GR_BLEND_ALPHA_SATURATE 0xf181#define GR_BLEND_PREFOG_COLOR GR_BLEND_ALPHA_SATURATE182183typedef FxI32 GrAspectRatio_t;184#define GR_ASPECT_LOG2_8x1 3 /* 8W x 1H */185#define GR_ASPECT_LOG2_4x1 2 /* 4W x 1H */186#define GR_ASPECT_LOG2_2x1 1 /* 2W x 1H */187#define GR_ASPECT_LOG2_1x1 0 /* 1W x 1H */188#define GR_ASPECT_LOG2_1x2 -1 /* 1W x 2H */189#define GR_ASPECT_LOG2_1x4 -2 /* 1W x 4H */190#define GR_ASPECT_LOG2_1x8 -3 /* 1W x 8H */191192typedef FxI32 GrBuffer_t;193#define GR_BUFFER_FRONTBUFFER 0x0194#define GR_BUFFER_BACKBUFFER 0x1195#define GR_BUFFER_AUXBUFFER 0x2196#define GR_BUFFER_DEPTHBUFFER 0x3197#define GR_BUFFER_ALPHABUFFER 0x4198#define GR_BUFFER_TRIPLEBUFFER 0x5199200typedef FxI32 GrChromakeyMode_t;201#define GR_CHROMAKEY_DISABLE 0x0202#define GR_CHROMAKEY_ENABLE 0x1203204typedef FxI32 GrChromaRangeMode_t;205#define GR_CHROMARANGE_RGB_ALL_EXT 0x0206207#define GR_CHROMARANGE_DISABLE_EXT 0x00208#define GR_CHROMARANGE_ENABLE_EXT 0x01209210typedef FxI32 GrTexChromakeyMode_t;211#define GR_TEXCHROMA_DISABLE_EXT 0x0212#define GR_TEXCHROMA_ENABLE_EXT 0x1213214#define GR_TEXCHROMARANGE_RGB_ALL_EXT 0x0215216typedef FxI32 GrCmpFnc_t;217#define GR_CMP_NEVER 0x0218#define GR_CMP_LESS 0x1219#define GR_CMP_EQUAL 0x2220#define GR_CMP_LEQUAL 0x3221#define GR_CMP_GREATER 0x4222#define GR_CMP_NOTEQUAL 0x5223#define GR_CMP_GEQUAL 0x6224#define GR_CMP_ALWAYS 0x7225226typedef FxI32 GrColorFormat_t;227#define GR_COLORFORMAT_ARGB 0x0228#define GR_COLORFORMAT_ABGR 0x1229230#define GR_COLORFORMAT_RGBA 0x2231#define GR_COLORFORMAT_BGRA 0x3232233typedef FxI32 GrCullMode_t;234#define GR_CULL_DISABLE 0x0235#define GR_CULL_NEGATIVE 0x1236#define GR_CULL_POSITIVE 0x2237238typedef FxI32 GrDepthBufferMode_t;239#define GR_DEPTHBUFFER_DISABLE 0x0240#define GR_DEPTHBUFFER_ZBUFFER 0x1241#define GR_DEPTHBUFFER_WBUFFER 0x2242#define GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS 0x3243#define GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS 0x4244245typedef FxI32 GrDitherMode_t;246#define GR_DITHER_DISABLE 0x0247#define GR_DITHER_2x2 0x1248#define GR_DITHER_4x4 0x2249250typedef FxI32 GrStippleMode_t;251#define GR_STIPPLE_DISABLE 0x0252#define GR_STIPPLE_PATTERN 0x1253#define GR_STIPPLE_ROTATE 0x2254255typedef FxI32 GrFogMode_t;256#define GR_FOG_DISABLE 0x0257#define GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT 0x1258#define GR_FOG_WITH_TABLE_ON_Q 0x2259#define GR_FOG_WITH_TABLE_ON_W GR_FOG_WITH_TABLE_ON_Q260#define GR_FOG_WITH_ITERATED_Z 0x3261#define GR_FOG_WITH_ITERATED_ALPHA_EXT 0x4262#define GR_FOG_MULT2 0x100263#define GR_FOG_ADD2 0x200264265typedef FxU32 GrLock_t;266#define GR_LFB_READ_ONLY 0x00267#define GR_LFB_WRITE_ONLY 0x01268#define GR_LFB_IDLE 0x00269#define GR_LFB_NOIDLE 0x10270271#define GR_LFB_WRITE_ONLY_EXPLICIT_EXT 0x02 /* explicitly not allow reading from the lfb pointer */272273typedef FxI32 GrLfbBypassMode_t;274#define GR_LFBBYPASS_DISABLE 0x0275#define GR_LFBBYPASS_ENABLE 0x1276277typedef FxI32 GrLfbWriteMode_t;278#define GR_LFBWRITEMODE_565 0x0 /* RGB:RGB */279#define GR_LFBWRITEMODE_555 0x1 /* RGB:RGB */280#define GR_LFBWRITEMODE_1555 0x2 /* ARGB:ARGB */281#define GR_LFBWRITEMODE_RESERVED1 0x3282#define GR_LFBWRITEMODE_888 0x4 /* RGB */283#define GR_LFBWRITEMODE_8888 0x5 /* ARGB */284#define GR_LFBWRITEMODE_RESERVED2 0x6285#define GR_LFBWRITEMODE_RESERVED3 0x7286#define GR_LFBWRITEMODE_RESERVED4 0x8287#define GR_LFBWRITEMODE_RESERVED5 0x9288#define GR_LFBWRITEMODE_RESERVED6 0xa289#define GR_LFBWRITEMODE_RESERVED7 0xb290#define GR_LFBWRITEMODE_565_DEPTH 0xc /* RGB:DEPTH */291#define GR_LFBWRITEMODE_555_DEPTH 0xd /* RGB:DEPTH */292#define GR_LFBWRITEMODE_1555_DEPTH 0xe /* ARGB:DEPTH */293#define GR_LFBWRITEMODE_ZA16 0xf /* DEPTH:DEPTH */294#define GR_LFBWRITEMODE_ANY 0xFF295296297typedef FxI32 GrOriginLocation_t;298#define GR_ORIGIN_UPPER_LEFT 0x0299#define GR_ORIGIN_LOWER_LEFT 0x1300#define GR_ORIGIN_ANY 0xFF301302typedef struct {303int size;304void *lfbPtr;305FxU32 strideInBytes;306GrLfbWriteMode_t writeMode;307GrOriginLocation_t origin;308} GrLfbInfo_t;309310typedef FxI32 GrLOD_t;311#define GR_LOD_LOG2_256 0x8312#define GR_LOD_LOG2_128 0x7313#define GR_LOD_LOG2_64 0x6314#define GR_LOD_LOG2_32 0x5315#define GR_LOD_LOG2_16 0x4316#define GR_LOD_LOG2_8 0x3317#define GR_LOD_LOG2_4 0x2318#define GR_LOD_LOG2_2 0x1319#define GR_LOD_LOG2_1 0x0320321typedef FxI32 GrMipMapMode_t;322#define GR_MIPMAP_DISABLE 0x0 /* no mip mapping */323#define GR_MIPMAP_NEAREST 0x1 /* use nearest mipmap */324#define GR_MIPMAP_NEAREST_DITHER 0x2 /* GR_MIPMAP_NEAREST + LOD dith */325326typedef FxI32 GrSmoothingMode_t;327#define GR_SMOOTHING_DISABLE 0x0328#define GR_SMOOTHING_ENABLE 0x1329330typedef FxI32 GrTextureClampMode_t;331#define GR_TEXTURECLAMP_WRAP 0x0332#define GR_TEXTURECLAMP_CLAMP 0x1333#define GR_TEXTURECLAMP_MIRROR_EXT 0x2334335typedef FxI32 GrTextureCombineFnc_t;336#define GR_TEXTURECOMBINE_ZERO 0x0 /* texout = 0 */337#define GR_TEXTURECOMBINE_DECAL 0x1 /* texout = texthis */338#define GR_TEXTURECOMBINE_OTHER 0x2 /* this TMU in passthru mode */339#define GR_TEXTURECOMBINE_ADD 0x3 /* tout = tthis + t(this+1) */340#define GR_TEXTURECOMBINE_MULTIPLY 0x4 /* texout = tthis * t(this+1) */341#define GR_TEXTURECOMBINE_SUBTRACT 0x5 /* Sutract from upstream TMU */342#define GR_TEXTURECOMBINE_DETAIL 0x6 /* detail--detail on tthis */343#define GR_TEXTURECOMBINE_DETAIL_OTHER 0x7 /* detail--detail on tthis+1 */344#define GR_TEXTURECOMBINE_TRILINEAR_ODD 0x8 /* trilinear--odd levels tthis*/345#define GR_TEXTURECOMBINE_TRILINEAR_EVEN 0x9 /*trilinear--even levels tthis*/346#define GR_TEXTURECOMBINE_ONE 0xa /* texout = 0xFFFFFFFF */347348typedef FxI32 GrTextureFilterMode_t;349#define GR_TEXTUREFILTER_POINT_SAMPLED 0x0350#define GR_TEXTUREFILTER_BILINEAR 0x1351352typedef FxI32 GrTextureFormat_t;353/* KoolSmoky - */354#define GR_TEXFMT_8BIT 0x0355#define GR_TEXFMT_RGB_332 GR_TEXFMT_8BIT356#define GR_TEXFMT_YIQ_422 0x1357#define GR_TEXFMT_ALPHA_8 0x2 /* (0..0xFF) alpha */358#define GR_TEXFMT_INTENSITY_8 0x3 /* (0..0xFF) intensity */359#define GR_TEXFMT_ALPHA_INTENSITY_44 0x4360#define GR_TEXFMT_P_8 0x5 /* 8-bit palette */361#define GR_TEXFMT_RSVD0 0x6 /* GR_TEXFMT_P_8_RGBA */362#define GR_TEXFMT_P_8_6666 GR_TEXFMT_RSVD0363#define GR_TEXFMT_P_8_6666_EXT GR_TEXFMT_RSVD0364#define GR_TEXFMT_RSVD1 0x7365#define GR_TEXFMT_16BIT 0x8366#define GR_TEXFMT_ARGB_8332 GR_TEXFMT_16BIT367#define GR_TEXFMT_AYIQ_8422 0x9368#define GR_TEXFMT_RGB_565 0xa369#define GR_TEXFMT_ARGB_1555 0xb370#define GR_TEXFMT_ARGB_4444 0xc371#define GR_TEXFMT_ALPHA_INTENSITY_88 0xd372#define GR_TEXFMT_AP_88 0xe /* 8-bit alpha 8-bit palette */373#define GR_TEXFMT_RSVD2 0xf374#define GR_TEXFMT_RSVD4 GR_TEXFMT_RSVD2375376typedef FxU32 GrTexTable_t;377#define GR_TEXTABLE_NCC0 0x0378#define GR_TEXTABLE_NCC1 0x1379#define GR_TEXTABLE_PALETTE 0x2380#define GR_TEXTABLE_PALETTE_6666_EXT 0x3381382typedef FxU32 GrNCCTable_t;383#define GR_NCCTABLE_NCC0 0x0384#define GR_NCCTABLE_NCC1 0x1385386typedef FxU32 GrTexBaseRange_t;387#define GR_TEXBASE_256 0x3388#define GR_TEXBASE_128 0x2389#define GR_TEXBASE_64 0x1390#define GR_TEXBASE_32_TO_1 0x0391392393typedef FxU32 GrEnableMode_t;394#define GR_MODE_DISABLE 0x0395#define GR_MODE_ENABLE 0x1396397#define GR_AA_ORDERED 0x01398#define GR_ALLOW_MIPMAP_DITHER 0x02399#define GR_PASSTHRU 0x03400#define GR_SHAMELESS_PLUG 0x04401#define GR_VIDEO_SMOOTHING 0x05402403typedef FxU32 GrCoordinateSpaceMode_t;404#define GR_WINDOW_COORDS 0x00405#define GR_CLIP_COORDS 0x01406407/* Types of data in strips */408#define GR_FLOAT 0409#define GR_U8 1410411/* Parameters for strips */412#define GR_PARAM_XY 0x01413#define GR_PARAM_Z 0x02414#define GR_PARAM_W 0x03415#define GR_PARAM_Q 0x04416#define GR_PARAM_FOG_EXT 0x05417418#define GR_PARAM_A 0x10419420#define GR_PARAM_RGB 0x20421422#define GR_PARAM_PARGB 0x30423424#define GR_PARAM_ST0 0x40425#define GR_PARAM_ST1 GR_PARAM_ST0+1426#define GR_PARAM_ST2 GR_PARAM_ST0+2427428#define GR_PARAM_Q0 0x50429#define GR_PARAM_Q1 GR_PARAM_Q0+1430#define GR_PARAM_Q2 GR_PARAM_Q0+2431432#define GR_PARAM_DISABLE 0x00433#define GR_PARAM_ENABLE 0x01434435/*436** grDrawVertexArray/grDrawVertexArrayContiguous primitive type437*/438#define GR_POINTS 0439#define GR_LINE_STRIP 1440#define GR_LINES 2441#define GR_POLYGON 3442#define GR_TRIANGLE_STRIP 4443#define GR_TRIANGLE_FAN 5444#define GR_TRIANGLES 6445#define GR_TRIANGLE_STRIP_CONTINUE 7446#define GR_TRIANGLE_FAN_CONTINUE 8447448/*449** grGet/grReset types450*/451#define GR_BITS_DEPTH 0x01452#define GR_BITS_RGBA 0x02453#define GR_FIFO_FULLNESS 0x03454#define GR_FOG_TABLE_ENTRIES 0x04455#define GR_GAMMA_TABLE_ENTRIES 0x05456#define GR_GLIDE_STATE_SIZE 0x06457#define GR_GLIDE_VERTEXLAYOUT_SIZE 0x07458#define GR_IS_BUSY 0x08459#define GR_LFB_PIXEL_PIPE 0x09460#define GR_MAX_TEXTURE_SIZE 0x0a461#define GR_MAX_TEXTURE_ASPECT_RATIO 0x0b462#define GR_MEMORY_FB 0x0c463#define GR_MEMORY_TMU 0x0d464#define GR_MEMORY_UMA 0x0e465#define GR_NUM_BOARDS 0x0f466#define GR_NON_POWER_OF_TWO_TEXTURES 0x10467#define GR_NUM_FB 0x11468#define GR_NUM_SWAP_HISTORY_BUFFER 0x12469#define GR_NUM_TMU 0x13470#define GR_PENDING_BUFFERSWAPS 0x14471#define GR_REVISION_FB 0x15472#define GR_REVISION_TMU 0x16473#define GR_STATS_LINES 0x17 /* grGet/grReset */474#define GR_STATS_PIXELS_AFUNC_FAIL 0x18475#define GR_STATS_PIXELS_CHROMA_FAIL 0x19476#define GR_STATS_PIXELS_DEPTHFUNC_FAIL 0x1a477#define GR_STATS_PIXELS_IN 0x1b478#define GR_STATS_PIXELS_OUT 0x1c479#define GR_STATS_PIXELS 0x1d /* grReset */480#define GR_STATS_POINTS 0x1e /* grGet/grReset */481#define GR_STATS_TRIANGLES_IN 0x1f482#define GR_STATS_TRIANGLES_OUT 0x20483#define GR_STATS_TRIANGLES 0x21 /* grReset */484#define GR_SWAP_HISTORY 0x22485#define GR_SUPPORTS_PASSTHRU 0x23486#define GR_TEXTURE_ALIGN 0x24487#define GR_VIDEO_POSITION 0x25488#define GR_VIEWPORT 0x26489#define GR_WDEPTH_MIN_MAX 0x27490#define GR_ZDEPTH_MIN_MAX 0x28491#define GR_VERTEX_PARAMETER 0x29492#define GR_BITS_GAMMA 0x2a493#define GR_GET_RESERVED_1 0x1000494495/*496** grGetString types497*/498#define GR_EXTENSION 0xa0499#define GR_HARDWARE 0xa1500#define GR_RENDERER 0xa2501#define GR_VENDOR 0xa3502#define GR_VERSION 0xa4503504/*505** -----------------------------------------------------------------------506** STRUCTURES507** -----------------------------------------------------------------------508*/509510typedef struct {511GrLOD_t smallLodLog2;512GrLOD_t largeLodLog2;513GrAspectRatio_t aspectRatioLog2;514GrTextureFormat_t format;515void *data;516} GrTexInfo;517518typedef struct GrSstPerfStats_s {519FxU32 pixelsIn; /* # pixels processed (minus buffer clears) */520FxU32 chromaFail; /* # pixels not drawn due to chroma key */521FxU32 zFuncFail; /* # pixels not drawn due to Z comparison */522FxU32 aFuncFail; /* # pixels not drawn due to alpha comparison */523FxU32 pixelsOut; /* # pixels drawn (including buffer clears) */524} GrSstPerfStats_t;525526typedef struct {527GrScreenResolution_t resolution;528GrScreenRefresh_t refresh;529int numColorBuffers;530int numAuxBuffers;531} GrResolution;532533typedef GrResolution GlideResolution;534535#define GR_QUERY_ANY ((FxU32)(~0))536537typedef FxU32 GrLfbSrcFmt_t;538#define GR_LFB_SRC_FMT_565 0x00539#define GR_LFB_SRC_FMT_555 0x01540#define GR_LFB_SRC_FMT_1555 0x02541#define GR_LFB_SRC_FMT_888 0x04542#define GR_LFB_SRC_FMT_8888 0x05543#define GR_LFB_SRC_FMT_565_DEPTH 0x0c544#define GR_LFB_SRC_FMT_555_DEPTH 0x0d545#define GR_LFB_SRC_FMT_1555_DEPTH 0x0e546#define GR_LFB_SRC_FMT_ZA16 0x0f547#define GR_LFB_SRC_FMT_RLE16 0x80548549#ifdef H3D550#define GR_HINT_H3DENABLE 4551#undef GR_HINTTYPE_MAX552#define GR_HINTTYPE_MAX 4553#endif554555/*556** -----------------------------------------------------------------------557** FUNCTION PROTOTYPES558** -----------------------------------------------------------------------559*/560#ifndef FX_GLIDE_NO_FUNC_PROTO561/*562** rendering functions563*/564FX_ENTRY void FX_CALL565grDrawPoint( const void *pt );566567FX_ENTRY void FX_CALL568grDrawLine( const void *v1, const void *v2 );569570FX_ENTRY void FX_CALL571grDrawTriangle( const void *a, const void *b, const void *c );572573FX_ENTRY void FX_CALL574grVertexLayout(FxU32 param, FxI32 offset, FxU32 mode);575576FX_ENTRY void FX_CALL577grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers);578579FX_ENTRY void FX_CALL580grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride);581582/*583** Antialiasing Functions584*/585586FX_ENTRY void FX_CALL587grAADrawTriangle(588const void *a, const void *b, const void *c,589FxBool ab_antialias, FxBool bc_antialias, FxBool ca_antialias590);591592/*593** buffer management594*/595FX_ENTRY void FX_CALL596grBufferClear( GrColor_t color, GrAlpha_t alpha, FxU32 depth );597598FX_ENTRY void FX_CALL599grBufferSwap( FxU32 swap_interval );600601FX_ENTRY void FX_CALL602grRenderBuffer( GrBuffer_t buffer );603604/*605** error management606*/607typedef void (*GrErrorCallbackFnc_t)( const char *string, FxBool fatal );608609FX_ENTRY void FX_CALL610grErrorSetCallback( GrErrorCallbackFnc_t fnc );611612/*613** SST routines614*/615FX_ENTRY void FX_CALL616grFinish(void);617618FX_ENTRY void FX_CALL619grFlush(void);620621FX_ENTRY GrContext_t FX_CALL622grSstWinOpen(623HWND hWnd,624GrScreenResolution_t screen_resolution,625GrScreenRefresh_t refresh_rate,626GrColorFormat_t color_format,627GrOriginLocation_t origin_location,628int nColBuffers,629int nAuxBuffers);630631FX_ENTRY FxBool FX_CALL632grSstWinClose( GrContext_t context );633634FX_ENTRY void FX_CALL635grSetNumPendingBuffers(FxI32 NumPendingBuffers);636637FX_ENTRY FxBool FX_CALL638grSelectContext( GrContext_t context );639640FX_ENTRY void FX_CALL641grSstOrigin(GrOriginLocation_t origin);642643FX_ENTRY void FX_CALL644grSstSelect( int which_sst );645646/*647** Glide configuration and special effect maintenance functions648*/649FX_ENTRY void FX_CALL650grAlphaBlendFunction(651GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df,652GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df653);654655FX_ENTRY void FX_CALL656grAlphaCombine(657GrCombineFunction_t function, GrCombineFactor_t factor,658GrCombineLocal_t local, GrCombineOther_t other,659FxBool invert660);661662FX_ENTRY void FX_CALL663grAlphaControlsITRGBLighting( FxBool enable );664665FX_ENTRY void FX_CALL666grAlphaTestFunction( GrCmpFnc_t function );667668FX_ENTRY void FX_CALL669grAlphaTestReferenceValue( GrAlpha_t value );670671FX_ENTRY void FX_CALL672grChromakeyMode( GrChromakeyMode_t mode );673674FX_ENTRY void FX_CALL675grChromakeyValue( GrColor_t value );676677FX_ENTRY void FX_CALL678grClipWindow( FxU32 minx, FxU32 miny, FxU32 maxx, FxU32 maxy );679680FX_ENTRY void FX_CALL681grColorCombine(682GrCombineFunction_t function, GrCombineFactor_t factor,683GrCombineLocal_t local, GrCombineOther_t other,684FxBool invert );685686FX_ENTRY void FX_CALL687grColorMask( FxBool rgb, FxBool a );688689FX_ENTRY void FX_CALL690grCullMode( GrCullMode_t mode );691692FX_ENTRY void FX_CALL693grConstantColorValue( GrColor_t value );694695FX_ENTRY void FX_CALL696grDepthBiasLevel( FxI32 level );697698FX_ENTRY void FX_CALL699grDepthBufferFunction( GrCmpFnc_t function );700701FX_ENTRY void FX_CALL702grDepthBufferMode( GrDepthBufferMode_t mode );703704FX_ENTRY void FX_CALL705grDepthMask( FxBool mask );706707FX_ENTRY void FX_CALL708grDisableAllEffects( void );709710FX_ENTRY void FX_CALL711grDitherMode( GrDitherMode_t mode );712713FX_ENTRY void FX_CALL714grFogColorValue( GrColor_t fogcolor );715716FX_ENTRY void FX_CALL717grFogMode( GrFogMode_t mode );718719FX_ENTRY void FX_CALL720grFogTable( const GrFog_t ft[] );721722FX_ENTRY void FX_CALL723grLoadGammaTable( FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);724725FX_ENTRY void FX_CALL726grSplash(float x, float y, float width, float height, FxU32 frame);727728FX_ENTRY FxU32 FX_CALL729grGet( FxU32 pname, FxU32 plength, FxI32 *params );730731FX_ENTRY const char * FX_CALL732grGetString( FxU32 pname );733734FX_ENTRY FxI32 FX_CALL735grQueryResolutions( const GrResolution *resTemplate, GrResolution *output );736737FX_ENTRY FxBool FX_CALL738grReset( FxU32 what );739740FX_ENTRY GrProc FX_CALL741grGetProcAddress( char *procName );742743FX_ENTRY void FX_CALL744grEnable( GrEnableMode_t mode );745746FX_ENTRY void FX_CALL747grDisable( GrEnableMode_t mode );748749FX_ENTRY void FX_CALL750grCoordinateSpace( GrCoordinateSpaceMode_t mode );751752FX_ENTRY void FX_CALL753grDepthRange( FxFloat n, FxFloat f );754755FX_ENTRY void FX_CALL756grStippleMode( GrStippleMode_t mode );757758FX_ENTRY void FX_CALL759grStipplePattern( GrStipplePattern_t mode );760761FX_ENTRY void FX_CALL762grViewport( FxI32 x, FxI32 y, FxI32 width, FxI32 height );763764/*765** texture mapping control functions766*/767FX_ENTRY FxU32 FX_CALL768grTexCalcMemRequired(769GrLOD_t lodmin, GrLOD_t lodmax,770GrAspectRatio_t aspect, GrTextureFormat_t fmt);771772FX_ENTRY FxU32 FX_CALL773grTexTextureMemRequired( FxU32 evenOdd,774GrTexInfo *info );775776FX_ENTRY FxU32 FX_CALL777grTexMinAddress( GrChipID_t tmu );778779FX_ENTRY FxU32 FX_CALL780grTexMaxAddress( GrChipID_t tmu );781782FX_ENTRY void FX_CALL783grTexNCCTable( GrNCCTable_t table );784785FX_ENTRY void FX_CALL786grTexSource( GrChipID_t tmu,787FxU32 startAddress,788FxU32 evenOdd,789GrTexInfo *info );790791FX_ENTRY void FX_CALL792grTexClampMode(793GrChipID_t tmu,794GrTextureClampMode_t s_clampmode,795GrTextureClampMode_t t_clampmode796);797798FX_ENTRY void FX_CALL799grTexCombine(800GrChipID_t tmu,801GrCombineFunction_t rgb_function,802GrCombineFactor_t rgb_factor,803GrCombineFunction_t alpha_function,804GrCombineFactor_t alpha_factor,805FxBool rgb_invert,806FxBool alpha_invert807);808809FX_ENTRY void FX_CALL810grTexDetailControl(811GrChipID_t tmu,812int lod_bias,813FxU8 detail_scale,814float detail_max815);816817FX_ENTRY void FX_CALL818grTexFilterMode(819GrChipID_t tmu,820GrTextureFilterMode_t minfilter_mode,821GrTextureFilterMode_t magfilter_mode822);823824825FX_ENTRY void FX_CALL826grTexLodBiasValue(GrChipID_t tmu, float bias );827828FX_ENTRY void FX_CALL829grTexDownloadMipMap( GrChipID_t tmu,830FxU32 startAddress,831FxU32 evenOdd,832GrTexInfo *info );833834FX_ENTRY void FX_CALL835grTexDownloadMipMapLevel( GrChipID_t tmu,836FxU32 startAddress,837GrLOD_t thisLod,838GrLOD_t largeLod,839GrAspectRatio_t aspectRatio,840GrTextureFormat_t format,841FxU32 evenOdd,842void *data );843844FX_ENTRY FxBool FX_CALL845grTexDownloadMipMapLevelPartial( GrChipID_t tmu,846FxU32 startAddress,847GrLOD_t thisLod,848GrLOD_t largeLod,849GrAspectRatio_t aspectRatio,850GrTextureFormat_t format,851FxU32 evenOdd,852void *data,853int start,854int end );855856FX_ENTRY void FX_CALL857grTexDownloadTable( GrTexTable_t type,858void *data );859860FX_ENTRY void FX_CALL861grTexDownloadTablePartial( GrTexTable_t type,862void *data,863int start,864int end );865866FX_ENTRY void FX_CALL867grTexMipMapMode( GrChipID_t tmu,868GrMipMapMode_t mode,869FxBool lodBlend );870871FX_ENTRY void FX_CALL872grTexMultibase( GrChipID_t tmu,873FxBool enable );874875FX_ENTRY void FX_CALL876grTexMultibaseAddress( GrChipID_t tmu,877GrTexBaseRange_t range,878FxU32 startAddress,879FxU32 evenOdd,880GrTexInfo *info );881882/*883** linear frame buffer functions884*/885886FX_ENTRY FxBool FX_CALL887grLfbLock( GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode,888GrOriginLocation_t origin, FxBool pixelPipeline,889GrLfbInfo_t *info );890891FX_ENTRY FxBool FX_CALL892grLfbUnlock( GrLock_t type, GrBuffer_t buffer );893894FX_ENTRY void FX_CALL895grLfbConstantAlpha( GrAlpha_t alpha );896897FX_ENTRY void FX_CALL898grLfbConstantDepth( FxU32 depth );899900FX_ENTRY void FX_CALL901grLfbWriteColorSwizzle(FxBool swizzleBytes, FxBool swapWords);902903FX_ENTRY void FX_CALL904grLfbWriteColorFormat(GrColorFormat_t colorFormat);905906FX_ENTRY FxBool FX_CALL907grLfbWriteRegion( GrBuffer_t dst_buffer,908FxU32 dst_x, FxU32 dst_y,909GrLfbSrcFmt_t src_format,910FxU32 src_width, FxU32 src_height,911FxBool pixelPipeline,912FxI32 src_stride, void *src_data );913914FX_ENTRY FxBool FX_CALL915grLfbReadRegion( GrBuffer_t src_buffer,916FxU32 src_x, FxU32 src_y,917FxU32 src_width, FxU32 src_height,918FxU32 dst_stride, void *dst_data );919920/*921** glide management functions922*/923FX_ENTRY void FX_CALL924grGlideInit( void );925926FX_ENTRY void FX_CALL927grGlideShutdown( void );928929FX_ENTRY void FX_CALL930grGlideGetState( void *state );931932FX_ENTRY void FX_CALL933grGlideSetState( const void *state );934935FX_ENTRY void FX_CALL936grGlideGetVertexLayout( void *layout );937938FX_ENTRY void FX_CALL939grGlideSetVertexLayout( const void *layout );940941#endif /* FX_GLIDE_NO_FUNC_PROTO */942943#ifdef __cplusplus944}945#endif946947#include <glideutl.h>948949#endif /* __GLIDE_H__ */950951952