Use indirect_size.c and indirect_size.h generated by using
authorIan Romanick <idr@us.ibm.com>
Wed, 1 Dec 2004 09:11:04 +0000 (09:11 +0000)
committerIan Romanick <idr@us.ibm.com>
Wed, 1 Dec 2004 09:11:04 +0000 (09:11 +0000)
src/mesa/glapi/glX_proto_send.py with the '-m size_c' and '-m size_h'
options.

src/glx/x11/Makefile
src/glx/x11/compsize.c
src/glx/x11/eval.c
src/glx/x11/indirect_size.c [new file with mode: 0644]
src/glx/x11/indirect_size.h [new file with mode: 0644]
src/glx/x11/render2.c
src/glx/x11/size.h

index ee2bae1..2ef1b96 100644 (file)
@@ -31,6 +31,7 @@ C_SOURCES = \
          glxext.c \
          glxextensions.c \
          indirect_init.c \
+         indirect_size.c \
          indirect_window_pos.c \
          indirect_transpose_matrix.c \
          pixel.c \
index 3a562b9..9529496 100644 (file)
@@ -35,7 +35,6 @@
 */
 
 #include <GL/gl.h>
-#include "glxclient.h"
 #include "size.h"
 
 /*
@@ -171,352 +170,3 @@ GLint __glImageSize(GLsizei width, GLsizei height, GLsizei depth,
     }
     return bytes_per_row * height * depth * components;
 }
-
-GLint __glFogiv_size(GLenum pname)
-{
-    switch (pname) {
-      case GL_FOG_COLOR:       return 4;
-      case GL_FOG_DENSITY:     return 1;
-      case GL_FOG_END:         return 1;
-      case GL_FOG_MODE:                return 1;
-      case GL_FOG_INDEX:       return 1;
-      case GL_FOG_START:       return 1;
-      case GL_FOG_DISTANCE_MODE_NV: return 1;
-      case GL_FOG_OFFSET_VALUE_SGIX: return 1;
-      default:
-       return 0;
-    }
-}
-
-GLint __glFogfv_size(GLenum pname)
-{
-    return __glFogiv_size(pname);
-}
-
-GLint __glCallLists_size(GLsizei n, GLenum type)
-{
-    GLint size;
-
-    if (n < 0) return 0;
-    switch (type) {
-      case GL_BYTE:            size = 1; break;
-      case GL_UNSIGNED_BYTE:   size = 1; break;
-      case GL_SHORT:           size = 2; break;
-      case GL_UNSIGNED_SHORT:  size = 2; break;
-      case GL_INT:             size = 4; break;
-      case GL_UNSIGNED_INT:    size = 4; break;
-      case GL_FLOAT:           size = 4; break;
-      case GL_2_BYTES:         size = 2; break;
-      case GL_3_BYTES:         size = 3; break;
-      case GL_4_BYTES:         size = 4; break;
-      default:
-       return 0;
-    }
-    return n * size;
-}
-
-GLint __glDrawPixels_size(GLenum format, GLenum type, GLsizei w, GLsizei h)
-{
-    return __glImageSize( w, h, 1, format, type );
-}
-
-GLint __glBitmap_size(GLsizei w, GLsizei h)
-{
-    return __glDrawPixels_size(GL_COLOR_INDEX, GL_BITMAP, w, h);
-}
-
-GLint __glTexGendv_size(GLenum e)
-{
-    switch (e) {
-      case GL_TEXTURE_GEN_MODE:
-       return 1;
-      case GL_OBJECT_PLANE:
-      case GL_EYE_PLANE:
-       return 4;
-      default:
-       return 0;
-    }
-}
-
-GLint __glTexGenfv_size(GLenum e)
-{
-    return __glTexGendv_size(e);
-}
-
-GLint __glTexGeniv_size(GLenum e)
-{
-    return __glTexGendv_size(e);
-}
-
-GLint __glTexParameterfv_size(GLenum e)
-{
-    switch (e) {
-      case GL_TEXTURE_WRAP_S:
-      case GL_TEXTURE_WRAP_T:
-      case GL_TEXTURE_WRAP_R:
-      case GL_TEXTURE_MIN_FILTER:
-      case GL_TEXTURE_MAG_FILTER:
-      case GL_TEXTURE_PRIORITY:
-      case GL_TEXTURE_RESIDENT:
-       
-      /* GL_SGIS_texture_lod / GL_EXT_texture_lod / GL 1.2 */
-      case GL_TEXTURE_MIN_LOD:
-      case GL_TEXTURE_MAX_LOD:
-      case GL_TEXTURE_BASE_LEVEL:
-      case GL_TEXTURE_MAX_LEVEL:
-
-      /* GL_SGIX_texture_lod_bias */
-      case GL_TEXTURE_LOD_BIAS_S_SGIX:
-      case GL_TEXTURE_LOD_BIAS_T_SGIX:
-      case GL_TEXTURE_LOD_BIAS_R_SGIX:
-
-      /* GL_ARB_shadow / GL 1.4 */
-      case GL_TEXTURE_COMPARE_MODE:
-      case GL_TEXTURE_COMPARE_FUNC:
-
-      /* GL_SGIS_generate_mipmap / GL 1.4 */
-      case GL_GENERATE_MIPMAP:
-
-      /* GL_ARB_depth_texture / GL 1.4 */
-      case GL_DEPTH_TEXTURE_MODE:
-
-      /* GL_EXT_texture_lod_bias / GL 1.4 */
-      case GL_TEXTURE_LOD_BIAS:
-
-      /* GL_SGIX_shadow_ambient / GL_ARB_shadow_ambient */
-      case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
-
-      /* GL_SGIX_shadow */
-      case GL_TEXTURE_COMPARE_SGIX:
-      case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
-
-      /* GL_SGIX_texture_coordinate_clamp */
-      case GL_TEXTURE_MAX_CLAMP_S_SGIX:
-      case GL_TEXTURE_MAX_CLAMP_T_SGIX:
-      case GL_TEXTURE_MAX_CLAMP_R_SGIX:
-
-      /* GL_EXT_texture_filter_anisotropic */
-      case GL_TEXTURE_MAX_ANISOTROPY_EXT:
-
-      /* GL_NV_texture_expand_normal */
-      case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
-       return 1;
-
-      /* GL_SGIX_clipmap */
-      case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
-      case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
-       return 2;
-
-      /* GL_SGIX_clipmap */
-      case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
-       return 3;
-
-      case GL_TEXTURE_BORDER_COLOR:
-
-      /* GL_SGIX_texture_scale_bias */
-      case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
-      case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
-       return 4;
-
-      default:
-       return 0;
-    }
-}
-
-GLint __glTexParameteriv_size(GLenum e)
-{
-    return __glTexParameterfv_size(e);
-}
-
-GLint __glTexEnvfv_size(GLenum e)
-{
-    switch (e) {
-      case GL_TEXTURE_ENV_MODE:
-
-      /* GL_ARB_texture_env_combine / GL_EXT_texture_env_combine / GL 1.3 */
-      case GL_COMBINE_RGB:
-      case GL_COMBINE_ALPHA:
-      case GL_SOURCE0_RGB:
-      case GL_SOURCE1_RGB:
-      case GL_SOURCE2_RGB:
-      case GL_SOURCE0_ALPHA:
-      case GL_SOURCE1_ALPHA:
-      case GL_SOURCE2_ALPHA:
-      case GL_OPERAND0_RGB:
-      case GL_OPERAND1_RGB:
-      case GL_OPERAND0_ALPHA:
-      case GL_OPERAND1_ALPHA:
-      case GL_OPERAND2_RGB:
-      case GL_OPERAND2_ALPHA:
-      case GL_RGB_SCALE:
-      case GL_ALPHA_SCALE:
-
-      /* GL_EXT_texture_lod_bias / GL 1.4 */
-      case GL_TEXTURE_LOD_BIAS:
-
-      /* GL_ARB_point_sprite / GL_NV_point_sprite */
-      case GL_COORD_REPLACE_ARB:
-
-      /* GL_NV_texture_env_combine4 */
-      case GL_SOURCE3_RGB_NV:
-      case GL_SOURCE3_ALPHA_NV:
-      case GL_OPERAND3_RGB_NV:
-      case GL_OPERAND3_ALPHA_NV:
-        return 1;
-
-      case GL_TEXTURE_ENV_COLOR:
-       return 4;
-
-      default:
-       return 0;
-    }
-}
-
-GLint __glTexEnviv_size(GLenum e)
-{
-    return __glTexEnvfv_size(e);
-}
-
-GLint __glTexImage1D_size(GLenum format, GLenum type, GLsizei w)
-{
-    return __glImageSize( w, 1, 1, format, type );
-}
-
-GLint __glTexImage2D_size(GLenum format, GLenum type, GLsizei w, GLsizei h)
-{
-    return __glImageSize( w, h, 1, format, type );
-}
-
-GLint __glTexImage3D_size(GLenum format, GLenum type, GLsizei w, GLsizei h,
-                         GLsizei d)
-{
-    return __glImageSize( w, h, d, format, type );
-}
-
-GLint __glLightfv_size(GLenum pname)
-{
-    switch (pname) {
-      case GL_SPOT_EXPONENT:           return 1;
-      case GL_SPOT_CUTOFF:             return 1;
-      case GL_AMBIENT:                 return 4;
-      case GL_DIFFUSE:                 return 4;
-      case GL_SPECULAR:                        return 4;
-      case GL_POSITION:                        return 4;
-      case GL_SPOT_DIRECTION:          return 3;
-      case GL_CONSTANT_ATTENUATION:    return 1;
-      case GL_LINEAR_ATTENUATION:      return 1;
-      case GL_QUADRATIC_ATTENUATION:   return 1;
-      default:
-       return 0;
-    }
-}
-
-GLint __glLightiv_size(GLenum pname)
-{
-    return __glLightfv_size(pname);
-}
-
-GLint __glLightModelfv_size(GLenum pname)
-{
-    switch (pname) {
-      case GL_LIGHT_MODEL_AMBIENT:             return 4;
-      case GL_LIGHT_MODEL_LOCAL_VIEWER:                return 1;
-      case GL_LIGHT_MODEL_TWO_SIDE:            return 1;
-      case GL_LIGHT_MODEL_COLOR_CONTROL:       return 1;
-      default:
-       return 0;
-    }
-}
-
-GLint __glLightModeliv_size(GLenum pname)
-{
-    return __glLightModelfv_size(pname);
-}
-
-GLint __glMaterialfv_size(GLenum pname)
-{
-    switch (pname) {
-      case GL_SHININESS:               return 1;
-      case GL_EMISSION:                        return 4;
-      case GL_AMBIENT:                 return 4;
-      case GL_DIFFUSE:                 return 4;
-      case GL_SPECULAR:                        return 4;
-      case GL_AMBIENT_AND_DIFFUSE:     return 4;
-      case GL_COLOR_INDEXES:           return 3;
-      default:
-       return 0;
-    }
-}
-
-GLint __glMaterialiv_size(GLenum pname)
-{
-    return __glMaterialfv_size(pname);
-}
-
-GLint __glColorTableParameterfv_size(GLenum pname)
-{
-    switch (pname) {
-      case GL_COLOR_TABLE_FORMAT:
-      case GL_COLOR_TABLE_WIDTH:
-      case GL_COLOR_TABLE_RED_SIZE:
-      case GL_COLOR_TABLE_GREEN_SIZE:
-      case GL_COLOR_TABLE_BLUE_SIZE:
-      case GL_COLOR_TABLE_ALPHA_SIZE:
-      case GL_COLOR_TABLE_LUMINANCE_SIZE:
-      case GL_COLOR_TABLE_INTENSITY_SIZE:
-       return 1;
-      case GL_COLOR_TABLE_SCALE:
-      case GL_COLOR_TABLE_BIAS:
-       return 4;
-      default:
-       return -1;
-    }
-}
-
-GLint __glColorTableParameteriv_size(GLenum pname)
-{
-    return __glColorTableParameterfv_size(pname);
-}
-
-GLint __glConvolutionParameterfv_size(GLenum pname)
-{
-    switch(pname) {
-      case GL_CONVOLUTION_BORDER_MODE:
-       return 1;
-      case GL_CONVOLUTION_BORDER_COLOR:
-      case GL_CONVOLUTION_FILTER_SCALE:
-      case GL_CONVOLUTION_FILTER_BIAS:
-       return 4;
-      default: /* error: bad enum value */
-       return -1;
-    }
-}
-
-GLint __glConvolutionParameteriv_size(GLenum pname)
-{
-    return __glConvolutionParameterfv_size(pname);
-}
-
-GLint __glPointParameterfvEXT_size(GLenum e)
-{
-    switch (e) {
-      case GL_POINT_SIZE_MIN:
-      case GL_POINT_SIZE_MAX:
-      case GL_POINT_FADE_THRESHOLD_SIZE:
-
-      /* GL_NV_point_sprite */
-      case GL_POINT_SPRITE_R_MODE_NV:
-        return 1;
-
-      case GL_POINT_DISTANCE_ATTENUATION:
-       return 3;
-
-      default:
-        return -1;
-    }
-}
-
-GLint __glPointParameterivNV_size(GLenum e)
-{
-    return __glPointParameterfvEXT_size(e);
-}
index aba4b57..0f94e6d 100644 (file)
@@ -130,33 +130,3 @@ void __glFillMap2d(GLint k, GLint majorOrder, GLint minorOrder,
        points += majorStride - minorStride * minorOrder;
     }
 }
-
-GLint __glEvalComputeK(GLenum target)
-{
-    switch(target) {
-      case GL_MAP1_VERTEX_4:
-      case GL_MAP1_COLOR_4:
-      case GL_MAP1_TEXTURE_COORD_4:
-      case GL_MAP2_VERTEX_4:
-      case GL_MAP2_COLOR_4:
-      case GL_MAP2_TEXTURE_COORD_4:
-       return 4;
-      case GL_MAP1_VERTEX_3:
-      case GL_MAP1_TEXTURE_COORD_3:
-      case GL_MAP1_NORMAL:
-      case GL_MAP2_VERTEX_3:
-      case GL_MAP2_TEXTURE_COORD_3:
-      case GL_MAP2_NORMAL:
-       return 3;
-      case GL_MAP1_TEXTURE_COORD_2:
-      case GL_MAP2_TEXTURE_COORD_2:
-       return 2;
-      case GL_MAP1_TEXTURE_COORD_1:
-      case GL_MAP2_TEXTURE_COORD_1:
-      case GL_MAP1_INDEX:
-      case GL_MAP2_INDEX:
-       return 1;
-      default:
-       return 0;
-    }
-}
diff --git a/src/glx/x11/indirect_size.c b/src/glx/x11/indirect_size.c
new file mode 100644 (file)
index 0000000..c9367e5
--- /dev/null
@@ -0,0 +1,357 @@
+/* DO NOT EDIT - This file generated automatically by glX_proto_send.py (from Mesa) script */
+
+/*
+ * (C) Copyright IBM Corporation 2004
+ * 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, sub license,
+ * 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 (including the next
+ * paragraph) 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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+ * IBM,
+ * AND/OR THEIR SUPPLIERS 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.
+ */
+
+
+#include <GL/gl.h>
+#include "indirect_size.h"
+
+#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+#    define PURE __attribute__((pure))
+#  else
+#    define PURE
+#  endif
+
+#  if defined(__i386__) && defined(__GNUC__)
+#    define FASTCALL __attribute__((fastcall))
+#  else
+#    define FASTCALL
+#  endif
+
+#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
+#    define INTERNAL  __attribute__((visibility("internal")))
+#  else
+#    define INTERNAL
+#  endif
+
+
+#ifdef HAVE_ALIAS
+#  define ALIAS2(from,to) \
+    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \
+        __attribute__ ((alias( # to )));
+#  define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )
+#else
+#  define ALIAS(from,to) \
+    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \
+    { return __gl ## to ## _size( e ); }
+#endif
+
+
+INTERNAL PURE FASTCALL GLint
+__glCallLists_size( GLenum e )
+{
+    switch( e ) {
+        case GL_BYTE:
+        case GL_UNSIGNED_BYTE:
+            return 1;
+        case GL_SHORT:
+        case GL_UNSIGNED_SHORT:
+        case GL_2_BYTES:
+            return 2;
+        case GL_3_BYTES:
+            return 3;
+        case GL_INT:
+        case GL_UNSIGNED_INT:
+        case GL_FLOAT:
+        case GL_4_BYTES:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glFogfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_FOG_INDEX:
+        case GL_FOG_DENSITY:
+        case GL_FOG_START:
+        case GL_FOG_END:
+        case GL_FOG_MODE:
+        case GL_FOG_OFFSET_VALUE_SGIX:
+        case GL_FOG_DISTANCE_MODE_NV:
+            return 1;
+        case GL_FOG_COLOR:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glLightfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_SPOT_EXPONENT:
+        case GL_SPOT_CUTOFF:
+        case GL_CONSTANT_ATTENUATION:
+        case GL_LINEAR_ATTENUATION:
+        case GL_QUADRATIC_ATTENUATION:
+            return 1;
+        case GL_SPOT_DIRECTION:
+            return 3;
+        case GL_AMBIENT:
+        case GL_DIFFUSE:
+        case GL_SPECULAR:
+        case GL_POSITION:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glLightModelfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_LIGHT_MODEL_LOCAL_VIEWER:
+        case GL_LIGHT_MODEL_TWO_SIDE:
+        case GL_LIGHT_MODEL_COLOR_CONTROL:
+            return 1;
+        case GL_LIGHT_MODEL_AMBIENT:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glMaterialfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_SHININESS:
+            return 1;
+        case GL_COLOR_INDEXES:
+            return 3;
+        case GL_AMBIENT:
+        case GL_DIFFUSE:
+        case GL_SPECULAR:
+        case GL_EMISSION:
+        case GL_AMBIENT_AND_DIFFUSE:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glTexParameterfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_TEXTURE_MAG_FILTER:
+        case GL_TEXTURE_MIN_FILTER:
+        case GL_TEXTURE_WRAP_S:
+        case GL_TEXTURE_WRAP_T:
+        case GL_TEXTURE_PRIORITY:
+        case GL_TEXTURE_RESIDENT:
+        case GL_TEXTURE_WRAP_R:
+        case GL_TEXTURE_MIN_LOD:
+        case GL_TEXTURE_MAX_LOD:
+        case GL_TEXTURE_BASE_LEVEL:
+        case GL_TEXTURE_MAX_LEVEL:
+        case GL_GENERATE_MIPMAP:
+/*      case GL_GENERATE_MIPMAP_SGIS:*/
+        case GL_TEXTURE_LOD_BIAS:
+        case GL_DEPTH_TEXTURE_MODE:
+/*      case GL_DEPTH_TEXTURE_MODE_ARB:*/
+        case GL_TEXTURE_COMPARE_MODE:
+/*      case GL_TEXTURE_COMPARE_MODE_ARB:*/
+        case GL_TEXTURE_COMPARE_FUNC:
+/*      case GL_TEXTURE_COMPARE_FUNC_ARB:*/
+        case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
+/*      case GL_SHADOW_AMBIENT_SGIX:*/
+        case GL_TEXTURE_COMPARE_SGIX:
+        case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
+        case GL_TEXTURE_LOD_BIAS_S_SGIX:
+        case GL_TEXTURE_LOD_BIAS_T_SGIX:
+        case GL_TEXTURE_LOD_BIAS_R_SGIX:
+        case GL_TEXTURE_MAX_ANISOTROPY_EXT:
+        case GL_TEXTURE_MAX_CLAMP_S_SGIX:
+        case GL_TEXTURE_MAX_CLAMP_T_SGIX:
+        case GL_TEXTURE_MAX_CLAMP_R_SGIX:
+        case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
+            return 1;
+        case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
+        case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
+            return 2;
+        case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
+            return 3;
+        case GL_TEXTURE_BORDER_COLOR:
+        case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
+        case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glTexEnvfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_ALPHA_SCALE:
+        case GL_TEXTURE_ENV_MODE:
+        case GL_COMBINE_RGB:
+        case GL_COMBINE_ALPHA:
+        case GL_SOURCE0_RGB:
+        case GL_SOURCE1_RGB:
+        case GL_SOURCE2_RGB:
+        case GL_SOURCE0_ALPHA:
+        case GL_SOURCE1_ALPHA:
+        case GL_SOURCE2_ALPHA:
+        case GL_OPERAND0_RGB:
+        case GL_OPERAND1_RGB:
+        case GL_OPERAND2_RGB:
+        case GL_OPERAND0_ALPHA:
+        case GL_OPERAND1_ALPHA:
+        case GL_OPERAND2_ALPHA:
+        case GL_RGB_SCALE:
+        case GL_TEXTURE_LOD_BIAS:
+        case GL_COORD_REPLACE_ARB:
+        case GL_SOURCE3_RGB_NV:
+        case GL_SOURCE3_ALPHA_NV:
+        case GL_OPERAND3_RGB_NV:
+        case GL_OPERAND3_ALPHA_NV:
+            return 1;
+        case GL_TEXTURE_ENV_COLOR:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glTexGendv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_TEXTURE_GEN_MODE:
+            return 1;
+        case GL_OBJECT_PLANE:
+        case GL_EYE_PLANE:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glMap1d_size( GLenum e )
+{
+    switch( e ) {
+        case GL_MAP1_INDEX:
+        case GL_MAP1_TEXTURE_COORD_1:
+        case GL_MAP2_INDEX:
+        case GL_MAP2_TEXTURE_COORD_1:
+            return 1;
+        case GL_MAP1_TEXTURE_COORD_2:
+        case GL_MAP2_TEXTURE_COORD_2:
+            return 2;
+        case GL_MAP1_NORMAL:
+        case GL_MAP1_TEXTURE_COORD_3:
+        case GL_MAP1_VERTEX_3:
+        case GL_MAP2_NORMAL:
+        case GL_MAP2_TEXTURE_COORD_3:
+        case GL_MAP2_VERTEX_3:
+            return 3;
+        case GL_MAP1_COLOR_4:
+        case GL_MAP1_TEXTURE_COORD_4:
+        case GL_MAP1_VERTEX_4:
+        case GL_MAP2_COLOR_4:
+        case GL_MAP2_TEXTURE_COORD_4:
+        case GL_MAP2_VERTEX_4:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glColorTableParameterfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_COLOR_TABLE_FORMAT:
+        case GL_COLOR_TABLE_WIDTH:
+        case GL_COLOR_TABLE_RED_SIZE:
+        case GL_COLOR_TABLE_GREEN_SIZE:
+        case GL_COLOR_TABLE_BLUE_SIZE:
+        case GL_COLOR_TABLE_ALPHA_SIZE:
+        case GL_COLOR_TABLE_LUMINANCE_SIZE:
+        case GL_COLOR_TABLE_INTENSITY_SIZE:
+            return 1;
+        case GL_COLOR_TABLE_SCALE:
+        case GL_COLOR_TABLE_BIAS:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glConvolutionParameterfv_size( GLenum e )
+{
+    switch( e ) {
+        case GL_CONVOLUTION_BORDER_MODE_EXT:
+            return 1;
+        case GL_CONVOLUTION_BORDER_COLOR_HP:
+        case GL_CONVOLUTION_FILTER_SCALE_EXT:
+        case GL_CONVOLUTION_FILTER_BIAS_EXT:
+            return 4;
+        default: return 0;
+    }
+}
+
+INTERNAL PURE FASTCALL GLint
+__glPointParameterfvEXT_size( GLenum e )
+{
+    switch( e ) {
+        case GL_POINT_SIZE_MIN:
+/*      case GL_POINT_SIZE_MIN_ARB:*/
+/*      case GL_POINT_SIZE_MIN_EXT:*/
+/*      case GL_POINT_SIZE_MIN_SGIS:*/
+        case GL_POINT_SIZE_MAX:
+/*      case GL_POINT_SIZE_MAX_ARB:*/
+/*      case GL_POINT_SIZE_MAX_EXT:*/
+/*      case GL_POINT_SIZE_MAX_SGIS:*/
+        case GL_POINT_FADE_THRESHOLD_SIZE:
+/*      case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
+/*      case GL_POINT_FADE_THRESHOLD_SIZE_EXT:*/
+/*      case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
+        case GL_POINT_SPRITE_R_MODE_NV:
+            return 1;
+        case GL_POINT_DISTANCE_ATTENUATION:
+/*      case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
+/*      case GL_POINT_DISTANCE_ATTENUATION_EXT:*/
+/*      case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/
+            return 3;
+        default: return 0;
+    }
+}
+
+ALIAS( Fogiv, Fogfv )
+ALIAS( Lightiv, Lightfv )
+ALIAS( LightModeliv, LightModelfv )
+ALIAS( Materialiv, Materialfv )
+ALIAS( TexParameteriv, TexParameterfv )
+ALIAS( TexEnviv, TexEnvfv )
+ALIAS( TexGenfv, TexGendv )
+ALIAS( TexGeniv, TexGendv )
+ALIAS( Map1f, Map1d )
+ALIAS( Map2d, Map1d )
+ALIAS( Map2f, Map1d )
+ALIAS( ColorTableParameteriv, ColorTableParameterfv )
+ALIAS( ConvolutionParameteriv, ConvolutionParameterfv )
+ALIAS( PointParameterivNV, PointParameterfvEXT )
diff --git a/src/glx/x11/indirect_size.h b/src/glx/x11/indirect_size.h
new file mode 100644 (file)
index 0000000..6083ac5
--- /dev/null
@@ -0,0 +1,89 @@
+/* DO NOT EDIT - This file generated automatically by glX_proto_send.py (from Mesa) script */
+
+/*
+ * (C) Copyright IBM Corporation 2004
+ * 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, sub license,
+ * 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 (including the next
+ * paragraph) 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 NON-INFRINGEMENT.  IN NO EVENT SHALL
+ * IBM,
+ * AND/OR THEIR SUPPLIERS 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.
+ */
+
+
+/**
+ * \file
+ * Prototypes for functions used to determine the number of data elements in
+ * various GLX protocol messages.
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ */
+
+#if !defined( _GLXSIZE_H_ )
+#  define _GLXSIZE_H_
+
+
+#  if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+#    define PURE __attribute__((pure))
+#  else
+#    define PURE
+#  endif
+
+#  if defined(__i386__) && defined(__GNUC__)
+#    define FASTCALL __attribute__((fastcall))
+#  else
+#    define FASTCALL
+#  endif
+
+#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
+#    define INTERNAL  __attribute__((visibility("internal")))
+#  else
+#    define INTERNAL
+#  endif
+
+extern INTERNAL PURE FASTCALL GLint __glCallLists_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glFogfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glFogiv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glLightfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glLightiv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glLightModelfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glLightModeliv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glMaterialfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glMaterialiv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glTexParameterfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glTexParameteriv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glTexEnvfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glTexEnviv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glTexGendv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glTexGenfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glTexGeniv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glMap1d_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glMap1f_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glMap2d_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glMap2f_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glColorTableParameterfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glColorTableParameteriv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glConvolutionParameterfv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glConvolutionParameteriv_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glPointParameterfvEXT_size(GLenum);
+extern INTERNAL PURE FASTCALL GLint __glPointParameterivNV_size(GLenum);
+
+#  undef INTERNAL
+#  undef PURE
+#  undef FASTCALL
+#endif /* !defined( _GLXSIZE_H_ ) */
index 816a7ad..9245d2f 100644 (file)
@@ -49,7 +49,7 @@ void __indirect_glCallLists(GLsizei n, GLenum type, const GLvoid *lists)
     __GLX_DECLARE_VARIABLES();
     __GLX_LOAD_VARIABLES();
 
-    compsize = __glCallLists_size(n,type);
+    compsize = (n <= 0) ? 0 : __glCallLists_size(type) * n;
     cmdlen = __GLX_PAD(12 + compsize);
     if (!gc->currentDpy) return;
 
@@ -76,7 +76,7 @@ void __indirect_glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride,
     GLint k;
 
     __GLX_LOAD_VARIABLES();
-    k = __glEvalComputeK(target);
+    k = __glMap1d_size(target);
     if (k == 0) {
        __glXSetError(gc, GL_INVALID_ENUM);
        return;
@@ -138,7 +138,7 @@ void __indirect_glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride,
     GLint k;
 
     __GLX_LOAD_VARIABLES();
-    k = __glEvalComputeK(target);
+    k = __glMap1f_size(target);
     if (k == 0) {
        __glXSetError(gc, GL_INVALID_ENUM);
        return;
@@ -197,7 +197,7 @@ void __indirect_glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustr, GLi
     GLint k;
 
     __GLX_LOAD_VARIABLES();
-    k = __glEvalComputeK(target);
+    k = __glMap2d_size(target);
     if (k == 0) {
        __glXSetError(gc, GL_INVALID_ENUM);
        return;
@@ -270,7 +270,7 @@ void __indirect_glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustr, GLint
     GLint k;
 
     __GLX_LOAD_VARIABLES();
-    k = __glEvalComputeK(target);
+    k = __glMap2f_size(target);
     if (k == 0) {
        __glXSetError(gc, GL_INVALID_ENUM);
        return;
index 795eeff..80a721e 100644 (file)
 ** These are _size functions that are needed to pack the arguments
 ** into the protocol
 */
+
+#include "indirect_size.h"
+
 extern GLint __glBitmap_size(GLsizei w, GLsizei h);
-extern GLint __glCallLists_size(GLsizei n, GLenum type);
-extern GLint __glColorTableParameterfv_size(GLenum pname);
-extern GLint __glColorTableParameteriv_size(GLenum pname);
-extern GLint __glConvolutionParameterfv_size(GLenum pname);
-extern GLint __glConvolutionParameteriv_size(GLenum pname);
 extern GLint __glDrawPixels_size(GLenum format, GLenum type, GLsizei w,GLsizei h);
-extern GLint __glFogfv_size(GLenum pname);
-extern GLint __glFogiv_size(GLenum pname);
-extern GLint __glLightModelfv_size(GLenum pname);
-extern GLint __glLightModeliv_size(GLenum pname);
-extern GLint __glLightfv_size(GLenum pname);
-extern GLint __glLightiv_size(GLenum pname);
-extern GLint __glMaterialfv_size(GLenum pname);
-extern GLint __glMaterialiv_size(GLenum pname);
-extern GLint __glTexEnvfv_size(GLenum e);
-extern GLint __glTexEnviv_size(GLenum e);
-extern GLint __glTexGendv_size(GLenum e);
-extern GLint __glTexGenfv_size(GLenum e);
-extern GLint __glTexGeniv_size(GLenum pname);
 extern GLint __glTexImage1D_size(GLenum format, GLenum type, GLsizei w);
 extern GLint __glTexImage2D_size(GLenum format, GLenum type, GLsizei w, GLsizei h);
 extern GLint __glTexImage3D_size(GLenum format, GLenum type, GLsizei w, GLsizei h, GLsizei d);
-extern GLint __glTexParameterfv_size(GLenum e);
-extern GLint __glTexParameteriv_size(GLenum e);
-extern GLint __glPointParameterfvEXT_size(GLenum e);
-extern GLint __glPointParameterivNV_size(GLenum e);
 
 #endif /* _size_h_ */