added GLX_MESA_set_3dfx_mode. clean-up of glXGetProcAddress
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 16 Sep 1999 15:52:51 +0000 (15:52 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 16 Sep 1999 15:52:51 +0000 (15:52 +0000)
include/GL/glx.h
src/mesa/drivers/x11/fakeglx.c
src/mesa/drivers/x11/glxapi.c

index 4163fe2857909f5335cab9e55c34d2594a5f8ef9..e7576e741c3fa938cea40ac6a976873f0cda8701 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: glx.h,v 1.2 1999/09/11 11:33:45 brianp Exp $ */
+/* $Id: glx.h,v 1.3 1999/09/16 15:52:51 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -27,6 +27,9 @@
 
 /*
  * $Log: glx.h,v $
+ * Revision 1.3  1999/09/16 15:52:51  brianp
+ * added GLX_MESA_set_3dfx_mode.  clean-up of glXGetProcAddress
+ *
  * Revision 1.2  1999/09/11 11:33:45  brianp
  * added GLX_EXT_get_proc_address
  *
@@ -158,11 +161,12 @@ enum _GLX_CONFIGS {
  * Compile-time extension tests
  */
 #define GLX_EXT_visual_info            1
+#define GLX_EXT_get_proc_address       1
 #define GLX_MESA_pixmap_colormap       1
 #define GLX_MESA_release_buffers       1
 #define GLX_MESA_copy_sub_buffer       1
+#define GLX_MESA_set_3dfx_mode         1
 #define GLX_SGI_video_sync             1
-#define GLX_EXT_get_proc_address       1
 
 
 
@@ -229,33 +233,36 @@ extern const char *glXQueryServerString( Display *dpy, int screen, int name );
 extern const char *glXGetClientString( Display *dpy, int name );
 
 
-/* GLX_EXT_get_proc_address */
-extern GLfunction glXGetProcAddressEXT(const GLubyte *procName);
-
 
-/*
- * Mesa GLX Extensions
+/* GLX_EXT_get_proc_address */
+/* WARNING: this extension is not finalized yet!  Do not release code
+ * which uses this extension yet!  It may change!
  */
+extern void (*glXGetProcAddressEXT(const GLubyte *procName))();
 
-#ifdef GLX_MESA_pixmap_colormap
+
+/* GLX_MESA_pixmap_colormap */
 extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
                                          Pixmap pixmap, Colormap cmap );
-#endif
 
-#ifdef GLX_MESA_release_buffers
+
+/* GLX_MESA_release_buffers */
 extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
-#endif
 
-#ifdef GLX_MESA_copy_sub_buffer
+
+/* GLX_MESA_copy_sub_buffer */
 extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
                                   int x, int y, int width, int height );
-#endif
 
-#ifdef GLX_SGI_video_sync
+
+/* GLX_MESA_set_3dfx_mode */
+extern GLboolean glXSet3DfxModeMESA( GLint mode );
+
+
+/* GLX_SGI_video_sync */
 extern int glXGetVideoSyncSGI(unsigned int *count);
 extern int glXWaitVideoSyncSGI(int divisor, int remainder,
                                unsigned int *count);
-#endif
 
 
 
index 87a9dd1b71e34d9c5a4501a987913aea86a2ce73..716e0599b9806093a19d502e61f27021cfc98e7a 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: fakeglx.c,v 1.6 1999/09/15 20:04:04 brianp Exp $ */
+/* $Id: fakeglx.c,v 1.7 1999/09/16 15:53:51 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
 
 
 
+/* Silence compiler warnings */
+void Fake_glXDummyFunc( void )
+{
+   (void) kernel8;
+   (void) DitherValues;
+   (void) HPCR_DRGB;
+   (void) kernel1;
+}
+
+
+
 #define DONT_CARE -1
 
 
@@ -1387,17 +1398,28 @@ void Fake_glXWaitX( void )
 }
 
 
+/*
+ * Return the extensions string, which is 3Dfx-dependant.
+ */
+static const char *get_extensions( void )
+{
+#ifdef FX
+   const char *fx = getenv("MESA_GLX_FX");
+   if (fx && fx[0] != 'd') {
+      return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync GLX_MESA_set_3dfx_mode";
+   }
+#endif
+   return "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync";
+}
 
-#define EXTENSIONS "GLX_MESA_pixmap_colormap GLX_EXT_visual_info GLX_MESA_release_buffers GLX_MESA_copy_sub_buffer GLX_SGI_video_sync"
 
 
 /* GLX 1.1 and later */
 const char *Fake_glXQueryExtensionsString( Display *dpy, int screen )
 {
-   static char *extensions = EXTENSIONS;
    (void) dpy;
    (void) screen;
-   return extensions;
+   return get_extensions();
 }
 
 
@@ -1405,7 +1427,6 @@ const char *Fake_glXQueryExtensionsString( Display *dpy, int screen )
 /* GLX 1.1 and later */
 const char *Fake_glXQueryServerString( Display *dpy, int screen, int name )
 {
-   static char *extensions = EXTENSIONS;
    static char *vendor = "Brian Paul";
    static char *version = "1.1 Mesa 3.1";
 
@@ -1414,7 +1435,7 @@ const char *Fake_glXQueryServerString( Display *dpy, int screen, int name )
 
    switch (name) {
       case GLX_EXTENSIONS:
-         return extensions;
+         return get_extensions();
       case GLX_VENDOR:
         return vendor;
       case GLX_VERSION:
@@ -1429,7 +1450,6 @@ const char *Fake_glXQueryServerString( Display *dpy, int screen, int name )
 /* GLX 1.1 and later */
 const char *Fake_glXGetClientString( Display *dpy, int name )
 {
-   static char *extensions = EXTENSIONS;
    static char *vendor = "Brian Paul";
    static char *version = "1.1 Mesa 3.1";
 
@@ -1437,7 +1457,7 @@ const char *Fake_glXGetClientString( Display *dpy, int name )
 
    switch (name) {
       case GLX_EXTENSIONS:
-         return extensions;
+         return get_extensions();
       case GLX_VENDOR:
         return vendor;
       case GLX_VERSION:
@@ -1464,19 +1484,21 @@ Bool Fake_glXReleaseBuffersMESA( Display *dpy, GLXDrawable d )
 }
 
 
-/* Silence compiler warnings */
-void Fake_glXDummyFunc( void )
+/*
+ * GLX_MESA_set_3dfx_mode
+ */
+GLboolean Fake_glXSet3DfxModeMESA( GLint mode )
 {
-   (void) kernel8;
-   (void) DitherValues;
-   (void) HPCR_DRGB;
-   (void) kernel1;
+   return XMesaSetFXmode( mode );
 }
 
 
-GLfunction Fake_glXGetProcAddress( const GLubyte *procName )
+
+/*GLfunction Fake_glXGetProcAddress( const GLubyte *procName )*/
+void (*Fake_glXGetProcAddress( const GLubyte *procName ))()
 {
-    struct proc {
+   typedef void (*GLfunction)();
+   struct proc {
       const char *name;
       GLfunction address;
    };
@@ -1485,6 +1507,7 @@ GLfunction Fake_glXGetProcAddress( const GLubyte *procName )
       { "glXCreateGLXPixmapMESA", (GLfunction) glXCreateGLXPixmapMESA },
       { "glXReleaseBuffersMESA", (GLfunction) glXReleaseBuffersMESA },
       { "glXCopySubBufferMESA", (GLfunction) glXCopySubBufferMESA },
+      { "glXSet3DfxModeMESA", (GLfunction) glXSet3DfxModeMESA },
       /* NOTE: GLX_SGI_video_sync not implemented in Mesa */
       { NULL, NULL }  /* end of list token */
    };
index 23b23b90cb4050dfb5a94ec79a4fc15c6638536b..dba92aa04dc2283e517539b94ed062d089a89edc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: glxapi.c,v 1.2 1999/09/11 11:35:11 brianp Exp $ */
+/* $Id: glxapi.c,v 1.3 1999/09/16 15:54:21 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -405,12 +405,27 @@ int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
 #endif
 
 
-#ifdef GLX_EXT_get_proc_address
-GLfunction glXGetProcAddressEXT( const GLubyte *procName )
+
+#ifdef GLX_MESA_set_3dfx_mode
+GLboolean glXSet3DfxModeMESA( GLint mode )
 {
 #ifdef REALGLX
-   return 0;  /* XXX todo */
+   return GL_FALSE;
+#else
+   return Fake_glXSet3DfxModeMESA( mode );
 #endif
+}
+#endif
+
+
+
+#ifdef GLX_EXT_get_proc_address
+void (*glXGetProcAddressEXT( const GLubyte *procName ))()
+{
+#ifdef REALGLX
+   return NULL;
+#else
    return Fake_glXGetProcAddress( procName );
+#endif
 }
 #endif