From 9bba1cfc39d35b847c479dcc1afef3d5d8fb0bfc Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Wed, 1 Dec 2004 09:11:04 +0000 Subject: [PATCH] Use indirect_size.c and indirect_size.h generated by using src/mesa/glapi/glX_proto_send.py with the '-m size_c' and '-m size_h' options. --- src/glx/x11/Makefile | 1 + src/glx/x11/compsize.c | 350 ----------------------------------- src/glx/x11/eval.c | 30 --- src/glx/x11/indirect_size.c | 357 ++++++++++++++++++++++++++++++++++++ src/glx/x11/indirect_size.h | 89 +++++++++ src/glx/x11/render2.c | 10 +- src/glx/x11/size.h | 25 +-- 7 files changed, 455 insertions(+), 407 deletions(-) create mode 100644 src/glx/x11/indirect_size.c create mode 100644 src/glx/x11/indirect_size.h diff --git a/src/glx/x11/Makefile b/src/glx/x11/Makefile index ee2bae128d8..2ef1b966fd8 100644 --- a/src/glx/x11/Makefile +++ b/src/glx/x11/Makefile @@ -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 \ diff --git a/src/glx/x11/compsize.c b/src/glx/x11/compsize.c index 3a562b91d71..9529496b127 100644 --- a/src/glx/x11/compsize.c +++ b/src/glx/x11/compsize.c @@ -35,7 +35,6 @@ */ #include -#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); -} diff --git a/src/glx/x11/eval.c b/src/glx/x11/eval.c index aba4b5767cd..0f94e6da6fd 100644 --- a/src/glx/x11/eval.c +++ b/src/glx/x11/eval.c @@ -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 index 00000000000..c9367e53ac1 --- /dev/null +++ b/src/glx/x11/indirect_size.c @@ -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 +#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 index 00000000000..6083ac51658 --- /dev/null +++ b/src/glx/x11/indirect_size.h @@ -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 + */ + +#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_ ) */ diff --git a/src/glx/x11/render2.c b/src/glx/x11/render2.c index 816a7adc0e2..9245d2f79e8 100644 --- a/src/glx/x11/render2.c +++ b/src/glx/x11/render2.c @@ -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; diff --git a/src/glx/x11/size.h b/src/glx/x11/size.h index 795eeffb8fd..80a721e54b4 100644 --- a/src/glx/x11/size.h +++ b/src/glx/x11/size.h @@ -41,32 +41,13 @@ ** 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_ */ -- 2.30.2