X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glstate.py;h=4c590769c585c2169a018771763aa780ec9656fb;hb=52383a3dbea2b02bf7fff85b50c62ef6a2132abb;hp=9f683933223a1682392eb232af9540cfcf05ea8c;hpb=56eb358519e4eb0bda1562163e733d5ff2c0e024;p=apitrace diff --git a/glstate.py b/glstate.py index 9f68393..4c59076 100644 --- a/glstate.py +++ b/glstate.py @@ -150,9 +150,9 @@ parameters = [ ("glGet", I, 1, "GL_CULL_FACE"), # 0x0B44 ("glGet", E, 1, "GL_CULL_FACE_MODE"), # 0x0B45 ("glGet", E, 1, "GL_FRONT_FACE"), # 0x0B46 - ("glGet", I, 1, "GL_LIGHTING"), # 0x0B50 - ("glGet", I, 1, "GL_LIGHT_MODEL_LOCAL_VIEWER"), # 0x0B51 - ("glGet", I, 1, "GL_LIGHT_MODEL_TWO_SIDE"), # 0x0B52 + ("glGet", B, 1, "GL_LIGHTING"), # 0x0B50 + ("glGet", B, 1, "GL_LIGHT_MODEL_LOCAL_VIEWER"), # 0x0B51 + ("glGet", B, 1, "GL_LIGHT_MODEL_TWO_SIDE"), # 0x0B52 ("glGet", F, 4, "GL_LIGHT_MODEL_AMBIENT"), # 0x0B53 ("glGet", E, 1, "GL_SHADE_MODEL"), # 0x0B54 ("glGet", E, 1, "GL_COLOR_MATERIAL_FACE"), # 0x0B55 @@ -268,7 +268,7 @@ parameters = [ ("glGet", F, 1, "GL_GREEN_BIAS"), # 0x0D19 ("glGet", F, 1, "GL_BLUE_SCALE"), # 0x0D1A ("glGet", F, 1, "GL_BLUE_BIAS"), # 0x0D1B - ("glGet", F, 1, "GL_ALPHA_SCALE"), # 0x0D1C + ("glGet,glGetTexEnv", F, 1, "GL_ALPHA_SCALE"), # 0x0D1C ("glGet", F, 1, "GL_ALPHA_BIAS"), # 0x0D1D ("glGet", F, 1, "GL_DEPTH_SCALE"), # 0x0D1E ("glGet", F, 1, "GL_DEPTH_BIAS"), # 0x0D1F @@ -335,16 +335,16 @@ parameters = [ ("glGet", X, 1, "GL_DONT_CARE"), # 0x1100 ("glGet", X, 1, "GL_FASTEST"), # 0x1101 ("glGet", X, 1, "GL_NICEST"), # 0x1102 - ("glGet", X, 1, "GL_AMBIENT"), # 0x1200 - ("glGet", X, 1, "GL_DIFFUSE"), # 0x1201 - ("glGet", X, 1, "GL_SPECULAR"), # 0x1202 - ("glGet", X, 1, "GL_POSITION"), # 0x1203 - ("glGet", X, 1, "GL_SPOT_DIRECTION"), # 0x1204 - ("glGet", X, 1, "GL_SPOT_EXPONENT"), # 0x1205 - ("glGet", X, 1, "GL_SPOT_CUTOFF"), # 0x1206 - ("glGet", X, 1, "GL_CONSTANT_ATTENUATION"), # 0x1207 - ("glGet", X, 1, "GL_LINEAR_ATTENUATION"), # 0x1208 - ("glGet", X, 1, "GL_QUADRATIC_ATTENUATION"), # 0x1209 + ("glGetLight,glGetMaterial", F, 4, "GL_AMBIENT"), # 0x1200 + ("glGetLight,glGetMaterial", F, 4, "GL_DIFFUSE"), # 0x1201 + ("glGetLight,glGetMaterial", F, 4, "GL_SPECULAR"), # 0x1202 + ("glGetLight", F, 4, "GL_POSITION"), # 0x1203 + ("glGetLight", F, 3, "GL_SPOT_DIRECTION"), # 0x1204 + ("glGetLight", F, 1, "GL_SPOT_EXPONENT"), # 0x1205 + ("glGetLight", F, 1, "GL_SPOT_CUTOFF"), # 0x1206 + ("glGetLight", F, 1, "GL_CONSTANT_ATTENUATION"), # 0x1207 + ("glGetLight", F, 1, "GL_LINEAR_ATTENUATION"), # 0x1208 + ("glGetLight", F, 1, "GL_QUADRATIC_ATTENUATION"), # 0x1209 ("glGet", X, 1, "GL_COMPILE"), # 0x1300 ("glGet", X, 1, "GL_COMPILE_AND_EXECUTE"), # 0x1301 ("glGet", X, 1, "GL_BYTE"), # 0x1400 @@ -378,10 +378,10 @@ parameters = [ ("glGet", X, 1, "GL_OR_INVERTED"), # 0x150D ("glGet", X, 1, "GL_NAND"), # 0x150E ("glGet", X, 1, "GL_SET"), # 0x150F - ("glGet", X, 1, "GL_EMISSION"), # 0x1600 - ("glGet", X, 1, "GL_SHININESS"), # 0x1601 - ("glGet", X, 1, "GL_AMBIENT_AND_DIFFUSE"), # 0x1602 - ("glGet", X, 1, "GL_COLOR_INDEXES"), # 0x1603 + ("glGetMaterial", F, 4, "GL_EMISSION"), # 0x1600 + ("glGetMaterial", F, 1, "GL_SHININESS"), # 0x1601 + (None, F, 4, "GL_AMBIENT_AND_DIFFUSE"), # 0x1602 + ("glGetMaterial", F, 3, "GL_COLOR_INDEXES"), # 0x1603 ("glGet", X, 1, "GL_MODELVIEW"), # 0x1700 ("glGet", X, 1, "GL_PROJECTION"), # 0x1701 ("glGet", X, 1, "GL_TEXTURE"), # 0x1702 @@ -447,15 +447,15 @@ parameters = [ ("glGet", X, 1, "GL_Q"), # 0x2003 ("glGet", X, 1, "GL_MODULATE"), # 0x2100 ("glGet", X, 1, "GL_DECAL"), # 0x2101 - ("glGet", X, 1, "GL_TEXTURE_ENV_MODE"), # 0x2200 - ("glGet", X, 1, "GL_TEXTURE_ENV_COLOR"), # 0x2201 - ("glGet", X, 1, "GL_TEXTURE_ENV"), # 0x2300 + ("glGetTexEnv", E, 1, "GL_TEXTURE_ENV_MODE"), # 0x2200 + ("glGetTexEnv", F, 4, "GL_TEXTURE_ENV_COLOR"), # 0x2201 + (None, X, 1, "GL_TEXTURE_ENV"), # 0x2300 ("glGet", X, 1, "GL_EYE_LINEAR"), # 0x2400 ("glGet", X, 1, "GL_OBJECT_LINEAR"), # 0x2401 ("glGet", X, 1, "GL_SPHERE_MAP"), # 0x2402 - ("glGet", X, 1, "GL_TEXTURE_GEN_MODE"), # 0x2500 - ("glGet", X, 1, "GL_OBJECT_PLANE"), # 0x2501 - ("glGet", X, 1, "GL_EYE_PLANE"), # 0x2502 + ("glGetTexGen", E, 1, "GL_TEXTURE_GEN_MODE"), # 0x2500 + ("glGetTexGen", F, 4, "GL_OBJECT_PLANE"), # 0x2501 + ("glGetTexGen", F, 4, "GL_EYE_PLANE"), # 0x2502 ("glGet", X, 1, "GL_NEAREST"), # 0x2600 ("glGet", X, 1, "GL_LINEAR"), # 0x2601 ("glGet", X, 1, "GL_NEAREST_MIPMAP_NEAREST"), # 0x2700 @@ -494,14 +494,14 @@ parameters = [ ("glGet", B, 1, "GL_CLIP_PLANE5"), # 0x3005 ("glGet", X, 1, "GL_CLIP_DISTANCE6"), # 0x3006 ("glGet", X, 1, "GL_CLIP_DISTANCE7"), # 0x3007 - ("glGet", I, 1, "GL_LIGHT0"), # 0x4000 - ("glGet", I, 1, "GL_LIGHT1"), # 0x4001 - ("glGet", I, 1, "GL_LIGHT2"), # 0x4002 - ("glGet", I, 1, "GL_LIGHT3"), # 0x4003 - ("glGet", I, 1, "GL_LIGHT4"), # 0x4004 - ("glGet", I, 1, "GL_LIGHT5"), # 0x4005 - ("glGet", I, 1, "GL_LIGHT6"), # 0x4006 - ("glGet", I, 1, "GL_LIGHT7"), # 0x4007 + (None, B, 1, "GL_LIGHT0"), # 0x4000 + (None, B, 1, "GL_LIGHT1"), # 0x4001 + (None, B, 1, "GL_LIGHT2"), # 0x4002 + (None, B, 1, "GL_LIGHT3"), # 0x4003 + (None, B, 1, "GL_LIGHT4"), # 0x4004 + (None, B, 1, "GL_LIGHT5"), # 0x4005 + (None, B, 1, "GL_LIGHT6"), # 0x4006 + (None, B, 1, "GL_LIGHT7"), # 0x4007 ("glGet", X, 1, "GL_ABGR_EXT"), # 0x8000 ("glGet", X, 1, "GL_CONSTANT_COLOR"), # 0x8001 ("glGet", X, 1, "GL_ONE_MINUS_CONSTANT_COLOR"), # 0x8002 @@ -604,7 +604,7 @@ parameters = [ ("glGet", X, 1, "GL_PROXY_TEXTURE_1D"), # 0x8063 ("glGet", X, 1, "GL_PROXY_TEXTURE_2D"), # 0x8064 ("glGet", X, 1, "GL_TEXTURE_TOO_LARGE_EXT"), # 0x8065 - ("glGetTexParameter", I, 1, "GL_TEXTURE_PRIORITY"), # 0x8066 + ("glGetTexParameter", F, 1, "GL_TEXTURE_PRIORITY"), # 0x8066 ("glGetTexParameter", B, 1, "GL_TEXTURE_RESIDENT"), # 0x8067 ("glGet", I, 1, "GL_TEXTURE_BINDING_1D"), # 0x8068 ("glGet", I, 1, "GL_TEXTURE_BINDING_2D"), # 0x8069 @@ -693,7 +693,7 @@ parameters = [ ("glGet", I, 1, "GL_TEXTURE_COLOR_TABLE_SGI"), # 0x80BC ("glGet", X, 1, "GL_PROXY_TEXTURE_COLOR_TABLE_SGI"), # 0x80BD ("glGet", X, 1, "GL_TEXTURE_ENV_BIAS_SGIX"), # 0x80BE - ("glGet", X, 1, "GL_TEXTURE_COMPARE_FAIL_VALUE_ARB"), # 0x80BF + ("glGetTexParameter", F, 1, "GL_TEXTURE_COMPARE_FAIL_VALUE_ARB"), # 0x80BF ("glGet", X, 1, "GL_BLEND_DST_RGB"), # 0x80C8 ("glGet", X, 1, "GL_BLEND_SRC_RGB"), # 0x80C9 ("glGet", X, 1, "GL_BLEND_DST_ALPHA"), # 0x80CA @@ -822,16 +822,16 @@ parameters = [ ("glGet", X, 1, "GL_TEXTURE_POST_SPECULAR_HP"), # 0x8168 ("glGet", X, 1, "GL_TEXTURE_PRE_SPECULAR_HP"), # 0x8169 ("glGet", X, 1, "GL_LINEAR_CLIPMAP_LINEAR_SGIX"), # 0x8170 - ("glGet", X, 1, "GL_TEXTURE_CLIPMAP_CENTER_SGIX"), # 0x8171 - ("glGet", X, 1, "GL_TEXTURE_CLIPMAP_FRAME_SGIX"), # 0x8172 - ("glGet", X, 1, "GL_TEXTURE_CLIPMAP_OFFSET_SGIX"), # 0x8173 - ("glGet", X, 1, "GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX"), # 0x8174 + ("glGetTexParameter", I, 2, "GL_TEXTURE_CLIPMAP_CENTER_SGIX"), # 0x8171 + ("glGetTexParameter", F, 1, "GL_TEXTURE_CLIPMAP_FRAME_SGIX"), # 0x8172 + ("glGetTexParameter", I, 2, "GL_TEXTURE_CLIPMAP_OFFSET_SGIX"), # 0x8173 + ("glGetTexParameter", I, 3, "GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX"), # 0x8174 ("glGet", X, 1, "GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX"), # 0x8175 ("glGet", X, 1, "GL_TEXTURE_CLIPMAP_DEPTH_SGIX"), # 0x8176 ("glGet", I, 1, "GL_MAX_CLIPMAP_DEPTH_SGIX"), # 0x8177 ("glGet", I, 1, "GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX"), # 0x8178 - ("glGet", X, 1, "GL_POST_TEXTURE_FILTER_BIAS_SGIX"), # 0x8179 - ("glGet", X, 1, "GL_POST_TEXTURE_FILTER_SCALE_SGIX"), # 0x817A + ("glGetTexParameter", F, 1, "GL_POST_TEXTURE_FILTER_BIAS_SGIX"), # 0x8179 + ("glGetTexParameter", F, 1, "GL_POST_TEXTURE_FILTER_SCALE_SGIX"), # 0x817A ("glGet", F, 2, "GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX"), # 0x817B ("glGet", F, 2, "GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX"), # 0x817C ("glGet", I, 1, "GL_REFERENCE_PLANE_SGIX"), # 0x817D @@ -851,9 +851,9 @@ parameters = [ ("glGet", I, 1, "GL_FRAMEZOOM_SGIX"), # 0x818B ("glGet", I, 1, "GL_FRAMEZOOM_FACTOR_SGIX"), # 0x818C ("glGet", I, 1, "GL_MAX_FRAMEZOOM_FACTOR_SGIX"), # 0x818D - ("glGet", X, 1, "GL_TEXTURE_LOD_BIAS_S_SGIX"), # 0x818E - ("glGet", X, 1, "GL_TEXTURE_LOD_BIAS_T_SGIX"), # 0x818F - ("glGet", X, 1, "GL_TEXTURE_LOD_BIAS_R_SGIX"), # 0x8190 + ("glGetTexParameter", F, 1, "GL_TEXTURE_LOD_BIAS_S_SGIX"), # 0x818E + ("glGetTexParameter", F, 1, "GL_TEXTURE_LOD_BIAS_T_SGIX"), # 0x818F + ("glGetTexParameter", F, 1, "GL_TEXTURE_LOD_BIAS_R_SGIX"), # 0x8190 ("glGetTexParameter", B, 1, "GL_GENERATE_MIPMAP"), # 0x8191 ("glGet", E, 1, "GL_GENERATE_MIPMAP_HINT"), # 0x8192 ("glGet", X, 1, "GL_GEOMETRY_DEFORMATION_SGIX"), # 0x8194 @@ -862,10 +862,10 @@ parameters = [ ("glGet", X, 1, "GL_MAX_DEFORMATION_ORDER_SGIX"), # 0x8197 ("glGet", I, 1, "GL_FOG_OFFSET_SGIX"), # 0x8198 ("glGet", F, 4, "GL_FOG_OFFSET_VALUE_SGIX"), # 0x8199 - ("glGet", X, 1, "GL_TEXTURE_COMPARE_SGIX"), # 0x819A - ("glGet", X, 1, "GL_TEXTURE_COMPARE_OPERATOR_SGIX"), # 0x819B - ("glGet", X, 1, "GL_TEXTURE_LEQUAL_R_SGIX"), # 0x819C - ("glGet", X, 1, "GL_TEXTURE_GEQUAL_R_SGIX"), # 0x819D + ("glGetTexParameter", B, 1, "GL_TEXTURE_COMPARE_SGIX"), # 0x819A + ("glGetTexParameter", E, 1, "GL_TEXTURE_COMPARE_OPERATOR_SGIX"), # 0x819B + (None, X, 1, "GL_TEXTURE_LEQUAL_R_SGIX"), # 0x819C + (None, X, 1, "GL_TEXTURE_GEQUAL_R_SGIX"), # 0x819D ("glGet", X, 1, "GL_DEPTH_COMPONENT16"), # 0x81A5 ("glGet", X, 1, "GL_DEPTH_COMPONENT24"), # 0x81A6 ("glGet", X, 1, "GL_DEPTH_COMPONENT32"), # 0x81A7 @@ -1037,9 +1037,9 @@ parameters = [ ("glGet", X, 1, "GL_UNSIGNED_SHORT_1_5_5_5_REV"), # 0x8366 ("glGet", X, 1, "GL_UNSIGNED_INT_8_8_8_8_REV"), # 0x8367 ("glGet", X, 1, "GL_UNSIGNED_INT_2_10_10_10_REV"), # 0x8368 - ("glGet", X, 1, "GL_TEXTURE_MAX_CLAMP_S_SGIX"), # 0x8369 - ("glGet", X, 1, "GL_TEXTURE_MAX_CLAMP_T_SGIX"), # 0x836A - ("glGet", X, 1, "GL_TEXTURE_MAX_CLAMP_R_SGIX"), # 0x836B + ("glGetTexParameter", F, 1, "GL_TEXTURE_MAX_CLAMP_S_SGIX"), # 0x8369 + ("glGetTexParameter", F, 1, "GL_TEXTURE_MAX_CLAMP_T_SGIX"), # 0x836A + ("glGetTexParameter", F, 1, "GL_TEXTURE_MAX_CLAMP_R_SGIX"), # 0x836B ("glGet", X, 1, "GL_MIRRORED_REPEAT"), # 0x8370 ("glGet", X, 1, "GL_RGB_S3TC"), # 0x83A0 ("glGet", X, 1, "GL_RGB4_S3TC"), # 0x83A1 @@ -1177,11 +1177,11 @@ parameters = [ ("glGet", X, 1, "GL_MAX_RECTANGLE_TEXTURE_SIZE"), # 0x84F8 ("glGet", X, 1, "GL_DEPTH_STENCIL"), # 0x84F9 ("glGet", X, 1, "GL_UNSIGNED_INT_24_8"), # 0x84FA - ("glGet", X, 1, "GL_MAX_TEXTURE_LOD_BIAS"), # 0x84FD - ("glGet", X, 1, "GL_TEXTURE_MAX_ANISOTROPY_EXT"), # 0x84FE - ("glGet", X, 1, "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"), # 0x84FF - ("glGet", X, 1, "GL_TEXTURE_FILTER_CONTROL"), # 0x8500 - ("glGet", X, 1, "GL_TEXTURE_LOD_BIAS"), # 0x8501 + ("glGet", F, 1, "GL_MAX_TEXTURE_LOD_BIAS"), # 0x84FD + ("glGetTexParameter", F, 1, "GL_TEXTURE_MAX_ANISOTROPY_EXT"), # 0x84FE + ("glGet", F, 1, "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT"), # 0x84FF + ("glGetTexEnv", E, 1, "GL_TEXTURE_FILTER_CONTROL"), # 0x8500 + ("glGetTexParameter,glGetTexEnv", F, 1, "GL_TEXTURE_LOD_BIAS"), # 0x8501 ("glGet", X, 1, "GL_MODELVIEW1_STACK_DEPTH_EXT"), # 0x8502 ("glGet", X, 1, "GL_COMBINE4_NV"), # 0x8503 ("glGet", X, 1, "GL_MAX_SHININESS_NV"), # 0x8504 @@ -1270,9 +1270,9 @@ parameters = [ ("glGet", X, 1, "GL_COMBINER7_NV"), # 0x8557 ("glGet", X, 1, "GL_PRIMITIVE_RESTART_NV"), # 0x8558 ("glGet", X, 1, "GL_PRIMITIVE_RESTART_INDEX_NV"), # 0x8559 - ("glGet", X, 1, "GL_FOG_DISTANCE_MODE_NV"), # 0x855A - ("glGet", X, 1, "GL_EYE_RADIAL_NV"), # 0x855B - ("glGet", X, 1, "GL_EYE_PLANE_ABSOLUTE_NV"), # 0x855C + ("glGet", E, 1, "GL_FOG_DISTANCE_MODE_NV"), # 0x855A + (None, X, 1, "GL_EYE_RADIAL_NV"), # 0x855B + (None, X, 1, "GL_EYE_PLANE_ABSOLUTE_NV"), # 0x855C ("glGet", X, 1, "GL_EMBOSS_LIGHT_NV"), # 0x855D ("glGet", X, 1, "GL_EMBOSS_CONSTANT_NV"), # 0x855E ("glGet", X, 1, "GL_EMBOSS_MAP_NV"), # 0x855F @@ -1286,29 +1286,29 @@ parameters = [ ("glGet", X, 1, "GL_ALPHA_MAX_CLAMP_INGR"), # 0x8567 ("glGet", X, 1, "GL_INTERLACE_READ_INGR"), # 0x8568 ("glGet", X, 1, "GL_COMBINE"), # 0x8570 - ("glGet", X, 1, "GL_COMBINE_RGB"), # 0x8571 - ("glGet", X, 1, "GL_COMBINE_ALPHA"), # 0x8572 - ("glGet", X, 1, "GL_RGB_SCALE"), # 0x8573 + ("glGetTexEnv", E, 1, "GL_COMBINE_RGB"), # 0x8571 + ("glGetTexEnv", E, 1, "GL_COMBINE_ALPHA"), # 0x8572 + ("glGetTexEnv", F, 1, "GL_RGB_SCALE"), # 0x8573 ("glGet", X, 1, "GL_ADD_SIGNED"), # 0x8574 ("glGet", X, 1, "GL_INTERPOLATE"), # 0x8575 ("glGet", X, 1, "GL_CONSTANT"), # 0x8576 ("glGet", X, 1, "GL_PRIMARY_COLOR"), # 0x8577 ("glGet", X, 1, "GL_PREVIOUS"), # 0x8578 - ("glGet", X, 1, "GL_SRC0_RGB"), # 0x8580 - ("glGet", X, 1, "GL_SRC1_RGB"), # 0x8581 - ("glGet", X, 1, "GL_SRC2_RGB"), # 0x8582 - ("glGet", X, 1, "GL_SOURCE3_RGB_NV"), # 0x8583 - ("glGet", X, 1, "GL_SRC0_ALPHA"), # 0x8588 - ("glGet", X, 1, "GL_SRC1_ALPHA"), # 0x8589 - ("glGet", X, 1, "GL_SRC2_ALPHA"), # 0x858A - ("glGet", X, 1, "GL_SOURCE3_ALPHA_NV"), # 0x858B - ("glGet", X, 1, "GL_OPERAND0_RGB"), # 0x8590 - ("glGet", X, 1, "GL_OPERAND1_RGB"), # 0x8591 - ("glGet", X, 1, "GL_OPERAND2_RGB"), # 0x8592 - ("glGet", X, 1, "GL_OPERAND0_ALPHA"), # 0x8598 - ("glGet", X, 1, "GL_OPERAND1_ALPHA"), # 0x8599 - ("glGet", X, 1, "GL_OPERAND2_ALPHA"), # 0x859A - ("glGet", X, 1, "GL_OPERAND3_ALPHA_NV"), # 0x859B + ("glGetTexEnv", E, 1, "GL_SRC0_RGB"), # 0x8580 + ("glGetTexEnv", E, 1, "GL_SRC1_RGB"), # 0x8581 + ("glGetTexEnv", E, 1, "GL_SRC2_RGB"), # 0x8582 + ("glGetTexEnv", E, 1, "GL_SOURCE3_RGB_NV"), # 0x8583 + ("glGetTexEnv", E, 1, "GL_SRC0_ALPHA"), # 0x8588 + ("glGetTexEnv", E, 1, "GL_SRC1_ALPHA"), # 0x8589 + ("glGetTexEnv", E, 1, "GL_SRC2_ALPHA"), # 0x858A + ("glGetTexEnv", E, 1, "GL_SOURCE3_ALPHA_NV"), # 0x858B + ("glGetTexEnv", E, 1, "GL_OPERAND0_RGB"), # 0x8590 + ("glGetTexEnv", E, 1, "GL_OPERAND1_RGB"), # 0x8591 + ("glGetTexEnv", E, 1, "GL_OPERAND2_RGB"), # 0x8592 + ("glGetTexEnv", E, 1, "GL_OPERAND0_ALPHA"), # 0x8598 + ("glGetTexEnv", E, 1, "GL_OPERAND1_ALPHA"), # 0x8599 + ("glGetTexEnv", E, 1, "GL_OPERAND2_ALPHA"), # 0x859A + ("glGetTexEnv", E, 1, "GL_OPERAND3_ALPHA_NV"), # 0x859B ("glGet", X, 1, "GL_PACK_SUBSAMPLE_RATE_SGIX"), # 0x85A0 ("glGet", X, 1, "GL_UNPACK_SUBSAMPLE_RATE_SGIX"), # 0x85A1 ("glGet", X, 1, "GL_PIXEL_SUBSAMPLE_4444_SGIX"), # 0x85A2 @@ -1322,15 +1322,15 @@ parameters = [ ("glGet", X, 1, "GL_BUFFER_OBJECT_APPLE"), # 0x85B3 ("glGet", X, 1, "GL_STORAGE_CLIENT_APPLE"), # 0x85B4 ("glGet", I, 1, "GL_VERTEX_ARRAY_BINDING"), # 0x85B5 - ("glGet", X, 1, "GL_TEXTURE_RANGE_LENGTH_APPLE"), # 0x85B7 - ("glGet", X, 1, "GL_TEXTURE_RANGE_POINTER_APPLE"), # 0x85B8 + ("glGetTexParameter", X, 1, "GL_TEXTURE_RANGE_LENGTH_APPLE"), # 0x85B7 + (None, P, 1, "GL_TEXTURE_RANGE_POINTER_APPLE"), # 0x85B8 ("glGet", X, 1, "GL_YCBCR_422_APPLE"), # 0x85B9 ("glGet", X, 1, "GL_UNSIGNED_SHORT_8_8_MESA"), # 0x85BA ("glGet", X, 1, "GL_UNSIGNED_SHORT_8_8_REV_MESA"), # 0x85BB - ("glGet", X, 1, "GL_TEXTURE_STORAGE_HINT_APPLE"), # 0x85BC - ("glGet", X, 1, "GL_STORAGE_PRIVATE_APPLE"), # 0x85BD - ("glGet", X, 1, "GL_STORAGE_CACHED_APPLE"), # 0x85BE - ("glGet", X, 1, "GL_STORAGE_SHARED_APPLE"), # 0x85BF + ("glGetTexParameter", E, 1, "GL_TEXTURE_STORAGE_HINT_APPLE"), # 0x85BC + (None, X, 1, "GL_STORAGE_PRIVATE_APPLE"), # 0x85BD + (None, X, 1, "GL_STORAGE_CACHED_APPLE"), # 0x85BE + (None, X, 1, "GL_STORAGE_SHARED_APPLE"), # 0x85BF ("glGet", X, 1, "GL_REPLACEMENT_CODE_ARRAY_SUN"), # 0x85C0 ("glGet", E, 1, "GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN"), # 0x85C1 ("glGet", X, 1, "GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN"), # 0x85C2 @@ -1488,12 +1488,12 @@ parameters = [ ("glGet", X, 1, "GL_SHADER_CONSISTENT_NV"), # 0x86DD ("glGet", X, 1, "GL_TEXTURE_SHADER_NV"), # 0x86DE ("glGet", X, 1, "GL_SHADER_OPERATION_NV"), # 0x86DF - ("glGet", X, 1, "GL_CULL_MODES_NV"), # 0x86E0 - ("glGet", X, 1, "GL_OFFSET_TEXTURE_MATRIX_NV"), # 0x86E1 + ("glGetTexEnv", F, 4, "GL_CULL_MODES_NV"), # 0x86E0 + ("glGetTexEnv", F, 4, "GL_OFFSET_TEXTURE_MATRIX_NV"), # 0x86E1 ("glGet", X, 1, "GL_OFFSET_TEXTURE_SCALE_NV"), # 0x86E2 ("glGet", X, 1, "GL_OFFSET_TEXTURE_BIAS_NV"), # 0x86E3 ("glGet", X, 1, "GL_PREVIOUS_TEXTURE_INPUT_NV"), # 0x86E4 - ("glGet", X, 1, "GL_CONST_EYE_NV"), # 0x86E5 + ("glGetTexEnv", F, 3, "GL_CONST_EYE_NV"), # 0x86E5 ("glGet", X, 1, "GL_PASS_THROUGH_NV"), # 0x86E6 ("glGet", X, 1, "GL_CULL_FRAGMENT_NV"), # 0x86E7 ("glGet", X, 1, "GL_OFFSET_TEXTURE_2D_NV"), # 0x86E8 @@ -1754,7 +1754,7 @@ parameters = [ ("glGet", E, 1, "GL_STENCIL_BACK_FAIL"), # 0x8801 ("glGet", E, 1, "GL_STENCIL_BACK_PASS_DEPTH_FAIL"), # 0x8802 ("glGet", E, 1, "GL_STENCIL_BACK_PASS_DEPTH_PASS"), # 0x8803 - ("glGet", X, 1, "GL_FRAGMENT_PROGRAM_ARB"), # 0x8804 + ("glGet", B, 1, "GL_FRAGMENT_PROGRAM_ARB"), # 0x8804 ("glGet", X, 1, "GL_PROGRAM_ALU_INSTRUCTIONS_ARB"), # 0x8805 ("glGet", X, 1, "GL_PROGRAM_TEX_INSTRUCTIONS_ARB"), # 0x8806 ("glGet", X, 1, "GL_PROGRAM_TEX_INDIRECTIONS_ARB"), # 0x8807 @@ -1833,7 +1833,7 @@ parameters = [ ("glGet", X, 1, "GL_SIGNED_HILO8_NV"), # 0x885F ("glGet", X, 1, "GL_FORCE_BLUE_TO_ONE_NV"), # 0x8860 ("glGet", X, 1, "GL_POINT_SPRITE"), # 0x8861 - ("glGet", X, 1, "GL_COORD_REPLACE"), # 0x8862 + ("glGetTexEnv", B, 1, "GL_COORD_REPLACE"), # 0x8862 ("glGet", X, 1, "GL_POINT_SPRITE_R_MODE_NV"), # 0x8863 ("glGet", X, 1, "GL_QUERY_COUNTER_BITS"), # 0x8864 ("glGet", X, 1, "GL_CURRENT_QUERY"), # 0x8865 @@ -1875,7 +1875,7 @@ parameters = [ ("glGet", X, 1, "GL_TEXTURE_FLOAT_COMPONENTS_NV"), # 0x888C ("glGet", X, 1, "GL_FLOAT_CLEAR_COLOR_VALUE_NV"), # 0x888D ("glGet", X, 1, "GL_FLOAT_RGBA_MODE_NV"), # 0x888E - ("glGet", X, 1, "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV"), # 0x888F + ("glGetTexParameter", E, 1, "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV"), # 0x888F ("glGet", X, 1, "GL_DEPTH_BOUNDS_TEST_EXT"), # 0x8890 ("glGet", X, 1, "GL_DEPTH_BOUNDS_EXT"), # 0x8891 ("glGet", X, 1, "GL_ARRAY_BUFFER"), # 0x8892 @@ -2521,11 +2521,11 @@ parameters = [ ("glGet", X, 1, "GL_PROGRAM_MATRIX_EXT"), # 0x8E2D ("glGet", X, 1, "GL_TRANSPOSE_PROGRAM_MATRIX_EXT"), # 0x8E2E ("glGet", X, 1, "GL_PROGRAM_MATRIX_STACK_DEPTH_EXT"), # 0x8E2F - ("glGet", X, 1, "GL_TEXTURE_SWIZZLE_R"), # 0x8E42 - ("glGet", X, 1, "GL_TEXTURE_SWIZZLE_G"), # 0x8E43 - ("glGet", X, 1, "GL_TEXTURE_SWIZZLE_B"), # 0x8E44 - ("glGet", X, 1, "GL_TEXTURE_SWIZZLE_A"), # 0x8E45 - ("glGet", X, 1, "GL_TEXTURE_SWIZZLE_RGBA"), # 0x8E46 + ("glGetTexParameter", E, 1, "GL_TEXTURE_SWIZZLE_R"), # 0x8E42 + ("glGetTexParameter", E, 1, "GL_TEXTURE_SWIZZLE_G"), # 0x8E43 + ("glGetTexParameter", E, 1, "GL_TEXTURE_SWIZZLE_B"), # 0x8E44 + ("glGetTexParameter", E, 1, "GL_TEXTURE_SWIZZLE_A"), # 0x8E45 + ("glGetTexParameter", E, 4, "GL_TEXTURE_SWIZZLE_RGBA"), # 0x8E46 ("glGet", X, 1, "GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS"), # 0x8E47 ("glGet", X, 1, "GL_ACTIVE_SUBROUTINE_MAX_LENGTH"), # 0x8E48 ("glGet", X, 1, "GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH"), # 0x8E49 @@ -2866,19 +2866,6 @@ class GetInflector: return self.suffixes[type] -glGet = GetInflector('glGet', { - B: 'Booleanv', - I: 'Integerv', - F: 'Floatv', - D: 'Doublev', - S: 'String', - P: 'Pointerv', -}) - -glGetTexParameter = GetInflector('glGetTexParameter', {I: 'iv', F: 'fv'}) - - - class StateGetter(Visitor): '''Type visitor that is able to extract the state via one of the glGet* functions. @@ -2886,46 +2873,61 @@ class StateGetter(Visitor): It will declare any temporary variable ''' - def __init__(self, inflector): - self.inflector = inflector + def __init__(self, radical, suffixes): + self.inflector = GetInflector(radical, suffixes) + + def __call__(self, *args): + pname = args[-1] + + for function, type, count, name in parameters: + if type is X: + continue + if name == pname: + if count != 1: + type = Array(type, str(count)) + + return type, self.visit(type, args) - def temp_name(self, pname): + raise NotImplementedError + + def temp_name(self, args): '''Return the name of a temporary variable to hold the state.''' + pname = args[-1] return pname[3:].lower() - def visit_const(self, const, pname): - return self.visit(const.type, pname) + def visit_const(self, const, args): + return self.visit(const.type, args) - def visit_scalar(self, type, pname): - temp_name = self.temp_name(pname) + def visit_scalar(self, type, args): + temp_name = self.temp_name(args) elem_type = self.inflector.reduced_type(type) inflection = self.inflector.inflect(type) if inflection.endswith('v'): print ' %s %s = 0;' % (elem_type, temp_name) - print ' %s(%s, &%s);' % (inflection, pname, temp_name) + print ' %s(%s, &%s);' % (inflection, ', '.join(args), temp_name) else: - print ' %s %s = %s(%s);' % (elem_type, temp_name, inflection, pname) + print ' %s %s = %s(%s);' % (elem_type, temp_name, inflection, ', '.join(args)) return temp_name - def visit_string(self, string, pname): - temp_name = self.temp_name(pname) + def visit_string(self, string, args): + temp_name = self.temp_name(args) inflection = self.inflector.inflect(string) assert not inflection.endswith('v') - print ' %s %s = (%s)%s(%s);' % (string, temp_name, string, inflection, pname) + print ' %s %s = (%s)%s(%s);' % (string, temp_name, string, inflection, ', '.join(args)) return temp_name - def visit_alias(self, alias, pname): - return self.visit_scalar(alias, pname) + def visit_alias(self, alias, args): + return self.visit_scalar(alias, args) - def visit_enum(self, enum, pname): - return self.visit(GLint, pname) + def visit_enum(self, enum, args): + return self.visit(GLint, args) - def visit_bitmask(self, bitmask, pname): - return self.visit(GLint, pname) + def visit_bitmask(self, bitmask, args): + return self.visit(GLint, args) - def visit_array(self, array, pname): - temp_name = self.temp_name(pname) + def visit_array(self, array, args): + temp_name = self.temp_name(args) if array.length == '1': return self.visit(array.type) elem_type = self.inflector.reduced_type(array.type) @@ -2933,18 +2935,35 @@ class StateGetter(Visitor): assert inflection.endswith('v') print ' %s %s[%s];' % (elem_type, temp_name, array.length) print ' memset(%s, 0, %s * sizeof *%s);' % (temp_name, array.length, temp_name) - print ' %s(%s, %s);' % (inflection, pname, temp_name) + print ' %s(%s, %s);' % (inflection, ', '.join(args), temp_name) return temp_name - def visit_opaque(self, pointer, pname): - temp_name = self.temp_name(pname) + def visit_opaque(self, pointer, args): + temp_name = self.temp_name(args) inflection = self.inflector.inflect(pointer) assert inflection.endswith('v') print ' GLvoid *%s;' % temp_name - print ' %s(%s, &%s);' % (inflection, pname, temp_name) + print ' %s(%s, &%s);' % (inflection, ', '.join(args), temp_name) return temp_name +glGet = StateGetter('glGet', { + B: 'Booleanv', + I: 'Integerv', + F: 'Floatv', + D: 'Doublev', + S: 'String', + P: 'Pointerv', +}) + +glGetMaterial = StateGetter('glGetMaterial', {I: 'iv', F: 'fv'}) +glGetLight = StateGetter('glGetLight', {I: 'iv', F: 'fv'}) +glGetVertexAttrib = StateGetter('glGetVertexAttrib', {I: 'iv', F: 'fv', D: 'dv', P: 'Pointerv'}) +glGetTexParameter = StateGetter('glGetTexParameter', {I: 'iv', F: 'fv'}) +glGetTexEnv = StateGetter('glGetTexEnv', {I: 'iv', F: 'fv'}) +glGetTexLevelParameter = StateGetter('glGetTexLevelParameter', {I: 'iv', F: 'fv'}) + + class JsonWriter(Visitor): '''Type visitor that will dump a value of the specified type through the JSON writer. @@ -3001,7 +3020,9 @@ class StateDumper: def dump(self): print '#include ' print '#include ' + print '#include ' print + print '#include "image.hpp"' print '#include "json.hpp"' print '#include "glimports.hpp"' print '#include "glproc.hpp"' @@ -3009,77 +3030,128 @@ class StateDumper: print '#include "glretrace.hpp"' print - print 'static void' - print 'writeEnum(JSONWriter &json, GLenum pname)' + print 'static const char *' + print '_enum_string(GLenum pname)' print '{' print ' switch(pname) {' for name in GLenum.values: print ' case %s:' % name - print ' json.writeString("%s");' % name - print ' break;' + print ' return "%s";' % name print ' default:' - print ' json.writeNumber(pname);' + print ' return NULL;' print ' }' print '}' print - # shaders - print 'static void' - print 'writeShader(JSONWriter &json, GLuint shader)' + print 'static const char *' + print 'enum_string(GLenum pname)' print '{' - print ' if (!shader) {' - print ' json.writeNull();' - print ' return;' - print ' }' - print - print ' json.beginObject();' - print ' GLint source_length = 0;' - print ' glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &source_length);' - print ' json.beginMember("source");' - print ' if (source_length) {' - print ' GLchar *source = new GLchar[source_length];' - print ' GLsizei length = 0;' - print ' source[0] = 0;' - print ' glGetShaderSource(shader, source_length, &length, source);' - print ' json.writeString(source);' - print ' delete [] source;' + print ' const char *s = _enum_string(pname);' + print ' if (s) {' + print ' return s;' print ' } else {' - print ' json.writeNull();' + print ' static char buf[16];' + print ' snprintf(buf, sizeof buf, "0x%04x", pname);' + print ' return buf;' print ' }' - print ' json.endMember(); // source' - print ' json.endObject();' print '}' print - # programs print 'static inline void' - print 'writeProgram(JSONWriter &json, GLuint program)' + print 'writeEnum(JSONWriter &json, GLenum pname)' print '{' - print ' if (!program) {' - print ' json.writeNull();' - print ' return;' - print ' }' - print - print ' json.beginObject();' - print ' json.beginMember("attached_shaders");' - print ' GLint attached_shaders = 0;' - print ' glGetProgramiv(program, GL_ATTACHED_SHADERS, &attached_shaders);' - print ' json.beginArray();' - print ' if (attached_shaders) {' - print ' GLuint *shaders = new GLuint[attached_shaders];' - print ' GLsizei count = 0;' - print ' glGetAttachedShaders(program, attached_shaders, &count, shaders);' - print ' for (GLsizei i = 0; i < count; ++ i) {' - print ' writeShader(json, shaders[i]);' - print ' }' - print ' delete [] shaders;' + print ' const char *s = _enum_string(pname);' + print ' if (s) {' + print ' json.writeString(s);' + print ' } else {' + print ' json.writeNumber(pname);' print ' }' - print ' json.endArray();' - print ' json.endMember();' - print ' json.endObject();' print '}' print + # shaders + print ''' +static void +writeShader(JSONWriter &json, GLuint shader) +{ + if (!shader) { + return; + } + + GLint shader_type = 0; + glGetShaderiv(shader, GL_SHADER_TYPE, &shader_type); + if (!shader_type) { + return; + } + + GLint source_length = 0; + glGetShaderiv(shader, GL_SHADER_SOURCE_LENGTH, &source_length); + if (!source_length) { + return; + } + + GLchar *source = new GLchar[source_length]; + GLsizei length = 0; + source[0] = 0; + glGetShaderSource(shader, source_length, &length, source); + + json.beginMember(enum_string(shader_type)); + json.writeString(source); + json.endMember(); + + delete [] source; +} + +static inline void +writeCurrentProgram(JSONWriter &json) +{ + GLint program = 0; + glGetIntegerv(GL_CURRENT_PROGRAM, &program); + if (!program) { + return; + } + + GLint attached_shaders = 0; + glGetProgramiv(program, GL_ATTACHED_SHADERS, &attached_shaders); + if (!attached_shaders) { + return; + } + + GLuint *shaders = new GLuint[attached_shaders]; + GLsizei count = 0; + glGetAttachedShaders(program, attached_shaders, &count, shaders); + for (GLsizei i = 0; i < count; ++ i) { + writeShader(json, shaders[i]); + } + delete [] shaders; +} + +static inline void +writeArbProgram(JSONWriter &json, GLenum target) +{ + if (!glIsEnabled(target)) { + return; + } + + GLint program_length = 0; + glGetProgramivARB(target, GL_PROGRAM_LENGTH_ARB, &program_length); + if (!program_length) { + return; + } + + GLchar *source = new GLchar[program_length + 1]; + source[0] = 0; + glGetProgramStringARB(target, GL_PROGRAM_STRING_ARB, source); + source[program_length] = 0; + + json.beginMember(enum_string(target)); + json.writeString(source); + json.endMember(); + + delete [] source; +} +''' + # texture image print ''' static inline void @@ -3122,7 +3194,11 @@ writeTextureImage(JSONWriter &json, GLenum target, GLint level) glGetTexImage(target, level, GL_RGBA, GL_UNSIGNED_BYTE, pixels); json.beginMember("__data__"); - json.writeBase64(pixels, depth * width * height * 4 * sizeof *pixels); + char *pngBuffer; + int pngBufferSize; + Image::writePixelsToBuffer(pixels, width, height, 4, false, &pngBuffer, &pngBufferSize); + json.writeBase64(pngBuffer, pngBufferSize); + free(pngBuffer); json.endMember(); // __data__ delete [] pixels; @@ -3173,7 +3249,13 @@ writeDrawBufferImage(JSONWriter &json, GLenum format) glReadBuffer(readbuffer); json.beginMember("__data__"); - json.writeBase64(pixels, width * height * channels * sizeof *pixels); + char *pngBuffer; + int pngBufferSize; + Image::writePixelsToBuffer(pixels, width, height, channels, false, &pngBuffer, &pngBufferSize); + //std::cerr <<" Before = "<<(width * height * channels * sizeof *pixels) + // <<", after = "<