summaryrefslogtreecommitdiff
path: root/xc/extras/Mesa/src/api1.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/extras/Mesa/src/api1.c')
-rw-r--r--xc/extras/Mesa/src/api1.c2058
1 files changed, 0 insertions, 2058 deletions
diff --git a/xc/extras/Mesa/src/api1.c b/xc/extras/Mesa/src/api1.c
deleted file mode 100644
index 0f418de4d..000000000
--- a/xc/extras/Mesa/src/api1.c
+++ /dev/null
@@ -1,2058 +0,0 @@
-/* $Id: api1.c,v 1.3 1999/12/14 02:39:38 daryll Exp $ */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.1
- *
- * Copyright (C) 1999 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.
- */
-
-
-
-
-#ifdef PC_HEADER
-#include "all.h"
-#else
-#ifndef XFree86Server
-#include <stdio.h>
-#include <stdlib.h>
-#else
-#include "GL/xf86glx.h"
-#endif
-#include "api.h"
-#include "bitmap.h"
-#include "context.h"
-#include "drawpix.h"
-#include "eval.h"
-#include "image.h"
-#include "light.h"
-#include "macros.h"
-#include "matrix.h"
-#include "mmath.h"
-#include "teximage.h"
-#include "types.h"
-#include "varray.h"
-#include "vb.h"
-#include "vbfill.h"
-#endif
-
-/*
- * Part 1 of API functions
- */
-
-void GLAPIENTRY glAccum(CTX_ARG GLenum op, GLfloat value )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Accum)(CC, op, value);
-}
-
-
-void GLAPIENTRY glAlphaFunc(CTX_ARG GLenum func, GLclampf ref )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.AlphaFunc)(CC, func, ref);
-}
-
-
-GLboolean GLAPIENTRY glAreTexturesResident(CTX_ARG GLsizei n, const GLuint *textures,
- GLboolean *residences )
-{
- GET_CONTEXT;
- CHECK_CONTEXT_RETURN(GL_FALSE);
- return (*CC->API.AreTexturesResident)(CC, n, textures, residences);
-}
-
-/* Enough funny business going on in here it might be quicker to use a
- * function pointer.
- */
-#define ARRAY_ELT( IM, i ) \
-{ \
- GLuint count = IM->Count; \
- IM->Elt[count] = i; \
- IM->Flag[count] = ((IM->Flag[count] & IM->ArrayAndFlags) | \
- VERT_ELT); \
- IM->FlushElt |= IM->ArrayEltFlush; \
- IM->Count = count += IM->ArrayIncr; \
- if (count == VB_MAX) \
- IM->maybe_transform_vb( IM ); \
-}
-
-
-void GLAPIENTRY glArrayElement(CTX_ARG GLint i )
-{
- GET_IMMEDIATE;
- ARRAY_ELT( IM, i );
-}
-
-
-void GLAPIENTRY glArrayElementEXT(CTX_ARG GLint i )
-{
- GET_IMMEDIATE;
- ARRAY_ELT( IM, i );
-}
-
-
-void gl_ArrayElement( GLcontext *CC, GLint i )
-{
- struct immediate *im = CC->input;
- ARRAY_ELT( im, i );
-}
-
-
-void GLAPIENTRY glBegin(CTX_ARG GLenum mode )
-{
- GET_CONTEXT;
-
- if (mode < GL_POINTS || mode > GL_POLYGON) {
- gl_compile_error( CC, GL_INVALID_ENUM, "glBegin" );
- return;
- }
-
- gl_Begin(CC,mode);
-}
-
-
-void GLAPIENTRY glBindTexture(CTX_ARG GLenum target, GLuint texture )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.BindTexture)(CC, target, texture);
-}
-
-
-void GLAPIENTRY glBitmap(CTX_ARG GLsizei width, GLsizei height,
- GLfloat xorig, GLfloat yorig,
- GLfloat xmove, GLfloat ymove,
- const GLubyte *bitmap )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Bitmap)( CC, width, height, xorig, yorig, xmove, ymove, bitmap,
- &CC->Unpack );
-}
-
-
-void GLAPIENTRY glBlendFunc(CTX_ARG GLenum sfactor, GLenum dfactor )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.BlendFunc)(CC, sfactor, dfactor);
-}
-
-
-void GLAPIENTRY glCallList(CTX_ARG GLuint list )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CallList)(CC, list);
-}
-
-
-void GLAPIENTRY glCallLists(CTX_ARG GLsizei n, GLenum type, const GLvoid *lists )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CallLists)(CC, n, type, lists);
-}
-
-
-void GLAPIENTRY glClear(CTX_ARG GLbitfield mask )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Clear)(CC, mask);
-}
-
-
-void GLAPIENTRY glClearAccum(CTX_ARG GLfloat red, GLfloat green,
- GLfloat blue, GLfloat alpha )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ClearAccum)(CC, red, green, blue, alpha);
-}
-
-
-
-void GLAPIENTRY glClearIndex(CTX_ARG GLfloat c )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ClearIndex)(CC, c);
-}
-
-
-void GLAPIENTRY glClearColor(CTX_ARG GLclampf red, GLclampf green,
- GLclampf blue, GLclampf alpha )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ClearColor)(CC, red, green, blue, alpha);
-}
-
-
-void GLAPIENTRY glClearDepth(CTX_ARG GLclampd depth )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ClearDepth)( CC, depth );
-}
-
-
-void GLAPIENTRY glClearStencil(CTX_ARG GLint s )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ClearStencil)(CC, s);
-}
-
-
-void GLAPIENTRY glClipPlane(CTX_ARG GLenum plane, const GLdouble *equation )
-{
- GLfloat eq[4];
- GET_CONTEXT;
- CHECK_CONTEXT;
- eq[0] = (GLfloat) equation[0];
- eq[1] = (GLfloat) equation[1];
- eq[2] = (GLfloat) equation[2];
- eq[3] = (GLfloat) equation[3];
- (*CC->API.ClipPlane)(CC, plane, eq );
-}
-
-
-/* KW: Again, a stateless implementation of these functions. The big
- * news here is the impact on color material. This was previously
- * handled by swaping the function pointers that these API's used to
- * call. This is no longer possible, and we have to pick up the
- * pieces later on and make them work with either color-color, or
- * color-material.
- *
- * But in truth, this is not a bad thing, because it was necessary
- * to implement that mechanism to get good performance from
- * color-material and vertex arrays.
- */
-#define COLOR( IM, r,g,b,a ) \
-{ \
- GLuint count = IM->Count; \
- IM->Flag[count] |= VERT_RGBA; \
- IM->Color[count][0] = r; \
- IM->Color[count][1] = g; \
- IM->Color[count][2] = b; \
- IM->Color[count][3] = a; \
-}
-
-#if 0
-#define COLOR4F( IM, r,g,b,a ) \
-{ \
- GLuint count = IM->Count; \
- IM->Flag[count] |= VERT_RGBA | VERT_FLOAT_RGBA; \
- IM->FloatColor[count][0] = r; \
- IM->FloatColor[count][1] = g; \
- IM->FloatColor[count][2] = b; \
- IM->FloatColor[count][3] = a; \
-}
-#else
-#define COLOR4F(IM, r, g, b, a) \
-{ \
- GLubyte col[4]; \
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r); \
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g); \
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b); \
- FLOAT_COLOR_TO_UBYTE_COLOR(col[3], a); \
- COLORV( IM, col ); \
-}
-#endif
-
-
-
-#define COLORV( IM, v ) \
-{ \
- GLuint count = IM->Count; \
- IM->Flag[count] |= VERT_RGBA; \
- COPY_4UBV(IM->Color[count], v); \
-}
-
-
-void GLAPIENTRY glColor3b(CTX_ARG GLbyte red, GLbyte green, GLbyte blue )
-{
- GET_IMMEDIATE;
- COLOR( IM,
- BYTE_TO_UBYTE(red),
- BYTE_TO_UBYTE(green),
- BYTE_TO_UBYTE(blue),
- 255 );
-}
-
-
-void GLAPIENTRY glColor3d(CTX_ARG GLdouble red, GLdouble green, GLdouble blue )
-{
- GLubyte col[4];
- GLfloat r = red;
- GLfloat g = green;
- GLfloat b = blue;
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
- col[3] = 255;
- COLORV( IM, col );
-
-/* COLOR4F( IM, red, green, blue, 1.0 ); */
-}
-
-
-void GLAPIENTRY glColor3f(CTX_ARG GLfloat red, GLfloat green, GLfloat blue )
-{
- GLubyte col[4];
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], red);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], green);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], blue);
- col[3] = 255;
- COLORV( IM, col );
-
-/* COLOR4F( IM, red, green, blue, 1.0 ); */
-}
-
-
-void GLAPIENTRY glColor3i(CTX_ARG GLint red, GLint green, GLint blue )
-{
- GET_IMMEDIATE;
- COLOR( IM, INT_TO_UBYTE(red),
- INT_TO_UBYTE(green),
- INT_TO_UBYTE(blue),
- 255);
-}
-
-
-void GLAPIENTRY glColor3s(CTX_ARG GLshort red, GLshort green, GLshort blue )
-{
- GET_IMMEDIATE;
- COLOR( IM, SHORT_TO_UBYTE(red),
- SHORT_TO_UBYTE(green),
- SHORT_TO_UBYTE(blue),
- 255);
-}
-
-
-void GLAPIENTRY glColor3ub(CTX_ARG GLubyte red, GLubyte green, GLubyte blue )
-{
- GET_IMMEDIATE;
- COLOR( IM, red, green, blue, 255 );
-}
-
-
-void GLAPIENTRY glColor3ui(CTX_ARG GLuint red, GLuint green, GLuint blue )
-{
- GET_IMMEDIATE;
- COLOR( IM, UINT_TO_UBYTE(red),
- UINT_TO_UBYTE(green),
- UINT_TO_UBYTE(blue),
- 255 );
-}
-
-
-void GLAPIENTRY glColor3us(CTX_ARG GLushort red, GLushort green, GLushort blue )
-{
- GET_IMMEDIATE;
- COLOR( IM, USHORT_TO_UBYTE(red), USHORT_TO_UBYTE(green),
- USHORT_TO_UBYTE(blue),
- 255 );
-}
-
-
-void GLAPIENTRY glColor4b(CTX_ARG GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha )
-{
- GET_IMMEDIATE;
- COLOR( IM, BYTE_TO_UBYTE(red), BYTE_TO_UBYTE(green),
- BYTE_TO_UBYTE(blue), BYTE_TO_UBYTE(alpha) );
-}
-
-
-void GLAPIENTRY glColor4d(CTX_ARG GLdouble red, GLdouble green, GLdouble blue,
- GLdouble alpha )
-{
- GLubyte col[4];
- GLfloat r = red;
- GLfloat g = green;
- GLfloat b = blue;
- GLfloat a = alpha;
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[3], a);
- COLORV( IM, col );
-
-/* COLOR4F( IM, red, green, blue, alpha ); */
-}
-
-
-void GLAPIENTRY glColor4f(CTX_ARG GLfloat red, GLfloat green,
- GLfloat blue, GLfloat alpha )
-{
- GLubyte col[4];
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], red);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], green);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], blue);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[3], alpha);
- COLORV( IM, col );
-
-/* COLOR4F( IM, red, green, blue, alpha ); */
-}
-
-void GLAPIENTRY glColor4i(CTX_ARG GLint red, GLint green, GLint blue, GLint alpha )
-{
- GET_IMMEDIATE;
- COLOR( IM, INT_TO_UBYTE(red), INT_TO_UBYTE(green),
- INT_TO_UBYTE(blue), INT_TO_UBYTE(alpha) );
-}
-
-
-void GLAPIENTRY glColor4s(CTX_ARG GLshort red, GLshort green,
- GLshort blue, GLshort alpha )
-{
- GET_IMMEDIATE;
- COLOR( IM, SHORT_TO_UBYTE(red), SHORT_TO_UBYTE(green),
- SHORT_TO_UBYTE(blue), SHORT_TO_UBYTE(alpha) );
-}
-
-void GLAPIENTRY glColor4ub(CTX_ARG GLubyte red, GLubyte green,
- GLubyte blue, GLubyte alpha )
-{
- GET_IMMEDIATE;
- COLOR( IM, red, green, blue, alpha );
-}
-
-void GLAPIENTRY glColor4ui(CTX_ARG GLuint red, GLuint green,
- GLuint blue, GLuint alpha )
-{
- GET_IMMEDIATE;
- COLOR( IM, UINT_TO_UBYTE(red), UINT_TO_UBYTE(green),
- UINT_TO_UBYTE(blue), UINT_TO_UBYTE(alpha) );
-}
-
-void GLAPIENTRY glColor4us(CTX_ARG GLushort red, GLushort green,
- GLushort blue, GLushort alpha )
-{
- GET_IMMEDIATE;
- COLOR( IM, USHORT_TO_UBYTE(red), USHORT_TO_UBYTE(green),
- USHORT_TO_UBYTE(blue), USHORT_TO_UBYTE(alpha) );
-}
-
-
-void GLAPIENTRY glColor3bv(CTX_ARG const GLbyte *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, BYTE_TO_UBYTE(v[0]), BYTE_TO_UBYTE(v[1]),
- BYTE_TO_UBYTE(v[2]), 255 );
-}
-
-
-void GLAPIENTRY glColor3dv(CTX_ARG const GLdouble *v )
-{
- GLubyte col[4];
- GLfloat r = v[0];
- GLfloat g = v[1];
- GLfloat b = v[2];
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
- col[3]= 255;
- COLORV( IM, col );
-
-/* COLOR4F( IM, v[0], v[1], v[2], v[3] ); */
-}
-
-
-void GLAPIENTRY glColor3fv(CTX_ARG const GLfloat *v )
-{
- GLubyte col[4];
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], v[0]);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], v[1]);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], v[2]);
- col[3] = 255;
- COLORV( IM, col );
-
-/* COLOR4F( IM, v[0], v[1], v[2], v[3] ); */
-}
-
-
-void GLAPIENTRY glColor3iv(CTX_ARG const GLint *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, INT_TO_UBYTE(v[0]), INT_TO_UBYTE(v[1]),
- INT_TO_UBYTE(v[2]), 255 );
-}
-
-
-void GLAPIENTRY glColor3sv(CTX_ARG const GLshort *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, SHORT_TO_UBYTE(v[0]), SHORT_TO_UBYTE(v[1]),
- SHORT_TO_UBYTE(v[2]), 255 );
-}
-
-
-void GLAPIENTRY glColor3ubv(CTX_ARG const GLubyte *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, v[0], v[1], v[2], 255 );
-}
-
-
-void GLAPIENTRY glColor3uiv(CTX_ARG const GLuint *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, UINT_TO_UBYTE(v[0]), UINT_TO_UBYTE(v[1]),
- UINT_TO_UBYTE(v[2]), 255 );
-}
-
-
-void GLAPIENTRY glColor3usv(CTX_ARG const GLushort *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, USHORT_TO_UBYTE(v[0]), USHORT_TO_UBYTE(v[1]),
- USHORT_TO_UBYTE(v[2]), 255 );
-
-}
-
-
-void GLAPIENTRY glColor4bv(CTX_ARG const GLbyte *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, BYTE_TO_UBYTE(v[0]), BYTE_TO_UBYTE(v[1]),
- BYTE_TO_UBYTE(v[2]), BYTE_TO_UBYTE(v[3]) );
-}
-
-
-void GLAPIENTRY glColor4dv(CTX_ARG const GLdouble *v )
-{
- GLubyte col[4];
- GLfloat r = v[0];
- GLfloat g = v[1];
- GLfloat b = v[2];
- GLfloat a = v[3];
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], r);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], g);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], b);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[3], a);
- COLORV( IM, col );
-
-/* COLOR4F( IM, v[0], v[1], v[2], v[3] ); */
-}
-
-
-void GLAPIENTRY glColor4fv(CTX_ARG const GLfloat *v )
-{
- GLubyte col[4];
- GET_IMMEDIATE;
- FLOAT_COLOR_TO_UBYTE_COLOR(col[0], v[0]);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[1], v[1]);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[2], v[2]);
- FLOAT_COLOR_TO_UBYTE_COLOR(col[3], v[3]);
- COLORV( IM, col );
-
-/* COLOR4F( IM, v[0], v[1], v[2], v[3] ); */
-}
-
-
-void GLAPIENTRY glColor4iv(CTX_ARG const GLint *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, INT_TO_UBYTE(v[0]), INT_TO_UBYTE(v[1]),
- INT_TO_UBYTE(v[2]), INT_TO_UBYTE(v[3]) );
-}
-
-
-void GLAPIENTRY glColor4sv(CTX_ARG const GLshort *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, SHORT_TO_UBYTE(v[0]), SHORT_TO_UBYTE(v[1]),
- SHORT_TO_UBYTE(v[2]), SHORT_TO_UBYTE(v[3]) );
-}
-
-
-void GLAPIENTRY glColor4ubv(CTX_ARG const GLubyte *v )
-{
- GET_IMMEDIATE;
- COLORV( IM, v );
-}
-
-
-void GLAPIENTRY glColor4uiv(CTX_ARG const GLuint *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, UINT_TO_UBYTE(v[0]), UINT_TO_UBYTE(v[1]),
- UINT_TO_UBYTE(v[2]), UINT_TO_UBYTE(v[3]) );
-}
-
-
-void GLAPIENTRY glColor4usv(CTX_ARG const GLushort *v )
-{
- GET_IMMEDIATE;
- COLOR( IM, USHORT_TO_UBYTE(v[0]), USHORT_TO_UBYTE(v[1]),
- USHORT_TO_UBYTE(v[2]), USHORT_TO_UBYTE(v[3]) );
-}
-
-
-void GLAPIENTRY glColorMask(CTX_ARG GLboolean red, GLboolean green,
- GLboolean blue, GLboolean alpha )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ColorMask)(CC, red, green, blue, alpha);
-}
-
-
-void GLAPIENTRY glColorMaterial(CTX_ARG GLenum face, GLenum mode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ColorMaterial)(CC, face, mode);
-}
-
-
-void GLAPIENTRY glCopyPixels(CTX_ARG GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum type )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CopyPixels)(CC, x, y, width, height, type);
-}
-
-
-void GLAPIENTRY glCopyTexImage1D(CTX_ARG GLenum target, GLint level,
- GLenum internalformat,
- GLint x, GLint y,
- GLsizei width, GLint border )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CopyTexImage1D)( CC, target, level, internalformat,
- x, y, width, border );
-}
-
-
-void GLAPIENTRY glCopyTexImage2D(CTX_ARG GLenum target, GLint level,
- GLenum internalformat,
- GLint x, GLint y,
- GLsizei width, GLsizei height, GLint border )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CopyTexImage2D)( CC, target, level, internalformat,
- x, y, width, height, border );
-}
-
-
-void GLAPIENTRY glCopyTexSubImage1D(CTX_ARG GLenum target, GLint level,
- GLint xoffset, GLint x, GLint y,
- GLsizei width )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CopyTexSubImage1D)( CC, target, level, xoffset, x, y, width );
-}
-
-
-void GLAPIENTRY glCopyTexSubImage2D(CTX_ARG GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLint x, GLint y,
- GLsizei width, GLsizei height )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CopyTexSubImage2D)( CC, target, level, xoffset, yoffset,
- x, y, width, height );
-}
-
-
-/* 1.2 */
-void GLAPIENTRY glCopyTexSubImage3D(CTX_ARG GLenum target, GLint level, GLint xoffset,
- GLint yoffset, GLint zoffset,
- GLint x, GLint y, GLsizei width,
- GLsizei height )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CopyTexSubImage3D)( CC, target, level, xoffset, yoffset,
- zoffset, x, y, width, height );
-}
-
-
-
-void GLAPIENTRY glCullFace(CTX_ARG GLenum mode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.CullFace)(CC, mode);
-}
-
-
-void GLAPIENTRY glDepthFunc(CTX_ARG GLenum func )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.DepthFunc)( CC, func );
-}
-
-
-void GLAPIENTRY glDepthMask(CTX_ARG GLboolean flag )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.DepthMask)( CC, flag );
-}
-
-
-void GLAPIENTRY glDepthRange(CTX_ARG GLclampd near_val, GLclampd far_val )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.DepthRange)( CC, near_val, far_val );
-}
-
-
-void GLAPIENTRY glDeleteLists(CTX_ARG GLuint list, GLsizei range )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.DeleteLists)(CC, list, range);
-}
-
-
-void GLAPIENTRY glDeleteTextures(CTX_ARG GLsizei n, const GLuint *textures )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.DeleteTextures)(CC, n, textures);
-}
-
-
-void GLAPIENTRY glDisable(CTX_ARG GLenum cap )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Disable)( CC, cap );
-}
-
-
-void GLAPIENTRY glDisableClientState(CTX_ARG GLenum cap )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.DisableClientState)( CC, cap );
-}
-
-
-void GLAPIENTRY glDrawArrays(CTX_ARG GLenum mode, GLint first, GLsizei count )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- gl_DrawArrays(CC, mode, first, count);
-}
-
-
-void GLAPIENTRY glDrawBuffer(CTX_ARG GLenum mode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.DrawBuffer)(CC, mode);
-}
-
-
-
-void GLAPIENTRY glDrawPixels(CTX_ARG GLsizei width, GLsizei height, GLenum format,
- GLenum type, const GLvoid *pixels )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- if (CC->CompileFlag || !gl_direct_DrawPixels(CC, &CC->Unpack, width, height,
- format, type, pixels)) {
- struct gl_image *image;
- image = gl_unpack_image( CC, width, height, format, type, pixels, &CC->Unpack );
- (*CC->API.DrawPixels)( CC, image );
- if (image->RefCount==0) {
- /* image not in display list */
- gl_free_image( image );
- }
- }
-}
-
-
-void GLAPIENTRY glEnable(CTX_ARG GLenum cap )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Enable)( CC, cap );
-}
-
-
-void GLAPIENTRY glEnableClientState(CTX_ARG GLenum cap )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.EnableClientState)( CC, cap );
-}
-
-
-/* KW: Both streams now go to the outside-begin-end state. Raise
- * errors for either stream if it was not in the inside state.
- */
-void GLAPIENTRY glEnd(CTX_VOID )
-{
- GLuint state;
- GLuint inflags;
- GET_IMMEDIATE;
-
-
- state = IM->BeginState;
- inflags = (~state) & (VERT_BEGIN_0|VERT_BEGIN_1);
- state |= inflags << 2; /* errors */
-
- if (MESA_VERBOSE&VERBOSE_API) {
- if (MESA_VERBOSE&VERBOSE_IMMEDIATE)
- fprintf(stderr, "glEnd(IM %d), BeginState is %x, errors %x\n",
- IM->id, state,
- inflags<<2);
- else
- fprintf(stderr, ">");
- }
-
-
- if (inflags != (VERT_BEGIN_0|VERT_BEGIN_1))
- {
- GLuint count = IM->Count;
- GLuint last = IM->LastPrimitive;
-
- state &= ~(VERT_BEGIN_0|VERT_BEGIN_1); /* update state */
- IM->Flag[count] |= VERT_END;
- IM->NextPrimitive[IM->LastPrimitive] = count;
- IM->LastPrimitive = count;
- IM->Primitive[count] = GL_POLYGON+1;
-
- if (IM->FlushElt) {
- gl_exec_array_elements( IM->backref, IM, last, count );
- IM->FlushElt = 0;
- }
- }
-
- if (MESA_VERBOSE&VERBOSE_API)
- fprintf(stderr, "in glEnd final state %x\n", state);
-
- IM->BeginState = state;
-
- if ((MESA_DEBUG_FLAGS&DEBUG_ALWAYS_FLUSH))
- IM->maybe_transform_vb( IM );
-}
-
-
-void gl_End( GLcontext *ctx )
-{
- struct immediate *IM = ctx->input;
- GLuint state = IM->BeginState;
- GLuint inflags = (~state) & (VERT_BEGIN_0|VERT_BEGIN_1);
-
-
- if (MESA_VERBOSE&VERBOSE_API) {
- if (MESA_VERBOSE&VERBOSE_IMMEDIATE)
- fprintf(stderr, "gl_End(IM %d), BeginState is %x, errors %x\n",
- IM->id, state,
- inflags<<2);
- else
- fprintf(stderr, ">");
- }
-
- state |= inflags << 2; /* errors */
-
- if (inflags != (VERT_BEGIN_0|VERT_BEGIN_1))
- {
- GLuint count = IM->Count;
- GLuint last = IM->LastPrimitive;
-
- state &= ~(VERT_BEGIN_0|VERT_BEGIN_1); /* update state */
- IM->Flag[count] |= VERT_END;
- IM->NextPrimitive[IM->LastPrimitive] = count;
- IM->LastPrimitive = count;
- IM->Primitive[count] = GL_POLYGON+1;
-
- if (IM->FlushElt) {
- gl_exec_array_elements( ctx, IM, last, count );
- IM->FlushElt = 0;
- }
- }
-
- IM->BeginState = state;
-
- /* You can set this flag to get the old 'flush vb on glEnd()'
- * behaviour.
- */
- if ((MESA_DEBUG_FLAGS&DEBUG_ALWAYS_FLUSH))
- IM->maybe_transform_vb( IM );
-}
-
-void GLAPIENTRY glEndList(CTX_VOID )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.EndList)(CC);
-}
-
-/* KW: If are compiling, we don't know whether eval will produce a
- * vertex when it is run in the future. If this is pure immediate
- * mode, eval is a noop if neither vertex map is enabled.
- *
- * Thus we need to have a check in the display list code or
- * elsewhere for eval(1,2) vertices in the case where
- * map(1,2)_vertex is disabled, and to purge those vertices from
- * the vb. This is currently done
- * via modifications to the cull_vb and render_vb operations, and
- * by using the existing cullmask mechanism for all other operations.
- */
-
-
-/* KW: Because the eval values don't become 'current', fixup will flow
- * through these vertices, and then evaluation will write on top
- * of the fixup results.
- *
- * This is a little inefficient, but at least it is correct. This
- * could be short-circuited in the case where all vertices are
- * eval-vertices, or more generally by a cullmask in fixup.
- *
- * Note: using Obj to hold eval coord data. This data is actually
- * transformed if eval is disabled. But disabling eval & sending
- * eval coords is stupid, right?
- */
-
-
-#define EVALCOORD1(IM, x) \
-{ \
- GLuint count = IM->Count++; \
- IM->Flag[count] |= VERT_EVAL_C1; \
- ASSIGN_4V(IM->Obj[count], x, 0, 0, 1); \
- if (count == VB_MAX-1) \
- IM->maybe_transform_vb( IM ); \
-}
-
-#define EVALCOORD2(IM, x, y) \
-{ \
- GLuint count = IM->Count++; \
- IM->Flag[count] |= VERT_EVAL_C2; \
- ASSIGN_4V(IM->Obj[count], x, y, 0, 1); \
- if (count == VB_MAX-1) \
- IM->maybe_transform_vb( IM ); \
-}
-
-#define EVALPOINT1(IM, x) \
-{ \
- GLuint count = IM->Count++; \
- IM->Flag[count] |= VERT_EVAL_P1; \
- ASSIGN_4V(IM->Obj[count], x, 0, 0, 1); \
- if (count == VB_MAX-1) \
- IM->maybe_transform_vb( IM ); \
-}
-
-#define EVALPOINT2(IM, x, y) \
-{ \
- GLuint count = IM->Count++; \
- IM->Flag[count] |= VERT_EVAL_P2; \
- ASSIGN_4V(IM->Obj[count], x, y, 0, 1); \
- if (count == VB_MAX-1) \
- IM->maybe_transform_vb( IM ); \
-}
-
-
-void GLAPIENTRY glEvalCoord1d(CTX_ARG GLdouble u )
-{
- GET_IMMEDIATE;
- EVALCOORD1( IM, (GLfloat) u );
-}
-
-
-void GLAPIENTRY glEvalCoord1f(CTX_ARG GLfloat u )
-{
- GET_IMMEDIATE;
- EVALCOORD1( IM, u );
-}
-
-
-/* Lame internal function:
- */
-void gl_EvalCoord1f( GLcontext *CC, GLfloat u )
-{
- struct immediate *i = CC->input;
- EVALCOORD1( i, u );
-}
-
-
-void GLAPIENTRY glEvalCoord1dv(CTX_ARG const GLdouble *u )
-{
- GET_IMMEDIATE;
- EVALCOORD1( IM, (GLfloat) *u );
-}
-
-
-void GLAPIENTRY glEvalCoord1fv(CTX_ARG const GLfloat *u )
-{
- GET_IMMEDIATE;
- EVALCOORD1( IM, (GLfloat) *u );
-}
-
-
-void GLAPIENTRY glEvalCoord2d(CTX_ARG GLdouble u, GLdouble v )
-{
- GET_IMMEDIATE;
- EVALCOORD2( IM, (GLfloat) u, (GLfloat) v );
-}
-
-
-void GLAPIENTRY glEvalCoord2f(CTX_ARG GLfloat u, GLfloat v )
-{
- GET_IMMEDIATE;
- EVALCOORD2( IM, u, v );
-}
-
-
-/* Lame internal function:
- */
-void gl_EvalCoord2f( GLcontext *CC, GLfloat u, GLfloat v )
-{
- struct immediate *i = CC->input;
- EVALCOORD2( i, u, v );
-}
-
-
-void GLAPIENTRY glEvalCoord2dv(CTX_ARG const GLdouble *u )
-{
- GET_IMMEDIATE;
- EVALCOORD2( IM, (GLfloat) u[0], (GLfloat) u[1] );
-}
-
-
-void GLAPIENTRY glEvalCoord2fv(CTX_ARG const GLfloat *u )
-{
- GET_IMMEDIATE;
- EVALCOORD2( IM, u[0], u[1] );
-}
-
-
-void GLAPIENTRY glEvalPoint1(CTX_ARG GLint i )
-{
- GET_IMMEDIATE;
- EVALPOINT1( IM, i );
-}
-
-
-void GLAPIENTRY glEvalPoint2(CTX_ARG GLint i, GLint j )
-{
- GET_IMMEDIATE;
- EVALPOINT2( IM, i, j );
-}
-
-
-void GLAPIENTRY glEvalMesh1(CTX_ARG GLenum mode, GLint i1, GLint i2 )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.EvalMesh1)( CC, mode, i1, i2 );
-}
-
-
-void GLAPIENTRY glEdgeFlag(CTX_ARG GLboolean flag )
-{
- GLuint count;
- GET_IMMEDIATE;
- count = IM->Count;
- IM->EdgeFlag[count] = flag;
- IM->Flag[count] |= VERT_EDGE;
-}
-
-
-void GLAPIENTRY glEdgeFlagv(CTX_ARG const GLboolean *flag )
-{
- GLuint count;
- GET_IMMEDIATE;
- count = IM->Count;
- IM->EdgeFlag[count] = *flag;
- IM->Flag[count] |= VERT_EDGE;
-}
-
-
-
-void GLAPIENTRY glEvalMesh2(CTX_ARG GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.EvalMesh2)( CC, mode, i1, i2, j1, j2 );
-}
-
-
-void GLAPIENTRY glFeedbackBuffer(CTX_ARG GLsizei size, GLenum type, GLfloat *buffer )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.FeedbackBuffer)(CC, size, type, buffer);
-}
-
-
-void GLAPIENTRY glFinish(CTX_VOID )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Finish)(CC);
-}
-
-
-void GLAPIENTRY glFlush(CTX_VOID )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Flush)(CC);
-}
-
-
-void GLAPIENTRY glFogf(CTX_ARG GLenum pname, GLfloat param )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Fogfv)(CC, pname, &param);
-}
-
-
-void GLAPIENTRY glFogi(CTX_ARG GLenum pname, GLint param )
-{
- GLfloat fparam = (GLfloat) param;
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Fogfv)(CC, pname, &fparam);
-}
-
-
-void GLAPIENTRY glFogfv(CTX_ARG GLenum pname, const GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Fogfv)(CC, pname, params);
-}
-
-
-void GLAPIENTRY glFogiv(CTX_ARG GLenum pname, const GLint *params )
-{
- GLfloat p[4];
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- switch (pname) {
- case GL_FOG_MODE:
- case GL_FOG_DENSITY:
- case GL_FOG_START:
- case GL_FOG_END:
- case GL_FOG_INDEX:
- p[0] = (GLfloat) *params;
- break;
- case GL_FOG_COLOR:
- p[0] = INT_TO_FLOAT( params[0] );
- p[1] = INT_TO_FLOAT( params[1] );
- p[2] = INT_TO_FLOAT( params[2] );
- p[3] = INT_TO_FLOAT( params[3] );
- break;
- default:
- /* Error will be caught later in gl_Fogfv */
- ;
- }
- (*CC->API.Fogfv)( CC, pname, p );
-}
-
-
-void GLAPIENTRY glFrontFace(CTX_ARG GLenum mode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.FrontFace)(CC, mode);
-}
-
-
-void GLAPIENTRY glFrustum(CTX_ARG GLdouble left, GLdouble right,
- GLdouble bottom, GLdouble top,
- GLdouble nearval, GLdouble farval )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Frustum)(CC, left, right, bottom, top, nearval, farval);
-}
-
-
-GLuint GLAPIENTRY glGenLists(CTX_ARG GLsizei range )
-{
- GET_CONTEXT;
- CHECK_CONTEXT_RETURN(0);
- return (*CC->API.GenLists)(CC, range);
-}
-
-
-void GLAPIENTRY glGenTextures(CTX_ARG GLsizei n, GLuint *textures )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GenTextures)(CC, n, textures);
-}
-
-
-void GLAPIENTRY glGetBooleanv(CTX_ARG GLenum pname, GLboolean *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetBooleanv)(CC, pname, params);
-}
-
-
-void GLAPIENTRY glGetClipPlane(CTX_ARG GLenum plane, GLdouble *equation )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetClipPlane)(CC, plane, equation);
-}
-
-
-void GLAPIENTRY glGetDoublev(CTX_ARG GLenum pname, GLdouble *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetDoublev)(CC, pname, params);
-}
-
-
-GLenum GLAPIENTRY glGetError(CTX_VOID )
-{
- GET_CONTEXT;
- if (!CC) {
- /* No current context */
- return (GLenum) GL_NO_ERROR;
- }
- return (*CC->API.GetError)(CC);
-}
-
-
-void GLAPIENTRY glGetFloatv(CTX_ARG GLenum pname, GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetFloatv)(CC, pname, params);
-}
-
-
-void GLAPIENTRY glGetIntegerv(CTX_ARG GLenum pname, GLint *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetIntegerv)(CC, pname, params);
-}
-
-
-void GLAPIENTRY glGetLightfv(CTX_ARG GLenum light, GLenum pname, GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetLightfv)(CC, light, pname, params);
-}
-
-
-void GLAPIENTRY glGetLightiv(CTX_ARG GLenum light, GLenum pname, GLint *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetLightiv)(CC, light, pname, params);
-}
-
-
-void GLAPIENTRY glGetMapdv(CTX_ARG GLenum target, GLenum query, GLdouble *v )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetMapdv)( CC, target, query, v );
-}
-
-
-void GLAPIENTRY glGetMapfv(CTX_ARG GLenum target, GLenum query, GLfloat *v )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetMapfv)( CC, target, query, v );
-}
-
-
-void GLAPIENTRY glGetMapiv(CTX_ARG GLenum target, GLenum query, GLint *v )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetMapiv)( CC, target, query, v );
-}
-
-
-void GLAPIENTRY glGetMaterialfv(CTX_ARG GLenum face, GLenum pname, GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetMaterialfv)(CC, face, pname, params);
-}
-
-
-void GLAPIENTRY glGetMaterialiv(CTX_ARG GLenum face, GLenum pname, GLint *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetMaterialiv)(CC, face, pname, params);
-}
-
-
-void GLAPIENTRY glGetPixelMapfv(CTX_ARG GLenum map, GLfloat *values )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetPixelMapfv)(CC, map, values);
-}
-
-
-void GLAPIENTRY glGetPixelMapuiv(CTX_ARG GLenum map, GLuint *values )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetPixelMapuiv)(CC, map, values);
-}
-
-
-void GLAPIENTRY glGetPixelMapusv(CTX_ARG GLenum map, GLushort *values )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetPixelMapusv)(CC, map, values);
-}
-
-
-void GLAPIENTRY glGetPointerv(CTX_ARG GLenum pname, GLvoid **params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetPointerv)(CC, pname, params);
-}
-
-
-void GLAPIENTRY glGetPolygonStipple(CTX_ARG GLubyte *mask )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetPolygonStipple)(CC, mask);
-}
-
-
-const GLubyte * GLAPIENTRY glGetString(CTX_ARG GLenum name )
-{
- GET_CONTEXT;
- CHECK_CONTEXT_RETURN(NULL);
- /* even check for NULL context when not compiled with -DDEBUG */
- if (!CC)
- return NULL;
- return (*CC->API.GetString)(CC, name);
-}
-
-
-void GLAPIENTRY glGetTexEnvfv(CTX_ARG GLenum target, GLenum pname, GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexEnvfv)(CC, target, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexEnviv(CTX_ARG GLenum target, GLenum pname, GLint *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexEnviv)(CC, target, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexGeniv(CTX_ARG GLenum coord, GLenum pname, GLint *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexGeniv)(CC, coord, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexGendv(CTX_ARG GLenum coord, GLenum pname, GLdouble *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexGendv)(CC, coord, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexGenfv(CTX_ARG GLenum coord, GLenum pname, GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexGenfv)(CC, coord, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexImage(CTX_ARG GLenum target, GLint level, GLenum format,
- GLenum type, GLvoid *pixels )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexImage)(CC, target, level, format, type, pixels);
-}
-
-
-void GLAPIENTRY glGetTexLevelParameterfv(CTX_ARG GLenum target, GLint level,
- GLenum pname, GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexLevelParameterfv)(CC, target, level, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexLevelParameteriv(CTX_ARG GLenum target, GLint level,
- GLenum pname, GLint *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexLevelParameteriv)(CC, target, level, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexParameterfv(CTX_ARG GLenum target, GLenum pname,
- GLfloat *params)
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexParameterfv)(CC, target, pname, params);
-}
-
-
-void GLAPIENTRY glGetTexParameteriv(CTX_ARG GLenum target, GLenum pname,
- GLint *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.GetTexParameteriv)(CC, target, pname, params);
-}
-
-
-void GLAPIENTRY glHint(CTX_ARG GLenum target, GLenum mode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- if (mode!=GL_DONT_CARE && mode!=GL_FASTEST && mode!=GL_NICEST)
- (*CC->API.Error)( CC, GL_INVALID_ENUM, "glHint(mode)" );
- else
- (*CC->API.Hint)(CC, target, mode);
-}
-
-
-#define INDEX( c ) \
-{ \
- GLuint count; \
- GET_IMMEDIATE; \
- count = IM->Count; \
- IM->Index[count] = c; \
- IM->Flag[count] |= VERT_INDEX; \
-}
-
-
-void GLAPIENTRY glIndexd(CTX_ARG GLdouble c )
-{
- INDEX( (GLuint) (GLint) c );
-}
-
-
-void GLAPIENTRY glIndexf(CTX_ARG GLfloat c )
-{
- INDEX( (GLuint) (GLint) c );
-}
-
-
-void GLAPIENTRY glIndexi(CTX_ARG GLint c )
-{
- INDEX( (GLuint) c );
-}
-
-
-void GLAPIENTRY glIndexs(CTX_ARG GLshort c )
-{
- INDEX( (GLuint) c );
-}
-
-
-/* GL_VERSION_1_1 */
-void GLAPIENTRY glIndexub(CTX_ARG GLubyte c )
-{
- INDEX( (GLuint) c );
-}
-
-
-void GLAPIENTRY glIndexdv(CTX_ARG const GLdouble *c )
-{
- INDEX( (GLuint) (GLint) *c );
-}
-
-
-void GLAPIENTRY glIndexfv(CTX_ARG const GLfloat *c )
-{
- INDEX( (GLuint) (GLint) *c );
-}
-
-
-void GLAPIENTRY glIndexiv(CTX_ARG const GLint *c )
-{
- INDEX( *c );
-}
-
-
-void GLAPIENTRY glIndexsv(CTX_ARG const GLshort *c )
-{
- INDEX( (GLuint) (GLint) *c );
-}
-
-
-/* GL_VERSION_1_1 */
-void GLAPIENTRY glIndexubv(CTX_ARG const GLubyte *c )
-{
- INDEX( (GLuint) *c );
-}
-
-
-void GLAPIENTRY glIndexMask(CTX_ARG GLuint mask )
-{
- GET_CONTEXT;
- (*CC->API.IndexMask)(CC, mask);
-}
-
-
-
-
-void GLAPIENTRY glInitNames(CTX_VOID )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.InitNames)(CC);
-}
-
-
-GLboolean GLAPIENTRY glIsList(CTX_ARG GLuint list )
-{
- GET_CONTEXT;
- CHECK_CONTEXT_RETURN(GL_FALSE);
- return (*CC->API.IsList)(CC, list);
-}
-
-
-GLboolean GLAPIENTRY glIsTexture(CTX_ARG GLuint texture )
-{
- GET_CONTEXT;
- CHECK_CONTEXT_RETURN(GL_FALSE);
- return (*CC->API.IsTexture)(CC, texture);
-}
-
-
-void GLAPIENTRY glLightf(CTX_ARG GLenum light, GLenum pname, GLfloat param )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Lightfv)( CC, light, pname, &param, 1 );
-}
-
-
-void GLAPIENTRY glLighti(CTX_ARG GLenum light, GLenum pname, GLint param )
-{
- GLfloat fparam = (GLfloat) param;
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Lightfv)( CC, light, pname, &fparam, 1 );
-}
-
-
-void GLAPIENTRY glLightfv(CTX_ARG GLenum light, GLenum pname, const GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.Lightfv)( CC, light, pname, params, 4 );
-}
-
-
-void GLAPIENTRY glLightiv(CTX_ARG GLenum light, GLenum pname, const GLint *params )
-{
- GLfloat fparam[4];
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- switch (pname) {
- case GL_AMBIENT:
- case GL_DIFFUSE:
- case GL_SPECULAR:
- fparam[0] = INT_TO_FLOAT( params[0] );
- fparam[1] = INT_TO_FLOAT( params[1] );
- fparam[2] = INT_TO_FLOAT( params[2] );
- fparam[3] = INT_TO_FLOAT( params[3] );
- break;
- case GL_POSITION:
- fparam[0] = (GLfloat) params[0];
- fparam[1] = (GLfloat) params[1];
- fparam[2] = (GLfloat) params[2];
- fparam[3] = (GLfloat) params[3];
- break;
- case GL_SPOT_DIRECTION:
- fparam[0] = (GLfloat) params[0];
- fparam[1] = (GLfloat) params[1];
- fparam[2] = (GLfloat) params[2];
- break;
- case GL_SPOT_EXPONENT:
- case GL_SPOT_CUTOFF:
- case GL_CONSTANT_ATTENUATION:
- case GL_LINEAR_ATTENUATION:
- case GL_QUADRATIC_ATTENUATION:
- fparam[0] = (GLfloat) params[0];
- break;
- default:
- /* error will be caught later in gl_Lightfv */
- ;
- }
- (*CC->API.Lightfv)( CC, light, pname, fparam, 4 );
-}
-
-
-void GLAPIENTRY glLightModelf(CTX_ARG GLenum pname, GLfloat param )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LightModelfv)( CC, pname, &param );
-}
-
-
-void GLAPIENTRY glLightModeli(CTX_ARG GLenum pname, GLint param )
-{
- GLfloat fparam[4];
- GET_CONTEXT;
- CHECK_CONTEXT;
- fparam[0] = (GLfloat) param;
- (*CC->API.LightModelfv)( CC, pname, fparam );
-}
-
-
-void GLAPIENTRY glLightModelfv(CTX_ARG GLenum pname, const GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LightModelfv)( CC, pname, params );
-}
-
-
-void GLAPIENTRY glLightModeliv(CTX_ARG GLenum pname, const GLint *params )
-{
- GLfloat fparam[4];
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- switch (pname) {
- case GL_LIGHT_MODEL_AMBIENT:
- fparam[0] = INT_TO_FLOAT( params[0] );
- fparam[1] = INT_TO_FLOAT( params[1] );
- fparam[2] = INT_TO_FLOAT( params[2] );
- fparam[3] = INT_TO_FLOAT( params[3] );
- break;
- case GL_LIGHT_MODEL_LOCAL_VIEWER:
- case GL_LIGHT_MODEL_TWO_SIDE:
- case GL_LIGHT_MODEL_COLOR_CONTROL:
- fparam[0] = (GLfloat) params[0];
- break;
- default:
- /* Error will be caught later in gl_LightModelfv */
- ;
- }
- (*CC->API.LightModelfv)( CC, pname, fparam );
-}
-
-
-void GLAPIENTRY glLineWidth(CTX_ARG GLfloat width )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LineWidth)(CC, width);
-}
-
-
-void GLAPIENTRY glLineStipple(CTX_ARG GLint factor, GLushort pattern )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LineStipple)(CC, factor, pattern);
-}
-
-
-void GLAPIENTRY glListBase(CTX_ARG GLuint base )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.ListBase)(CC, base);
-}
-
-
-void GLAPIENTRY glLoadIdentity(CTX_VOID )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LoadIdentity)( CC );
-}
-
-
-void GLAPIENTRY glLoadMatrixd(CTX_ARG const GLdouble *m )
-{
- GLfloat fm[16];
- GLuint i;
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- for (i=0;i<16;i++) {
- fm[i] = (GLfloat) m[i];
- }
-
- (*CC->API.LoadMatrixf)( CC, fm );
-}
-
-
-void GLAPIENTRY glLoadMatrixf(CTX_ARG const GLfloat *m )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LoadMatrixf)( CC, m );
-}
-
-
-void GLAPIENTRY glLoadName(CTX_ARG GLuint name )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LoadName)(CC, name);
-}
-
-
-void GLAPIENTRY glLogicOp(CTX_ARG GLenum opcode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.LogicOp)(CC, opcode);
-}
-
-
-
-void GLAPIENTRY glMap1d(CTX_ARG GLenum target, GLdouble u1, GLdouble u2, GLint stride,
- GLint order, const GLdouble *points )
-{
- GLfloat *pnts;
- GLboolean retain;
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- pnts = gl_copy_map_points1d( target, stride, order, points );
- retain = CC->CompileFlag;
- (*CC->API.Map1f)( CC, target, u1, u2, stride, order, pnts, retain );
-}
-
-
-void GLAPIENTRY glMap1f(CTX_ARG GLenum target, GLfloat u1, GLfloat u2, GLint stride,
- GLint order, const GLfloat *points )
-{
- GLfloat *pnts;
- GLboolean retain;
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- pnts = gl_copy_map_points1f( target, stride, order, points );
- retain = CC->CompileFlag;
- (*CC->API.Map1f)( CC, target, u1, u2, stride, order, pnts, retain );
-}
-
-
-void GLAPIENTRY glMap2d(CTX_ARG GLenum target,
- GLdouble u1, GLdouble u2, GLint ustride, GLint uorder,
- GLdouble v1, GLdouble v2, GLint vstride, GLint vorder,
- const GLdouble *points )
-{
- GLfloat *pnts;
- GLboolean retain;
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- pnts = gl_copy_map_points2d( target, ustride, uorder,
- vstride, vorder, points );
- retain = CC->CompileFlag;
- (*CC->API.Map2f)( CC, target, u1, u2, ustride, uorder,
- v1, v2, vstride, vorder, pnts, retain );
-}
-
-
-void GLAPIENTRY glMap2f(CTX_ARG GLenum target,
- GLfloat u1, GLfloat u2, GLint ustride, GLint uorder,
- GLfloat v1, GLfloat v2, GLint vstride, GLint vorder,
- const GLfloat *points )
-{
- GLfloat *pnts;
- GLboolean retain;
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- pnts = gl_copy_map_points2f( target, ustride, uorder,
- vstride, vorder, points );
- retain = CC->CompileFlag;
- (*CC->API.Map2f)( CC, target, u1, u2, ustride, uorder,
- v1, v2, vstride, vorder, pnts, retain );
-}
-
-
-void GLAPIENTRY glMapGrid1d(CTX_ARG GLint un, GLdouble u1, GLdouble u2 )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.MapGrid1f)( CC, un, (GLfloat) u1, (GLfloat) u2 );
-}
-
-
-void GLAPIENTRY glMapGrid1f(CTX_ARG GLint un, GLfloat u1, GLfloat u2 )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.MapGrid1f)( CC, un, u1, u2 );
-}
-
-
-void GLAPIENTRY glMapGrid2d(CTX_ARG GLint un, GLdouble u1, GLdouble u2,
- GLint vn, GLdouble v1, GLdouble v2 )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.MapGrid2f)( CC, un, (GLfloat) u1, (GLfloat) u2,
- vn, (GLfloat) v1, (GLfloat) v2 );
-}
-
-
-void GLAPIENTRY glMapGrid2f(CTX_ARG GLint un, GLfloat u1, GLfloat u2,
- GLint vn, GLfloat v1, GLfloat v2 )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.MapGrid2f)( CC, un, u1, u2, vn, v1, v2 );
-}
-
-
-void GLAPIENTRY glMaterialf(CTX_ARG GLenum face, GLenum pname, GLfloat param )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- gl_Materialfv( CC, face, pname, &param );
-}
-
-
-
-void GLAPIENTRY glMateriali(CTX_ARG GLenum face, GLenum pname, GLint param )
-{
- GLfloat fparam[4];
- GET_CONTEXT;
- CHECK_CONTEXT;
- fparam[0] = (GLfloat) param;
- gl_Materialfv( CC, face, pname, fparam );
-}
-
-
-void GLAPIENTRY glMaterialfv(CTX_ARG GLenum face, GLenum pname, const GLfloat *params )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- gl_Materialfv( CC, face, pname, params );
-}
-
-
-void GLAPIENTRY glMaterialiv(CTX_ARG GLenum face, GLenum pname, const GLint *params )
-{
- GLfloat fparam[4];
- GET_CONTEXT;
- CHECK_CONTEXT;
- switch (pname) {
- case GL_AMBIENT:
- case GL_DIFFUSE:
- case GL_SPECULAR:
- case GL_EMISSION:
- case GL_AMBIENT_AND_DIFFUSE:
- fparam[0] = INT_TO_FLOAT( params[0] );
- fparam[1] = INT_TO_FLOAT( params[1] );
- fparam[2] = INT_TO_FLOAT( params[2] );
- fparam[3] = INT_TO_FLOAT( params[3] );
- break;
- case GL_SHININESS:
- fparam[0] = (GLfloat) params[0];
- break;
- case GL_COLOR_INDEXES:
- fparam[0] = (GLfloat) params[0];
- fparam[1] = (GLfloat) params[1];
- fparam[2] = (GLfloat) params[2];
- break;
- default:
- /* Error will be caught later in gl_Materialfv */
- ;
- }
- gl_Materialfv( CC, face, pname, fparam );
-}
-
-
-void GLAPIENTRY glMatrixMode(CTX_ARG GLenum mode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.MatrixMode)( CC, mode );
-}
-
-
-void GLAPIENTRY glMultMatrixd(CTX_ARG const GLdouble *m )
-{
- GLfloat fm[16];
- GLuint i;
- GET_CONTEXT;
- CHECK_CONTEXT;
-
- for (i=0;i<16;i++) {
- fm[i] = (GLfloat) m[i];
- }
-
- (*CC->API.MultMatrixf)( CC, fm );
-}
-
-
-void GLAPIENTRY glMultMatrixf(CTX_ARG const GLfloat *m )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.MultMatrixf)( CC, m );
-}
-
-
-void GLAPIENTRY glNewList(CTX_ARG GLuint list, GLenum mode )
-{
- GET_CONTEXT;
- CHECK_CONTEXT;
- (*CC->API.NewList)(CC, list, mode);
-}
-
-
-/* KW: Now that we build buffers for display lists the same way we
- * fill the vb, we can do the work here without a second function
- * call. The Flag member allows the identification of missing
- * (ie shared) normals.
- */
-#define NORMAL( x,y,z ) \
-{ \
- GLuint count; \
- GLfloat *normal; \
- GET_IMMEDIATE; \
- count = IM->Count; \
- IM->Flag[count] |= VERT_NORM; \
- normal = IM->Normal[count]; \
- ASSIGN_3V(normal, x,y,z); \
-}
-
-
-void GLAPIENTRY glNormal3b(CTX_ARG GLbyte nx, GLbyte ny, GLbyte nz )
-{
- NORMAL( BYTE_TO_FLOAT(nx),
- BYTE_TO_FLOAT(ny),
- BYTE_TO_FLOAT(nz) );
-}
-
-
-void GLAPIENTRY glNormal3d(CTX_ARG GLdouble nx, GLdouble ny, GLdouble nz )
-{
- NORMAL(nx,ny,nz);
-}
-
-
-void GLAPIENTRY glNormal3f(CTX_ARG GLfloat nx, GLfloat ny, GLfloat nz )
-{
- NORMAL(nx,ny,nz);
-}
-
-
-void GLAPIENTRY glNormal3i(CTX_ARG GLint nx, GLint ny, GLint nz )
-{
- NORMAL( INT_TO_FLOAT(nx),
- INT_TO_FLOAT(ny),
- INT_TO_FLOAT(nz) );
-}
-
-
-void GLAPIENTRY glNormal3s(CTX_ARG GLshort nx, GLshort ny, GLshort nz )
-{
- NORMAL( SHORT_TO_FLOAT(nx),
- SHORT_TO_FLOAT(ny),
- SHORT_TO_FLOAT(nz) );
-}
-
-
-void GLAPIENTRY glNormal3bv(CTX_ARG const GLbyte *v )
-{
- NORMAL( BYTE_TO_FLOAT(v[0]),
- BYTE_TO_FLOAT(v[1]),
- BYTE_TO_FLOAT(v[2]) );
-}
-
-
-void GLAPIENTRY glNormal3dv(CTX_ARG const GLdouble *v )
-{
- NORMAL( v[0], v[1], v[2] );
-}
-
-
-void GLAPIENTRY glNormal3fv(CTX_ARG const GLfloat *v )
-{
- NORMAL( v[0], v[1], v[2] );
-}
-
-
-void GLAPIENTRY glNormal3iv(CTX_ARG const GLint *v )
-{
- NORMAL( INT_TO_FLOAT(v[0]),
- INT_TO_FLOAT(v[1]),
- INT_TO_FLOAT(v[2]) );
-}
-
-
-void GLAPIENTRY glNormal3sv(CTX_ARG const GLshort *v )
-{
- NORMAL( SHORT_TO_FLOAT(v[0]),
- SHORT_TO_FLOAT(v[1]),
- SHORT_TO_FLOAT(v[2]) );
-}
-