summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2001-11-18 23:52:37 +0000
committerBrian Paul <[email protected]>2001-11-18 23:52:37 +0000
commit5b7dab2e4c7df1fde0a7fcf28b8b54745b9fcd2e (patch)
tree05ce265fc4b97cfb18e32b20eefd6c05cfbad42a
parent17fe22d3bfcce0471ab9ae638cc6b0c91f7d8e65 (diff)
added test implementation of GL_ARB_window_pos
-rw-r--r--src/mesa/glapi/APIspec113
-rw-r--r--src/mesa/glapi/glapioffsets.h16
-rw-r--r--src/mesa/glapi/glapitable.h16
-rw-r--r--src/mesa/glapi/glapitemp.h97
-rw-r--r--src/mesa/main/dlist.c126
-rw-r--r--src/mesa/main/glprocs.h16
-rw-r--r--src/mesa/main/mtypes.h5
-rw-r--r--src/mesa/main/rastpos.c138
-rw-r--r--src/mesa/main/rastpos.h39
-rw-r--r--src/mesa/main/state.c21
-rw-r--r--src/mesa/sparc/glapi_sparc.S336
-rw-r--r--src/mesa/x86/glapi_x86.S96
12 files changed, 1010 insertions, 9 deletions
diff --git a/src/mesa/glapi/APIspec b/src/mesa/glapi/APIspec
index ea87d112580..807067b4f19 100644
--- a/src/mesa/glapi/APIspec
+++ b/src/mesa/glapi/APIspec
@@ -1,4 +1,4 @@
-# $Id: APIspec,v 1.1 2001/11/18 22:43:16 brianp Exp $
+# $Id: APIspec,v 1.2 2001/11/18 23:52:38 brianp Exp $
# This file describes all the OpenGL functions.
# We use a number of Python scripts to parse this file and
@@ -7227,3 +7227,114 @@ param v const GLubyte *
category GL_NV_vertex_program
offset ?
+
+# GL_ARB_window_pos
+
+name WindowPos2dARB
+return void
+param x GLdouble
+param y GLdouble
+category GL_ARB_window_pos
+offset 578 # unofficial
+
+name WindowPos2fARB
+return void
+param x GLfloat
+param y GLfloat
+category GL_ARB_window_pos
+offset 579 # unofficial
+
+name WindowPos2iARB
+return void
+param x GLint
+param y GLint
+category GL_ARB_window_pos
+offset 580 # unofficial
+
+name WindowPos2sARB
+return void
+param x GLshort
+param y GLshort
+category GL_ARB_window_pos
+offset 581 # unofficial
+
+name WindowPos2dvARB
+return void
+param p const GLdouble *
+category GL_ARB_window_pos
+offset 582 # unofficial
+
+name WindowPos2fvARB
+return void
+param p const GLfloat *
+category GL_ARB_window_pos
+offset 583 # unofficial
+
+name WindowPos2ivARB
+return void
+param p const GLint *
+category GL_ARB_window_pos
+offset 584 # unofficial
+
+name WindowPos2svARB
+return void
+param p const GLshort *
+category GL_ARB_window_pos
+offset 585 # unofficial
+
+name WindowPos3dARB
+return void
+param x GLdouble
+param y GLdouble
+param z GLdouble
+category GL_ARB_window_pos
+offset 586 # unofficial
+
+name WindowPos3fARB
+return void
+param x GLfloat
+param y GLfloat
+param z GLfloat
+category GL_ARB_window_pos
+offset 587 # unofficial
+
+name WindowPos3iARB
+return void
+param x GLint
+param y GLint
+param z GLint
+category GL_ARB_window_pos
+offset 588 # unofficial
+
+name WindowPos3sARB
+return void
+param x GLshort
+param y GLshort
+param z GLshort
+category GL_ARB_window_pos
+offset 589 # unofficial
+
+name WindowPos3dvARB
+return void
+param p const GLdouble *
+category GL_ARB_window_pos
+offset 590 # unofficial
+
+name WindowPos3fvARB
+return void
+param p const GLfloat *
+category GL_ARB_window_pos
+offset 591 # unofficial
+
+name WindowPos3ivARB
+return void
+param p const GLint *
+category GL_ARB_window_pos
+offset 592 # unofficial
+
+name WindowPos3svARB
+return void
+param p const GLshort *
+category GL_ARB_window_pos
+offset 593 # unofficial
+
diff --git a/src/mesa/glapi/glapioffsets.h b/src/mesa/glapi/glapioffsets.h
index 0a83d478b3e..84726084b50 100644
--- a/src/mesa/glapi/glapioffsets.h
+++ b/src/mesa/glapi/glapioffsets.h
@@ -580,5 +580,21 @@
#define _gloffset_SecondaryColor3usEXT 575
#define _gloffset_SecondaryColor3usvEXT 576
#define _gloffset_SecondaryColorPointerEXT 577
+#define _gloffset_WindowPos2dARB 578
+#define _gloffset_WindowPos2fARB 579
+#define _gloffset_WindowPos2iARB 580
+#define _gloffset_WindowPos2sARB 581
+#define _gloffset_WindowPos2dvARB 582
+#define _gloffset_WindowPos2fvARB 583
+#define _gloffset_WindowPos2ivARB 584
+#define _gloffset_WindowPos2svARB 585
+#define _gloffset_WindowPos3dARB 586
+#define _gloffset_WindowPos3fARB 587
+#define _gloffset_WindowPos3iARB 588
+#define _gloffset_WindowPos3sARB 589
+#define _gloffset_WindowPos3dvARB 590
+#define _gloffset_WindowPos3fvARB 591
+#define _gloffset_WindowPos3ivARB 592
+#define _gloffset_WindowPos3svARB 593
#endif
diff --git a/src/mesa/glapi/glapitable.h b/src/mesa/glapi/glapitable.h
index 53071cef83f..271bce0dfdc 100644
--- a/src/mesa/glapi/glapitable.h
+++ b/src/mesa/glapi/glapitable.h
@@ -584,6 +584,22 @@ struct _glapi_table
void (*SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 575 */
void (*SecondaryColor3usvEXT)(const GLushort * v); /* 576 */
void (*SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 577 */
+ void (*WindowPos2dARB)(GLdouble x, GLdouble y); /* 578 */
+ void (*WindowPos2fARB)(GLfloat x, GLfloat y); /* 579 */
+ void (*WindowPos2iARB)(GLint x, GLint y); /* 580 */
+ void (*WindowPos2sARB)(GLshort x, GLshort y); /* 581 */
+ void (*WindowPos2dvARB)(const GLdouble * p); /* 582 */
+ void (*WindowPos2fvARB)(const GLfloat * p); /* 583 */
+ void (*WindowPos2ivARB)(const GLint * p); /* 584 */
+ void (*WindowPos2svARB)(const GLshort * p); /* 585 */
+ void (*WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z); /* 586 */
+ void (*WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z); /* 587 */
+ void (*WindowPos3iARB)(GLint x, GLint y, GLint z); /* 588 */
+ void (*WindowPos3sARB)(GLshort x, GLshort y, GLshort z); /* 589 */
+ void (*WindowPos3dvARB)(const GLdouble * p); /* 590 */
+ void (*WindowPos3fvARB)(const GLfloat * p); /* 591 */
+ void (*WindowPos3ivARB)(const GLint * p); /* 592 */
+ void (*WindowPos3svARB)(const GLshort * p); /* 593 */
};
#endif
diff --git a/src/mesa/glapi/glapitemp.h b/src/mesa/glapi/glapitemp.h
index 10f40d268ef..76ec6cbf8f2 100644
--- a/src/mesa/glapi/glapitemp.h
+++ b/src/mesa/glapi/glapitemp.h
@@ -3610,6 +3610,87 @@ KEYWORD1 void KEYWORD2 NAME(SamplePatternEXT)(GLenum pattern)
/* No dispatch for VertexAttribs4svNV() */
/* No dispatch for VertexAttribs4fvNV() */
/* No dispatch for VertexAttribs4dvNV() */
+/* No dispatch for VertexAttribs4ubvNV() */
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y)
+{
+ DISPATCH(WindowPos2dARB, (x, y), (F, "glWindowPos2dARB(%f, %f);", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y)
+{
+ DISPATCH(WindowPos2fARB, (x, y), (F, "glWindowPos2fARB(%f, %f);", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y)
+{
+ DISPATCH(WindowPos2iARB, (x, y), (F, "glWindowPos2iARB(%d, %d);", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y)
+{
+ DISPATCH(WindowPos2sARB, (x, y), (F, "glWindowPos2sARB(%d, %d);", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * p)
+{
+ DISPATCH(WindowPos2dvARB, (p), (F, "glWindowPos2dvARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * p)
+{
+ DISPATCH(WindowPos2fvARB, (p), (F, "glWindowPos2fvARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * p)
+{
+ DISPATCH(WindowPos2ivARB, (p), (F, "glWindowPos2ivARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * p)
+{
+ DISPATCH(WindowPos2svARB, (p), (F, "glWindowPos2svARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
+{
+ DISPATCH(WindowPos3dARB, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
+{
+ DISPATCH(WindowPos3fARB, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z)
+{
+ DISPATCH(WindowPos3iARB, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
+{
+ DISPATCH(WindowPos3sARB, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * p)
+{
+ DISPATCH(WindowPos3dvARB, (p), (F, "glWindowPos3dvARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * p)
+{
+ DISPATCH(WindowPos3fvARB, (p), (F, "glWindowPos3fvARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * p)
+{
+ DISPATCH(WindowPos3ivARB, (p), (F, "glWindowPos3ivARB(%p);", (void *) p));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * p)
+{
+ DISPATCH(WindowPos3svARB, (p), (F, "glWindowPos3svARB(%p);", (void *) p));
+}
+
/*
@@ -4201,6 +4282,22 @@ void *DISPATCH_TABLE_NAME[] = {
TABLE_ENTRY(SecondaryColor3usEXT),
TABLE_ENTRY(SecondaryColor3usvEXT),
TABLE_ENTRY(SecondaryColorPointerEXT),
+ TABLE_ENTRY(WindowPos2dARB),
+ TABLE_ENTRY(WindowPos2fARB),
+ TABLE_ENTRY(WindowPos2iARB),
+ TABLE_ENTRY(WindowPos2sARB),
+ TABLE_ENTRY(WindowPos2dvARB),
+ TABLE_ENTRY(WindowPos2fvARB),
+ TABLE_ENTRY(WindowPos2ivARB),
+ TABLE_ENTRY(WindowPos2svARB),
+ TABLE_ENTRY(WindowPos3dARB),
+ TABLE_ENTRY(WindowPos3fARB),
+ TABLE_ENTRY(WindowPos3iARB),
+ TABLE_ENTRY(WindowPos3sARB),
+ TABLE_ENTRY(WindowPos3dvARB),
+ TABLE_ENTRY(WindowPos3fvARB),
+ TABLE_ENTRY(WindowPos3ivARB),
+ TABLE_ENTRY(WindowPos3svARB),
/* A whole bunch of no-op functions. These might be called
* when someone tries to call a dynamically-registered
* extension function without a current rendering context.
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
index 0f4d7d875cd..ea6d6d76639 100644
--- a/src/mesa/main/dlist.c
+++ b/src/mesa/main/dlist.c
@@ -1,8 +1,8 @@
-/* $Id: dlist.c,v 1.77 2001/11/18 22:48:11 brianp Exp $ */
+/* $Id: dlist.c,v 1.78 2001/11/18 23:52:37 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.1
*
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
*
@@ -242,6 +242,8 @@ typedef enum {
OPCODE_COMPRESSED_TEX_SUB_IMAGE_3D,
/* GL_ARB_multisample */
OPCODE_SAMPLE_COVERAGE,
+ /* GL_ARB_window_pos */
+ OPCODE_WINDOW_POS_ARB,
/* The following three are meta instructions */
OPCODE_ERROR, /* raise compiled-in error */
OPCODE_CONTINUE,
@@ -627,6 +629,8 @@ void _mesa_init_lists( void )
InstSize[OPCODE_SAMPLE_COVERAGE] = 3;
/* GL_ARB_multitexture */
InstSize[OPCODE_ACTIVE_TEXTURE] = 2;
+ /* GL_ARB_window_pos */
+ InstSize[OPCODE_WINDOW_POS_ARB] = 4;
}
init_flag = 1;
}
@@ -3546,6 +3550,103 @@ static void save_WindowPos4svMESA(const GLshort *v)
+/*
+ * GL_ARB_window_pos
+ */
+
+static void save_WindowPos3fARB( GLfloat x, GLfloat y, GLfloat z )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ Node *n;
+ ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx);
+ FLUSH_CURRENT(ctx, 0);
+ n = ALLOC_INSTRUCTION( ctx, OPCODE_WINDOW_POS_ARB, 3 );
+ if (n) {
+ n[1].f = x;
+ n[2].f = y;
+ n[3].f = z;
+ }
+ if (ctx->ExecuteFlag) {
+ (*ctx->Exec->WindowPos3fMESA)( x, y, z );
+ }
+}
+
+static void save_WindowPos2dARB(GLdouble x, GLdouble y)
+{
+ save_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F);
+}
+
+static void save_WindowPos2fARB(GLfloat x, GLfloat y)
+{
+ save_WindowPos3fARB(x, y, 0.0F);
+}
+
+static void save_WindowPos2iARB(GLint x, GLint y)
+{
+ save_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F);
+}
+
+static void save_WindowPos2sARB(GLshort x, GLshort y)
+{
+ save_WindowPos3fARB(x, y, 0.0F);
+}
+
+static void save_WindowPos3dARB(GLdouble x, GLdouble y, GLdouble z)
+{
+ save_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z);
+}
+
+static void save_WindowPos3iARB(GLint x, GLint y, GLint z)
+{
+ save_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z);
+}
+
+static void save_WindowPos3sARB(GLshort x, GLshort y, GLshort z)
+{
+ save_WindowPos3fARB(x, y, z);
+}
+
+static void save_WindowPos2dvARB(const GLdouble *v)
+{
+ save_WindowPos3fARB((GLfloat) v[0], (GLfloat) v[1], 0.0F);
+}
+
+static void save_WindowPos2fvARB(const GLfloat *v)
+{
+ save_WindowPos3fARB(v[0], v[1], 0.0F);
+}
+
+static void save_WindowPos2ivARB(const GLint *v)
+{
+ save_WindowPos3fARB((GLfloat) v[0], (GLfloat) v[1], 0.0F);
+}
+
+static void save_WindowPos2svARB(const GLshort *v)
+{
+ save_WindowPos3fARB(v[0], v[1], 0.0F);
+}
+
+static void save_WindowPos3dvARB(const GLdouble *v)
+{
+ save_WindowPos3fARB((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
+}
+
+static void save_WindowPos3fvARB(const GLfloat *v)
+{
+ save_WindowPos3fARB(v[0], v[1], v[2]);
+}
+
+static void save_WindowPos3ivARB(const GLint *v)
+{
+ save_WindowPos3fARB((GLfloat) v[0], (GLfloat) v[1], (GLfloat) v[2]);
+}
+
+static void save_WindowPos3svARB(const GLshort *v)
+{
+ save_WindowPos3fARB(v[0], v[1], v[2]);
+}
+
+
/* GL_ARB_multitexture */
static void save_ActiveTextureARB( GLenum target )
{
@@ -4611,6 +4712,9 @@ execute_list( GLcontext *ctx, GLuint list )
case OPCODE_SAMPLE_COVERAGE: /* GL_ARB_multisample */
(*ctx->Exec->SampleCoverage)(n[1].f, n[2].b);
break;
+ case OPCODE_WINDOW_POS_ARB: /* GL_ARB_window_pos */
+ (*ctx->Exec->WindowPos3fARB)( n[1].f, n[2].f, n[3].f );
+ break;
case OPCODE_CONTINUE:
n = (Node *) n[1].next;
break;
@@ -5898,6 +6002,24 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
/* GL_EXT_fog_coord */
table->FogCoordPointerEXT = exec_FogCoordPointerEXT;
+
+ /* GL_ARB_window_pos */
+ table->WindowPos2dARB = save_WindowPos2dARB;
+ table->WindowPos2dvARB = save_WindowPos2dvARB;
+ table->WindowPos2fARB = save_WindowPos2fARB;
+ table->WindowPos2fvARB = save_WindowPos2fvARB;
+ table->WindowPos2iARB = save_WindowPos2iARB;
+ table->WindowPos2ivARB = save_WindowPos2ivARB;
+ table->WindowPos2sARB = save_WindowPos2sARB;
+ table->WindowPos2svARB = save_WindowPos2svARB;
+ table->WindowPos3dARB = save_WindowPos3dARB;
+ table->WindowPos3dvARB = save_WindowPos3dvARB;
+ table->WindowPos3fARB = save_WindowPos3fARB;
+ table->WindowPos3fvARB = save_WindowPos3fvARB;
+ table->WindowPos3iARB = save_WindowPos3iARB;
+ table->WindowPos3ivARB = save_WindowPos3ivARB;
+ table->WindowPos3sARB = save_WindowPos3sARB;
+ table->WindowPos3svARB = save_WindowPos3svARB;
}
diff --git a/src/mesa/main/glprocs.h b/src/mesa/main/glprocs.h
index ca60e2cb655..f79083c9ba0 100644
--- a/src/mesa/main/glprocs.h
+++ b/src/mesa/main/glprocs.h
@@ -673,5 +673,21 @@ static struct name_address_offset static_functions[] = {
{ "glTbufferMask3DFX", (GLvoid *) glTbufferMask3DFX, _gloffset_TbufferMask3DFX },
{ "glSampleMaskEXT", (GLvoid *) glSampleMaskEXT, _gloffset_SampleMaskSGIS },
{ "glSamplePatternEXT", (GLvoid *) glSamplePatternEXT, _gloffset_SamplePatternSGIS },
+ { "glWindowPos2dARB", (GLvoid *) glWindowPos2dARB, _gloffset_WindowPos2dARB },
+ { "glWindowPos2fARB", (GLvoid *) glWindowPos2fARB, _gloffset_WindowPos2fARB },
+ { "glWindowPos2iARB", (GLvoid *) glWindowPos2iARB, _gloffset_WindowPos2iARB },
+ { "glWindowPos2sARB", (GLvoid *) glWindowPos2sARB, _gloffset_WindowPos2sARB },
+ { "glWindowPos2dvARB", (GLvoid *) glWindowPos2dvARB, _gloffset_WindowPos2dvARB },
+ { "glWindowPos2fvARB", (GLvoid *) glWindowPos2fvARB, _gloffset_WindowPos2fvARB },
+ { "glWindowPos2ivARB", (GLvoid *) glWindowPos2ivARB, _gloffset_WindowPos2ivARB },
+ { "glWindowPos2svARB", (GLvoid *) glWindowPos2svARB, _gloffset_WindowPos2svARB },
+ { "glWindowPos3dARB", (GLvoid *) glWindowPos3dARB, _gloffset_WindowPos3dARB },
+ { "glWindowPos3fARB", (GLvoid *) glWindowPos3fARB, _gloffset_WindowPos3fARB },
+ { "glWindowPos3iARB", (GLvoid *) glWindowPos3iARB, _gloffset_WindowPos3iARB },
+ { "glWindowPos3sARB", (GLvoid *) glWindowPos3sARB, _gloffset_WindowPos3sARB },
+ { "glWindowPos3dvARB", (GLvoid *) glWindowPos3dvARB, _gloffset_WindowPos3dvARB },
+ { "glWindowPos3fvARB", (GLvoid *) glWindowPos3fvARB, _gloffset_WindowPos3fvARB },
+ { "glWindowPos3ivARB", (GLvoid *) glWindowPos3ivARB, _gloffset_WindowPos3ivARB },
+ { "glWindowPos3svARB", (GLvoid *) glWindowPos3svARB, _gloffset_WindowPos3svARB },
{ NULL, NULL } /* end of list marker */
};
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index b4853f64e66..f8d330b75ce 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1,8 +1,8 @@
-/* $Id: mtypes.h,v 1.52 2001/11/06 15:53:00 brianp Exp $ */
+/* $Id: mtypes.h,v 1.53 2001/11/18 23:52:37 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.1
*
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
*
@@ -1204,6 +1204,7 @@ struct gl_extensions {
GLboolean ARB_texture_env_combine;
GLboolean ARB_texture_env_dot3;
GLboolean ARB_texture_mirrored_repeat;
+ GLboolean ARB_window_pos;
GLboolean EXT_blend_color;
GLboolean EXT_blend_func_separate;
GLboolean EXT_blend_logic_op;
diff --git a/src/mesa/main/rastpos.c b/src/mesa/main/rastpos.c
index 716bef2302d..a7b4e16a41a 100644
--- a/src/mesa/main/rastpos.c
+++ b/src/mesa/main/rastpos.c
@@ -1,4 +1,4 @@
-/* $Id: rastpos.c,v 1.31 2001/09/18 23:06:14 kschultz Exp $ */
+/* $Id: rastpos.c,v 1.32 2001/11/18 23:52:38 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -764,3 +764,139 @@ void glWindowPos4fMESA( GLfloat x, GLfloat y, GLfloat z, GLfloat w )
}
#endif
+
+
+/**********************************************************************/
+/*** GL_ARB_window_pos ***/
+/**********************************************************************/
+
+void _mesa_WindowPos2dARB(GLdouble x, GLdouble y)
+{
+ _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F);
+}
+
+void _mesa_WindowPos2fARB(GLfloat x, GLfloat y)
+{
+ _mesa_WindowPos3fARB(x, y, 0.0F);
+}
+
+void _mesa_WindowPos2iARB(GLint x, GLint y)
+{
+ _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F);
+}
+
+void _mesa_WindowPos2sARB(GLshort x, GLshort y)
+{
+ _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, 0.0F);
+}
+
+void _mesa_WindowPos2dvARB(const GLdouble *p)
+{
+ _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F);
+}
+
+void _mesa_WindowPos2fvARB(const GLfloat *p)
+{
+ _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F);
+}
+
+void _mesa_WindowPos2ivARB(const GLint *p)
+{
+ _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F);
+}
+
+void _mesa_WindowPos2svARB(const GLshort *p)
+{
+ _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], 0.0F);
+}
+
+void _mesa_WindowPos3dARB(GLdouble x, GLdouble y, GLdouble z)
+{
+ _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z);
+}
+
+void _mesa_WindowPos3fARB(GLfloat x, GLfloat y, GLfloat z)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLfloat z2;
+
+ ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
+ FLUSH_CURRENT(ctx, 0);
+
+ z2 = CLAMP(z, 0.0F, 1.0F) * (ctx->Viewport.Far - ctx->Viewport.Near)
+ + ctx->Viewport.Near;
+
+ /* set raster position */
+ ctx->Current.RasterPos[0] = x;
+ ctx->Current.RasterPos[1] = y;
+ ctx->Current.RasterPos[2] = z2;
+ ctx->Current.RasterPos[3] = 0.0F;
+
+ ctx->Current.RasterPosValid = GL_TRUE;
+ /* XXX might have to change this */
+ ctx->Current.RasterDistance = ctx->Current.FogCoord;
+ ctx->Current.RasterFogCoord = ctx->Current.FogCoord;
+
+ /* raster color = current color or index */
+ if (ctx->Visual.rgbMode) {
+ ctx->Current.RasterColor[0] = CLAMP(ctx->Current.Color[0], 0.0F, 1.0F);
+ ctx->Current.RasterColor[1] = CLAMP(ctx->Current.Color[1], 0.0F, 1.0F);
+ ctx->Current.RasterColor[2] = CLAMP(ctx->Current.Color[2], 0.0F, 1.0F);
+ ctx->Current.RasterColor[3] = CLAMP(ctx->Current.Color[3], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[0]
+ = CLAMP(ctx->Current.SecondaryColor[0], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[1]
+ = CLAMP(ctx->Current.SecondaryColor[1], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[2]
+ = CLAMP(ctx->Current.SecondaryColor[2], 0.0F, 1.0F);
+ ctx->Current.RasterSecondaryColor[3]
+ = CLAMP(ctx->Current.SecondaryColor[3], 0.0F, 1.0F);
+ }
+ else {
+ ctx->Current.RasterIndex = ctx->Current.Index;
+ }
+
+ /* raster texcoord = current texcoord */
+ {
+ GLuint texSet;
+ for (texSet = 0; texSet < ctx->Const.MaxTextureUnits; texSet++) {
+ COPY_4FV( ctx->Current.RasterMultiTexCoord[texSet],
+ ctx->Current.Texcoord[texSet] );
+ }
+ }
+
+ if (ctx->RenderMode==GL_SELECT) {
+ _mesa_update_hitflag( ctx, ctx->Current.RasterPos[2] );
+ }
+}
+
+void _mesa_WindowPos3iARB(GLint x, GLint y, GLint z)
+{
+ _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z);
+}
+
+void _mesa_WindowPos3sARB(GLshort x, GLshort y, GLshort z)
+{
+ _mesa_WindowPos3fARB((GLfloat) x, (GLfloat) y, (GLfloat) z);
+}
+
+void _mesa_WindowPos3dvARB(const GLdouble *p)
+{
+ _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2]);
+}
+
+void _mesa_WindowPos3fvARB(const GLfloat *p)
+{
+ _mesa_WindowPos3fARB(p[0], p[1], p[2]);
+}
+
+void _mesa_WindowPos3ivARB(const GLint *p)
+{
+ _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2]);
+}
+
+void _mesa_WindowPos3svARB(const GLshort *p)
+{
+ _mesa_WindowPos3fARB((GLfloat) p[0], (GLfloat) p[1], (GLfloat) p[2]);
+}
+
diff --git a/src/mesa/main/rastpos.h b/src/mesa/main/rastpos.h
index 234eb76ce1d..62779443c0d 100644
--- a/src/mesa/main/rastpos.h
+++ b/src/mesa/main/rastpos.h
@@ -1,4 +1,4 @@
-/* $Id: rastpos.h,v 1.4 2001/06/18 17:26:08 brianp Exp $ */
+/* $Id: rastpos.h,v 1.5 2001/11/18 23:52:38 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -182,4 +182,41 @@ extern void
_mesa_WindowPos4svMESA(const GLshort *v);
+/**********************************************************************/
+/*** GL_ARB_window_pos ***/
+/**********************************************************************/
+
+extern void _mesa_WindowPos2dARB(GLdouble x, GLdouble y);
+
+extern void _mesa_WindowPos2fARB(GLfloat x, GLfloat y);
+
+extern void _mesa_WindowPos2iARB(GLint x, GLint y);
+
+extern void _mesa_WindowPos2sARB(GLshort x, GLshort y);
+
+extern void _mesa_WindowPos2dvARB(const GLdouble *p);
+
+extern void _mesa_WindowPos2fvARB(const GLfloat *p);
+
+extern void _mesa_WindowPos2ivARB(const GLint *p);
+
+extern void _mesa_WindowPos2svARB(const GLshort *p);
+
+extern void _mesa_WindowPos3dARB(GLdouble x, GLdouble y, GLdouble z);
+
+extern void _mesa_WindowPos3fARB(GLfloat x, GLfloat y, GLfloat z);
+
+extern void _mesa_WindowPos3iARB(GLint x, GLint y, GLint z);
+
+extern void _mesa_WindowPos3sARB(GLshort x, GLshort y, GLshort z);
+
+extern void _mesa_WindowPos3dvARB(const GLdouble *p);
+
+extern void _mesa_WindowPos3fvARB(const GLfloat *p);
+
+extern void _mesa_WindowPos3ivARB(const GLint *p);
+
+extern void _mesa_WindowPos3svARB(const GLshort *p);
+
+
#endif
diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
index 0c884e19599..66d862286eb 100644
--- a/src/mesa/main/state.c
+++ b/src/mesa/main/state.c
@@ -1,8 +1,8 @@
-/* $Id: state.c,v 1.70 2001/11/18 22:48:13 brianp Exp $ */
+/* $Id: state.c,v 1.71 2001/11/18 23:52:38 brianp Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.5
+ * Version: 4.1
*
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
*
@@ -478,6 +478,23 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
exec->CompressedTexSubImage1D = _mesa_CompressedTexSubImage1DARB;
exec->GetCompressedTexImage = _mesa_GetCompressedTexImageARB;
+ /* GL_ARB_window_pos */
+ exec->WindowPos2dARB = _mesa_WindowPos2dARB;
+ exec->WindowPos2dvARB = _mesa_WindowPos2dvARB;
+ exec->WindowPos2fARB = _mesa_WindowPos2fARB;
+ exec->WindowPos2fvARB = _mesa_WindowPos2fvARB;
+ exec->WindowPos2iARB = _mesa_WindowPos2iARB;
+ exec->WindowPos2ivARB = _mesa_WindowPos2ivARB;
+ exec->WindowPos2sARB = _mesa_WindowPos2sARB;
+ exec->WindowPos2svARB = _mesa_WindowPos2svARB;
+ exec->WindowPos3dARB = _mesa_WindowPos3dARB;
+ exec->WindowPos3dvARB = _mesa_WindowPos3dvARB;
+ exec->WindowPos3fARB = _mesa_WindowPos3fARB;
+ exec->WindowPos3fvARB = _mesa_WindowPos3fvARB;
+ exec->WindowPos3iARB = _mesa_WindowPos3iARB;
+ exec->WindowPos3ivARB = _mesa_WindowPos3ivARB;
+ exec->WindowPos3sARB = _mesa_WindowPos3sARB;
+ exec->WindowPos3svARB = _mesa_WindowPos3svARB;
}
diff --git a/src/mesa/sparc/glapi_sparc.S b/src/mesa/sparc/glapi_sparc.S
index c4ca052ac54..95da2212f84 100644
--- a/src/mesa/sparc/glapi_sparc.S
+++ b/src/mesa/sparc/glapi_sparc.S
@@ -14072,6 +14072,342 @@ GL_PREFIX(SamplePatternEXT):
#endif
jmpl %g3, %g0
nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2dARB))
+.type WindowPos2dARB,#function
+GL_PREFIX(WindowPos2dARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2dARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2dARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2dARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2fARB))
+.type WindowPos2fARB,#function
+GL_PREFIX(WindowPos2fARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2fARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2fARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2fARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2iARB))
+.type WindowPos2iARB,#function
+GL_PREFIX(WindowPos2iARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2iARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2iARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2iARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2sARB))
+.type WindowPos2sARB,#function
+GL_PREFIX(WindowPos2sARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2sARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2sARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2sARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2dvARB))
+.type WindowPos2dvARB,#function
+GL_PREFIX(WindowPos2dvARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2dvARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2dvARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2dvARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2fvARB))
+.type WindowPos2fvARB,#function
+GL_PREFIX(WindowPos2fvARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2fvARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2fvARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2fvARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2ivARB))
+.type WindowPos2ivARB,#function
+GL_PREFIX(WindowPos2ivARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2ivARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2ivARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2ivARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos2svARB))
+.type WindowPos2svARB,#function
+GL_PREFIX(WindowPos2svARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos2svARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos2svARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos2svARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3dARB))
+.type WindowPos3dARB,#function
+GL_PREFIX(WindowPos3dARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3dARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3dARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3dARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3fARB))
+.type WindowPos3fARB,#function
+GL_PREFIX(WindowPos3fARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3fARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3fARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3fARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3iARB))
+.type WindowPos3iARB,#function
+GL_PREFIX(WindowPos3iARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3iARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3iARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3iARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3sARB))
+.type WindowPos3sARB,#function
+GL_PREFIX(WindowPos3sARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3sARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3sARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3sARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3dvARB))
+.type WindowPos3dvARB,#function
+GL_PREFIX(WindowPos3dvARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3dvARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3dvARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3dvARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3fvARB))
+.type WindowPos3fvARB,#function
+GL_PREFIX(WindowPos3fvARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3fvARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3fvARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3fvARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3ivARB))
+.type WindowPos3ivARB,#function
+GL_PREFIX(WindowPos3ivARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3ivARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3ivARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3ivARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
+
+GLOBL_FN(GL_PREFIX(WindowPos3svARB))
+.type WindowPos3svARB,#function
+GL_PREFIX(WindowPos3svARB):
+#ifdef __sparc_v9__
+ sethi %hi(0x00000000), %g2
+ sethi %hi(0x00000000), %g1
+ or %g2, %lo(0x00000000), %g2
+ or %g1, %lo(0x00000000), %g1
+ sllx %g2, 32, %g2
+ ldx [%g1 + %g2], %g1
+ sethi %hi(8 * _gloffset_WindowPos3svARB), %g2
+ or %g2, %lo(8 * _gloffset_WindowPos3svARB), %g2
+ ldx [%g1 + %g2], %g3
+#else
+ sethi %hi(0x00000000), %g1
+ ld [%g1 + %lo(0x00000000)], %g1
+ ld [%g1 + (4 * _gloffset_WindowPos3svARB)], %g3
+#endif
+ jmpl %g3, %g0
+ nop
nop
.globl _mesa_sparc_glapi_end
diff --git a/src/mesa/x86/glapi_x86.S b/src/mesa/x86/glapi_x86.S
index 8ddb165a3c2..a94697b560c 100644
--- a/src/mesa/x86/glapi_x86.S
+++ b/src/mesa/x86/glapi_x86.S
@@ -4033,5 +4033,101 @@ GL_PREFIX(SamplePatternEXT):
MOV_L(GLNAME(_glapi_Dispatch), EAX)
JMP(GL_OFFSET(_gloffset_SamplePatternSGIS))
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2dARB))
+GL_PREFIX(WindowPos2dARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2dARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2fARB))
+GL_PREFIX(WindowPos2fARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2fARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2iARB))
+GL_PREFIX(WindowPos2iARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2iARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2sARB))
+GL_PREFIX(WindowPos2sARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2sARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2dvARB))
+GL_PREFIX(WindowPos2dvARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2dvARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2fvARB))
+GL_PREFIX(WindowPos2fvARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2fvARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2ivARB))
+GL_PREFIX(WindowPos2ivARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2ivARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos2svARB))
+GL_PREFIX(WindowPos2svARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos2svARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3dARB))
+GL_PREFIX(WindowPos3dARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3dARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3fARB))
+GL_PREFIX(WindowPos3fARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3fARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3iARB))
+GL_PREFIX(WindowPos3iARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3iARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3sARB))
+GL_PREFIX(WindowPos3sARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3sARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3dvARB))
+GL_PREFIX(WindowPos3dvARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3dvARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3fvARB))
+GL_PREFIX(WindowPos3fvARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3fvARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3ivARB))
+GL_PREFIX(WindowPos3ivARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3ivARB))
+
+ALIGNTEXT16
+GLOBL_FN(GL_PREFIX(WindowPos3svARB))
+GL_PREFIX(WindowPos3svARB):
+ MOV_L(GLNAME(_glapi_Dispatch), EAX)
+ JMP(GL_OFFSET(_gloffset_WindowPos3svARB))
+
#endif /* __WIN32__ */