Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Mesa 3-D graphics library
  3.  * Version:  6.5
  4.  *
  5.  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  6.  *
  7.  * Permission is hereby granted, free of charge, to any person obtaining a
  8.  * copy of this software and associated documentation files (the "Software"),
  9.  * to deal in the Software without restriction, including without limitation
  10.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  11.  * and/or sell copies of the Software, and to permit persons to whom the
  12.  * Software is furnished to do so, subject to the following conditions:
  13.  *
  14.  * The above copyright notice and this permission notice shall be included
  15.  * in all copies or substantial portions of the Software.
  16.  *
  17.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  18.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  20.  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  21.  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  22.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  23.  */
  24.  
  25.  
  26. #ifndef GLX_H
  27. #define GLX_H
  28.  
  29.  
  30. #ifdef __VMS
  31. #include <GL/vms_x_fix.h>
  32. # ifdef __cplusplus
  33. /* VMS Xlib.h gives problems with C++.
  34.  * this avoids a bunch of trivial warnings */
  35. #pragma message disable nosimpint
  36. #endif
  37. #endif
  38. #include <X11/Xlib.h>
  39. #include <X11/Xutil.h>
  40. #ifdef __VMS
  41. # ifdef __cplusplus
  42. #pragma message enable nosimpint
  43. #endif
  44. #endif
  45. #include <GL/gl.h>
  46.  
  47.  
  48. #if defined(USE_MGL_NAMESPACE)
  49. #include "glx_mangle.h"
  50. #endif
  51.  
  52.  
  53. #ifdef __cplusplus
  54. extern "C" {
  55. #endif
  56.  
  57.  
  58. #define GLX_VERSION_1_1         1
  59. #define GLX_VERSION_1_2         1
  60. #define GLX_VERSION_1_3         1
  61. #define GLX_VERSION_1_4         1
  62.  
  63. #define GLX_EXTENSION_NAME   "GLX"
  64.  
  65.  
  66.  
  67. /*
  68.  * Tokens for glXChooseVisual and glXGetConfig:
  69.  */
  70. #define GLX_USE_GL              1
  71. #define GLX_BUFFER_SIZE         2
  72. #define GLX_LEVEL               3
  73. #define GLX_RGBA                4
  74. #define GLX_DOUBLEBUFFER        5
  75. #define GLX_STEREO              6
  76. #define GLX_AUX_BUFFERS         7
  77. #define GLX_RED_SIZE            8
  78. #define GLX_GREEN_SIZE          9
  79. #define GLX_BLUE_SIZE           10
  80. #define GLX_ALPHA_SIZE          11
  81. #define GLX_DEPTH_SIZE          12
  82. #define GLX_STENCIL_SIZE        13
  83. #define GLX_ACCUM_RED_SIZE      14
  84. #define GLX_ACCUM_GREEN_SIZE    15
  85. #define GLX_ACCUM_BLUE_SIZE     16
  86. #define GLX_ACCUM_ALPHA_SIZE    17
  87.  
  88.  
  89. /*
  90.  * Error codes returned by glXGetConfig:
  91.  */
  92. #define GLX_BAD_SCREEN          1
  93. #define GLX_BAD_ATTRIBUTE       2
  94. #define GLX_NO_EXTENSION        3
  95. #define GLX_BAD_VISUAL          4
  96. #define GLX_BAD_CONTEXT         5
  97. #define GLX_BAD_VALUE           6
  98. #define GLX_BAD_ENUM            7
  99.  
  100.  
  101. /*
  102.  * GLX 1.1 and later:
  103.  */
  104. #define GLX_VENDOR              1
  105. #define GLX_VERSION             2
  106. #define GLX_EXTENSIONS          3
  107.  
  108.  
  109. /*
  110.  * GLX 1.3 and later:
  111.  */
  112. #define GLX_CONFIG_CAVEAT               0x20
  113. #define GLX_DONT_CARE                   0xFFFFFFFF
  114. #define GLX_X_VISUAL_TYPE               0x22
  115. #define GLX_TRANSPARENT_TYPE            0x23
  116. #define GLX_TRANSPARENT_INDEX_VALUE     0x24
  117. #define GLX_TRANSPARENT_RED_VALUE       0x25
  118. #define GLX_TRANSPARENT_GREEN_VALUE     0x26
  119. #define GLX_TRANSPARENT_BLUE_VALUE      0x27
  120. #define GLX_TRANSPARENT_ALPHA_VALUE     0x28
  121. #define GLX_WINDOW_BIT                  0x00000001
  122. #define GLX_PIXMAP_BIT                  0x00000002
  123. #define GLX_PBUFFER_BIT                 0x00000004
  124. #define GLX_AUX_BUFFERS_BIT             0x00000010
  125. #define GLX_FRONT_LEFT_BUFFER_BIT       0x00000001
  126. #define GLX_FRONT_RIGHT_BUFFER_BIT      0x00000002
  127. #define GLX_BACK_LEFT_BUFFER_BIT        0x00000004
  128. #define GLX_BACK_RIGHT_BUFFER_BIT       0x00000008
  129. #define GLX_DEPTH_BUFFER_BIT            0x00000020
  130. #define GLX_STENCIL_BUFFER_BIT          0x00000040
  131. #define GLX_ACCUM_BUFFER_BIT            0x00000080
  132. #define GLX_NONE                        0x8000
  133. #define GLX_SLOW_CONFIG                 0x8001
  134. #define GLX_TRUE_COLOR                  0x8002
  135. #define GLX_DIRECT_COLOR                0x8003
  136. #define GLX_PSEUDO_COLOR                0x8004
  137. #define GLX_STATIC_COLOR                0x8005
  138. #define GLX_GRAY_SCALE                  0x8006
  139. #define GLX_STATIC_GRAY                 0x8007
  140. #define GLX_TRANSPARENT_RGB             0x8008
  141. #define GLX_TRANSPARENT_INDEX           0x8009
  142. #define GLX_VISUAL_ID                   0x800B
  143. #define GLX_SCREEN                      0x800C
  144. #define GLX_NON_CONFORMANT_CONFIG       0x800D
  145. #define GLX_DRAWABLE_TYPE               0x8010
  146. #define GLX_RENDER_TYPE                 0x8011
  147. #define GLX_X_RENDERABLE                0x8012
  148. #define GLX_FBCONFIG_ID                 0x8013
  149. #define GLX_RGBA_TYPE                   0x8014
  150. #define GLX_COLOR_INDEX_TYPE            0x8015
  151. #define GLX_MAX_PBUFFER_WIDTH           0x8016
  152. #define GLX_MAX_PBUFFER_HEIGHT          0x8017
  153. #define GLX_MAX_PBUFFER_PIXELS          0x8018
  154. #define GLX_PRESERVED_CONTENTS          0x801B
  155. #define GLX_LARGEST_PBUFFER             0x801C
  156. #define GLX_WIDTH                       0x801D
  157. #define GLX_HEIGHT                      0x801E
  158. #define GLX_EVENT_MASK                  0x801F
  159. #define GLX_DAMAGED                     0x8020
  160. #define GLX_SAVED                       0x8021
  161. #define GLX_WINDOW                      0x8022
  162. #define GLX_PBUFFER                     0x8023
  163. #define GLX_PBUFFER_HEIGHT              0x8040
  164. #define GLX_PBUFFER_WIDTH               0x8041
  165. #define GLX_RGBA_BIT                    0x00000001
  166. #define GLX_COLOR_INDEX_BIT             0x00000002
  167. #define GLX_PBUFFER_CLOBBER_MASK        0x08000000
  168.  
  169.  
  170. /*
  171.  * GLX 1.4 and later:
  172.  */
  173. #define GLX_SAMPLE_BUFFERS              0x186a0 /*100000*/
  174. #define GLX_SAMPLES                     0x186a1 /*100001*/
  175.  
  176.  
  177.  
  178. typedef struct __GLXcontextRec *GLXContext;
  179. typedef XID GLXPixmap;
  180. typedef XID GLXDrawable;
  181. /* GLX 1.3 and later */
  182. typedef struct __GLXFBConfigRec *GLXFBConfig;
  183. typedef XID GLXFBConfigID;
  184. typedef XID GLXContextID;
  185. typedef XID GLXWindow;
  186. typedef XID GLXPbuffer;
  187.  
  188.  
  189. /*
  190. ** Events.
  191. ** __GLX_NUMBER_EVENTS is set to 17 to account for the BufferClobberSGIX
  192. **  event - this helps initialization if the server supports the pbuffer
  193. **  extension and the client doesn't.
  194. */
  195. #define GLX_PbufferClobber      0
  196. #define GLX_BufferSwapComplete  1
  197.  
  198. #define __GLX_NUMBER_EVENTS 17
  199.  
  200. extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
  201.                                      int *attribList );
  202.  
  203. extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
  204.                                     GLXContext shareList, Bool direct );
  205.  
  206. extern void glXDestroyContext( Display *dpy, GLXContext ctx );
  207.  
  208. extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
  209.                             GLXContext ctx);
  210.  
  211. extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
  212.                             unsigned long mask );
  213.  
  214. extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
  215.  
  216. extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
  217.                                      Pixmap pixmap );
  218.  
  219. extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
  220.  
  221. extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
  222.  
  223. extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
  224.  
  225. extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
  226.  
  227. extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
  228.                          int attrib, int *value );
  229.  
  230. extern GLXContext glXGetCurrentContext( void );
  231.  
  232. extern GLXDrawable glXGetCurrentDrawable( void );
  233.  
  234. extern void glXWaitGL( void );
  235.  
  236. extern void glXWaitX( void );
  237.  
  238. extern void glXUseXFont( Font font, int first, int count, int list );
  239.  
  240.  
  241.  
  242. /* GLX 1.1 and later */
  243. extern const char *glXQueryExtensionsString( Display *dpy, int screen );
  244.  
  245. extern const char *glXQueryServerString( Display *dpy, int screen, int name );
  246.  
  247. extern const char *glXGetClientString( Display *dpy, int name );
  248.  
  249.  
  250. /* GLX 1.2 and later */
  251. extern Display *glXGetCurrentDisplay( void );
  252.  
  253.  
  254. /* GLX 1.3 and later */
  255. extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
  256.                                        const int *attribList, int *nitems );
  257.  
  258. extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
  259.                                  int attribute, int *value );
  260.  
  261. extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
  262.                                      int *nelements );
  263.  
  264. extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
  265.                                               GLXFBConfig config );
  266.  
  267. extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
  268.                                   Window win, const int *attribList );
  269.  
  270. extern void glXDestroyWindow( Display *dpy, GLXWindow window );
  271.  
  272. extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
  273.                                   Pixmap pixmap, const int *attribList );
  274.  
  275. extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
  276.  
  277. extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
  278.                                     const int *attribList );
  279.  
  280. extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
  281.  
  282. extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
  283.                               unsigned int *value );
  284.  
  285. extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
  286.                                        int renderType, GLXContext shareList,
  287.                                        Bool direct );
  288.  
  289. extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
  290.                                    GLXDrawable read, GLXContext ctx );
  291.  
  292. extern GLXDrawable glXGetCurrentReadDrawable( void );
  293.  
  294. extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
  295.                             int *value );
  296.  
  297. extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
  298.                             unsigned long mask );
  299.  
  300. extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
  301.                                  unsigned long *mask );
  302.  
  303. /* GLX 1.3 function pointer typedefs */
  304. typedef GLXFBConfig * (* PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
  305. typedef GLXFBConfig * (* PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
  306. typedef int (* PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
  307. typedef XVisualInfo * (* PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
  308. typedef GLXWindow (* PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
  309. typedef void (* PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
  310. typedef GLXPixmap (* PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
  311. typedef void (* PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
  312. typedef GLXPbuffer (* PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
  313. typedef void (* PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
  314. typedef void (* PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
  315. typedef GLXContext (* PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
  316. typedef Bool (* PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
  317. typedef GLXDrawable (* PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
  318. typedef Display * (* PFNGLXGETCURRENTDISPLAYPROC) (void);
  319. typedef int (* PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
  320. typedef void (* PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
  321. typedef void (* PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
  322.  
  323.  
  324. /*
  325.  * ARB 2. GLX_ARB_get_proc_address
  326.  */
  327. #ifndef GLX_ARB_get_proc_address
  328. #define GLX_ARB_get_proc_address 1
  329.  
  330. typedef void (*__GLXextFuncPtr)(void);
  331. extern __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *);
  332.  
  333. #endif /* GLX_ARB_get_proc_address */
  334.  
  335.  
  336.  
  337. /* GLX 1.4 and later */
  338. extern void (*glXGetProcAddress(const GLubyte *procname))( void );
  339.  
  340. /* GLX 1.4 function pointer typedefs */
  341. typedef __GLXextFuncPtr (* PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
  342.  
  343.  
  344. #ifndef GLX_GLXEXT_LEGACY
  345.  
  346. #include <GL/glxext.h>
  347.  
  348. #endif /* GLX_GLXEXT_LEGACY */
  349.  
  350.  
  351. /**
  352.  ** The following aren't in glxext.h yet.
  353.  **/
  354.  
  355.  
  356. /*
  357.  * ???. GLX_NV_vertex_array_range
  358.  */
  359. #ifndef GLX_NV_vertex_array_range
  360. #define GLX_NV_vertex_array_range
  361.  
  362. extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
  363. extern void glXFreeMemoryNV(GLvoid *pointer);
  364. typedef void * ( * PFNGLXALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
  365. typedef void ( * PFNGLXFREEMEMORYNVPROC) (GLvoid *pointer);
  366.  
  367. #endif /* GLX_NV_vertex_array_range */
  368.  
  369.  
  370. /*
  371.  * ARB ?. GLX_ARB_render_texture
  372.  * XXX This was never finalized!
  373.  */
  374. #ifndef GLX_ARB_render_texture
  375. #define GLX_ARB_render_texture 1
  376.  
  377. extern Bool glXBindTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
  378. extern Bool glXReleaseTexImageARB(Display *dpy, GLXPbuffer pbuffer, int buffer);
  379. extern Bool glXDrawableAttribARB(Display *dpy, GLXDrawable draw, const int *attribList);
  380.  
  381. #endif /* GLX_ARB_render_texture */
  382.  
  383.  
  384. /*
  385.  * Remove this when glxext.h is updated.
  386.  */
  387. #ifndef GLX_NV_float_buffer
  388. #define GLX_NV_float_buffer 1
  389.  
  390. #define GLX_FLOAT_COMPONENTS_NV         0x20B0
  391.  
  392. #endif /* GLX_NV_float_buffer */
  393.  
  394.  
  395.  
  396. /*
  397.  * #?. GLX_MESA_swap_frame_usage
  398.  */
  399. #ifndef GLX_MESA_swap_frame_usage
  400. #define GLX_MESA_swap_frame_usage 1
  401.  
  402. extern int glXGetFrameUsageMESA(Display *dpy, GLXDrawable drawable, float *usage);
  403. extern int glXBeginFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
  404. extern int glXEndFrameTrackingMESA(Display *dpy, GLXDrawable drawable);
  405. extern int glXQueryFrameTrackingMESA(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
  406.  
  407. typedef int (*PFNGLXGETFRAMEUSAGEMESAPROC) (Display *dpy, GLXDrawable drawable, float *usage);
  408. typedef int (*PFNGLXBEGINFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
  409. typedef int (*PFNGLXENDFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable);
  410. typedef int (*PFNGLXQUERYFRAMETRACKINGMESAPROC)(Display *dpy, GLXDrawable drawable, int64_t *swapCount, int64_t *missedFrames, float *lastMissedUsage);
  411.  
  412. #endif /* GLX_MESA_swap_frame_usage */
  413.  
  414.  
  415.  
  416. /*
  417.  * #?. GLX_MESA_swap_control
  418.  */
  419. #ifndef GLX_MESA_swap_control
  420. #define GLX_MESA_swap_control 1
  421.  
  422. extern int glXSwapIntervalMESA(unsigned int interval);
  423. extern int glXGetSwapIntervalMESA(void);
  424.  
  425. typedef int (*PFNGLXSWAPINTERVALMESAPROC)(unsigned int interval);
  426. typedef int (*PFNGLXGETSWAPINTERVALMESAPROC)(void);
  427.  
  428. #endif /* GLX_MESA_swap_control */
  429.  
  430.  
  431.  
  432. /*
  433.  * #?. GLX_EXT_texture_from_pixmap
  434.  * XXX not finished?
  435.  */
  436. #ifndef GLX_EXT_texture_from_pixmap
  437. #define GLX_EXT_texture_from_pixmap 1
  438.  
  439. #define GLX_BIND_TO_TEXTURE_RGB_EXT        0x20D0
  440. #define GLX_BIND_TO_TEXTURE_RGBA_EXT       0x20D1
  441. #define GLX_BIND_TO_MIPMAP_TEXTURE_EXT     0x20D2
  442. #define GLX_BIND_TO_TEXTURE_TARGETS_EXT    0x20D3
  443. #define GLX_Y_INVERTED_EXT                 0x20D4
  444.  
  445. #define GLX_TEXTURE_FORMAT_EXT             0x20D5
  446. #define GLX_TEXTURE_TARGET_EXT             0x20D6
  447. #define GLX_MIPMAP_TEXTURE_EXT             0x20D7
  448.  
  449. #define GLX_TEXTURE_FORMAT_NONE_EXT        0x20D8
  450. #define GLX_TEXTURE_FORMAT_RGB_EXT         0x20D9
  451. #define GLX_TEXTURE_FORMAT_RGBA_EXT        0x20DA
  452.  
  453. #define GLX_TEXTURE_1D_BIT_EXT             0x00000001
  454. #define GLX_TEXTURE_2D_BIT_EXT             0x00000002
  455. #define GLX_TEXTURE_RECTANGLE_BIT_EXT      0x00000004
  456.  
  457. #define GLX_TEXTURE_1D_EXT                 0x20DB
  458. #define GLX_TEXTURE_2D_EXT                 0x20DC
  459. #define GLX_TEXTURE_RECTANGLE_EXT          0x20DD
  460.  
  461. #define GLX_FRONT_LEFT_EXT                 0x20DE
  462. #define GLX_FRONT_RIGHT_EXT                0x20DF
  463. #define GLX_BACK_LEFT_EXT                  0x20E0
  464. #define GLX_BACK_RIGHT_EXT                 0x20E1
  465. #define GLX_FRONT_EXT                      GLX_FRONT_LEFT_EXT
  466. #define GLX_BACK_EXT                       GLX_BACK_LEFT_EXT
  467. #define GLX_AUX0_EXT                       0x20E2
  468. #define GLX_AUX1_EXT                       0x20E3
  469. #define GLX_AUX2_EXT                       0x20E4
  470. #define GLX_AUX3_EXT                       0x20E5
  471. #define GLX_AUX4_EXT                       0x20E6
  472. #define GLX_AUX5_EXT                       0x20E7
  473. #define GLX_AUX6_EXT                       0x20E8
  474. #define GLX_AUX7_EXT                       0x20E9
  475. #define GLX_AUX8_EXT                       0x20EA
  476. #define GLX_AUX9_EXT                       0x20EB
  477.  
  478. extern void glXBindTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer, const int *attrib_list);
  479. extern void glXReleaseTexImageEXT(Display *dpy, GLXDrawable drawable, int buffer);
  480.  
  481. #endif /* GLX_EXT_texture_from_pixmap */
  482.  
  483.  
  484.  
  485.  
  486. /*** Should these go here, or in another header? */
  487. /*
  488. ** GLX Events
  489. */
  490. typedef struct {
  491.     int event_type;             /* GLX_DAMAGED or GLX_SAVED */
  492.     int draw_type;              /* GLX_WINDOW or GLX_PBUFFER */
  493.     unsigned long serial;       /* # of last request processed by server */
  494.     Bool send_event;            /* true if this came for SendEvent request */
  495.     Display *display;           /* display the event was read from */
  496.     GLXDrawable drawable;       /* XID of Drawable */
  497.     unsigned int buffer_mask;   /* mask indicating which buffers are affected */
  498.     unsigned int aux_buffer;    /* which aux buffer was affected */
  499.     int x, y;
  500.     int width, height;
  501.     int count;                  /* if nonzero, at least this many more */
  502. } GLXPbufferClobberEvent;
  503.  
  504. typedef struct {
  505.     int type;
  506.     unsigned long serial;       /* # of last request processed by server */
  507.     Bool send_event;            /* true if this came from a SendEvent request */
  508.     Display *display;           /* Display the event was read from */
  509.     GLXDrawable drawable;       /* drawable on which event was requested in event mask */
  510.     int event_type;
  511.     int64_t ust;
  512.     int64_t msc;
  513.     int64_t sbc;
  514. } GLXBufferSwapComplete;
  515.  
  516. typedef union __GLXEvent {
  517.     GLXPbufferClobberEvent glxpbufferclobber;
  518.     GLXBufferSwapComplete glxbufferswapcomplete;
  519.     long pad[24];
  520. } GLXEvent;
  521.  
  522. #ifdef __cplusplus
  523. }
  524. #endif
  525.  
  526. #endif
  527.