blob: afb9441adede646b011a915f7223ef511f920025 [file] [log] [blame]
/*
* Mesa 3-D graphics library
* Version: 5.0.1
*
* Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
* Mesa/FX device driver. Interface to Glide3.
*
* Copyright (c) 2003 - Daniel Borca
* Email : dborca@users.sourceforge.net
* Web : http://www.geocities.com/dborca
*/
#ifdef FX
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <assert.h>
#define FX_TRAP_GLIDE_internal
#include "fxg.h"
/****************************************************************************\
* logging *
\****************************************************************************/
#if FX_TRAP_GLIDE
#define TRAP_LOG trp_printf
#ifdef __GNUC__
__attribute__ ((format(printf, 1, 2)))
#endif /* __GNUC__ */
int trp_printf (const char *format, ...)
{
va_list arg;
int n;
FILE *trap_file;
va_start(arg, format);
trap_file = fopen("trap.log", "a");
if (trap_file == NULL) {
trap_file = stderr;
}
n = vfprintf(trap_file, format, arg);
fclose(trap_file);
va_end(arg);
return n;
}
#else /* FX_TRAP_GLIDE */
#ifdef __GNUC__
#define TRAP_LOG(format, ...) do {} while (0)
#else /* __GNUC__ */
#define TRAP_LOG 0 && (unsigned long)
#endif /* __GNUC__ */
#endif /* FX_TRAP_GLIDE */
#if FX_TRAP_GLIDE
/****************************************************************************\
* helpers *
\****************************************************************************/
#define GOT "\t"
const char *TRP_BOOL (FxBool b)
{
return b ? "FXTRUE" : "FXFALSE";
}
#define TRAP_CASE_STRING(name) case name: return #name
#define TRAP_NODEFAULT default: assert(0)
const char *TRP_PARAM (FxU32 mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_PARAM_DISABLE);
TRAP_CASE_STRING(GR_PARAM_ENABLE);
TRAP_NODEFAULT;
}
}
const char *TRP_VTX (FxU32 param)
{
switch (param) {
TRAP_CASE_STRING(GR_PARAM_XY);
TRAP_CASE_STRING(GR_PARAM_Z);
TRAP_CASE_STRING(GR_PARAM_W);
TRAP_CASE_STRING(GR_PARAM_Q);
TRAP_CASE_STRING(GR_PARAM_FOG_EXT);
TRAP_CASE_STRING(GR_PARAM_A);
TRAP_CASE_STRING(GR_PARAM_RGB);
TRAP_CASE_STRING(GR_PARAM_PARGB);
TRAP_CASE_STRING(GR_PARAM_ST0);
TRAP_CASE_STRING(GR_PARAM_ST1);
TRAP_CASE_STRING(GR_PARAM_ST2);
TRAP_CASE_STRING(GR_PARAM_Q0);
TRAP_CASE_STRING(GR_PARAM_Q1);
TRAP_CASE_STRING(GR_PARAM_Q2);
TRAP_NODEFAULT;
}
}
const char *TRP_ARRAY (FxU32 mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_POINTS);
TRAP_CASE_STRING(GR_LINE_STRIP);
TRAP_CASE_STRING(GR_LINES);
TRAP_CASE_STRING(GR_POLYGON);
TRAP_CASE_STRING(GR_TRIANGLE_STRIP);
TRAP_CASE_STRING(GR_TRIANGLE_FAN);
TRAP_CASE_STRING(GR_TRIANGLES);
TRAP_CASE_STRING(GR_TRIANGLE_STRIP_CONTINUE);
TRAP_CASE_STRING(GR_TRIANGLE_FAN_CONTINUE);
TRAP_NODEFAULT;
}
}
const char *TRP_BUFFER (GrBuffer_t buffer)
{
switch (buffer) {
TRAP_CASE_STRING(GR_BUFFER_FRONTBUFFER);
TRAP_CASE_STRING(GR_BUFFER_BACKBUFFER);
TRAP_CASE_STRING(GR_BUFFER_AUXBUFFER);
TRAP_CASE_STRING(GR_BUFFER_DEPTHBUFFER);
TRAP_CASE_STRING(GR_BUFFER_ALPHABUFFER);
TRAP_CASE_STRING(GR_BUFFER_TRIPLEBUFFER);
TRAP_CASE_STRING(GR_BUFFER_TEXTUREBUFFER_EXT);
TRAP_CASE_STRING(GR_BUFFER_TEXTUREAUXBUFFER_EXT);
TRAP_NODEFAULT;
}
}
const char *TRP_ORIGIN (GrOriginLocation_t origin_location)
{
switch (origin_location) {
TRAP_CASE_STRING(GR_ORIGIN_UPPER_LEFT);
TRAP_CASE_STRING(GR_ORIGIN_LOWER_LEFT);
TRAP_CASE_STRING(GR_ORIGIN_ANY);
TRAP_NODEFAULT;
}
}
const char *TRP_REFRESH (GrScreenRefresh_t refresh_rate)
{
switch (refresh_rate) {
TRAP_CASE_STRING(GR_REFRESH_60Hz);
TRAP_CASE_STRING(GR_REFRESH_70Hz);
TRAP_CASE_STRING(GR_REFRESH_72Hz);
TRAP_CASE_STRING(GR_REFRESH_75Hz);
TRAP_CASE_STRING(GR_REFRESH_80Hz);
TRAP_CASE_STRING(GR_REFRESH_90Hz);
TRAP_CASE_STRING(GR_REFRESH_100Hz);
TRAP_CASE_STRING(GR_REFRESH_85Hz);
TRAP_CASE_STRING(GR_REFRESH_120Hz);
TRAP_CASE_STRING(GR_REFRESH_NONE);
TRAP_NODEFAULT;
}
}
const char *TRP_COLFMT (GrColorFormat_t color_format)
{
switch (color_format) {
TRAP_CASE_STRING(GR_COLORFORMAT_ARGB);
TRAP_CASE_STRING(GR_COLORFORMAT_ABGR);
TRAP_CASE_STRING(GR_COLORFORMAT_RGBA);
TRAP_CASE_STRING(GR_COLORFORMAT_BGRA);
TRAP_NODEFAULT;
}
}
const char *TRP_RESOLUTION (GrScreenResolution_t screen_resolution)
{
switch (screen_resolution) {
TRAP_CASE_STRING(GR_RESOLUTION_320x200);
TRAP_CASE_STRING(GR_RESOLUTION_320x240);
TRAP_CASE_STRING(GR_RESOLUTION_400x256);
TRAP_CASE_STRING(GR_RESOLUTION_512x384);
TRAP_CASE_STRING(GR_RESOLUTION_640x200);
TRAP_CASE_STRING(GR_RESOLUTION_640x350);
TRAP_CASE_STRING(GR_RESOLUTION_640x400);
TRAP_CASE_STRING(GR_RESOLUTION_640x480);
TRAP_CASE_STRING(GR_RESOLUTION_800x600);
TRAP_CASE_STRING(GR_RESOLUTION_960x720);
TRAP_CASE_STRING(GR_RESOLUTION_856x480);
TRAP_CASE_STRING(GR_RESOLUTION_512x256);
TRAP_CASE_STRING(GR_RESOLUTION_1024x768);
TRAP_CASE_STRING(GR_RESOLUTION_1280x1024);
TRAP_CASE_STRING(GR_RESOLUTION_1600x1200);
TRAP_CASE_STRING(GR_RESOLUTION_400x300);
TRAP_CASE_STRING(GR_RESOLUTION_1152x864);
TRAP_CASE_STRING(GR_RESOLUTION_1280x960);
TRAP_CASE_STRING(GR_RESOLUTION_1600x1024);
TRAP_CASE_STRING(GR_RESOLUTION_1792x1344);
TRAP_CASE_STRING(GR_RESOLUTION_1856x1392);
TRAP_CASE_STRING(GR_RESOLUTION_1920x1440);
TRAP_CASE_STRING(GR_RESOLUTION_2048x1536);
TRAP_CASE_STRING(GR_RESOLUTION_2048x2048);
TRAP_CASE_STRING(GR_RESOLUTION_NONE);
TRAP_NODEFAULT;
}
}
const char *TRP_BLEND (GrAlphaBlendFnc_t func)
{
switch (func) {
TRAP_CASE_STRING(GR_BLEND_ZERO);
TRAP_CASE_STRING(GR_BLEND_SRC_ALPHA);
TRAP_CASE_STRING(GR_BLEND_SRC_COLOR);
/*TRAP_CASE_STRING(GR_BLEND_DST_COLOR); ==GR_BLEND_SRC_COLOR*/
TRAP_CASE_STRING(GR_BLEND_DST_ALPHA);
TRAP_CASE_STRING(GR_BLEND_ONE);
TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SRC_ALPHA);
TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SRC_COLOR);
/*TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_DST_COLOR); ==GR_BLEND_ONE_MINUS_SRC_COLOR*/
TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_DST_ALPHA);
TRAP_CASE_STRING(GR_BLEND_SAME_COLOR_EXT);
/*TRAP_CASE_STRING(GR_BLEND_RESERVED_8); ==GR_BLEND_SAME_COLOR_EXT*/
TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SAME_COLOR_EXT);
/*TRAP_CASE_STRING(GR_BLEND_RESERVED_9); ==GR_BLEND_ONE_MINUS_SAME_COLOR_EXT*/
TRAP_CASE_STRING(GR_BLEND_RESERVED_A);
TRAP_CASE_STRING(GR_BLEND_RESERVED_B);
TRAP_CASE_STRING(GR_BLEND_RESERVED_C);
TRAP_CASE_STRING(GR_BLEND_RESERVED_D);
TRAP_CASE_STRING(GR_BLEND_RESERVED_E);
TRAP_CASE_STRING(GR_BLEND_ALPHA_SATURATE);
/*TRAP_CASE_STRING(GR_BLEND_PREFOG_COLOR); ==GR_BLEND_ALPHA_SATURATE*/
TRAP_NODEFAULT;
}
}
const char *TRP_CMBFUNC (GrCombineFunction_t cfunc)
{
switch (cfunc) {
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_ZERO);
/*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_NONE); ==GR_COMBINE_FUNCTION_ZERO*/
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_LOCAL);
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_LOCAL_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER);
/*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND_OTHER); ==GR_COMBINE_FUNCTION_SCALE_OTHER*/
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL);
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL);
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL);
/*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND); ==GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL*/
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL);
/*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND_LOCAL); ==GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL*/
TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA);
TRAP_NODEFAULT;
}
}
const char *TRP_CMBFACT (GrCombineFactor_t cfactor)
{
switch (cfactor) {
TRAP_CASE_STRING(GR_COMBINE_FACTOR_ZERO);
/*TRAP_CASE_STRING(GR_COMBINE_FACTOR_NONE); ==GR_COMBINE_FACTOR_ZERO*/
TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOCAL);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_OTHER_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOCAL_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_TEXTURE_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_TEXTURE_RGB);
/*TRAP_CASE_STRING(GR_COMBINE_FACTOR_DETAIL_FACTOR); ==GR_COMBINE_FACTOR_TEXTURE_ALPHA*/
/*TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOD_FRACTION); ==GR_COMBINE_FACTOR_TEXTURE_RGB ???*/
TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOCAL);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA);
TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA);
/*TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR); ==GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA*/
TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION);
TRAP_NODEFAULT;
}
}
const char *TRP_CMBLOCAL (GrCombineLocal_t clocal)
{
switch (clocal) {
TRAP_CASE_STRING(GR_COMBINE_LOCAL_ITERATED);
TRAP_CASE_STRING(GR_COMBINE_LOCAL_CONSTANT);
/*TRAP_CASE_STRING(GR_COMBINE_LOCAL_NONE); ==GR_COMBINE_LOCAL_CONSTANT*/
TRAP_CASE_STRING(GR_COMBINE_LOCAL_DEPTH);
TRAP_NODEFAULT;
}
}
const char *TRP_CMBOTHER (GrCombineOther_t cother)
{
switch (cother) {
TRAP_CASE_STRING(GR_COMBINE_OTHER_ITERATED);
TRAP_CASE_STRING(GR_COMBINE_OTHER_TEXTURE);
TRAP_CASE_STRING(GR_COMBINE_OTHER_CONSTANT);
/*TRAP_CASE_STRING(GR_COMBINE_OTHER_NONE); ==GR_COMBINE_OTHER_CONSTANT*/
TRAP_NODEFAULT;
}
}
const char *TRP_CMPFUNC (GrCmpFnc_t function)
{
switch (function) {
TRAP_CASE_STRING(GR_CMP_NEVER);
TRAP_CASE_STRING(GR_CMP_LESS);
TRAP_CASE_STRING(GR_CMP_EQUAL);
TRAP_CASE_STRING(GR_CMP_LEQUAL);
TRAP_CASE_STRING(GR_CMP_GREATER);
TRAP_CASE_STRING(GR_CMP_NOTEQUAL);
TRAP_CASE_STRING(GR_CMP_GEQUAL);
TRAP_CASE_STRING(GR_CMP_ALWAYS);
TRAP_NODEFAULT;
}
}
const char *TRP_CKMODE (GrChromakeyMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_CHROMAKEY_DISABLE);
TRAP_CASE_STRING(GR_CHROMAKEY_ENABLE);
TRAP_NODEFAULT;
}
}
const char *TRP_CULLMODE (GrCullMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_CULL_DISABLE);
TRAP_CASE_STRING(GR_CULL_NEGATIVE);
TRAP_CASE_STRING(GR_CULL_POSITIVE);
TRAP_NODEFAULT;
}
}
const char *TRP_DEPTHMODE (GrDepthBufferMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_DEPTHBUFFER_DISABLE);
TRAP_CASE_STRING(GR_DEPTHBUFFER_ZBUFFER);
TRAP_CASE_STRING(GR_DEPTHBUFFER_WBUFFER);
TRAP_CASE_STRING(GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS);
TRAP_CASE_STRING(GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS);
TRAP_NODEFAULT;
}
}
const char *TRP_DITHERMODE (GrDitherMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_DITHER_DISABLE);
TRAP_CASE_STRING(GR_DITHER_2x2);
TRAP_CASE_STRING(GR_DITHER_4x4);
TRAP_NODEFAULT;
}
}
const char *TRP_FOGMODE (GrFogMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_FOG_DISABLE);
TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT);
TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_Q);
/*TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_W); ==GR_FOG_WITH_TABLE_ON_Q*/
TRAP_CASE_STRING(GR_FOG_WITH_ITERATED_Z);
TRAP_CASE_STRING(GR_FOG_WITH_ITERATED_ALPHA_EXT);
TRAP_CASE_STRING(GR_FOG_MULT2);
TRAP_CASE_STRING(GR_FOG_ADD2);
TRAP_NODEFAULT;
}
}
const char *TRP_GETNAME (FxU32 pname)
{
switch (pname) {
TRAP_CASE_STRING(GR_BITS_DEPTH);
TRAP_CASE_STRING(GR_BITS_RGBA);
TRAP_CASE_STRING(GR_FIFO_FULLNESS);
TRAP_CASE_STRING(GR_FOG_TABLE_ENTRIES);
TRAP_CASE_STRING(GR_GAMMA_TABLE_ENTRIES);
TRAP_CASE_STRING(GR_GLIDE_STATE_SIZE);
TRAP_CASE_STRING(GR_GLIDE_VERTEXLAYOUT_SIZE);
TRAP_CASE_STRING(GR_IS_BUSY);
TRAP_CASE_STRING(GR_LFB_PIXEL_PIPE);
TRAP_CASE_STRING(GR_MAX_TEXTURE_SIZE);
TRAP_CASE_STRING(GR_MAX_TEXTURE_ASPECT_RATIO);
TRAP_CASE_STRING(GR_MEMORY_FB);
TRAP_CASE_STRING(GR_MEMORY_TMU);
TRAP_CASE_STRING(GR_MEMORY_UMA);
TRAP_CASE_STRING(GR_NUM_BOARDS);
TRAP_CASE_STRING(GR_NON_POWER_OF_TWO_TEXTURES);
TRAP_CASE_STRING(GR_NUM_FB);
TRAP_CASE_STRING(GR_NUM_SWAP_HISTORY_BUFFER);
TRAP_CASE_STRING(GR_NUM_TMU);
TRAP_CASE_STRING(GR_PENDING_BUFFERSWAPS);
TRAP_CASE_STRING(GR_REVISION_FB);
TRAP_CASE_STRING(GR_REVISION_TMU);
TRAP_CASE_STRING(GR_STATS_LINES);
TRAP_CASE_STRING(GR_STATS_PIXELS_AFUNC_FAIL);
TRAP_CASE_STRING(GR_STATS_PIXELS_CHROMA_FAIL);
TRAP_CASE_STRING(GR_STATS_PIXELS_DEPTHFUNC_FAIL);
TRAP_CASE_STRING(GR_STATS_PIXELS_IN);
TRAP_CASE_STRING(GR_STATS_PIXELS_OUT);
TRAP_CASE_STRING(GR_STATS_PIXELS);
TRAP_CASE_STRING(GR_STATS_POINTS);
TRAP_CASE_STRING(GR_STATS_TRIANGLES_IN);
TRAP_CASE_STRING(GR_STATS_TRIANGLES_OUT);
TRAP_CASE_STRING(GR_STATS_TRIANGLES);
TRAP_CASE_STRING(GR_SWAP_HISTORY);
TRAP_CASE_STRING(GR_SUPPORTS_PASSTHRU);
TRAP_CASE_STRING(GR_TEXTURE_ALIGN);
TRAP_CASE_STRING(GR_VIDEO_POSITION);
TRAP_CASE_STRING(GR_VIEWPORT);
TRAP_CASE_STRING(GR_WDEPTH_MIN_MAX);
TRAP_CASE_STRING(GR_ZDEPTH_MIN_MAX);
TRAP_CASE_STRING(GR_VERTEX_PARAMETER);
TRAP_CASE_STRING(GR_BITS_GAMMA);
TRAP_CASE_STRING(GR_GET_RESERVED_1);
TRAP_NODEFAULT;
}
}
const char *TRP_GETSTRING (FxU32 pname)
{
switch (pname) {
TRAP_CASE_STRING(GR_EXTENSION);
TRAP_CASE_STRING(GR_HARDWARE);
TRAP_CASE_STRING(GR_RENDERER);
TRAP_CASE_STRING(GR_VENDOR);
TRAP_CASE_STRING(GR_VERSION);
TRAP_NODEFAULT;
}
}
const char *TRP_ENABLE (GrEnableMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_AA_ORDERED);
TRAP_CASE_STRING(GR_ALLOW_MIPMAP_DITHER);
TRAP_CASE_STRING(GR_PASSTHRU);
TRAP_CASE_STRING(GR_SHAMELESS_PLUG);
TRAP_CASE_STRING(GR_VIDEO_SMOOTHING);
TRAP_CASE_STRING(GR_TEXTURE_UMA_EXT);
TRAP_CASE_STRING(GR_STENCIL_MODE_EXT);
TRAP_CASE_STRING(GR_OPENGL_MODE_EXT);
TRAP_NODEFAULT;
}
}
const char *TRP_COORD (GrCoordinateSpaceMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_WINDOW_COORDS);
TRAP_CASE_STRING(GR_CLIP_COORDS);
TRAP_NODEFAULT;
}
}
const char *TRP_STIPPLEMODE (GrStippleMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_STIPPLE_DISABLE);
TRAP_CASE_STRING(GR_STIPPLE_PATTERN);
TRAP_CASE_STRING(GR_STIPPLE_ROTATE);
TRAP_NODEFAULT;
}
}
const char *TRP_LODLEVEL (GrLOD_t lod)
{
switch (lod) {
TRAP_CASE_STRING(GR_LOD_LOG2_2048);
TRAP_CASE_STRING(GR_LOD_LOG2_1024);
TRAP_CASE_STRING(GR_LOD_LOG2_512);
TRAP_CASE_STRING(GR_LOD_LOG2_256);
TRAP_CASE_STRING(GR_LOD_LOG2_128);
TRAP_CASE_STRING(GR_LOD_LOG2_64);
TRAP_CASE_STRING(GR_LOD_LOG2_32);
TRAP_CASE_STRING(GR_LOD_LOG2_16);
TRAP_CASE_STRING(GR_LOD_LOG2_8);
TRAP_CASE_STRING(GR_LOD_LOG2_4);
TRAP_CASE_STRING(GR_LOD_LOG2_2);
TRAP_CASE_STRING(GR_LOD_LOG2_1);
TRAP_NODEFAULT;
}
}
const char *TRP_ASPECTRATIO (GrAspectRatio_t aspect)
{
switch (aspect) {
TRAP_CASE_STRING(GR_ASPECT_LOG2_8x1);
TRAP_CASE_STRING(GR_ASPECT_LOG2_4x1);
TRAP_CASE_STRING(GR_ASPECT_LOG2_2x1);
TRAP_CASE_STRING(GR_ASPECT_LOG2_1x1);
TRAP_CASE_STRING(GR_ASPECT_LOG2_1x2);
TRAP_CASE_STRING(GR_ASPECT_LOG2_1x4);
TRAP_CASE_STRING(GR_ASPECT_LOG2_1x8);
TRAP_NODEFAULT;
}
}
const char *TRP_TEXFMT (GrTextureFormat_t fmt)
{
switch (fmt) {
TRAP_CASE_STRING(GR_TEXFMT_8BIT);
/*TRAP_CASE_STRING(GR_TEXFMT_RGB_332); ==GR_TEXFMT_8BIT*/
TRAP_CASE_STRING(GR_TEXFMT_YIQ_422);
TRAP_CASE_STRING(GR_TEXFMT_ALPHA_8);
TRAP_CASE_STRING(GR_TEXFMT_INTENSITY_8);
TRAP_CASE_STRING(GR_TEXFMT_ALPHA_INTENSITY_44);
TRAP_CASE_STRING(GR_TEXFMT_P_8);
TRAP_CASE_STRING(GR_TEXFMT_RSVD0);
/*TRAP_CASE_STRING(GR_TEXFMT_P_8_6666); ==GR_TEXFMT_RSVD0*/
/*TRAP_CASE_STRING(GR_TEXFMT_P_8_6666_EXT); ==GR_TEXFMT_RSVD0*/
TRAP_CASE_STRING(GR_TEXFMT_RSVD1);
TRAP_CASE_STRING(GR_TEXFMT_16BIT);
/*TRAP_CASE_STRING(GR_TEXFMT_ARGB_8332); ==GR_TEXFMT_16BIT*/
TRAP_CASE_STRING(GR_TEXFMT_AYIQ_8422);
TRAP_CASE_STRING(GR_TEXFMT_RGB_565);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_1555);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_4444);
TRAP_CASE_STRING(GR_TEXFMT_ALPHA_INTENSITY_88);
TRAP_CASE_STRING(GR_TEXFMT_AP_88);
TRAP_CASE_STRING(GR_TEXFMT_RSVD2);
/*TRAP_CASE_STRING(GR_TEXFMT_RSVD4); ==GR_TEXFMT_RSVD2*/
TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_FXT1);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_8888);
TRAP_CASE_STRING(GR_TEXFMT_YUYV_422);
TRAP_CASE_STRING(GR_TEXFMT_UYVY_422);
TRAP_CASE_STRING(GR_TEXFMT_AYUV_444);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT1);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT2);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT3);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT4);
TRAP_CASE_STRING(GR_TEXFMT_ARGB_CMP_DXT5);
TRAP_CASE_STRING(GR_TEXTFMT_RGB_888);
TRAP_NODEFAULT;
}
}
const char *TRP_EVENODD (FxU32 evenOdd)
{
switch (evenOdd) {
TRAP_CASE_STRING(GR_MIPMAPLEVELMASK_EVEN);
TRAP_CASE_STRING(GR_MIPMAPLEVELMASK_ODD);
TRAP_CASE_STRING(GR_MIPMAPLEVELMASK_BOTH);
TRAP_NODEFAULT;
}
}
const char *TRP_NCC (GrNCCTable_t table)
{
switch (table) {
TRAP_CASE_STRING(GR_NCCTABLE_NCC0);
TRAP_CASE_STRING(GR_NCCTABLE_NCC1);
TRAP_NODEFAULT;
}
}
const char *TRP_CLAMPMODE (GrTextureClampMode_t clampmode)
{
switch (clampmode) {
TRAP_CASE_STRING(GR_TEXTURECLAMP_WRAP);
TRAP_CASE_STRING(GR_TEXTURECLAMP_CLAMP);
TRAP_CASE_STRING(GR_TEXTURECLAMP_MIRROR_EXT);
TRAP_NODEFAULT;
}
}
const char *TRP_TEXFILTER (GrTextureFilterMode_t filter_mode)
{
switch (filter_mode) {
TRAP_CASE_STRING(GR_TEXTUREFILTER_POINT_SAMPLED);
TRAP_CASE_STRING(GR_TEXTUREFILTER_BILINEAR);
TRAP_NODEFAULT;
}
}
const char *TRP_TABLE (GrTexTable_t type)
{
switch (type) {
TRAP_CASE_STRING(GR_TEXTABLE_NCC0);
TRAP_CASE_STRING(GR_TEXTABLE_NCC1);
TRAP_CASE_STRING(GR_TEXTABLE_PALETTE);
TRAP_CASE_STRING(GR_TEXTABLE_PALETTE_6666_EXT);
TRAP_NODEFAULT;
}
}
const char *TRP_MIPMODE (GrMipMapMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_MIPMAP_DISABLE);
TRAP_CASE_STRING(GR_MIPMAP_NEAREST);
TRAP_CASE_STRING(GR_MIPMAP_NEAREST_DITHER);
TRAP_NODEFAULT;
}
}
const char *TRP_TEXBASERANGE (GrTexBaseRange_t range)
{
switch (range) {
TRAP_CASE_STRING(GR_TEXBASE_2048);
TRAP_CASE_STRING(GR_TEXBASE_1024);
TRAP_CASE_STRING(GR_TEXBASE_512);
TRAP_CASE_STRING(GR_TEXBASE_256_TO_1);
TRAP_CASE_STRING(GR_TEXBASE_256);
TRAP_CASE_STRING(GR_TEXBASE_128);
TRAP_CASE_STRING(GR_TEXBASE_64);
TRAP_CASE_STRING(GR_TEXBASE_32_TO_1);
TRAP_NODEFAULT;
}
}
const char *TRP_LOCKTYPE (GrLock_t type)
{
switch (type) {
TRAP_CASE_STRING(GR_LFB_READ_ONLY);
TRAP_CASE_STRING(GR_LFB_WRITE_ONLY);
/*TRAP_CASE_STRING(GR_LFB_IDLE); ==GR_LFB_READ_ONLY*/
TRAP_CASE_STRING(GR_LFB_NOIDLE);
TRAP_CASE_STRING(GR_LFB_WRITE_ONLY_EXPLICIT_EXT);
TRAP_NODEFAULT;
}
}
const char *TRP_WRITEMODE (GrLfbWriteMode_t writeMode)
{
switch (writeMode) {
TRAP_CASE_STRING(GR_LFBWRITEMODE_565);
TRAP_CASE_STRING(GR_LFBWRITEMODE_555);
TRAP_CASE_STRING(GR_LFBWRITEMODE_1555);
TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED1);
TRAP_CASE_STRING(GR_LFBWRITEMODE_888);
TRAP_CASE_STRING(GR_LFBWRITEMODE_8888);
TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED2);
TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED3);
TRAP_CASE_STRING(GR_LFBWRITEMODE_Z32);
TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED5);
TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED6);
TRAP_CASE_STRING(GR_LFBWRITEMODE_RESERVED7);
TRAP_CASE_STRING(GR_LFBWRITEMODE_565_DEPTH);
TRAP_CASE_STRING(GR_LFBWRITEMODE_555_DEPTH);
TRAP_CASE_STRING(GR_LFBWRITEMODE_1555_DEPTH);
TRAP_CASE_STRING(GR_LFBWRITEMODE_ZA16);
TRAP_CASE_STRING(GR_LFBWRITEMODE_ANY);
TRAP_NODEFAULT;
}
}
const char *TRP_SRCFMT (GrLfbSrcFmt_t src_format)
{
switch (src_format) {
TRAP_CASE_STRING(GR_LFB_SRC_FMT_565);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_555);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_1555);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_888);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_8888);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_565_DEPTH);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_555_DEPTH);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_1555_DEPTH);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_ZA16);
TRAP_CASE_STRING(GR_LFB_SRC_FMT_RLE16);
TRAP_CASE_STRING(GR_LFBWRITEMODE_Z32); /*???*/
TRAP_NODEFAULT;
}
}
const char *TRP_CRMODE (GrChromaRangeMode_t mode)
{
switch (mode) {
TRAP_CASE_STRING(GR_CHROMARANGE_DISABLE_EXT);
/*TRAP_CASE_STRING(GR_CHROMARANGE_RGB_ALL_EXT); ==GR_CHROMARANGE_DISABLE_EXT*/
TRAP_CASE_STRING(GR_CHROMARANGE_ENABLE_EXT);
TRAP_NODEFAULT;
}
}
const char *TRP_PIXFMT (GrPixelFormat_t pixelformat)
{
switch (pixelformat) {
TRAP_CASE_STRING(GR_PIXFMT_I_8);
TRAP_CASE_STRING(GR_PIXFMT_AI_88);
TRAP_CASE_STRING(GR_PIXFMT_RGB_565);
TRAP_CASE_STRING(GR_PIXFMT_ARGB_1555);
TRAP_CASE_STRING(GR_PIXFMT_ARGB_8888);
TRAP_CASE_STRING(GR_PIXFMT_AA_2_RGB_565);
TRAP_CASE_STRING(GR_PIXFMT_AA_2_ARGB_1555);
TRAP_CASE_STRING(GR_PIXFMT_AA_2_ARGB_8888);
TRAP_CASE_STRING(GR_PIXFMT_AA_4_RGB_565);
TRAP_CASE_STRING(GR_PIXFMT_AA_4_ARGB_1555);
TRAP_CASE_STRING(GR_PIXFMT_AA_4_ARGB_8888);
TRAP_CASE_STRING(GR_PIXFMT_AA_8_RGB_565);
TRAP_CASE_STRING(GR_PIXFMT_AA_8_ARGB_1555);
TRAP_CASE_STRING(GR_PIXFMT_AA_8_ARGB_8888);
TRAP_NODEFAULT;
}
}
const char *TRP_STENCILOP (GrStencilOp_t op)
{
switch (op) {
TRAP_CASE_STRING(GR_STENCILOP_KEEP);
TRAP_CASE_STRING(GR_STENCILOP_ZERO);
TRAP_CASE_STRING(GR_STENCILOP_REPLACE);
TRAP_CASE_STRING(GR_STENCILOP_INCR_CLAMP);
TRAP_CASE_STRING(GR_STENCILOP_DECR_CLAMP);
TRAP_CASE_STRING(GR_STENCILOP_INVERT);
TRAP_CASE_STRING(GR_STENCILOP_INCR_WRAP);
TRAP_CASE_STRING(GR_STENCILOP_DECR_WRAP);
TRAP_NODEFAULT;
}
}
const char *TRP_BLENDOP (GrAlphaBlendOp_t op)
{
switch (op) {
TRAP_CASE_STRING(GR_BLEND_OP_ADD);
TRAP_CASE_STRING(GR_BLEND_OP_SUB);
TRAP_CASE_STRING(GR_BLEND_OP_REVSUB);
TRAP_NODEFAULT;
}
}
const char *TRP_CU (GrCCUColor_t a)
{
switch (a) {
TRAP_CASE_STRING(GR_CMBX_ZERO);
TRAP_CASE_STRING(GR_CMBX_TEXTURE_ALPHA);
TRAP_CASE_STRING(GR_CMBX_ALOCAL);
TRAP_CASE_STRING(GR_CMBX_AOTHER);
TRAP_CASE_STRING(GR_CMBX_B);
TRAP_CASE_STRING(GR_CMBX_CONSTANT_ALPHA);
TRAP_CASE_STRING(GR_CMBX_CONSTANT_COLOR);
TRAP_CASE_STRING(GR_CMBX_DETAIL_FACTOR);
TRAP_CASE_STRING(GR_CMBX_ITALPHA);
TRAP_CASE_STRING(GR_CMBX_ITRGB);
TRAP_CASE_STRING(GR_CMBX_LOCAL_TEXTURE_ALPHA);
TRAP_CASE_STRING(GR_CMBX_LOCAL_TEXTURE_RGB);
TRAP_CASE_STRING(GR_CMBX_LOD_FRAC);
TRAP_CASE_STRING(GR_CMBX_OTHER_TEXTURE_ALPHA);
TRAP_CASE_STRING(GR_CMBX_OTHER_TEXTURE_RGB);
TRAP_CASE_STRING(GR_CMBX_TEXTURE_RGB);
TRAP_CASE_STRING(GR_CMBX_TMU_CALPHA);
TRAP_CASE_STRING(GR_CMBX_TMU_CCOLOR);
TRAP_NODEFAULT;
}
}
const char *TRP_CMBMODE (GrCombineMode_t a_mode)
{
switch (a_mode) {
TRAP_CASE_STRING(GR_FUNC_MODE_ZERO);
TRAP_CASE_STRING(GR_FUNC_MODE_X);
TRAP_CASE_STRING(GR_FUNC_MODE_ONE_MINUS_X);
TRAP_CASE_STRING(GR_FUNC_MODE_NEGATIVE_X);
TRAP_CASE_STRING(GR_FUNC_MODE_X_MINUS_HALF);
TRAP_NODEFAULT;
}
}
const char *TRP_TMU (GrChipID_t tmu)
{
switch (tmu) {
TRAP_CASE_STRING(GR_TMU0);
TRAP_CASE_STRING(GR_TMU1);
TRAP_NODEFAULT;
}
}
const char *TRP_TXDITHER (FxU32 dither)
{
switch (dither) {
TRAP_CASE_STRING(TX_DITHER_NONE);
TRAP_CASE_STRING(TX_DITHER_4x4);
TRAP_CASE_STRING(TX_DITHER_ERR);
TRAP_NODEFAULT;
}
}
const char *TRP_TXCOMPRESS (FxU32 compress)
{
switch (compress) {
TRAP_CASE_STRING(TX_COMPRESSION_STATISTICAL);
TRAP_CASE_STRING(TX_COMPRESSION_HEURISTIC);
TRAP_NODEFAULT;
}
}
/****************************************************************************\
* REAL POINTERS *
\****************************************************************************/
/*
** glide extensions
*/
void (FX_CALL *real_grSetNumPendingBuffers) (FxI32 NumPendingBuffers);
char * (FX_CALL *real_grGetRegistryOrEnvironmentStringExt) (char *theEntry);
void (FX_CALL *real_grGetGammaTableExt) (FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);
void (FX_CALL *real_grChromaRangeModeExt) (GrChromakeyMode_t mode);
void (FX_CALL *real_grChromaRangeExt) (GrColor_t color, GrColor_t range, GrChromaRangeMode_t match_mode);
void (FX_CALL *real_grTexChromaModeExt) (GrChipID_t tmu, GrChromakeyMode_t mode);
void (FX_CALL *real_grTexChromaRangeExt) (GrChipID_t tmu, GrColor_t min, GrColor_t max, GrTexChromakeyMode_t mode);
/* pointcast */
void (FX_CALL *real_grTexDownloadTableExt) (GrChipID_t tmu, GrTexTable_t type, void *data);
void (FX_CALL *real_grTexDownloadTablePartialExt) (GrChipID_t tmu, GrTexTable_t type, void *data, int start, int end);
void (FX_CALL *real_grTexNCCTableExt) (GrChipID_t tmu, GrNCCTable_t table);
/* tbext */
void (FX_CALL *real_grTextureBufferExt) (GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLOD, GrLOD_t largeLOD, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 odd_even_mask);
void (FX_CALL *real_grTextureAuxBufferExt) (GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLOD, GrLOD_t largeLOD, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 odd_even_mask);
void (FX_CALL *real_grAuxBufferExt) (GrBuffer_t buffer);
/* napalm */
GrContext_t (FX_CALL *real_grSstWinOpenExt) (FxU32 hWnd, GrScreenResolution_t resolution, GrScreenRefresh_t refresh, GrColorFormat_t format, GrOriginLocation_t origin, GrPixelFormat_t pixelformat, int nColBuffers, int nAuxBuffers);
void (FX_CALL *real_grStencilFuncExt) (GrCmpFnc_t fnc, GrStencil_t ref, GrStencil_t mask);
void (FX_CALL *real_grStencilMaskExt) (GrStencil_t value);
void (FX_CALL *real_grStencilOpExt) (GrStencilOp_t stencil_fail, GrStencilOp_t depth_fail, GrStencilOp_t depth_pass);
void (FX_CALL *real_grLfbConstantStencilExt) (GrStencil_t value);
void (FX_CALL *real_grBufferClearExt) (GrColor_t color, GrAlpha_t alpha, FxU32 depth, GrStencil_t stencil);
void (FX_CALL *real_grColorCombineExt) (GrCCUColor_t a, GrCombineMode_t a_mode, GrCCUColor_t b, GrCombineMode_t b_mode, GrCCUColor_t c, FxBool c_invert, GrCCUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
void (FX_CALL *real_grAlphaCombineExt) (GrACUColor_t a, GrCombineMode_t a_mode, GrACUColor_t b, GrCombineMode_t b_mode, GrACUColor_t c, FxBool c_invert, GrACUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
void (FX_CALL *real_grTexColorCombineExt) (GrChipID_t tmu, GrTCCUColor_t a, GrCombineMode_t a_mode, GrTCCUColor_t b, GrCombineMode_t b_mode, GrTCCUColor_t c, FxBool c_invert, GrTCCUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
void (FX_CALL *real_grTexAlphaCombineExt) (GrChipID_t tmu, GrTACUColor_t a, GrCombineMode_t a_mode, GrTACUColor_t b, GrCombineMode_t b_mode, GrTACUColor_t c, FxBool c_invert, GrTACUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert);
void (FX_CALL *real_grConstantColorValueExt) (GrChipID_t tmu, GrColor_t value);
void (FX_CALL *real_grColorMaskExt) (FxBool r, FxBool g, FxBool b, FxBool a);
void (FX_CALL *real_grAlphaBlendFunctionExt) (GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df, GrAlphaBlendOp_t rgb_op, GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df, GrAlphaBlendOp_t alpha_op);
void (FX_CALL *real_grTBufferWriteMaskExt) (FxU32 tmask);
/*
** texus
*/
void (FX_CALL *real_txImgQuantize) (char *dst, char *src, int w, int h, FxU32 format, FxU32 dither);
void (FX_CALL *real_txMipQuantize) (TxMip *pxMip, TxMip *txMip, int fmt, FxU32 d, FxU32 comp);
void (FX_CALL *real_txPalToNcc) (GuNccTable *ncc_table, const FxU32 *pal);
/****************************************************************************\
* DEBUG HOOKS *
\****************************************************************************/
/*
** rendering functions
*/
void FX_CALL trap_grDrawPoint (const void *pt)
{
#define FN_NAME "grDrawPoint"
TRAP_LOG("%s(%p)\n", FN_NAME, pt);
grDrawPoint(pt);
#undef FN_NAME
}
void FX_CALL trap_grDrawLine (const void *v1,
const void *v2)
{
#define FN_NAME "grDrawLine"
TRAP_LOG("%s(%p, %p)\n", FN_NAME, v1, v2);
grDrawLine(v1, v2);
#undef FN_NAME
}
void FX_CALL trap_grDrawTriangle (const void *a,
const void *b,
const void *c)
{
#define FN_NAME "grDrawTriangle"
TRAP_LOG("%s(%p, %p, %p)\n", FN_NAME, a, b, c);
grDrawTriangle(a, b, c);
#undef FN_NAME
}
void FX_CALL trap_grVertexLayout (FxU32 param,
FxI32 offset,
FxU32 mode)
{
#define FN_NAME "grVertexLayout"
TRAP_LOG("%s(%s, %ld, %s)\n", FN_NAME, TRP_VTX(param), offset, TRP_PARAM(mode));
grVertexLayout(param, offset, mode);
#undef FN_NAME
}
void FX_CALL trap_grDrawVertexArray (FxU32 mode,
FxU32 Count,
void *pointers)
{
#define FN_NAME "grDrawVertexArray"
TRAP_LOG("%s(%s, %lu, %p)\n", FN_NAME, TRP_ARRAY(mode), Count, pointers);
grDrawVertexArray(mode, Count, pointers);
#undef FN_NAME
}
void FX_CALL trap_grDrawVertexArrayContiguous (FxU32 mode,
FxU32 Count,
void *pointers,
FxU32 stride)
{
#define FN_NAME "grDrawVertexArrayContiguous"
TRAP_LOG("%s(%s, %lu, %p, %lu)\n", FN_NAME, TRP_ARRAY(mode), Count, pointers, stride);
grDrawVertexArrayContiguous(mode, Count, pointers, stride);
#undef FN_NAME
}
/*
** Antialiasing Functions
*/
void FX_CALL trap_grAADrawTriangle (const void *a,
const void *b,
const void *c,
FxBool ab_antialias,
FxBool bc_antialias,
FxBool ca_antialias)
{
#define FN_NAME "grAADrawTriangle"
TRAP_LOG("%s(%p, %p, %p, %s, %s, %s)\n", FN_NAME, a, b, c, TRP_BOOL(ab_antialias), TRP_BOOL(bc_antialias), TRP_BOOL(ca_antialias));
grAADrawTriangle(a, b, c, ab_antialias, bc_antialias, ca_antialias);
#undef FN_NAME
}
/*
** buffer management
*/
void FX_CALL trap_grBufferClear (GrColor_t color,
GrAlpha_t alpha,
FxU32 depth)
{
#define FN_NAME "grBufferClear"
TRAP_LOG("%s(%08lx, %02x, %08lx)\n", FN_NAME, color, alpha, depth);
grBufferClear(color, alpha, depth);
#undef FN_NAME
}
void FX_CALL trap_grBufferSwap (FxU32 swap_interval)
{
#define FN_NAME "grBufferSwap"
TRAP_LOG("%s(%lu)\n", FN_NAME, swap_interval);
grBufferSwap(swap_interval);
#undef FN_NAME
}
void FX_CALL trap_grRenderBuffer (GrBuffer_t buffer)
{
#define FN_NAME "grRenderBuffer"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BUFFER(buffer));
grRenderBuffer(buffer);
#undef FN_NAME
}
/*
** error management
*/
void FX_CALL trap_grErrorSetCallback (GrErrorCallbackFnc_t fnc)
{
#define FN_NAME "grErrorSetCallback"
TRAP_LOG("%s(%p)\n", FN_NAME, (void *)fnc);
grErrorSetCallback(fnc);
#undef FN_NAME
}
/*
** SST routines
*/
void FX_CALL trap_grFinish (void)
{
#define FN_NAME "grFinish"
TRAP_LOG("%s()\n", FN_NAME);
grFinish();
#undef FN_NAME
}
void FX_CALL trap_grFlush (void)
{
#define FN_NAME "grFlush"
TRAP_LOG("%s()\n", FN_NAME);
grFlush();
#undef FN_NAME
}
GrContext_t FX_CALL trap_grSstWinOpen (FxU32 hWnd,
GrScreenResolution_t screen_resolution,
GrScreenRefresh_t refresh_rate,
GrColorFormat_t color_format,
GrOriginLocation_t origin_location,
int nColBuffers,
int nAuxBuffers)
{
#define FN_NAME "grSstWinOpen"
GrContext_t rv;
TRAP_LOG("%s(%08lx, %s, %s, %s, %s, %d, %d)\n", FN_NAME, hWnd, TRP_RESOLUTION(screen_resolution), TRP_REFRESH(refresh_rate), TRP_COLFMT(color_format), TRP_ORIGIN(origin_location), nColBuffers, nAuxBuffers);
rv = grSstWinOpen(hWnd, screen_resolution, refresh_rate, color_format, origin_location, nColBuffers, nAuxBuffers);
TRAP_LOG(GOT "%p\n", (void *)rv);
return rv;
#undef FN_NAME
}
FxBool FX_CALL trap_grSstWinClose (GrContext_t context)
{
#define FN_NAME "grSstWinClose"
FxBool rv;
TRAP_LOG("%s(%p)\n", FN_NAME, (void *)context);
rv = grSstWinClose(context);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
FxBool FX_CALL trap_grSelectContext (GrContext_t context)
{
#define FN_NAME "grSelectContext"
FxBool rv;
TRAP_LOG("%s(%p)\n", FN_NAME, (void *)context);
rv = grSelectContext(context);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
void FX_CALL trap_grSstOrigin (GrOriginLocation_t origin)
{
#define FN_NAME "grSstOrigin"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_ORIGIN(origin));
grSstOrigin(origin);
#undef FN_NAME
}
void FX_CALL trap_grSstSelect (int which_sst)
{
#define FN_NAME "grSstSelect"
TRAP_LOG("%s(%d)\n", FN_NAME, which_sst);
grSstSelect(which_sst);
#undef FN_NAME
}
/*
** Glide configuration and special effect maintenance functions
*/
void FX_CALL trap_grAlphaBlendFunction (GrAlphaBlendFnc_t rgb_sf,
GrAlphaBlendFnc_t rgb_df,
GrAlphaBlendFnc_t alpha_sf,
GrAlphaBlendFnc_t alpha_df)
{
#define FN_NAME "grAlphaBlendFunction"
TRAP_LOG("%s(%s, %s, %s, %s)\n", FN_NAME, TRP_BLEND(rgb_sf), TRP_BLEND(rgb_df), TRP_BLEND(alpha_sf), TRP_BLEND(alpha_df));
grAlphaBlendFunction(rgb_sf, rgb_df, alpha_sf, alpha_df);
#undef FN_NAME
}
void FX_CALL trap_grAlphaCombine (GrCombineFunction_t function,
GrCombineFactor_t factor,
GrCombineLocal_t local,
GrCombineOther_t other,
FxBool invert)
{
#define FN_NAME "grAlphaCombine"
TRAP_LOG("%s(%s, %s, %s, %s, %s)\n", FN_NAME, TRP_CMBFUNC(function), TRP_CMBFACT(factor), TRP_CMBLOCAL(local), TRP_CMBOTHER(other), TRP_BOOL(invert));
grAlphaCombine(function, factor, local, other, invert);
#undef FN_NAME
}
void FX_CALL trap_grAlphaControlsITRGBLighting (FxBool enable)
{
#define FN_NAME "grAlphaControlsITRGBLighting"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BOOL(enable));
grAlphaControlsITRGBLighting(enable);
#undef FN_NAME
}
void FX_CALL trap_grAlphaTestFunction (GrCmpFnc_t function)
{
#define FN_NAME "grAlphaTestFunction"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CMPFUNC(function));
grAlphaTestFunction(function);
#undef FN_NAME
}
void FX_CALL trap_grAlphaTestReferenceValue (GrAlpha_t value)
{
#define FN_NAME "grAlphaTestReferenceValue"
TRAP_LOG("%s(%02x)\n", FN_NAME, value);
grAlphaTestReferenceValue(value);
#undef FN_NAME
}
void FX_CALL trap_grChromakeyMode (GrChromakeyMode_t mode)
{
#define FN_NAME "grChromakeyMode"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CKMODE(mode));
grChromakeyMode(mode);
#undef FN_NAME
}
void FX_CALL trap_grChromakeyValue (GrColor_t value)
{
#define FN_NAME "grChromakeyValue"
TRAP_LOG("%s(%08lx)\n", FN_NAME, value);
grChromakeyValue(value);
#undef FN_NAME
}
void FX_CALL trap_grClipWindow (FxU32 minx,
FxU32 miny,
FxU32 maxx,
FxU32 maxy)
{
#define FN_NAME "grClipWindow"
TRAP_LOG("%s(%lu, %lu, %lu, %lu)\n", FN_NAME, minx, miny, maxx, maxy);
grClipWindow(minx, miny, maxx, maxy);
#undef FN_NAME
}
void FX_CALL trap_grColorCombine (GrCombineFunction_t function,
GrCombineFactor_t factor,
GrCombineLocal_t local,
GrCombineOther_t other,
FxBool invert)
{
#define FN_NAME "grColorCombine"
TRAP_LOG("%s(%s, %s, %s, %s, %s)\n", FN_NAME, TRP_CMBFUNC(function), TRP_CMBFACT(factor), TRP_CMBLOCAL(local), TRP_CMBOTHER(other), TRP_BOOL(invert));
grColorCombine(function, factor, local, other, invert);
#undef FN_NAME
}
void FX_CALL trap_grColorMask (FxBool rgb,
FxBool a)
{
#define FN_NAME "grColorMask"
TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_BOOL(rgb), TRP_BOOL(a));
grColorMask(rgb, a);
#undef FN_NAME
}
void FX_CALL trap_grCullMode (GrCullMode_t mode)
{
#define FN_NAME "grCullMode"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CULLMODE(mode));
grCullMode(mode);
#undef FN_NAME
}
void FX_CALL trap_grConstantColorValue (GrColor_t value)
{
#define FN_NAME "grConstantColorValue"
TRAP_LOG("%s(%08lx)\n", FN_NAME, value);
grConstantColorValue(value);
#undef FN_NAME
}
void FX_CALL trap_grDepthBiasLevel (FxI32 level)
{
#define FN_NAME "grDepthBiasLevel"
TRAP_LOG("%s(%ld)\n", FN_NAME, level);
grDepthBiasLevel(level);
#undef FN_NAME
}
void FX_CALL trap_grDepthBufferFunction (GrCmpFnc_t function)
{
#define FN_NAME "grDepthBufferFunction"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CMPFUNC(function));
grDepthBufferFunction(function);
#undef FN_NAME
}
void FX_CALL trap_grDepthBufferMode (GrDepthBufferMode_t mode)
{
#define FN_NAME "grDepthBufferMode"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_DEPTHMODE(mode));
grDepthBufferMode(mode);
#undef FN_NAME
}
void FX_CALL trap_grDepthMask (FxBool mask)
{
#define FN_NAME "grDepthMask"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BOOL(mask));
grDepthMask(mask);
#undef FN_NAME
}
void FX_CALL trap_grDisableAllEffects (void)
{
#define FN_NAME "grDisableAllEffects"
TRAP_LOG("%s()\n", FN_NAME);
grDisableAllEffects();
#undef FN_NAME
}
void FX_CALL trap_grDitherMode (GrDitherMode_t mode)
{
#define FN_NAME "grDitherMode"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_DITHERMODE(mode));
grDitherMode(mode);
#undef FN_NAME
}
void FX_CALL trap_grFogColorValue (GrColor_t fogcolor)
{
#define FN_NAME "grFogColorValue"
TRAP_LOG("%s(%08lx)\n", FN_NAME, fogcolor);
grFogColorValue(fogcolor);
#undef FN_NAME
}
void FX_CALL trap_grFogMode (GrFogMode_t mode)
{
#define FN_NAME "grFogMode"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_FOGMODE(mode));
grFogMode(mode);
#undef FN_NAME
}
void FX_CALL trap_grFogTable (const GrFog_t ft[])
{
#define FN_NAME "grFogTable"
TRAP_LOG("%s(%p)\n", FN_NAME, ft);
grFogTable(ft);
#undef FN_NAME
}
void FX_CALL trap_grLoadGammaTable (FxU32 nentries,
FxU32 *red,
FxU32 *green,
FxU32 *blue)
{
#define FN_NAME "grLoadGammaTable"
TRAP_LOG("%s(%lu, %p, %p, %p)\n", FN_NAME, nentries, (void *)red, (void *)green, (void *)blue);
grLoadGammaTable(nentries, red, green, blue);
#undef FN_NAME
}
void FX_CALL trap_grSplash (float x,
float y,
float width,
float height,
FxU32 frame)
{
#define FN_NAME "grSplash"
TRAP_LOG("%s(%f, %f, %f, %f, %lu)\n", FN_NAME, x, y, width, height, frame);
grSplash(x, y, width, height, frame);
#undef FN_NAME
}
FxU32 FX_CALL trap_grGet (FxU32 pname,
FxU32 plength,
FxI32 *params)
{
#define FN_NAME "grGet"
FxU32 rv, i;
TRAP_LOG("%s(%s, %lu, %p)\n", FN_NAME, TRP_GETNAME(pname), plength, (void *)params);
rv = grGet(pname, plength, params);
TRAP_LOG(GOT "[");
for (i = 0; i < (rv/sizeof(FxI32)); i++) {
TRAP_LOG("%s%ld", i ? ", " : "", params[i]);
}
TRAP_LOG("]\n");
return rv;
#undef FN_NAME
}
const char *FX_CALL trap_grGetString (FxU32 pname)
{
#define FN_NAME "grGetString"
const char *rv;
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_GETSTRING(pname));
rv = grGetString(pname);
if (rv) {
TRAP_LOG(GOT "\"%s\"\n", rv);
} else {
TRAP_LOG(GOT "NULL\n");
}
return rv;
#undef FN_NAME
}
FxI32 FX_CALL trap_grQueryResolutions (const GrResolution *resTemplate,
GrResolution *output)
{
#define FN_NAME "grQueryResolutions"
FxI32 rv;
TRAP_LOG("%s(%p, %p)\n", FN_NAME, (void *)resTemplate, (void *)output);
rv = grQueryResolutions(resTemplate, output);
TRAP_LOG(GOT "%ld\n", rv);
return rv;
#undef FN_NAME
}
FxBool FX_CALL trap_grReset (FxU32 what)
{
#define FN_NAME "grReset"
FxBool rv;
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_GETNAME(what));
rv = grReset(what);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
GrProc FX_CALL trap_grGetProcAddress (char *procName)
{
#define FN_NAME "grGetProcAddress"
GrProc rv;
TRAP_LOG("%s(%s)\n", FN_NAME, procName);
rv = grGetProcAddress(procName);
TRAP_LOG(GOT "%p\n", (void *)rv);
return rv;
#undef FN_NAME
}
void FX_CALL trap_grEnable (GrEnableMode_t mode)
{
#define FN_NAME "grEnable"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_ENABLE(mode));
grEnable(mode);
#undef FN_NAME
}
void FX_CALL trap_grDisable (GrEnableMode_t mode)
{
#define FN_NAME "grDisable"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_ENABLE(mode));
grDisable(mode);
#undef FN_NAME
}
void FX_CALL trap_grCoordinateSpace (GrCoordinateSpaceMode_t mode)
{
#define FN_NAME "grCoordinateSpace"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_COORD(mode));
grCoordinateSpace(mode);
#undef FN_NAME
}
void FX_CALL trap_grDepthRange (FxFloat n,
FxFloat f)
{
#define FN_NAME "grDepthRange"
TRAP_LOG("%s(%f, %f)\n", FN_NAME, n, f);
grDepthRange(n, f);
#undef FN_NAME
}
void FX_CALL trap_grStippleMode (GrStippleMode_t mode)
{
#define FN_NAME "grStippleMode"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_STIPPLEMODE(mode));
grStippleMode(mode); /* some Glide libs don't have it; not used anyway */
#undef FN_NAME
}
void FX_CALL trap_grStipplePattern (GrStipplePattern_t mode)
{
#define FN_NAME "grStipplePattern"
TRAP_LOG("%s(%08lx)\n", FN_NAME, mode);
grStipplePattern(mode); /* some Glide libs don't have it; not used anyway */
#undef FN_NAME
}
void FX_CALL trap_grViewport (FxI32 x,
FxI32 y,
FxI32 width,
FxI32 height)
{
#define FN_NAME "grViewport"
TRAP_LOG("%s(%ld, %ld, %ld, %ld)\n", FN_NAME, x, y, width, height);
grViewport(x, y, width, height);
#undef FN_NAME
}
/*
** texture mapping control functions
*/
FxU32 FX_CALL trap_grTexCalcMemRequired (GrLOD_t lodmin,
GrLOD_t lodmax,
GrAspectRatio_t aspect,
GrTextureFormat_t fmt)
{
#define FN_NAME "grTexCalcMemRequired"
FxU32 rv;
TRAP_LOG("%s(%s, %s, %s, %s)\n", FN_NAME, TRP_LODLEVEL(lodmin), TRP_LODLEVEL(lodmax), TRP_ASPECTRATIO(aspect), TRP_TEXFMT(fmt));
rv = grTexCalcMemRequired(lodmin, lodmax, aspect, fmt);
TRAP_LOG(GOT "%lu\n", rv);
return rv;
#undef FN_NAME
}
FxU32 FX_CALL trap_grTexTextureMemRequired (FxU32 evenOdd,
GrTexInfo *info)
{
#define FN_NAME "grTexTextureMemRequired"
FxU32 rv;
TRAP_LOG("%s(%s, %p)\n", FN_NAME, TRP_EVENODD(evenOdd), (void *)info);
rv = grTexTextureMemRequired(evenOdd, info);
TRAP_LOG(GOT "%lu\n", rv);
return rv;
#undef FN_NAME
}
FxU32 FX_CALL trap_grTexMinAddress (GrChipID_t tmu)
{
#define FN_NAME "grTexMinAddress"
FxU32 rv;
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_TMU(tmu));
rv = grTexMinAddress(tmu);
TRAP_LOG(GOT "%lu\n", rv);
return rv;
#undef FN_NAME
}
FxU32 FX_CALL trap_grTexMaxAddress (GrChipID_t tmu)
{
#define FN_NAME "grTexMaxAddress"
FxU32 rv;
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_TMU(tmu));
rv = grTexMaxAddress(tmu);
TRAP_LOG(GOT "%lu\n", rv);
return rv;
#undef FN_NAME
}
void FX_CALL trap_grTexNCCTable (GrNCCTable_t table)
{
#define FN_NAME "grTexNCCTable"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_NCC(table));
grTexNCCTable(table);
#undef FN_NAME
}
void FX_CALL trap_grTexSource (GrChipID_t tmu,
FxU32 startAddress,
FxU32 evenOdd,
GrTexInfo *info)
{
#define FN_NAME "grTexSource"
TRAP_LOG("%s(%s, %08lx, %s, %p)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_EVENODD(evenOdd), (void *)info);
grTexSource(tmu, startAddress, evenOdd, info);
#undef FN_NAME
}
void FX_CALL trap_grTexClampMode (GrChipID_t tmu,
GrTextureClampMode_t s_clampmode,
GrTextureClampMode_t t_clampmode)
{
#define FN_NAME "grTexClampMode"
TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CLAMPMODE(s_clampmode), TRP_CLAMPMODE(t_clampmode));
grTexClampMode(tmu, s_clampmode, t_clampmode);
#undef FN_NAME
}
void FX_CALL trap_grTexCombine (GrChipID_t tmu,
GrCombineFunction_t rgb_function,
GrCombineFactor_t rgb_factor,
GrCombineFunction_t alpha_function,
GrCombineFactor_t alpha_factor,
FxBool rgb_invert,
FxBool alpha_invert)
{
#define FN_NAME "grTexCombine"
TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CMBFUNC(rgb_function), TRP_CMBFACT(rgb_factor), TRP_CMBFUNC(alpha_function), TRP_CMBFACT(alpha_factor), TRP_BOOL(rgb_invert), TRP_BOOL(alpha_invert));
grTexCombine(tmu, rgb_function, rgb_factor, alpha_function, alpha_factor, rgb_invert, alpha_invert);
#undef FN_NAME
}
void FX_CALL trap_grTexDetailControl (GrChipID_t tmu,
int lod_bias,
FxU8 detail_scale,
float detail_max)
{
#define FN_NAME "grTexDetailControl"
TRAP_LOG("%s(%s, %u, %d, %f)\n", FN_NAME, TRP_TMU(tmu), lod_bias, detail_scale, detail_max);
grTexDetailControl(tmu, lod_bias, detail_scale, detail_max);
#undef FN_NAME
}
void FX_CALL trap_grTexFilterMode (GrChipID_t tmu,
GrTextureFilterMode_t minfilter_mode,
GrTextureFilterMode_t magfilter_mode)
{
#define FN_NAME "grTexFilterMode"
TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_TEXFILTER(minfilter_mode), TRP_TEXFILTER(magfilter_mode));
grTexFilterMode(tmu, minfilter_mode, magfilter_mode);
#undef FN_NAME
}
void FX_CALL trap_grTexLodBiasValue (GrChipID_t tmu,
float bias)
{
#define FN_NAME "grTexLodBiasValue"
TRAP_LOG("%s(%s, %f)\n", FN_NAME, TRP_TMU(tmu), bias);
grTexLodBiasValue(tmu, bias);
#undef FN_NAME
}
void FX_CALL trap_grTexDownloadMipMap (GrChipID_t tmu,
FxU32 startAddress,
FxU32 evenOdd,
GrTexInfo *info)
{
#define FN_NAME "grTexDownloadMipMap"
TRAP_LOG("%s(%s, %08lx, %s, %p)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_EVENODD(evenOdd), (void *)info);
grTexDownloadMipMap(tmu, startAddress, evenOdd, info);
#undef FN_NAME
}
void FX_CALL trap_grTexDownloadMipMapLevel (GrChipID_t tmu,
FxU32 startAddress,
GrLOD_t thisLod,
GrLOD_t largeLod,
GrAspectRatio_t aspectRatio,
GrTextureFormat_t format,
FxU32 evenOdd,
void *data)
{
#define FN_NAME "grTexDownloadMipMapLevel"
TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s, %p)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLod), TRP_LODLEVEL(largeLod), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(evenOdd), data);
grTexDownloadMipMapLevel(tmu, startAddress, thisLod, largeLod, aspectRatio, format, evenOdd, data);
#undef FN_NAME
}
FxBool FX_CALL trap_grTexDownloadMipMapLevelPartial (GrChipID_t tmu,
FxU32 startAddress,
GrLOD_t thisLod,
GrLOD_t largeLod,
GrAspectRatio_t aspectRatio,
GrTextureFormat_t format,
FxU32 evenOdd,
void *data,
int start,
int end)
{
#define FN_NAME "grTexDownloadMipMapLevelPartial"
FxBool rv;
TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s, %p, %d, %d)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLod), TRP_LODLEVEL(largeLod), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(evenOdd), data, start, end);
rv = grTexDownloadMipMapLevelPartial(tmu, startAddress, thisLod, largeLod, aspectRatio, format, evenOdd, data, start, end);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
void FX_CALL trap_grTexDownloadTable (GrTexTable_t type,
void *data)
{
#define FN_NAME "grTexDownloadTable"
TRAP_LOG("%s(%s, %p)\n", FN_NAME, TRP_TABLE(type), data);
grTexDownloadTable(type, data);
#undef FN_NAME
}
void FX_CALL trap_grTexDownloadTablePartial (GrTexTable_t type,
void *data,
int start,
int end)
{
#define FN_NAME "grTexDownloadTablePartial"
TRAP_LOG("%s(%s, %p, %d, %d)\n", FN_NAME, TRP_TABLE(type), data, start, end);
grTexDownloadTablePartial(type, data, start, end);
#undef FN_NAME
}
void FX_CALL trap_grTexMipMapMode (GrChipID_t tmu,
GrMipMapMode_t mode,
FxBool lodBlend)
{
#define FN_NAME "grTexMipMapMode"
TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_MIPMODE(mode), TRP_BOOL(lodBlend));
grTexMipMapMode(tmu, mode, lodBlend);
#undef FN_NAME
}
void FX_CALL trap_grTexMultibase (GrChipID_t tmu,
FxBool enable)
{
#define FN_NAME "grTexMultibase"
TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_BOOL(enable));
grTexMultibase(tmu, enable);
#undef FN_NAME
}
void FX_CALL trap_grTexMultibaseAddress (GrChipID_t tmu,
GrTexBaseRange_t range,
FxU32 startAddress,
FxU32 evenOdd,
GrTexInfo *info)
{
#define FN_NAME "grTexMultibaseAddress"
TRAP_LOG("%s(%s, %s, %08lx, %s, %p)\n", FN_NAME, TRP_TMU(tmu), TRP_TEXBASERANGE(range), startAddress, TRP_EVENODD(evenOdd), (void *)info);
grTexMultibaseAddress(tmu, range, startAddress, evenOdd, info);
#undef FN_NAME
}
/*
** linear frame buffer functions
*/
FxBool FX_CALL trap_grLfbLock (GrLock_t type,
GrBuffer_t buffer,
GrLfbWriteMode_t writeMode,
GrOriginLocation_t origin,
FxBool pixelPipeline,
GrLfbInfo_t *info)
{
#define FN_NAME "grLfbLock"
FxBool rv;
TRAP_LOG("%s(%s, %s, %s, %s, %s, %p)\n", FN_NAME, TRP_LOCKTYPE(type), TRP_BUFFER(buffer), TRP_WRITEMODE(writeMode), TRP_ORIGIN(origin), TRP_BOOL(pixelPipeline), (void *)info);
rv = grLfbLock(type, buffer, writeMode, origin, pixelPipeline, info);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
FxBool FX_CALL trap_grLfbUnlock (GrLock_t type,
GrBuffer_t buffer)
{
#define FN_NAME "grLfbUnlock"
FxBool rv;
TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_LOCKTYPE(type), TRP_BUFFER(buffer));
rv = grLfbUnlock(type, buffer);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
void FX_CALL trap_grLfbConstantAlpha (GrAlpha_t alpha)
{
#define FN_NAME "grLfbConstantAlpha"
TRAP_LOG("%s(%02x)\n", FN_NAME, alpha);
grLfbConstantAlpha(alpha);
#undef FN_NAME
}
void FX_CALL trap_grLfbConstantDepth (FxU32 depth)
{
#define FN_NAME "grLfbConstantDepth"
TRAP_LOG("%s(%08lx)\n", FN_NAME, depth);
grLfbConstantDepth(depth);
#undef FN_NAME
}
void FX_CALL trap_grLfbWriteColorSwizzle (FxBool swizzleBytes,
FxBool swapWords)
{
#define FN_NAME "grLfbWriteColorSwizzle"
TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_BOOL(swizzleBytes), TRP_BOOL(swapWords));
grLfbWriteColorSwizzle(swizzleBytes, swapWords);
#undef FN_NAME
}
void FX_CALL trap_grLfbWriteColorFormat (GrColorFormat_t colorFormat)
{
#define FN_NAME "grLfbWriteColorFormat"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_COLFMT(colorFormat));
grLfbWriteColorFormat(colorFormat);
#undef FN_NAME
}
FxBool FX_CALL trap_grLfbWriteRegion (GrBuffer_t dst_buffer,
FxU32 dst_x,
FxU32 dst_y,
GrLfbSrcFmt_t src_format,
FxU32 src_width,
FxU32 src_height,
FxBool pixelPipeline,
FxI32 src_stride,
void *src_data)
{
#define FN_NAME "grLfbWriteRegion"
FxBool rv;
TRAP_LOG("%s(%s, %lu, %lu, %s, %lu, %lu, %s, %ld, %p)\n", FN_NAME, TRP_BUFFER(dst_buffer), dst_x, dst_y, TRP_SRCFMT(src_format), src_width, src_height, TRP_BOOL(pixelPipeline), src_stride, src_data);
rv = grLfbWriteRegion(dst_buffer, dst_x, dst_y, src_format, src_width, src_height, pixelPipeline, src_stride, src_data);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
FxBool FX_CALL trap_grLfbReadRegion (GrBuffer_t src_buffer,
FxU32 src_x,
FxU32 src_y,
FxU32 src_width,
FxU32 src_height,
FxU32 dst_stride,
void *dst_data)
{
#define FN_NAME "grLfbReadRegion"
FxBool rv;
TRAP_LOG("%s(%s, %lu, %lu, %lu, %lu, %ld, %p)\n", FN_NAME, TRP_BUFFER(src_buffer), src_x, src_y, src_width, src_height, dst_stride, dst_data);
rv = grLfbReadRegion(src_buffer, src_x, src_y, src_width, src_height, dst_stride, dst_data);
TRAP_LOG(GOT "%s\n", TRP_BOOL(rv));
return rv;
#undef FN_NAME
}
/*
** glide management functions
*/
void FX_CALL trap_grGlideInit (void)
{
#define FN_NAME "grGlideInit"
TRAP_LOG("%s()\n", FN_NAME);
grGlideInit();
#undef FN_NAME
}
void FX_CALL trap_grGlideShutdown (void)
{
#define FN_NAME "grGlideShutdown"
TRAP_LOG("%s()\n", FN_NAME);
grGlideShutdown();
#undef FN_NAME
}
void FX_CALL trap_grGlideGetState (void *state)
{
#define FN_NAME "grGlideGetState"
TRAP_LOG("%s(%p)\n", FN_NAME, state);
grGlideGetState(state);
#undef FN_NAME
}
void FX_CALL trap_grGlideSetState (const void *state)
{
#define FN_NAME "grGlideSetState"
TRAP_LOG("%s(%p)\n", FN_NAME, state);
grGlideSetState(state);
#undef FN_NAME
}
void FX_CALL trap_grGlideGetVertexLayout (void *layout)
{
#define FN_NAME "grGlideGetVertexLayout"
TRAP_LOG("%s(%p)\n", FN_NAME, layout);
grGlideGetVertexLayout(layout);
#undef FN_NAME
}
void FX_CALL trap_grGlideSetVertexLayout (const void *layout)
{
#define FN_NAME "grGlideSetVertexLayout"
TRAP_LOG("%s(%p)\n", FN_NAME, layout);
grGlideSetVertexLayout(layout);
#undef FN_NAME
}
/*
** glide utility functions
*/
void FX_CALL trap_guGammaCorrectionRGB (FxFloat red,
FxFloat green,
FxFloat blue)
{
#define FN_NAME "guGammaCorrectionRGB"
TRAP_LOG("%s(%f, %f, %f)\n", FN_NAME, red, green, blue);
guGammaCorrectionRGB(red, green, blue);
#undef FN_NAME
}
float FX_CALL trap_guFogTableIndexToW (int i)
{
#define FN_NAME "guFogTableIndexToW"
float rv;
TRAP_LOG("%s(%d)\n", FN_NAME, i);
rv = guFogTableIndexToW(i);
TRAP_LOG(GOT "%f\n", rv);
return rv;
#undef FN_NAME
}
void FX_CALL trap_guFogGenerateExp (GrFog_t *fogtable,
float density)
{
#define FN_NAME "guFogGenerateExp"
TRAP_LOG("%s(%p, %f)\n", FN_NAME, fogtable, density);
guFogGenerateExp(fogtable, density);
#undef FN_NAME
}
void FX_CALL trap_guFogGenerateExp2 (GrFog_t *fogtable,
float density)
{
#define FN_NAME "guFogGenerateExp2"
TRAP_LOG("%s(%p, %f)\n", FN_NAME, fogtable, density);
guFogGenerateExp2(fogtable, density);
#undef FN_NAME
}
void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable,
float nearZ,
float farZ)
{
#define FN_NAME "guFogGenerateLinear"
TRAP_LOG("%s(%p, %f, %f)\n", FN_NAME, fogtable, nearZ, farZ);
guFogGenerateLinear(fogtable, nearZ, farZ);
#undef FN_NAME
}
/*
** glide extensions
*/
void FX_CALL trap_grSetNumPendingBuffers (FxI32 NumPendingBuffers)
{
#define FN_NAME "grSetNumPendingBuffers"
TRAP_LOG("%s(%ld)\n", FN_NAME, NumPendingBuffers);
assert(real_grSetNumPendingBuffers);
(*real_grSetNumPendingBuffers)(NumPendingBuffers);
#undef FN_NAME
}
char *FX_CALL trap_grGetRegistryOrEnvironmentStringExt (char *theEntry)
{
#define FN_NAME "grGetRegistryOrEnvironmentStringExt"
char *rv;
TRAP_LOG("%s(\"%s\")\n", FN_NAME, theEntry);
assert(real_grGetRegistryOrEnvironmentStringExt);
rv = (*real_grGetRegistryOrEnvironmentStringExt)(theEntry);
if (rv) {
TRAP_LOG(GOT "\"%s\"\n", rv);
} else {
TRAP_LOG(GOT "NULL\n");
}
return rv;
#undef FN_NAME
}
void FX_CALL trap_grGetGammaTableExt (FxU32 nentries,
FxU32 *red,
FxU32 *green,
FxU32 *blue)
{
#define FN_NAME "grGetGammaTableExt"
TRAP_LOG("%s(%lu, %p, %p, %p)\n", FN_NAME, nentries, (void *)red, (void *)green, (void *)blue);
assert(real_grGetGammaTableExt);
(*real_grGetGammaTableExt)(nentries, red, green, blue);
#undef FN_NAME
}
void FX_CALL trap_grChromaRangeModeExt (GrChromakeyMode_t mode)
{
#define FN_NAME "grChromaRangeModeExt"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_CKMODE(mode));
assert(real_grChromaRangeModeExt);
(*real_grChromaRangeModeExt)(mode);
#undef FN_NAME
}
void FX_CALL trap_grChromaRangeExt (GrColor_t color,
GrColor_t range,
GrChromaRangeMode_t match_mode)
{
#define FN_NAME "grChromaRangeExt"
TRAP_LOG("%s(%08lx, %08lx, %s)\n", FN_NAME, color, range, TRP_CRMODE(match_mode));
assert(real_grChromaRangeExt);
(*real_grChromaRangeExt)(color, range, match_mode);
#undef FN_NAME
}
void FX_CALL trap_grTexChromaModeExt (GrChipID_t tmu,
GrChromakeyMode_t mode)
{
#define FN_NAME "grTexChromaModeExt"
TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CKMODE(mode));
assert(real_grTexChromaModeExt);
(*real_grTexChromaModeExt)(tmu, mode);
#undef FN_NAME
}
void FX_CALL trap_grTexChromaRangeExt (GrChipID_t tmu,
GrColor_t min,
GrColor_t max,
GrTexChromakeyMode_t mode)
{
#define FN_NAME "grTexChromaRangeExt"
TRAP_LOG("%s(%s, %08lx, %08lx, %s)\n", FN_NAME, TRP_TMU(tmu), min, max, TRP_CRMODE(mode));
assert(real_grTexChromaRangeExt);
(*real_grTexChromaRangeExt)(tmu, min, max, mode);
#undef FN_NAME
}
/* pointcast */
void FX_CALL trap_grTexDownloadTableExt (GrChipID_t tmu,
GrTexTable_t type,
void *data)
{
#define FN_NAME "grTexDownloadTableExt"
TRAP_LOG("%s(%s, %s, %p)\n", FN_NAME, TRP_TMU(tmu), TRP_TABLE(type), data);
assert(real_grTexDownloadTableExt);
(*real_grTexDownloadTableExt)(tmu, type, data);
#undef FN_NAME
}
void FX_CALL trap_grTexDownloadTablePartialExt (GrChipID_t tmu,
GrTexTable_t type,
void *data,
int start,
int end)
{
#define FN_NAME "grTexDownloadTablePartialExt"
TRAP_LOG("%s(%s, %s, %p, %d, %d)\n", FN_NAME, TRP_TMU(tmu), TRP_TABLE(type), data, start, end);
assert(real_grTexDownloadTablePartialExt);
(*real_grTexDownloadTablePartialExt)(tmu, type, data, start, end);
#undef FN_NAME
}
void FX_CALL trap_grTexNCCTableExt (GrChipID_t tmu,
GrNCCTable_t table)
{
#define FN_NAME "grTexNCCTableExt"
TRAP_LOG("%s(%s, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_NCC(table));
assert(real_grTexNCCTableExt);
(*real_grTexNCCTableExt)(tmu, table);
#undef FN_NAME
}
/* tbext */
void FX_CALL trap_grTextureBufferExt (GrChipID_t tmu,
FxU32 startAddress,
GrLOD_t thisLOD,
GrLOD_t largeLOD,
GrAspectRatio_t aspectRatio,
GrTextureFormat_t format,
FxU32 odd_even_mask)
{
#define FN_NAME "grTextureBufferExt"
TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLOD), TRP_LODLEVEL(largeLOD), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(odd_even_mask));
assert(real_grTextureBufferExt);
(*real_grTextureBufferExt)(tmu, startAddress, thisLOD, largeLOD, aspectRatio, format, odd_even_mask);
#undef FN_NAME
}
void FX_CALL trap_grTextureAuxBufferExt (GrChipID_t tmu,
FxU32 startAddress,
GrLOD_t thisLOD,
GrLOD_t largeLOD,
GrAspectRatio_t aspectRatio,
GrTextureFormat_t format,
FxU32 odd_even_mask)
{
#define FN_NAME "grTextureAuxBufferExt"
TRAP_LOG("%s(%s, %08lx, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_TMU(tmu), startAddress, TRP_LODLEVEL(thisLOD), TRP_LODLEVEL(largeLOD), TRP_ASPECTRATIO(aspectRatio), TRP_TEXFMT(format), TRP_EVENODD(odd_even_mask));
assert(real_grTextureAuxBufferExt);
(*real_grTextureAuxBufferExt)(tmu, startAddress, thisLOD, largeLOD, aspectRatio, format, odd_even_mask);
#undef FN_NAME
}
void FX_CALL trap_grAuxBufferExt (GrBuffer_t buffer)
{
#define FN_NAME "grAuxBufferExt"
TRAP_LOG("%s(%s)\n", FN_NAME, TRP_BUFFER(buffer));
assert(real_grAuxBufferExt);
(*real_grAuxBufferExt)(buffer);
#undef FN_NAME
}
/* napalm */
GrContext_t FX_CALL trap_grSstWinOpenExt (FxU32 hWnd,
GrScreenResolution_t resolution,
GrScreenRefresh_t refresh,
GrColorFormat_t format,
GrOriginLocation_t origin,
GrPixelFormat_t pixelformat,
int nColBuffers,
int nAuxBuffers)
{
#define FN_NAME "grSstWinOpenExt"
GrContext_t rv;
TRAP_LOG("%s(%08lx, %s, %s, %s, %s, %s, %d, %d)\n", FN_NAME, hWnd, TRP_RESOLUTION(resolution), TRP_REFRESH(refresh), TRP_COLFMT(format), TRP_ORIGIN(origin), TRP_PIXFMT(pixelformat), nColBuffers, nAuxBuffers);
assert(real_grSstWinOpenExt);
rv = (*real_grSstWinOpenExt)(hWnd, resolution, refresh, format, origin, pixelformat, nColBuffers, nAuxBuffers);
TRAP_LOG(GOT "%p\n", (void *)rv);
return rv;
#undef FN_NAME
}
void FX_CALL trap_grStencilFuncExt (GrCmpFnc_t fnc,
GrStencil_t ref,
GrStencil_t mask)
{
#define FN_NAME "grStencilFuncExt"
TRAP_LOG("%s(%s, %02x, %02x)\n", FN_NAME, TRP_CMPFUNC(fnc), ref, mask);
assert(real_grStencilFuncExt);
(*real_grStencilFuncExt)(fnc, ref, mask);
#undef FN_NAME
}
void FX_CALL trap_grStencilMaskExt (GrStencil_t value)
{
#define FN_NAME "grStencilMaskExt"
TRAP_LOG("%s(%02x)\n", FN_NAME, value);
assert(real_grStencilMaskExt);
(*real_grStencilMaskExt)(value);
#undef FN_NAME
}
void FX_CALL trap_grStencilOpExt (GrStencilOp_t stencil_fail,
GrStencilOp_t depth_fail,
GrStencilOp_t depth_pass)
{
#define FN_NAME "grStencilOpExt"
TRAP_LOG("%s(%s, %s, %s)\n", FN_NAME, TRP_STENCILOP(stencil_fail), TRP_STENCILOP(depth_fail), TRP_STENCILOP(depth_pass));
assert(real_grStencilOpExt);
(*real_grStencilOpExt)(stencil_fail, depth_fail, depth_pass);
#undef FN_NAME
}
void FX_CALL trap_grLfbConstantStencilExt (GrStencil_t value)
{
#define FN_NAME "grLfbConstantStencilExt"
TRAP_LOG("%s(%02x)\n", FN_NAME, value);
assert(real_grLfbConstantStencilExt);
(*real_grLfbConstantStencilExt)(value);
#undef FN_NAME
}
void FX_CALL trap_grBufferClearExt (GrColor_t color,
GrAlpha_t alpha,
FxU32 depth,
GrStencil_t stencil)
{
#define FN_NAME "grBufferClearExt"
TRAP_LOG("%s(%08lx, %02x, %08lx, %02x)\n", FN_NAME, color, alpha, depth, stencil);
assert(real_grBufferClearExt);
(*real_grBufferClearExt)(color, alpha, depth, stencil);
#undef FN_NAME
}
void FX_CALL trap_grColorCombineExt (GrCCUColor_t a,
GrCombineMode_t a_mode,
GrCCUColor_t b,
GrCombineMode_t b_mode,
GrCCUColor_t c,
FxBool c_invert,
GrCCUColor_t d,
FxBool d_invert,
FxU32 shift,
FxBool invert)
{
#define FN_NAME "grColorCombineExt"
TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
assert(real_grColorCombineExt);
(*real_grColorCombineExt)(a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
#undef FN_NAME
}
void FX_CALL trap_grAlphaCombineExt (GrACUColor_t a,
GrCombineMode_t a_mode,
GrACUColor_t b,
GrCombineMode_t b_mode,
GrACUColor_t c,
FxBool c_invert,
GrACUColor_t d,
FxBool d_invert,
FxU32 shift,
FxBool invert)
{
#define FN_NAME "grAlphaCombineExt"
TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
assert(real_grAlphaCombineExt);
(*real_grAlphaCombineExt)(a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
#undef FN_NAME
}
void FX_CALL trap_grTexColorCombineExt (GrChipID_t tmu,
GrTCCUColor_t a,
GrCombineMode_t a_mode,
GrTCCUColor_t b,
GrCombineMode_t b_mode,
GrTCCUColor_t c,
FxBool c_invert,
GrTCCUColor_t d,
FxBool d_invert,
FxU32 shift,
FxBool invert)
{
#define FN_NAME "grTexColorCombineExt"
TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
assert(real_grTexColorCombineExt);
(*real_grTexColorCombineExt)(tmu, a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
#undef FN_NAME
}
void FX_CALL trap_grTexAlphaCombineExt (GrChipID_t tmu,
GrTACUColor_t a,
GrCombineMode_t a_mode,
GrTACUColor_t b,
GrCombineMode_t b_mode,
GrTACUColor_t c,
FxBool c_invert,
GrTACUColor_t d,
FxBool d_invert,
FxU32 shift,
FxBool invert)
{
#define FN_NAME "grTexAlphaCombineExt"
TRAP_LOG("%s(%s, %s, %s, %s, %s, %s, %s, %s, %s, %lu, %s)\n", FN_NAME, TRP_TMU(tmu), TRP_CU(a), TRP_CMBMODE(a_mode), TRP_CU(b), TRP_CMBMODE(b_mode), TRP_CU(c), TRP_BOOL(c_invert), TRP_CU(d), TRP_BOOL(d_invert), shift, TRP_BOOL(invert));
assert(real_grTexAlphaCombineExt);
(*real_grTexAlphaCombineExt)(tmu, a, a_mode, b, b_mode, c, c_invert, d, d_invert, shift, invert);
#undef FN_NAME
}
void FX_CALL trap_grConstantColorValueExt (GrChipID_t tmu,
GrColor_t value)
{
#define FN_NAME "grConstantColorValueExt"
TRAP_LOG("%s(%s, %08lx)\n", FN_NAME, TRP_TMU(tmu), value);
assert(real_grConstantColorValueExt);
(*real_grConstantColorValueExt)(tmu, value);
#undef FN_NAME
}
void FX_CALL trap_grColorMaskExt (FxBool r,
FxBool g,
FxBool b,
FxBool a)
{
#define FN_NAME "grColorMaskExt"
TRAP_LOG("%s(%s, %s, %s, %s)\n", FN_NAME, TRP_BOOL(r), TRP_BOOL(g), TRP_BOOL(b), TRP_BOOL(a));
assert(real_grColorMaskExt);
(*real_grColorMaskExt)(r, g, b, a);
#undef FN_NAME
}
void FX_CALL trap_grAlphaBlendFunctionExt (GrAlphaBlendFnc_t rgb_sf,
GrAlphaBlendFnc_t rgb_df,
GrAlphaBlendOp_t rgb_op,
GrAlphaBlendFnc_t alpha_sf,
GrAlphaBlendFnc_t alpha_df,
GrAlphaBlendOp_t alpha_op)
{
#define FN_NAME "grAlphaBlendFunctionExt"
TRAP_LOG("%s(%s, %s, %s, %s, %s, %s)\n", FN_NAME, TRP_BLEND(rgb_sf), TRP_BLEND(rgb_df), TRP_BLENDOP(rgb_op), TRP_BLEND(alpha_sf), TRP_BLEND(alpha_df), TRP_BLENDOP(alpha_op));
assert(real_grAlphaBlendFunctionExt);
(*real_grAlphaBlendFunctionExt)(rgb_sf, rgb_df, rgb_op, alpha_sf, alpha_df, alpha_op);
#undef FN_NAME
}
void FX_CALL trap_grTBufferWriteMaskExt (FxU32 tmask)
{
#define FN_NAME "grTBufferWriteMaskExt"
TRAP_LOG("%s(%08lx)\n", FN_NAME, tmask);
assert(real_grTBufferWriteMaskExt);
(*real_grTBufferWriteMaskExt)(tmask);
#undef FN_NAME
}
/*
** texus functions
*/
void FX_CALL trap_txImgQuantize (char *dst,
char *src,
int w,
int h,
FxU32 format,
FxU32 dither)
{
#define FN_NAME "txImgQuantize"
TRAP_LOG("%s(%p, %p, %d, %d, %s, %s)\n", FN_NAME, dst, src, w, h, TRP_TEXFMT(format), TRP_TXDITHER(dither));
assert(real_txImgQuantize);
(*real_txImgQuantize)(dst, src, w, h, format, dither);
#undef FN_NAME
}
void FX_CALL trap_txMipQuantize (TxMip *pxMip,
TxMip *txMip,
int fmt,
FxU32 d,
FxU32 comp)
{
#define FN_NAME "txMipQuantize"
TRAP_LOG("%s(%p, %p, %s, %s, %s)\n", FN_NAME, (void *)pxMip, (void *)txMip, TRP_TEXFMT(fmt), TRP_TXDITHER(d), TRP_TXCOMPRESS(comp));
assert(real_txMipQuantize);
(*real_txMipQuantize)(pxMip, txMip, fmt, d, comp);
#undef FN_NAME
}
void FX_CALL trap_txPalToNcc (GuNccTable *ncc_table,
const FxU32 *pal)
{
#define FN_NAME "txPalToNcc"
TRAP_LOG("%s(%p, %p)\n", FN_NAME, (void *)ncc_table, (void *)pal);
assert(real_txPalToNcc);
(*real_txPalToNcc)(ncc_table, pal);
#undef FN_NAME
}
#endif
/****************************************************************************\
* housekeeping (fake pointers) *
\****************************************************************************/
char *FX_CALL fake_grGetRegistryOrEnvironmentStringExt (char *theEntry)
{
return getenv(theEntry);
}
void FX_CALL fake_grTexDownloadTableExt (GrChipID_t tmu,
GrTexTable_t type,
void *data)
{
(void)tmu;
grTexDownloadTable(type, data);
}
void FX_CALL fake_grTexDownloadTablePartialExt (GrChipID_t tmu,
GrTexTable_t type,
void *data,
int start,
int end)
{
(void)tmu;
grTexDownloadTablePartial(type, data, start, end);
}
void FX_CALL fake_grTexNCCTableExt (GrChipID_t tmu,
GrNCCTable_t table)
{
(void)tmu;
grTexNCCTable(table);
}
/****************************************************************************\
* interface *
\****************************************************************************/
void tdfx_hook_glide (struct tdfx_glide *Glide, int pointcast)
{
/* GET_EXT_ADDR: get function pointer
* GET_EXT_FAKE: get function pointer if possible, else use a fake function
* GET_EXT_NULL: get function pointer if possible, else leave NULL pointer
*/
#if FX_TRAP_GLIDE
#define GET_EXT_ADDR(name) *(GrProc *)&real_##name = grGetProcAddress(#name), Glide->name = trap_##name
#define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (real_##name == NULL) real_##name = fake_##name
#define GET_EXT_NULL(name) GET_EXT_ADDR(name); if (real_##name == NULL) Glide->name = NULL
#else /* FX_TRAP_GLIDE */
#define GET_EXT_ADDR(name) *(GrProc *)&Glide->name = grGetProcAddress(#name)
#define GET_EXT_FAKE(name) GET_EXT_ADDR(name); if (Glide->name == NULL) Glide->name = fake_##name
#define GET_EXT_NULL(name) GET_EXT_ADDR(name)
#endif /* FX_TRAP_GLIDE */
/*
** glide extensions
*/
GET_EXT_NULL(grSetNumPendingBuffers);
GET_EXT_FAKE(grGetRegistryOrEnvironmentStringExt);
GET_EXT_ADDR(grGetGammaTableExt);
GET_EXT_ADDR(grChromaRangeModeExt);
GET_EXT_ADDR(grChromaRangeExt);
GET_EXT_ADDR(grTexChromaModeExt);
GET_EXT_ADDR(grTexChromaRangeExt);
/* pointcast */
if (pointcast) {
GET_EXT_FAKE(grTexDownloadTableExt);
GET_EXT_FAKE(grTexDownloadTablePartialExt);
GET_EXT_FAKE(grTexNCCTableExt);
} else {
Glide->grTexDownloadTableExt = fake_grTexDownloadTableExt;
Glide->grTexDownloadTablePartialExt = fake_grTexDownloadTablePartialExt;
Glide->grTexNCCTableExt = fake_grTexNCCTableExt;
}
/* tbext */
GET_EXT_ADDR(grTextureBufferExt);
GET_EXT_ADDR(grTextureAuxBufferExt);
GET_EXT_ADDR(grAuxBufferExt);
/* napalm */
GET_EXT_ADDR(grSstWinOpenExt);
GET_EXT_ADDR(grStencilFuncExt);
GET_EXT_ADDR(grStencilMaskExt);
GET_EXT_ADDR(grStencilOpExt);
GET_EXT_ADDR(grLfbConstantStencilExt);
GET_EXT_ADDR(grBufferClearExt);
GET_EXT_ADDR(grColorCombineExt);
GET_EXT_ADDR(grAlphaCombineExt);
GET_EXT_ADDR(grTexColorCombineExt);
GET_EXT_ADDR(grTexAlphaCombineExt);
GET_EXT_ADDR(grConstantColorValueExt);
GET_EXT_ADDR(grColorMaskExt);
GET_EXT_ADDR(grAlphaBlendFunctionExt);
GET_EXT_ADDR(grTBufferWriteMaskExt);
/*
** texus
*/
GET_EXT_NULL(txImgQuantize);
GET_EXT_NULL(txMipQuantize);
GET_EXT_NULL(txPalToNcc);
#undef GET_EXT_ADDR
}
#endif /* FX */