13a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 23a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Mesa 3-D graphics library 33a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Version: 6.5 43a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 53a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. 63a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 73a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Permission is hereby granted, free of charge, to any person obtaining a 83a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * copy of this software and associated documentation files (the "Software"), 93a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * to deal in the Software without restriction, including without limitation 103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * the rights to use, copy, modify, merge, publish, distribute, sublicense, 113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * and/or sell copies of the Software, and to permit persons to whom the 123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Software is furnished to do so, subject to the following conditions: 133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * The above copyright notice and this permission notice shall be included 153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * in all copies or substantial portions of the Software. 163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * 173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_H 273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_H 283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __VMS 313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <GL/vms_x_fix.h> 323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org# ifdef __cplusplus 333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* VMS Xlib.h gives problems with C++. 343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * this avoids a bunch of trivial warnings */ 353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#pragma message disable nosimpint 363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <X11/Xlib.h> 393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <X11/Xutil.h> 403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __VMS 413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org# ifdef __cplusplus 423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#pragma message enable nosimpint 433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <GL/gl.h> 463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#if defined(USE_MGL_NAMESPACE) 493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include "glx_mangle.h" 503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __cplusplus 543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern "C" { 553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_1 1 593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_2 1 603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_3 1 613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION_1_4 1 623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EXTENSION_NAME "GLX" 643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Tokens for glXChooseVisual and glXGetConfig: 693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_USE_GL 1 713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BUFFER_SIZE 2 723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_LEVEL 3 733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RGBA 4 743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DOUBLEBUFFER 5 753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STEREO 6 763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX_BUFFERS 7 773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RED_SIZE 8 783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_GREEN_SIZE 9 793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BLUE_SIZE 10 803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ALPHA_SIZE 11 813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DEPTH_SIZE 12 823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STENCIL_SIZE 13 833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_RED_SIZE 14 843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_GREEN_SIZE 15 853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_BLUE_SIZE 16 863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_ALPHA_SIZE 17 873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Error codes returned by glXGetConfig: 913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_SCREEN 1 933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_ATTRIBUTE 2 943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NO_EXTENSION 3 953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_VISUAL 4 963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_CONTEXT 5 973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_VALUE 6 983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BAD_ENUM 7 993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 1023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * GLX 1.1 and later: 1033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 1043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VENDOR 1 1053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VERSION 2 1063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EXTENSIONS 3 1073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 1103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * GLX 1.3 and later: 1113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 1123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_CONFIG_CAVEAT 0x20 1133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DONT_CARE 0xFFFFFFFF 1143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_X_VISUAL_TYPE 0x22 1153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_TYPE 0x23 1163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_INDEX_VALUE 0x24 1173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_RED_VALUE 0x25 1183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_GREEN_VALUE 0x26 1193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_BLUE_VALUE 0x27 1203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 1213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_WINDOW_BIT 0x00000001 1223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PIXMAP_BIT 0x00000002 1233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_BIT 0x00000004 1243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX_BUFFERS_BIT 0x00000010 1253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 1263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 1273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 1283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 1293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DEPTH_BUFFER_BIT 0x00000020 1303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STENCIL_BUFFER_BIT 0x00000040 1313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ACCUM_BUFFER_BIT 0x00000080 1323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NONE 0x8000 1333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SLOW_CONFIG 0x8001 1343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRUE_COLOR 0x8002 1353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DIRECT_COLOR 0x8003 1363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PSEUDO_COLOR 0x8004 1373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STATIC_COLOR 0x8005 1383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_GRAY_SCALE 0x8006 1393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_STATIC_GRAY 0x8007 1403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_RGB 0x8008 1413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TRANSPARENT_INDEX 0x8009 1423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_VISUAL_ID 0x800B 1433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SCREEN 0x800C 1443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NON_CONFORMANT_CONFIG 0x800D 1453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DRAWABLE_TYPE 0x8010 1463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RENDER_TYPE 0x8011 1473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_X_RENDERABLE 0x8012 1483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FBCONFIG_ID 0x8013 1493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RGBA_TYPE 0x8014 1503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_COLOR_INDEX_TYPE 0x8015 1513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MAX_PBUFFER_WIDTH 0x8016 1523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MAX_PBUFFER_HEIGHT 0x8017 1533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MAX_PBUFFER_PIXELS 0x8018 1543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PRESERVED_CONTENTS 0x801B 1553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_LARGEST_PBUFFER 0x801C 1563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_WIDTH 0x801D 1573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_HEIGHT 0x801E 1583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EVENT_MASK 0x801F 1593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_DAMAGED 0x8020 1603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SAVED 0x8021 1613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_WINDOW 0x8022 1623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER 0x8023 1633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_HEIGHT 0x8040 1643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_WIDTH 0x8041 1653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_RGBA_BIT 0x00000001 1663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_COLOR_INDEX_BIT 0x00000002 1673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 1683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 1713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * GLX 1.4 and later: 1723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 1733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SAMPLE_BUFFERS 0x186a0 /*100000*/ 1743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_SAMPLES 0x186a1 /*100001*/ 1753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef struct __GLXcontextRec *GLXContext; 1793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXPixmap; 1803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXDrawable; 1813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.3 and later */ 1823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef struct __GLXFBConfigRec *GLXFBConfig; 1833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXFBConfigID; 1843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXContextID; 1853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXWindow; 1863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XID GLXPbuffer; 1873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 1883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 189760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org/* 190760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org** Events. 191760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX 192760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org** event - this helps initialization if the server supports the pbuffer 193760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org** extension and the client doesn't. 194760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org*/ 195760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#define GLX_PbufferClobber 0 196760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#define GLX_BufferSwapComplete 1 197760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 198760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org#define __GLX_NUMBER_EVENTS 17 1993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern XVisualInfo* glXChooseVisual( Display *dpy, int screen, 2013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *attribList ); 2023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis, 2043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org GLXContext shareList, Bool direct ); 2053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyContext( Display *dpy, GLXContext ctx ); 2073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable, 2093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org GLXContext ctx); 2103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst, 2123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org unsigned long mask ); 2133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXSwapBuffers( Display *dpy, GLXDrawable drawable ); 2153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual, 2173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org Pixmap pixmap ); 2183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap ); 2203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXQueryExtension( Display *dpy, int *errorb, int *event ); 2223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXQueryVersion( Display *dpy, int *maj, int *min ); 2243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXIsDirect( Display *dpy, GLXContext ctx ); 2263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetConfig( Display *dpy, XVisualInfo *visual, 2283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int attrib, int *value ); 2293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXContext glXGetCurrentContext( void ); 2313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXDrawable glXGetCurrentDrawable( void ); 2333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXWaitGL( void ); 2353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXWaitX( void ); 2373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXUseXFont( Font font, int first, int count, int list ); 2393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.1 and later */ 2433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern const char *glXQueryExtensionsString( Display *dpy, int screen ); 2443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern const char *glXQueryServerString( Display *dpy, int screen, int name ); 2463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern const char *glXGetClientString( Display *dpy, int name ); 2483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.2 and later */ 2513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Display *glXGetCurrentDisplay( void ); 2523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.3 and later */ 2553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen, 2563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org const int *attribList, int *nitems ); 2573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config, 2593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int attribute, int *value ); 2603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen, 2623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *nelements ); 2633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy, 2653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org GLXFBConfig config ); 2663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config, 2683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org Window win, const int *attribList ); 2693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyWindow( Display *dpy, GLXWindow window ); 2713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config, 2733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org Pixmap pixmap, const int *attribList ); 2743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap ); 2763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config, 2783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org const int *attribList ); 2793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf ); 2813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute, 2833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org unsigned int *value ); 2843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config, 2863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int renderType, GLXContext shareList, 2873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org Bool direct ); 2883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw, 2903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org GLXDrawable read, GLXContext ctx ); 2913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern GLXDrawable glXGetCurrentReadDrawable( void ); 2933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute, 2953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int *value ); 2963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 2973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXSelectEvent( Display *dpy, GLXDrawable drawable, 2983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org unsigned long mask ); 2993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable, 3013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org unsigned long *mask ); 3023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.3 function pointer typedefs */ 3043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements); 3053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements); 3063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value); 3073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config); 3083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list); 3093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win); 3103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list); 3113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap); 3123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list); 3133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf); 3143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); 3153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct); 3163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx); 3173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void); 3183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void); 3193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value); 3203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask); 3213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask); 3223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 3253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ARB 2. GLX_ARB_get_proc_address 3263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 3273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_ARB_get_proc_address 3283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ARB_get_proc_address 1 3293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void (*__GLXextFuncPtr)(void); 3313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *); 3323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_ARB_get_proc_address */ 3343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.4 and later */ 3383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void (*glXGetProcAddress(const GLubyte *procname))( void ); 3393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* GLX 1.4 function pointer typedefs */ 3413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName); 3423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_GLXEXT_LEGACY 3453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#include <GL/glxext.h> 3473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_GLXEXT_LEGACY */ 3493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/** 3523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org ** The following aren't in glxext.h yet. 3533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org **/ 3543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 3573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ???. GLX_NV_vertex_array_range 3583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 3593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_NV_vertex_array_range 3603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NV_vertex_array_range 3613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); 3633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXFreeMemoryNV(GLvoid *pointer); 3643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority); 3653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer); 3663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_NV_vertex_array_range */ 3683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 3713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * ARB ?. GLX_ARB_render_texture 3723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * XXX This was never finalized! 3733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 3743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_ARB_render_texture 3753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_ARB_render_texture 1 3763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); 3783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer); 3793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList); 3803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_ARB_render_texture */ 3823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 3853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * Remove this when glxext.h is updated. 3863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 3873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_NV_float_buffer 3883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_NV_float_buffer 1 3893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FLOAT_COMPONENTS_NV 0x20B0 3913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_NV_float_buffer */ 3933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 3963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 3973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * #?. GLX_MESA_swap_frame_usage 3983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 3993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_MESA_swap_frame_usage 4003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MESA_swap_frame_usage 1 4013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage); 4033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable); 4043a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable); 4053a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); 4063a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4073a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage); 4083a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); 4093a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable); 4103a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage); 4113a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4123a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_MESA_swap_frame_usage */ 4133a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4143a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4153a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 4173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * #?. GLX_MESA_swap_control 4183a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 4193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_MESA_swap_control 4203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MESA_swap_control 1 4213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXSwapIntervalMESA(unsigned int interval); 4233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern int glXGetSwapIntervalMESA(void); 4243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval); 4263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void); 4273a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4283a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_MESA_swap_control */ 4293a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4303a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4313a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4323a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 4333a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * #?. GLX_EXT_texture_from_pixmap 4343a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org * XXX not finished? 4353a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org */ 4363a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifndef GLX_EXT_texture_from_pixmap 4373a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_EXT_texture_from_pixmap 1 4383a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4393a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0 4403a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1 4413a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2 4423a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3 4433a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_Y_INVERTED_EXT 0x20D4 4443a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4453a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_EXT 0x20D5 4463a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_TARGET_EXT 0x20D6 4473a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_MIPMAP_TEXTURE_EXT 0x20D7 4483a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4493a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8 4503a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9 4513a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA 4523a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4533a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_1D_BIT_EXT 0x00000001 4543a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_2D_BIT_EXT 0x00000002 4553a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004 4563a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4573a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_1D_EXT 0x20DB 4583a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_2D_EXT 0x20DC 4593a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD 4603a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4613a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_LEFT_EXT 0x20DE 4623a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_RIGHT_EXT 0x20DF 4633a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_LEFT_EXT 0x20E0 4643a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_RIGHT_EXT 0x20E1 4653a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_FRONT_EXT GLX_FRONT_LEFT_EXT 4663a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_BACK_EXT GLX_BACK_LEFT_EXT 4673a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX0_EXT 0x20E2 4683a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX1_EXT 0x20E3 4693a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX2_EXT 0x20E4 4703a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX3_EXT 0x20E5 4713a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX4_EXT 0x20E6 4723a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX5_EXT 0x20E7 4733a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX6_EXT 0x20E8 4743a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX7_EXT 0x20E9 4753a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX8_EXT 0x20EA 4763a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#define GLX_AUX9_EXT 0x20EB 4773a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4783a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list); 4793a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgextern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer); 4803a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4813a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif /* GLX_EXT_texture_from_pixmap */ 4823a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4833a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4843a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4853a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 4863a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/*** Should these go here, or in another header? */ 4873a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org/* 4883a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org** GLX Events 4893a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org*/ 4903a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef struct { 4913a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int event_type; /* GLX_DAMAGED or GLX_SAVED */ 4923a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ 4933a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org unsigned long serial; /* # of last request processed by server */ 4943a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org Bool send_event; /* true if this came for SendEvent request */ 4953a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org Display *display; /* display the event was read from */ 4963a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org GLXDrawable drawable; /* XID of Drawable */ 4973a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org unsigned int buffer_mask; /* mask indicating which buffers are affected */ 4983a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org unsigned int aux_buffer; /* which aux buffer was affected */ 4993a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int x, y; 5003a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int width, height; 5013a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org int count; /* if nonzero, at least this many more */ 5023a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} GLXPbufferClobberEvent; 5033a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 504760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.orgtypedef struct { 505760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org int type; 506760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org unsigned long serial; /* # of last request processed by server */ 507760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org Bool send_event; /* true if this came from a SendEvent request */ 508760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org Display *display; /* Display the event was read from */ 509760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org GLXDrawable drawable; /* drawable on which event was requested in event mask */ 510760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org int event_type; 511760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org int64_t ust; 512760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org int64_t msc; 513760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org int64_t sbc; 514760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org} GLXBufferSwapComplete; 515760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org 5163a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.orgtypedef union __GLXEvent { 5173a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org GLXPbufferClobberEvent glxpbufferclobber; 518760fd893ba809a7a5daa25c2749ff502f7186e83kbr@chromium.org GLXBufferSwapComplete glxbufferswapcomplete; 5193a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org long pad[24]; 5203a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} GLXEvent; 5213a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 5223a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#ifdef __cplusplus 5233a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org} 5243a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 5253a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org 5263a0db227ffe90888ad760c61a63226988c974e0apatrick@chromium.org#endif 527