oi-extras/nvidia/Solaris/glx.h
branchoi-extras
changeset 222 3250b9c6cf32
equal deleted inserted replaced
221:ff1581cae4a6 222:3250b9c6cf32
       
     1 #ifndef __glx_h__
       
     2 #define __glx_h__
       
     3 
       
     4 /*
       
     5 ** The contents of this file are subject to the GLX Public License Version 1.0
       
     6 ** (the "License"). You may not use this file except in compliance with the
       
     7 ** License. You may obtain a copy of the License at Silicon Graphics, Inc.,
       
     8 ** attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
       
     9 ** or at http://www.sgi.com/software/opensource/glx/license.html.
       
    10 **
       
    11 ** Software distributed under the License is distributed on an "AS IS"
       
    12 ** basis. ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY
       
    13 ** IMPLIED WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
       
    14 ** PURPOSE OR OF NON- INFRINGEMENT. See the License for the specific
       
    15 ** language governing rights and limitations under the License.
       
    16 **
       
    17 ** The Original Software is GLX version 1.2 source code, released February,
       
    18 ** 1999. The developer of the Original Software is Silicon Graphics, Inc.
       
    19 ** Those portions of the Subject Software created by Silicon Graphics, Inc.
       
    20 ** are Copyright (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.
       
    21 **
       
    22 ** $Header: //sw/main/drivers/OpenGL/win/glx/include/glx.h#21 $
       
    23 */
       
    24 
       
    25 #include <X11/Xlib.h>
       
    26 #include <X11/Xutil.h>
       
    27 #include <GL/gl.h>
       
    28 
       
    29 #ifdef __cplusplus
       
    30 extern "C" {
       
    31 #endif
       
    32 
       
    33 /*
       
    34  * Names for attributes to glXGetConfig.
       
    35  */
       
    36 #define GLX_USE_GL              1       /* support GLX rendering */
       
    37 #define GLX_BUFFER_SIZE         2       /* depth of the color buffer */
       
    38 #define GLX_LEVEL               3       /* level in plane stacking */
       
    39 #define GLX_RGBA                4       /* true if RGBA mode */
       
    40 #define GLX_DOUBLEBUFFER        5       /* double buffering supported */
       
    41 #define GLX_STEREO              6       /* stereo buffering supported */
       
    42 #define GLX_AUX_BUFFERS         7       /* number of aux buffers */
       
    43 #define GLX_RED_SIZE            8       /* number of red component bits */
       
    44 #define GLX_GREEN_SIZE          9       /* number of green component bits */
       
    45 #define GLX_BLUE_SIZE           10      /* number of blue component bits */
       
    46 #define GLX_ALPHA_SIZE          11      /* number of alpha component bits */
       
    47 #define GLX_DEPTH_SIZE          12      /* number of depth bits */
       
    48 #define GLX_STENCIL_SIZE        13      /* number of stencil bits */
       
    49 #define GLX_ACCUM_RED_SIZE      14      /* number of red accum bits */
       
    50 #define GLX_ACCUM_GREEN_SIZE    15      /* number of green accum bits */
       
    51 #define GLX_ACCUM_BLUE_SIZE     16      /* number of blue accum bits */
       
    52 #define GLX_ACCUM_ALPHA_SIZE    17      /* number of alpha accum bits */
       
    53 
       
    54 /*
       
    55  * Error return values from glXGetConfig.  Success is indicated by
       
    56  * a value of 0.
       
    57  */
       
    58 #define GLX_BAD_SCREEN                  1  /* screen # is bad */
       
    59 #define GLX_BAD_ATTRIBUTE               2  /* attribute to get is bad */
       
    60 #define GLX_NO_EXTENSION                3  /* no glx extension on server */
       
    61 #define GLX_BAD_VISUAL                  4  /* visual # not known by GLX */
       
    62 #define GLX_BAD_CONTEXT                 5
       
    63 #define GLX_BAD_VALUE                   6
       
    64 #define GLX_BAD_ENUM                    7
       
    65 
       
    66 /*
       
    67  * Names for attributes to glXGetClientString.
       
    68  */
       
    69 #define GLX_VENDOR                      0x1
       
    70 #define GLX_VERSION                     0x2
       
    71 #define GLX_EXTENSIONS                  0x3
       
    72 
       
    73 #ifndef GLX_VERSION_1_3
       
    74 #define GLX_WINDOW_BIT                     0x00000001
       
    75 #define GLX_PIXMAP_BIT                     0x00000002
       
    76 #define GLX_PBUFFER_BIT                    0x00000004
       
    77 #define GLX_RGBA_BIT                       0x00000001
       
    78 #define GLX_COLOR_INDEX_BIT                0x00000002
       
    79 #define GLX_PBUFFER_CLOBBER_MASK           0x08000000
       
    80 #define GLX_FRONT_LEFT_BUFFER_BIT          0x00000001
       
    81 #define GLX_FRONT_RIGHT_BUFFER_BIT         0x00000002
       
    82 #define GLX_BACK_LEFT_BUFFER_BIT           0x00000004
       
    83 #define GLX_BACK_RIGHT_BUFFER_BIT          0x00000008
       
    84 #define GLX_AUX_BUFFERS_BIT                0x00000010
       
    85 #define GLX_DEPTH_BUFFER_BIT               0x00000020
       
    86 #define GLX_STENCIL_BUFFER_BIT             0x00000040
       
    87 #define GLX_ACCUM_BUFFER_BIT               0x00000080
       
    88 #define GLX_CONFIG_CAVEAT                  0x20
       
    89 #define GLX_X_VISUAL_TYPE                  0x22
       
    90 #define GLX_TRANSPARENT_TYPE               0x23
       
    91 #define GLX_TRANSPARENT_INDEX_VALUE        0x24
       
    92 #define GLX_TRANSPARENT_RED_VALUE          0x25
       
    93 #define GLX_TRANSPARENT_GREEN_VALUE        0x26
       
    94 #define GLX_TRANSPARENT_BLUE_VALUE         0x27
       
    95 #define GLX_TRANSPARENT_ALPHA_VALUE        0x28
       
    96 #define GLX_DONT_CARE                      0xFFFFFFFF
       
    97 #define GLX_NONE                           0x8000
       
    98 #define GLX_SLOW_CONFIG                    0x8001
       
    99 #define GLX_TRUE_COLOR                     0x8002
       
   100 #define GLX_DIRECT_COLOR                   0x8003
       
   101 #define GLX_PSEUDO_COLOR                   0x8004
       
   102 #define GLX_STATIC_COLOR                   0x8005
       
   103 #define GLX_GRAY_SCALE                     0x8006
       
   104 #define GLX_STATIC_GRAY                    0x8007
       
   105 #define GLX_TRANSPARENT_RGB                0x8008
       
   106 #define GLX_TRANSPARENT_INDEX              0x8009
       
   107 #define GLX_VISUAL_ID                      0x800B
       
   108 #define GLX_SCREEN                         0x800C
       
   109 #define GLX_NON_CONFORMANT_CONFIG          0x800D
       
   110 #define GLX_DRAWABLE_TYPE                  0x8010
       
   111 #define GLX_RENDER_TYPE                    0x8011
       
   112 #define GLX_X_RENDERABLE                   0x8012
       
   113 #define GLX_FBCONFIG_ID                    0x8013
       
   114 #define GLX_RGBA_TYPE                      0x8014
       
   115 #define GLX_COLOR_INDEX_TYPE               0x8015
       
   116 #define GLX_MAX_PBUFFER_WIDTH              0x8016
       
   117 #define GLX_MAX_PBUFFER_HEIGHT             0x8017
       
   118 #define GLX_MAX_PBUFFER_PIXELS             0x8018
       
   119 #define GLX_PRESERVED_CONTENTS             0x801B
       
   120 #define GLX_LARGEST_PBUFFER                0x801C
       
   121 #define GLX_WIDTH                          0x801D
       
   122 #define GLX_HEIGHT                         0x801E
       
   123 #define GLX_EVENT_MASK                     0x801F
       
   124 #define GLX_DAMAGED                        0x8020
       
   125 #define GLX_SAVED                          0x8021
       
   126 #define GLX_WINDOW                         0x8022
       
   127 #define GLX_PBUFFER                        0x8023
       
   128 #define GLX_PBUFFER_HEIGHT                 0x8040
       
   129 #define GLX_PBUFFER_WIDTH                  0x8041
       
   130 #endif
       
   131 
       
   132 #ifndef GLX_VERSION_1_4
       
   133 #define GLX_SAMPLE_BUFFERS                 0x186a0
       
   134 #define GLX_SAMPLES                        0x186a1
       
   135 #endif
       
   136 
       
   137 #ifndef GLX_ARB_get_proc_address
       
   138 typedef void (*__GLXextFuncPtr)(void);
       
   139 #endif
       
   140 
       
   141 /*
       
   142  * GLX resources.
       
   143  */
       
   144 typedef XID GLXContextID;
       
   145 typedef XID GLXPixmap;
       
   146 typedef XID GLXDrawable;
       
   147 typedef XID GLXPbuffer;
       
   148 typedef XID GLXWindow;
       
   149 typedef XID GLXFBConfigID;
       
   150 
       
   151 /*
       
   152  * GLXContext is a pointer to opaque data.
       
   153  */
       
   154 typedef struct __GLXcontextRec *GLXContext;
       
   155 
       
   156 /*
       
   157  * GLXFBConfig is a pointer to opaque data.
       
   158  */
       
   159 typedef struct __GLXFBConfigRec *GLXFBConfig;
       
   160 
       
   161 
       
   162 /**********************************************************************/
       
   163 
       
   164 /*
       
   165  * GLX 1.0 functions.
       
   166  */
       
   167 extern XVisualInfo* glXChooseVisual(Display *dpy, int screen,
       
   168                                     int *attrib_list);
       
   169 
       
   170 extern void glXCopyContext(Display *dpy, GLXContext src,
       
   171                            GLXContext dst, unsigned long mask);
       
   172 
       
   173 extern GLXContext glXCreateContext(Display *dpy, XVisualInfo *vis,
       
   174                                    GLXContext share_list, Bool direct);
       
   175 
       
   176 extern GLXPixmap glXCreateGLXPixmap(Display *dpy, XVisualInfo *vis,
       
   177                                     Pixmap pixmap);
       
   178 
       
   179 extern void glXDestroyContext(Display *dpy, GLXContext ctx);
       
   180 
       
   181 extern void glXDestroyGLXPixmap(Display *dpy, GLXPixmap pix);
       
   182 
       
   183 extern int glXGetConfig(Display *dpy, XVisualInfo *vis,
       
   184                         int attrib, int *value);
       
   185 
       
   186 extern GLXContext glXGetCurrentContext(void);
       
   187 
       
   188 extern GLXDrawable glXGetCurrentDrawable(void);
       
   189 
       
   190 extern Bool glXIsDirect(Display *dpy, GLXContext ctx);
       
   191 
       
   192 extern Bool glXMakeCurrent(Display *dpy, GLXDrawable drawable,
       
   193                            GLXContext ctx);
       
   194 
       
   195 extern Bool glXQueryExtension(Display *dpy, int *error_base, int *event_base);
       
   196 
       
   197 extern Bool glXQueryVersion(Display *dpy, int *major, int *minor);
       
   198 
       
   199 extern void glXSwapBuffers(Display *dpy, GLXDrawable drawable);
       
   200 
       
   201 extern void glXUseXFont(Font font, int first, int count, int list_base);
       
   202 
       
   203 extern void glXWaitGL(void);
       
   204 
       
   205 extern void glXWaitX(void);
       
   206 
       
   207 
       
   208 #ifndef GLX_VERSION_1_1
       
   209 #define GLX_VERSION_1_1         1
       
   210 /*
       
   211  * GLX 1.1 functions.
       
   212  */
       
   213 extern const char *glXGetClientString(Display *dpy, int name);
       
   214 
       
   215 extern const char *glXQueryServerString(Display *dpy, int screen, int name);
       
   216 
       
   217 extern const char *glXQueryExtensionsString(Display *dpy, int screen);
       
   218 #endif
       
   219 
       
   220 
       
   221 #ifndef GLX_VERSION_1_2
       
   222 #define GLX_VERSION_1_2         1
       
   223 /*
       
   224  * GLX 1.2 functions.
       
   225  */
       
   226 extern Display *glXGetCurrentDisplay(void);
       
   227 #endif
       
   228 
       
   229 #ifndef GLX_VERSION_1_3
       
   230 #define GLX_VERSION_1_3 1
       
   231 /*
       
   232  * GLX 1.3 functions.
       
   233  */
       
   234 extern GLXFBConfig *glXChooseFBConfig(Display *dpy, int screen,
       
   235                                       const int *attrib_list, int *nelements);
       
   236 
       
   237 extern GLXContext glXCreateNewContext(Display *dpy, GLXFBConfig config,
       
   238                                       int render_type, GLXContext share_list,
       
   239                                       Bool direct);
       
   240 
       
   241 extern GLXPbuffer glXCreatePbuffer(Display *dpy, GLXFBConfig config,
       
   242                                    const int *attrib_list);
       
   243 
       
   244 extern GLXPixmap glXCreatePixmap(Display *dpy, GLXFBConfig config,
       
   245                                  Pixmap pixmap, const int *attrib_list);
       
   246 
       
   247 extern GLXWindow glXCreateWindow(Display *dpy, GLXFBConfig config,
       
   248                                  Window win, const int *attrib_list);
       
   249 
       
   250 extern void glXDestroyPbuffer(Display *dpy, GLXPbuffer pbuf);
       
   251 
       
   252 extern void glXDestroyPixmap(Display *dpy, GLXPixmap pixmap);
       
   253 
       
   254 extern void glXDestroyWindow(Display *dpy, GLXWindow win);
       
   255 
       
   256 extern GLXDrawable glXGetCurrentReadDrawable(void);
       
   257 
       
   258 extern int glXGetFBConfigAttrib(Display *dpy, GLXFBConfig config,
       
   259                                 int attribute, int *value);
       
   260 
       
   261 extern GLXFBConfig *glXGetFBConfigs(Display *dpy, int screen, int *nelements);
       
   262 
       
   263 extern void glXGetSelectedEvent(Display *dpy, GLXDrawable draw,
       
   264                                 unsigned long *event_mask);
       
   265 
       
   266 extern XVisualInfo *glXGetVisualFromFBConfig(Display *dpy, GLXFBConfig config);
       
   267 
       
   268 extern Bool glXMakeContextCurrent(Display *display, GLXDrawable draw,
       
   269                                   GLXDrawable read, GLXContext ctx);
       
   270 
       
   271 extern int glXQueryContext(Display *dpy, GLXContext ctx,
       
   272                            int attribute, int *value);
       
   273 
       
   274 extern void glXQueryDrawable(Display *dpy, GLXDrawable draw,
       
   275                              int attribute, unsigned int *value);
       
   276 
       
   277 extern void glXSelectEvent(Display *dpy, GLXDrawable draw,
       
   278                            unsigned long event_mask);
       
   279 
       
   280 typedef GLXFBConfig * ( * PFNGLXGETFBCONFIGSPROC) (Display *dpy, int screen, int *nelements);
       
   281 typedef GLXFBConfig * ( * PFNGLXCHOOSEFBCONFIGPROC) (Display *dpy, int screen, const int *attrib_list, int *nelements);
       
   282 typedef int ( * PFNGLXGETFBCONFIGATTRIBPROC) (Display *dpy, GLXFBConfig config, int attribute, int *value);
       
   283 typedef XVisualInfo * ( * PFNGLXGETVISUALFROMFBCONFIGPROC) (Display *dpy, GLXFBConfig config);
       
   284 typedef GLXWindow ( * PFNGLXCREATEWINDOWPROC) (Display *dpy, GLXFBConfig config, Window win, const int *attrib_list);
       
   285 typedef void ( * PFNGLXDESTROYWINDOWPROC) (Display *dpy, GLXWindow win);
       
   286 typedef GLXPixmap ( * PFNGLXCREATEPIXMAPPROC) (Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list);
       
   287 typedef void ( * PFNGLXDESTROYPIXMAPPROC) (Display *dpy, GLXPixmap pixmap);
       
   288 typedef GLXPbuffer ( * PFNGLXCREATEPBUFFERPROC) (Display *dpy, GLXFBConfig config, const int *attrib_list);
       
   289 typedef void ( * PFNGLXDESTROYPBUFFERPROC) (Display *dpy, GLXPbuffer pbuf);
       
   290 typedef void ( * PFNGLXQUERYDRAWABLEPROC) (Display *dpy, GLXDrawable draw, int attribute, unsigned int *value);
       
   291 typedef GLXContext ( * PFNGLXCREATENEWCONTEXTPROC) (Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct);
       
   292 typedef Bool ( * PFNGLXMAKECONTEXTCURRENTPROC) (Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx);
       
   293 typedef GLXDrawable ( * PFNGLXGETCURRENTREADDRAWABLEPROC) (void);
       
   294 typedef Display * ( * PFNGLXGETCURRENTDISPLAYPROC) (void);
       
   295 typedef int ( * PFNGLXQUERYCONTEXTPROC) (Display *dpy, GLXContext ctx, int attribute, int *value);
       
   296 typedef void ( * PFNGLXSELECTEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long event_mask);
       
   297 typedef void ( * PFNGLXGETSELECTEDEVENTPROC) (Display *dpy, GLXDrawable draw, unsigned long *event_mask);
       
   298 #endif
       
   299 
       
   300 
       
   301 #ifndef GLX_VERSION_1_4
       
   302 #define GLX_VERSION_1_4 1
       
   303 /*
       
   304  * GLX 1.4 functions and typedefs.
       
   305  */
       
   306 extern __GLXextFuncPtr glXGetProcAddress (const GLubyte *);
       
   307 typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
       
   308 #endif
       
   309 
       
   310 
       
   311 
       
   312 /**********************************************************************/
       
   313 
       
   314 /*
       
   315  * ARB_get_proc_address
       
   316  */
       
   317 #ifndef GLX_ARB_get_proc_address
       
   318 #define GLX_ARB_get_proc_address 1
       
   319 /* Don't wrap this in GLX_GLXEXT_PROTOTYPES! */
       
   320 extern void (*glXGetProcAddressARB(const GLubyte *procName))(void);
       
   321 typedef __GLXextFuncPtr ( * PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
       
   322 #endif
       
   323 
       
   324 /**********************************************************************/
       
   325 
       
   326 /*** Should these go here, or in another header? */
       
   327 /*
       
   328  * GLX Events
       
   329  */
       
   330 typedef struct {
       
   331     int event_type;             /* GLX_DAMAGED or GLX_SAVED */
       
   332     int draw_type;              /* GLX_WINDOW or GLX_PBUFFER */
       
   333     unsigned long serial;       /* # of last request processed by server */
       
   334     Bool send_event;            /* true if this came for SendEvent request */
       
   335     Display *display;           /* display the event was read from */
       
   336     GLXDrawable drawable;       /* XID of Drawable */
       
   337     unsigned int buffer_mask;   /* mask indicating which buffers are affected */
       
   338     unsigned int aux_buffer;    /* which aux buffer was affected */
       
   339     int x, y;
       
   340     int width, height;
       
   341     int count;                  /* if nonzero, at least this many more */
       
   342 } GLXPbufferClobberEvent;
       
   343 
       
   344 typedef union __GLXEvent {
       
   345     GLXPbufferClobberEvent glxpbufferclobber;
       
   346     long pad[24];
       
   347 } GLXEvent;
       
   348 
       
   349 #ifndef GLX_GLXEXT_LEGACY
       
   350 #include <GL/glxext.h>
       
   351 #endif
       
   352 
       
   353 #ifdef __cplusplus
       
   354 }
       
   355 #endif
       
   356 
       
   357 #endif /* !__glx_h__ */