1;;; 2;;; extract-abi.scm - Extract ABI of GL extension 3;;; 4;;; Copyright (c) 2005-2014 Shiro Kawai <shiro@acm.org> 5;;; 6;;; Redistribution and use in source and binary forms, with or without 7;;; modification, are permitted provided that the following conditions 8;;; are met: 9;;; 10;;; 1. Redistributions of source code must retain the above copyright 11;;; notice, this list of conditions and the following disclaimer. 12;;; 13;;; 2. Redistributions in binary form must reproduce the above copyright 14;;; notice, this list of conditions and the following disclaimer in the 15;;; documentation and/or other materials provided with the distribution. 16;;; 17;;; 3. Neither the name of the authors nor the names of its contributors 18;;; may be used to endorse or promote products derived from this 19;;; software without specific prior written permission. 20;;; 21;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24;;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25;;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26;;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 27;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28;;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29;;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32;;; 33;;; $Id: extract-abi.scm,v 1.4 2008-06-04 11:50:01 shirok Exp $ 34;;; 35 36;; We no longer count on glext.h on the target platform, since 37;; it may be out of date and it is too much hassle to support 38;; all variations. Instead of putting #ifdef's here and there, 39;; we shifted everthing to runtime---so we include all the 40;; declarations of the most recent GL extension ABI, and the 41;; code queries availability of each of them at runtime. 42;; 43;; This program scans glext.h as the authoritative source of GL 44;; extension ABI. We can use the most recent version from here: 45;; http://oss.sgi.com/projects/ogl-sample/ABI/ 46;; 47;; It generates glext-abi.scm, which contains necessary information 48;; in S-expressions. 49;; 50;; The format of glext-abi.scm is as follows. 51;; 52;; * Constants 53;; 54;; (define-constant GL_UNSIGNED_BYTE_3_3_2 #x8032) 55;; 56;; * Extensions 57;; 58;; (define-extension-name GL_ARB_fragment_program) 59;; 60;; * Entry points 61;; 62;; (define-entry-point glBindProgramNV "... typedef ...") 63;; 64 65(use srfi-1) 66(use srfi-13) 67 68;; Predefined OpenGL 1.0 and 1.1 symbols 69 70(define *gl-syms* 71 '( 72 ;; Boolean values 73 (GL_FALSE . #x0) 74 (GL_TRUE . #x1) 75 76 ;; Data types 77 (GL_BYTE . #x1400) 78 (GL_UNSIGNED_BYTE . #x1401) 79 (GL_SHORT . #x1402) 80 (GL_UNSIGNED_SHORT . #x1403) 81 (GL_INT . #x1404) 82 (GL_UNSIGNED_INT . #x1405) 83 (GL_FLOAT . #x1406) 84 (GL_DOUBLE . #x140A) 85 (GL_2_BYTES . #x1407) 86 (GL_3_BYTES . #x1408) 87 (GL_4_BYTES . #x1409) 88 89 ;; Primitives 90 (GL_POINTS . #x0000) 91 (GL_LINES . #x0001) 92 (GL_LINE_LOOP . #x0002) 93 (GL_LINE_STRIP . #x0003) 94 (GL_TRIANGLES . #x0004) 95 (GL_TRIANGLE_STRIP . #x0005) 96 (GL_TRIANGLE_FAN . #x0006) 97 (GL_QUADS . #x0007) 98 (GL_QUAD_STRIP . #x0008) 99 (GL_POLYGON . #x0009) 100 101 ;; Vertex Arrays 102 (GL_VERTEX_ARRAY . #x8074) 103 (GL_NORMAL_ARRAY . #x8075) 104 (GL_COLOR_ARRAY . #x8076) 105 (GL_INDEX_ARRAY . #x8077) 106 (GL_TEXTURE_COORD_ARRAY . #x8078) 107 (GL_EDGE_FLAG_ARRAY . #x8079) 108 (GL_VERTEX_ARRAY_SIZE . #x807A) 109 (GL_VERTEX_ARRAY_TYPE . #x807B) 110 (GL_VERTEX_ARRAY_STRIDE . #x807C) 111 (GL_NORMAL_ARRAY_TYPE . #x807E) 112 (GL_NORMAL_ARRAY_STRIDE . #x807F) 113 (GL_COLOR_ARRAY_SIZE . #x8081) 114 (GL_COLOR_ARRAY_TYPE . #x8082) 115 (GL_COLOR_ARRAY_STRIDE . #x8083) 116 (GL_INDEX_ARRAY_TYPE . #x8085) 117 (GL_INDEX_ARRAY_STRIDE . #x8086) 118 (GL_TEXTURE_COORD_ARRAY_SIZE . #x8088) 119 (GL_TEXTURE_COORD_ARRAY_TYPE . #x8089) 120 (GL_TEXTURE_COORD_ARRAY_STRIDE . #x808A) 121 (GL_EDGE_FLAG_ARRAY_STRIDE . #x808C) 122 (GL_VERTEX_ARRAY_POINTER . #x808E) 123 (GL_NORMAL_ARRAY_POINTER . #x808F) 124 (GL_COLOR_ARRAY_POINTER . #x8090) 125 (GL_INDEX_ARRAY_POINTER . #x8091) 126 (GL_TEXTURE_COORD_ARRAY_POINTER . #x8092) 127 (GL_EDGE_FLAG_ARRAY_POINTER . #x8093) 128 (GL_V2F . #x2A20) 129 (GL_V3F . #x2A21) 130 (GL_C4UB_V2F . #x2A22) 131 (GL_C4UB_V3F . #x2A23) 132 (GL_C3F_V3F . #x2A24) 133 (GL_N3F_V3F . #x2A25) 134 (GL_C4F_N3F_V3F . #x2A26) 135 (GL_T2F_V3F . #x2A27) 136 (GL_T4F_V4F . #x2A28) 137 (GL_T2F_C4UB_V3F . #x2A29) 138 (GL_T2F_C3F_V3F . #x2A2A) 139 (GL_T2F_N3F_V3F . #x2A2B) 140 (GL_T2F_C4F_N3F_V3F . #x2A2C) 141 (GL_T4F_C4F_N3F_V4F . #x2A2D) 142 143 ;; Matrix Mode 144 (GL_MATRIX_MODE . #x0BA0) 145 (GL_MODELVIEW . #x1700) 146 (GL_PROJECTION . #x1701) 147 (GL_TEXTURE . #x1702) 148 149 ;; Points 150 (GL_POINT_SMOOTH . #x0B10) 151 (GL_POINT_SIZE . #x0B11) 152 (GL_POINT_SIZE_GRANULARITY . #x0B13) 153 (GL_POINT_SIZE_RANGE . #x0B12) 154 155 ;; Lines 156 (GL_LINE_SMOOTH . #x0B20) 157 (GL_LINE_STIPPLE . #x0B24) 158 (GL_LINE_STIPPLE_PATTERN . #x0B25) 159 (GL_LINE_STIPPLE_REPEAT . #x0B26) 160 (GL_LINE_WIDTH . #x0B21) 161 (GL_LINE_WIDTH_GRANULARITY . #x0B23) 162 (GL_LINE_WIDTH_RANGE . #x0B22) 163 164 ;; Polygons 165 (GL_POINT . #x1B00) 166 (GL_LINE . #x1B01) 167 (GL_FILL . #x1B02) 168 (GL_CW . #x0900) 169 (GL_CCW . #x0901) 170 (GL_FRONT . #x0404) 171 (GL_BACK . #x0405) 172 (GL_POLYGON_MODE . #x0B40) 173 (GL_POLYGON_SMOOTH . #x0B41) 174 (GL_POLYGON_STIPPLE . #x0B42) 175 (GL_EDGE_FLAG . #x0B43) 176 (GL_CULL_FACE . #x0B44) 177 (GL_CULL_FACE_MODE . #x0B45) 178 (GL_FRONT_FACE . #x0B46) 179 (GL_POLYGON_OFFSET_FACTOR . #x8038) 180 (GL_POLYGON_OFFSET_UNITS . #x2A00) 181 (GL_POLYGON_OFFSET_POINT . #x2A01) 182 (GL_POLYGON_OFFSET_LINE . #x2A02) 183 (GL_POLYGON_OFFSET_FILL . #x8037) 184 185 ;; Display Lists 186 (GL_COMPILE . #x1300) 187 (GL_COMPILE_AND_EXECUTE . #x1301) 188 (GL_LIST_BASE . #x0B32) 189 (GL_LIST_INDEX . #x0B33) 190 (GL_LIST_MODE . #x0B30) 191 192 ;; Depth buffer 193 (GL_NEVER . #x0200) 194 (GL_LESS . #x0201) 195 (GL_EQUAL . #x0202) 196 (GL_LEQUAL . #x0203) 197 (GL_GREATER . #x0204) 198 (GL_NOTEQUAL . #x0205) 199 (GL_GEQUAL . #x0206) 200 (GL_ALWAYS . #x0207) 201 (GL_DEPTH_TEST . #x0B71) 202 (GL_DEPTH_BITS . #x0D56) 203 (GL_DEPTH_CLEAR_VALUE . #x0B73) 204 (GL_DEPTH_FUNC . #x0B74) 205 (GL_DEPTH_RANGE . #x0B70) 206 (GL_DEPTH_WRITEMASK . #x0B72) 207 (GL_DEPTH_COMPONENT . #x1902) 208 209 ;; Lighting 210 (GL_LIGHTING . #x0B50) 211 (GL_LIGHT0 . #x4000) 212 (GL_LIGHT1 . #x4001) 213 (GL_LIGHT2 . #x4002) 214 (GL_LIGHT3 . #x4003) 215 (GL_LIGHT4 . #x4004) 216 (GL_LIGHT5 . #x4005) 217 (GL_LIGHT6 . #x4006) 218 (GL_LIGHT7 . #x4007) 219 (GL_SPOT_EXPONENT . #x1205) 220 (GL_SPOT_CUTOFF . #x1206) 221 (GL_CONSTANT_ATTENUATION . #x1207) 222 (GL_LINEAR_ATTENUATION . #x1208) 223 (GL_QUADRATIC_ATTENUATION . #x1209) 224 (GL_AMBIENT . #x1200) 225 (GL_DIFFUSE . #x1201) 226 (GL_SPECULAR . #x1202) 227 (GL_SHININESS . #x1601) 228 (GL_EMISSION . #x1600) 229 (GL_POSITION . #x1203) 230 (GL_SPOT_DIRECTION . #x1204) 231 (GL_AMBIENT_AND_DIFFUSE . #x1602) 232 (GL_COLOR_INDEXES . #x1603) 233 (GL_LIGHT_MODEL_TWO_SIDE . #x0B52) 234 (GL_LIGHT_MODEL_LOCAL_VIEWER . #x0B51) 235 (GL_LIGHT_MODEL_AMBIENT . #x0B53) 236 (GL_FRONT_AND_BACK . #x0408) 237 (GL_SHADE_MODEL . #x0B54) 238 (GL_FLAT . #x1D00) 239 (GL_SMOOTH . #x1D01) 240 (GL_COLOR_MATERIAL . #x0B57) 241 (GL_COLOR_MATERIAL_FACE . #x0B55) 242 (GL_COLOR_MATERIAL_PARAMETER . #x0B56) 243 (GL_NORMALIZE . #x0BA1) 244 245 ;; User clipping planes 246 (GL_CLIP_PLANE0 . #x3000) 247 (GL_CLIP_PLANE1 . #x3001) 248 (GL_CLIP_PLANE2 . #x3002) 249 (GL_CLIP_PLANE3 . #x3003) 250 (GL_CLIP_PLANE4 . #x3004) 251 (GL_CLIP_PLANE5 . #x3005) 252 253 ;; Accumulation buffer 254 (GL_ACCUM_RED_BITS . #x0D58) 255 (GL_ACCUM_GREEN_BITS . #x0D59) 256 (GL_ACCUM_BLUE_BITS . #x0D5A) 257 (GL_ACCUM_ALPHA_BITS . #x0D5B) 258 (GL_ACCUM_CLEAR_VALUE . #x0B80) 259 (GL_ACCUM . #x0100) 260 (GL_ADD . #x0104) 261 (GL_LOAD . #x0101) 262 (GL_MULT . #x0103) 263 (GL_RETURN . #x0102) 264 265 ;; Alpha testing 266 (GL_ALPHA_TEST . #x0BC0) 267 (GL_ALPHA_TEST_REF . #x0BC2) 268 (GL_ALPHA_TEST_FUNC . #x0BC1) 269 270 ;; Blending 271 (GL_BLEND . #x0BE2) 272 (GL_BLEND_SRC . #x0BE1) 273 (GL_BLEND_DST . #x0BE0) 274 (GL_ZERO . #x0) 275 (GL_ONE . #x1) 276 (GL_SRC_COLOR . #x0300) 277 (GL_ONE_MINUS_SRC_COLOR . #x0301) 278 (GL_SRC_ALPHA . #x0302) 279 (GL_ONE_MINUS_SRC_ALPHA . #x0303) 280 (GL_DST_ALPHA . #x0304) 281 (GL_ONE_MINUS_DST_ALPHA . #x0305) 282 (GL_DST_COLOR . #x0306) 283 (GL_ONE_MINUS_DST_COLOR . #x0307) 284 (GL_SRC_ALPHA_SATURATE . #x0308) 285 (GL_CONSTANT_COLOR . #x8001) 286 (GL_ONE_MINUS_CONSTANT_COLOR . #x8002) 287 (GL_CONSTANT_ALPHA . #x8003) 288 (GL_ONE_MINUS_CONSTANT_ALPHA . #x8004) 289 290 ;; Render Mode 291 (GL_FEEDBACK . #x1C01) 292 (GL_RENDER . #x1C00) 293 (GL_SELECT . #x1C02) 294 295 ;; Feedback 296 (GL_2D . #x0600) 297 (GL_3D . #x0601) 298 (GL_3D_COLOR . #x0602) 299 (GL_3D_COLOR_TEXTURE . #x0603) 300 (GL_4D_COLOR_TEXTURE . #x0604) 301 (GL_POINT_TOKEN . #x0701) 302 (GL_LINE_TOKEN . #x0702) 303 (GL_LINE_RESET_TOKEN . #x0707) 304 (GL_POLYGON_TOKEN . #x0703) 305 (GL_BITMAP_TOKEN . #x0704) 306 (GL_DRAW_PIXEL_TOKEN . #x0705) 307 (GL_COPY_PIXEL_TOKEN . #x0706) 308 (GL_PASS_THROUGH_TOKEN . #x0700) 309 (GL_FEEDBACK_BUFFER_POINTER . #x0DF0) 310 (GL_FEEDBACK_BUFFER_SIZE . #x0DF1) 311 (GL_FEEDBACK_BUFFER_TYPE . #x0DF2) 312 313 ;; Selection 314 (GL_SELECTION_BUFFER_POINTER . #x0DF3) 315 (GL_SELECTION_BUFFER_SIZE . #x0DF4) 316 317 ;; Fog 318 (GL_FOG . #x0B60) 319 (GL_FOG_MODE . #x0B65) 320 (GL_FOG_DENSITY . #x0B62) 321 (GL_FOG_COLOR . #x0B66) 322 (GL_FOG_INDEX . #x0B61) 323 (GL_FOG_START . #x0B63) 324 (GL_FOG_END . #x0B64) 325 (GL_LINEAR . #x2601) 326 (GL_EXP . #x0800) 327 (GL_EXP2 . #x0801) 328 329 ;; Logic Ops 330 (GL_LOGIC_OP . #x0BF1) 331 (GL_INDEX_LOGIC_OP . #x0BF1) 332 (GL_COLOR_LOGIC_OP . #x0BF2) 333 (GL_LOGIC_OP_MODE . #x0BF0) 334 (GL_CLEAR . #x1500) 335 (GL_SET . #x150F) 336 (GL_COPY . #x1503) 337 (GL_COPY_INVERTED . #x150C) 338 (GL_NOOP . #x1505) 339 (GL_INVERT . #x150A) 340 (GL_AND . #x1501) 341 (GL_NAND . #x150E) 342 (GL_OR . #x1507) 343 (GL_NOR . #x1508) 344 (GL_XOR . #x1506) 345 (GL_EQUIV . #x1509) 346 (GL_AND_REVERSE . #x1502) 347 (GL_AND_INVERTED . #x1504) 348 (GL_OR_REVERSE . #x150B) 349 (GL_OR_INVERTED . #x150D) 350 351 ;; Stencil 352 (GL_STENCIL_TEST . #x0B90) 353 (GL_STENCIL_WRITEMASK . #x0B98) 354 (GL_STENCIL_BITS . #x0D57) 355 (GL_STENCIL_FUNC . #x0B92) 356 (GL_STENCIL_VALUE_MASK . #x0B93) 357 (GL_STENCIL_REF . #x0B97) 358 (GL_STENCIL_FAIL . #x0B94) 359 (GL_STENCIL_PASS_DEPTH_PASS . #x0B96) 360 (GL_STENCIL_PASS_DEPTH_FAIL . #x0B95) 361 (GL_STENCIL_CLEAR_VALUE . #x0B91) 362 (GL_STENCIL_INDEX . #x1901) 363 (GL_KEEP . #x1E00) 364 (GL_REPLACE . #x1E01) 365 (GL_INCR . #x1E02) 366 (GL_DECR . #x1E03) 367 368 ;; Buffers, Pixel Drawing/Reading 369 (GL_NONE . #x0) 370 (GL_LEFT . #x0406) 371 (GL_RIGHT . #x0407) 372 ;;GL_FRONT . #x0404 373 ;;GL_BACK . #x0405 374 ;;GL_FRONT_AND_BACK . #x0408 375 (GL_FRONT_LEFT . #x0400) 376 (GL_FRONT_RIGHT . #x0401) 377 (GL_BACK_LEFT . #x0402) 378 (GL_BACK_RIGHT . #x0403) 379 (GL_AUX0 . #x0409) 380 (GL_AUX1 . #x040A) 381 (GL_AUX2 . #x040B) 382 (GL_AUX3 . #x040C) 383 (GL_COLOR_INDEX . #x1900) 384 (GL_RED . #x1903) 385 (GL_GREEN . #x1904) 386 (GL_BLUE . #x1905) 387 (GL_ALPHA . #x1906) 388 (GL_LUMINANCE . #x1909) 389 (GL_LUMINANCE_ALPHA . #x190A) 390 (GL_ALPHA_BITS . #x0D55) 391 (GL_RED_BITS . #x0D52) 392 (GL_GREEN_BITS . #x0D53) 393 (GL_BLUE_BITS . #x0D54) 394 (GL_INDEX_BITS . #x0D51) 395 (GL_SUBPIXEL_BITS . #x0D50) 396 (GL_AUX_BUFFERS . #x0C00) 397 (GL_READ_BUFFER . #x0C02) 398 (GL_DRAW_BUFFER . #x0C01) 399 (GL_DOUBLEBUFFER . #x0C32) 400 (GL_STEREO . #x0C33) 401 (GL_BITMAP . #x1A00) 402 (GL_COLOR . #x1800) 403 (GL_DEPTH . #x1801) 404 (GL_STENCIL . #x1802) 405 (GL_DITHER . #x0BD0) 406 (GL_RGB . #x1907) 407 (GL_RGBA . #x1908) 408 409 ;; Implementation limits 410 (GL_MAX_LIST_NESTING . #x0B31) 411 (GL_MAX_ATTRIB_STACK_DEPTH . #x0D35) 412 (GL_MAX_MODELVIEW_STACK_DEPTH . #x0D36) 413 (GL_MAX_NAME_STACK_DEPTH . #x0D37) 414 (GL_MAX_PROJECTION_STACK_DEPTH . #x0D38) 415 (GL_MAX_TEXTURE_STACK_DEPTH . #x0D39) 416 (GL_MAX_EVAL_ORDER . #x0D30) 417 (GL_MAX_LIGHTS . #x0D31) 418 (GL_MAX_CLIP_PLANES . #x0D32) 419 (GL_MAX_TEXTURE_SIZE . #x0D33) 420 (GL_MAX_PIXEL_MAP_TABLE . #x0D34) 421 (GL_MAX_VIEWPORT_DIMS . #x0D3A) 422 (GL_MAX_CLIENT_ATTRIB_STACK_DEPTH . #x0D3B) 423 424 ;; Gets 425 (GL_ATTRIB_STACK_DEPTH . #x0BB0) 426 (GL_CLIENT_ATTRIB_STACK_DEPTH . #x0BB1) 427 (GL_COLOR_CLEAR_VALUE . #x0C22) 428 (GL_COLOR_WRITEMASK . #x0C23) 429 (GL_CURRENT_INDEX . #x0B01) 430 (GL_CURRENT_COLOR . #x0B00) 431 (GL_CURRENT_NORMAL . #x0B02) 432 (GL_CURRENT_RASTER_COLOR . #x0B04) 433 (GL_CURRENT_RASTER_DISTANCE . #x0B09) 434 (GL_CURRENT_RASTER_INDEX . #x0B05) 435 (GL_CURRENT_RASTER_POSITION . #x0B07) 436 (GL_CURRENT_RASTER_TEXTURE_COORDS . #x0B06) 437 (GL_CURRENT_RASTER_POSITION_VALID . #x0B08) 438 (GL_CURRENT_TEXTURE_COORDS . #x0B03) 439 (GL_INDEX_CLEAR_VALUE . #x0C20) 440 (GL_INDEX_MODE . #x0C30) 441 (GL_INDEX_WRITEMASK . #x0C21) 442 (GL_MODELVIEW_MATRIX . #x0BA6) 443 (GL_MODELVIEW_STACK_DEPTH . #x0BA3) 444 (GL_NAME_STACK_DEPTH . #x0D70) 445 (GL_PROJECTION_MATRIX . #x0BA7) 446 (GL_PROJECTION_STACK_DEPTH . #x0BA4) 447 (GL_RENDER_MODE . #x0C40) 448 (GL_RGBA_MODE . #x0C31) 449 (GL_TEXTURE_MATRIX . #x0BA8) 450 (GL_TEXTURE_STACK_DEPTH . #x0BA5) 451 (GL_VIEWPORT . #x0BA2) 452 453 ;; Evaluators 454 (GL_AUTO_NORMAL . #x0D80) 455 (GL_MAP1_COLOR_4 . #x0D90) 456 (GL_MAP1_GRID_DOMAIN . #x0DD0) 457 (GL_MAP1_GRID_SEGMENTS . #x0DD1) 458 (GL_MAP1_INDEX . #x0D91) 459 (GL_MAP1_NORMAL . #x0D92) 460 (GL_MAP1_TEXTURE_COORD_1 . #x0D93) 461 (GL_MAP1_TEXTURE_COORD_2 . #x0D94) 462 (GL_MAP1_TEXTURE_COORD_3 . #x0D95) 463 (GL_MAP1_TEXTURE_COORD_4 . #x0D96) 464 (GL_MAP1_VERTEX_3 . #x0D97) 465 (GL_MAP1_VERTEX_4 . #x0D98) 466 (GL_MAP2_COLOR_4 . #x0DB0) 467 (GL_MAP2_GRID_DOMAIN . #x0DD2) 468 (GL_MAP2_GRID_SEGMENTS . #x0DD3) 469 (GL_MAP2_INDEX . #x0DB1) 470 (GL_MAP2_NORMAL . #x0DB2) 471 (GL_MAP2_TEXTURE_COORD_1 . #x0DB3) 472 (GL_MAP2_TEXTURE_COORD_2 . #x0DB4) 473 (GL_MAP2_TEXTURE_COORD_3 . #x0DB5) 474 (GL_MAP2_TEXTURE_COORD_4 . #x0DB6) 475 (GL_MAP2_VERTEX_3 . #x0DB7) 476 (GL_MAP2_VERTEX_4 . #x0DB8) 477 (GL_COEFF . #x0A00) 478 (GL_DOMAIN . #x0A02) 479 (GL_ORDER . #x0A01) 480 481 ;; Hints 482 (GL_FOG_HINT . #x0C54) 483 (GL_LINE_SMOOTH_HINT . #x0C52) 484 (GL_PERSPECTIVE_CORRECTION_HINT . #x0C50) 485 (GL_POINT_SMOOTH_HINT . #x0C51) 486 (GL_POLYGON_SMOOTH_HINT . #x0C53) 487 (GL_DONT_CARE . #x1100) 488 (GL_FASTEST . #x1101) 489 (GL_NICEST . #x1102) 490 491 ;; Scissor box 492 (GL_SCISSOR_TEST . #x0C11) 493 (GL_SCISSOR_BOX . #x0C10) 494 495 ;; Pixel Mode / Transfer 496 (GL_MAP_COLOR . #x0D10) 497 (GL_MAP_STENCIL . #x0D11) 498 (GL_INDEX_SHIFT . #x0D12) 499 (GL_INDEX_OFFSET . #x0D13) 500 (GL_RED_SCALE . #x0D14) 501 (GL_RED_BIAS . #x0D15) 502 (GL_GREEN_SCALE . #x0D18) 503 (GL_GREEN_BIAS . #x0D19) 504 (GL_BLUE_SCALE . #x0D1A) 505 (GL_BLUE_BIAS . #x0D1B) 506 (GL_ALPHA_SCALE . #x0D1C) 507 (GL_ALPHA_BIAS . #x0D1D) 508 (GL_DEPTH_SCALE . #x0D1E) 509 (GL_DEPTH_BIAS . #x0D1F) 510 (GL_PIXEL_MAP_S_TO_S_SIZE . #x0CB1) 511 (GL_PIXEL_MAP_I_TO_I_SIZE . #x0CB0) 512 (GL_PIXEL_MAP_I_TO_R_SIZE . #x0CB2) 513 (GL_PIXEL_MAP_I_TO_G_SIZE . #x0CB3) 514 (GL_PIXEL_MAP_I_TO_B_SIZE . #x0CB4) 515 (GL_PIXEL_MAP_I_TO_A_SIZE . #x0CB5) 516 (GL_PIXEL_MAP_R_TO_R_SIZE . #x0CB6) 517 (GL_PIXEL_MAP_G_TO_G_SIZE . #x0CB7) 518 (GL_PIXEL_MAP_B_TO_B_SIZE . #x0CB8) 519 (GL_PIXEL_MAP_A_TO_A_SIZE . #x0CB9) 520 (GL_PIXEL_MAP_S_TO_S . #x0C71) 521 (GL_PIXEL_MAP_I_TO_I . #x0C70) 522 (GL_PIXEL_MAP_I_TO_R . #x0C72) 523 (GL_PIXEL_MAP_I_TO_G . #x0C73) 524 (GL_PIXEL_MAP_I_TO_B . #x0C74) 525 (GL_PIXEL_MAP_I_TO_A . #x0C75) 526 (GL_PIXEL_MAP_R_TO_R . #x0C76) 527 (GL_PIXEL_MAP_G_TO_G . #x0C77) 528 (GL_PIXEL_MAP_B_TO_B . #x0C78) 529 (GL_PIXEL_MAP_A_TO_A . #x0C79) 530 (GL_PACK_ALIGNMENT . #x0D05) 531 (GL_PACK_LSB_FIRST . #x0D01) 532 (GL_PACK_ROW_LENGTH . #x0D02) 533 (GL_PACK_SKIP_PIXELS . #x0D04) 534 (GL_PACK_SKIP_ROWS . #x0D03) 535 (GL_PACK_SWAP_BYTES . #x0D00) 536 (GL_UNPACK_ALIGNMENT . #x0CF5) 537 (GL_UNPACK_LSB_FIRST . #x0CF1) 538 (GL_UNPACK_ROW_LENGTH . #x0CF2) 539 (GL_UNPACK_SKIP_PIXELS . #x0CF4) 540 (GL_UNPACK_SKIP_ROWS . #x0CF3) 541 (GL_UNPACK_SWAP_BYTES . #x0CF0) 542 (GL_ZOOM_X . #x0D16) 543 (GL_ZOOM_Y . #x0D17) 544 545 ;; Texture mapping 546 (GL_TEXTURE_ENV . #x2300) 547 (GL_TEXTURE_ENV_MODE . #x2200) 548 (GL_TEXTURE_1D . #x0DE0) 549 (GL_TEXTURE_2D . #x0DE1) 550 (GL_TEXTURE_WRAP_S . #x2802) 551 (GL_TEXTURE_WRAP_T . #x2803) 552 (GL_TEXTURE_MAG_FILTER . #x2800) 553 (GL_TEXTURE_MIN_FILTER . #x2801) 554 (GL_TEXTURE_ENV_COLOR . #x2201) 555 (GL_TEXTURE_GEN_S . #x0C60) 556 (GL_TEXTURE_GEN_T . #x0C61) 557 (GL_TEXTURE_GEN_MODE . #x2500) 558 (GL_TEXTURE_BORDER_COLOR . #x1004) 559 (GL_TEXTURE_WIDTH . #x1000) 560 (GL_TEXTURE_HEIGHT . #x1001) 561 (GL_TEXTURE_BORDER . #x1005) 562 (GL_TEXTURE_COMPONENTS . #x1003) 563 (GL_TEXTURE_RED_SIZE . #x805C) 564 (GL_TEXTURE_GREEN_SIZE . #x805D) 565 (GL_TEXTURE_BLUE_SIZE . #x805E) 566 (GL_TEXTURE_ALPHA_SIZE . #x805F) 567 (GL_TEXTURE_LUMINANCE_SIZE . #x8060) 568 (GL_TEXTURE_INTENSITY_SIZE . #x8061) 569 (GL_NEAREST_MIPMAP_NEAREST . #x2700) 570 (GL_NEAREST_MIPMAP_LINEAR . #x2702) 571 (GL_LINEAR_MIPMAP_NEAREST . #x2701) 572 (GL_LINEAR_MIPMAP_LINEAR . #x2703) 573 (GL_OBJECT_LINEAR . #x2401) 574 (GL_OBJECT_PLANE . #x2501) 575 (GL_EYE_LINEAR . #x2400) 576 (GL_EYE_PLANE . #x2502) 577 (GL_SPHERE_MAP . #x2402) 578 (GL_DECAL . #x2101) 579 (GL_MODULATE . #x2100) 580 (GL_NEAREST . #x2600) 581 (GL_REPEAT . #x2901) 582 (GL_CLAMP . #x2900) 583 (GL_S . #x2000) 584 (GL_T . #x2001) 585 (GL_R . #x2002) 586 (GL_Q . #x2003) 587 (GL_TEXTURE_GEN_R . #x0C62) 588 (GL_TEXTURE_GEN_Q . #x0C63) 589 590 ;; Utility 591 (GL_VENDOR . #x1F00) 592 (GL_RENDERER . #x1F01) 593 (GL_VERSION . #x1F02) 594 (GL_EXTENSIONS . #x1F03) 595 596 ;; Errors 597 (GL_NO_ERROR . #x0) 598 (GL_INVALID_VALUE . #x0501) 599 (GL_INVALID_ENUM . #x0500) 600 (GL_INVALID_OPERATION . #x0502) 601 (GL_STACK_OVERFLOW . #x0503) 602 (GL_STACK_UNDERFLOW . #x0504) 603 (GL_OUT_OF_MEMORY . #x0505) 604 605 ;; glPush/PopAttrib bits 606 (GL_CURRENT_BIT . #x00000001) 607 (GL_POINT_BIT . #x00000002) 608 (GL_LINE_BIT . #x00000004) 609 (GL_POLYGON_BIT . #x00000008) 610 (GL_POLYGON_STIPPLE_BIT . #x00000010) 611 (GL_PIXEL_MODE_BIT . #x00000020) 612 (GL_LIGHTING_BIT . #x00000040) 613 (GL_FOG_BIT . #x00000080) 614 (GL_DEPTH_BUFFER_BIT . #x00000100) 615 (GL_ACCUM_BUFFER_BIT . #x00000200) 616 (GL_STENCIL_BUFFER_BIT . #x00000400) 617 (GL_VIEWPORT_BIT . #x00000800) 618 (GL_TRANSFORM_BIT . #x00001000) 619 (GL_ENABLE_BIT . #x00002000) 620 (GL_COLOR_BUFFER_BIT . #x00004000) 621 (GL_HINT_BIT . #x00008000) 622 (GL_EVAL_BIT . #x00010000) 623 (GL_LIST_BIT . #x00020000) 624 (GL_TEXTURE_BIT . #x00040000) 625 (GL_SCISSOR_BIT . #x00080000) 626 (GL_ALL_ATTRIB_BITS . #x000FFFFF) 627 628 629 ;; OpenGL 1.1 630 (GL_PROXY_TEXTURE_1D . #x8063) 631 (GL_PROXY_TEXTURE_2D . #x8064) 632 (GL_TEXTURE_PRIORITY . #x8066) 633 (GL_TEXTURE_RESIDENT . #x8067) 634 (GL_TEXTURE_BINDING_1D . #x8068) 635 (GL_TEXTURE_BINDING_2D . #x8069) 636 (GL_TEXTURE_INTERNAL_FORMAT . #x1003) 637 (GL_ALPHA4 . #x803B) 638 (GL_ALPHA8 . #x803C) 639 (GL_ALPHA12 . #x803D) 640 (GL_ALPHA16 . #x803E) 641 (GL_LUMINANCE4 . #x803F) 642 (GL_LUMINANCE8 . #x8040) 643 (GL_LUMINANCE12 . #x8041) 644 (GL_LUMINANCE16 . #x8042) 645 (GL_LUMINANCE4_ALPHA4 . #x8043) 646 (GL_LUMINANCE6_ALPHA2 . #x8044) 647 (GL_LUMINANCE8_ALPHA8 . #x8045) 648 (GL_LUMINANCE12_ALPHA4 . #x8046) 649 (GL_LUMINANCE12_ALPHA12 . #x8047) 650 (GL_LUMINANCE16_ALPHA16 . #x8048) 651 (GL_INTENSITY . #x8049) 652 (GL_INTENSITY4 . #x804A) 653 (GL_INTENSITY8 . #x804B) 654 (GL_INTENSITY12 . #x804C) 655 (GL_INTENSITY16 . #x804D) 656 (GL_R3_G3_B2 . #x2A10) 657 (GL_RGB4 . #x804F) 658 (GL_RGB5 . #x8050) 659 (GL_RGB8 . #x8051) 660 (GL_RGB10 . #x8052) 661 (GL_RGB12 . #x8053) 662 (GL_RGB16 . #x8054) 663 (GL_RGBA2 . #x8055) 664 (GL_RGBA4 . #x8056) 665 (GL_RGB5_A1 . #x8057) 666 (GL_RGBA8 . #x8058) 667 (GL_RGB10_A2 . #x8059) 668 (GL_RGBA12 . #x805A) 669 (GL_RGBA16 . #x805B) 670 (GL_CLIENT_PIXEL_STORE_BIT . #x00000001) 671 (GL_CLIENT_VERTEX_ARRAY_BIT . #x00000002) 672 (GL_ALL_CLIENT_ATTRIB_BITS . #xFFFFFFFF) 673 (GL_CLIENT_ALL_ATTRIB_BITS . #xFFFFFFFF) 674 )) 675 676(define (scan) 677 (let loop ([x '()] ;; extensions name 678 [c (reverse *gl-syms*)] ;; constants [(name . value)] 679 [p '()]) ;; entry points [(name PFNNAMEPROC . typedef)] 680 (rxmatch-case (read-line) 681 [test eof-object? 682 (values (reverse x) (reverse c) (reverse p))] 683 [#/^#ifndef\s+(GL_\w+)/ (#f extname) 684 (let1 en (string->symbol extname) 685 (if (memq en x) 686 (loop x c p) 687 (loop (cons (string->symbol extname) x) c p)))] 688 [#/^#define\s+(GL_\w+)\s+(?:0x([\da-fA-F]+)|(\d+)|(\w+))/ 689 (#f cname xval dval ref) 690 (let1 cn (string->symbol cname) 691 (if (or (assq cn c) (memq cn x)) 692 (loop x c p) 693 (let1 const (cons cn 694 (cond [xval (string->number xval 16)] 695 [dval (string->number dval)] 696 [else (string->symbol ref)])) 697 (loop x (cons const c) p))))] 698 [#/^(?:extern|GLAPI)\b.*?\b(?:APIENTRY\s+)?(gl\w+)/ (#f fname) 699 (loop x c 700 (cons (list fname (format "PFN~aPROC" (string-upcase fname))) 701 p))] 702 [#/^typedef.*(PFN.*?PROC\b).*/ (typedef name) 703 (if-let1 apientry (find (^e (string=? name (cadr e))) p) 704 (set-cdr! (cdr apientry) typedef)) 705 (loop x c p)] 706 [else (loop x c p)]))) 707 708(define (emit extensions constants entry-points) 709 (print ";; This file should reflect the newest OpenGL extension ABI") 710 (print ";; You can regenarate this by feeding glext.h to extract-abi.scm") 711 (print ";; To obtain the newest glext.h, see") 712 (print ";; http://oss.sgi.com/projects/ogl-sample/ABI/") 713 (print) 714 (print ";; Extensions") 715 (dolist (e extensions) 716 (format #t "(define-extension-name ~a)\n" e)) 717 (print) 718 (print ";; Constants") 719 (dolist (c constants) 720 (let loop ((val (cdr c))) 721 (if (number? val) 722 (format #t "(define-constant ~a #x~4,'0x)\n" (car c) val) 723 (let1 p (assq val constants) 724 (if p 725 (loop (cdr p)) 726 (error "huh? " val)))))) 727 (print) 728 (print ";; API entry points") 729 (dolist (e entry-points) 730 (format #t "(define-entry-point ~a ~a ~s)\n" (car e) (cadr e) (cddr e))) 731 (print) 732 ) 733 734(define (main args) 735 (call-with-values scan emit) 736 0) 737 738 739 740 741