summaryrefslogtreecommitdiff
path: root/plugins/gtkui/gtkglext-gtk2/gdk/x11/gdkglquery-x11.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/gtkui/gtkglext-gtk2/gdk/x11/gdkglquery-x11.c')
-rw-r--r--plugins/gtkui/gtkglext-gtk2/gdk/x11/gdkglquery-x11.c503
1 files changed, 0 insertions, 503 deletions
diff --git a/plugins/gtkui/gtkglext-gtk2/gdk/x11/gdkglquery-x11.c b/plugins/gtkui/gtkglext-gtk2/gdk/x11/gdkglquery-x11.c
deleted file mode 100644
index 562ddf1f..00000000
--- a/plugins/gtkui/gtkglext-gtk2/gdk/x11/gdkglquery-x11.c
+++ /dev/null
@@ -1,503 +0,0 @@
-/* GdkGLExt - OpenGL Extension to GDK
- * Copyright (C) 2002-2004 Naofumi Yasufuku
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-
-#include <string.h>
-
-#ifdef __APPLE__
-#include <mach-o/dyld.h>
-#else /* __APPLE__ */
-#include <gmodule.h>
-#endif /* __APPLE__ */
-
-#include "gdkglx.h"
-#include "gdkglprivate-x11.h"
-#include "gdkglconfig-x11.h"
-#include "gdkglquery.h"
-
-#ifdef GDKGLEXT_MULTIHEAD_SUPPORT
-#include <gdk/gdkdisplay.h>
-#endif /* GDKGLEXT_MULTIHEAD_SUPPORT */
-
-/**
- * gdk_gl_query_extension:
- *
- * Indicates whether the window system supports the OpenGL extension
- * (GLX, WGL, etc.).
- *
- * Return value: TRUE if OpenGL is supported, FALSE otherwise.
- **/
-gboolean
-gdk_gl_query_extension (void)
-{
-#ifdef GDKGLEXT_MULTIHEAD_SUPPORT
- return glXQueryExtension (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
- NULL, NULL);
-#else /* GDKGLEXT_MULTIHEAD_SUPPORT */
- return glXQueryExtension (gdk_x11_get_default_xdisplay (),
- NULL, NULL);
-#endif /* GDKGLEXT_MULTIHEAD_SUPPORT */
-}
-
-#ifdef GDKGLEXT_MULTIHEAD_SUPPORT
-
-/**
- * gdk_gl_query_extension_for_display:
- * @display: the #GdkDisplay where the query is sent to.
- *
- * Indicates whether the window system supports the OpenGL extension
- * (GLX, WGL, etc.).
- *
- * Return value: TRUE if OpenGL is supported, FALSE otherwise.
- **/
-gboolean
-gdk_gl_query_extension_for_display (GdkDisplay *display)
-{
- g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
-
- return glXQueryExtension (GDK_DISPLAY_XDISPLAY (display),
- NULL, NULL);
-}
-
-#endif /* GDKGLEXT_MULTIHEAD_SUPPORT */
-
-/**
- * gdk_gl_query_version:
- * @major: returns the major version number of the OpenGL extension.
- * @minor: returns the minor version number of the OpenGL extension.
- *
- * Returns the version numbers of the OpenGL extension to the window system.
- *
- * In the X Window System, it returns the GLX version.
- *
- * In the Microsoft Windows, it returns the Windows version.
- *
- * Return value: FALSE if it fails, TRUE otherwise.
- **/
-gboolean
-gdk_gl_query_version (int *major,
- int *minor)
-{
-#ifdef GDKGLEXT_MULTIHEAD_SUPPORT
- return glXQueryVersion (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
- major, minor);
-#else /* GDKGLEXT_MULTIHEAD_SUPPORT */
- return glXQueryVersion (gdk_x11_get_default_xdisplay (),
- major, minor);
-#endif /* GDKGLEXT_MULTIHEAD_SUPPORT */
-}
-
-#ifdef GDKGLEXT_MULTIHEAD_SUPPORT
-
-/**
- * gdk_gl_query_version_for_display:
- * @display: the #GdkDisplay where the query is sent to.
- * @major: returns the major version number of the OpenGL extension.
- * @minor: returns the minor version number of the OpenGL extension.
- *
- * Returns the version numbers of the OpenGL extension to the window system.
- *
- * In the X Window System, it returns the GLX version.
- *
- * In the Microsoft Windows, it returns the Windows version.
- *
- * Return value: FALSE if it fails, TRUE otherwise.
- **/
-gboolean
-gdk_gl_query_version_for_display (GdkDisplay *display,
- int *major,
- int *minor)
-{
- g_return_val_if_fail (GDK_IS_DISPLAY (display), FALSE);
-
- return glXQueryVersion (GDK_DISPLAY_XDISPLAY (display),
- major, minor);
-}
-
-#endif /* GDKGLEXT_MULTIHEAD_SUPPORT */
-
-/*
- * This code is based on __glutIsSupportedByGLX().
- */
-
-/**
- * gdk_x11_gl_query_glx_extension:
- * @glconfig: a #GdkGLConfig.
- * @extension: name of GLX extension.
- *
- * Determines whether a given GLX extension is supported.
- *
- * Return value: TRUE if the GLX extension is supported, FALSE if not
- * supported.
- **/
-gboolean
-gdk_x11_gl_query_glx_extension (GdkGLConfig *glconfig,
- const char *extension)
-{
- static const char *extensions = NULL;
- const char *start;
- char *where, *terminator;
- int major, minor;
-
- g_return_val_if_fail (GDK_IS_GL_CONFIG_IMPL_X11 (glconfig), FALSE);
-
- /* Extension names should not have spaces. */
- where = strchr (extension, ' ');
- if (where || *extension == '\0')
- return FALSE;
-
- if (extensions == NULL)
- {
- /* Be careful not to call glXQueryExtensionsString if it
- looks like the server doesn't support GLX 1.1.
- Unfortunately, the original GLX 1.0 didn't have the notion
- of GLX extensions. */
-
- glXQueryVersion (GDK_GL_CONFIG_XDISPLAY (glconfig),
- &major, &minor);
-
- if ((major == 1 && minor < 1) || (major < 1))
- return FALSE;
-
- extensions = glXQueryExtensionsString (GDK_GL_CONFIG_XDISPLAY (glconfig),
- GDK_GL_CONFIG_SCREEN_XNUMBER (glconfig));
- }
-
- /* It takes a bit of care to be fool-proof about parsing
- the GLX extensions string. Don't be fooled by
- sub-strings, etc. */
- start = extensions;
- for (;;)
- {
- where = strstr (start, extension);
- if (where == NULL)
- break;
-
- terminator = where + strlen (extension);
-
- if (where == start || *(where - 1) == ' ')
- if (*terminator == ' ' || *terminator == '\0')
- {
- GDK_GL_NOTE (MISC, g_message (" - %s - supported", extension));
- return TRUE;
- }
-
- start = terminator;
- }
-
- GDK_GL_NOTE (MISC, g_message (" - %s - not supported", extension));
-
- return FALSE;
-}
-
-/**
- * gdk_gl_get_proc_address:
- * @proc_name: function name.
- *
- * Returns the address of the OpenGL, GLU, or GLX function.
- *
- * Return value: the address of the function named by @proc_name.
- **/
-
-#ifdef __APPLE__
-
-#define _GDK_GL_LIBGL_PATH "/usr/X11R6/lib/libGL.1.dylib"
-#define _GDK_GL_LIBGLU_PATH "/usr/X11R6/lib/libGLU.1.dylib"
-
-GdkGLProc
-gdk_gl_get_proc_address (const char *proc_name)
-{
- typedef GdkGLProc (*__glXGetProcAddressProc) (const GLubyte *);
- static __glXGetProcAddressProc glx_get_proc_address = (__glXGetProcAddressProc) -1;
- const char *image_name;
- static const struct mach_header *libgl_image = NULL;
- static const struct mach_header *libglu_image = NULL;
- NSSymbol symbol;
- char *symbol_name;
- GdkGLProc proc_address;
-
- GDK_GL_NOTE_FUNC ();
-
- if (strncmp ("glu", proc_name, 3) != 0)
- {
- /* libGL */
-
- if (libgl_image == NULL)
- {
- image_name = g_getenv ("GDK_GL_LIBGL_PATH");
- if (image_name == NULL)
- image_name = _GDK_GL_LIBGL_PATH;
-
- GDK_GL_NOTE (MISC, g_message (" - Add Mach-O image %s", image_name));
-
- libgl_image = NSAddImage (image_name, NSADDIMAGE_OPTION_RETURN_ON_ERROR);
- if (libgl_image == NULL)
- {
- g_warning ("Cannot add Mach-O image %s", image_name);
- return NULL;
- }
- }
-
- if (glx_get_proc_address == (__glXGetProcAddressProc) -1)
- {
- /*
- * Look up glXGetProcAddress () function.
- */
-
- symbol = NSLookupSymbolInImage (libgl_image,
- "_glXGetProcAddress",
- NSLOOKUPSYMBOLINIMAGE_OPTION_BIND |
- NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
- if (symbol == NULL)
- {
- symbol = NSLookupSymbolInImage (libgl_image,
- "_glXGetProcAddressARB",
- NSLOOKUPSYMBOLINIMAGE_OPTION_BIND |
- NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
- if (symbol == NULL)
- {
- symbol = NSLookupSymbolInImage (libgl_image,
- "_glXGetProcAddressEXT",
- NSLOOKUPSYMBOLINIMAGE_OPTION_BIND |
- NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
- }
- }
- GDK_GL_NOTE (MISC, g_message (" - glXGetProcAddress () - %s",
- symbol ? "supported" : "not supported"));
- if (symbol != NULL)
- glx_get_proc_address = NSAddressOfSymbol (symbol);
- else
- glx_get_proc_address = NULL;
- }
-
- /* Try glXGetProcAddress () */
-
- if (glx_get_proc_address != NULL)
- {
- proc_address = glx_get_proc_address (proc_name);
- GDK_GL_NOTE (IMPL, g_message (" ** glXGetProcAddress () - %s",
- proc_address ? "succeeded" : "failed"));
- if (proc_address != NULL)
- return proc_address;
- }
-
- /* Try Mach-O dyld */
-
- symbol_name = g_strconcat ("_", proc_name, NULL);
-
- symbol = NSLookupSymbolInImage (libgl_image,
- symbol_name,
- NSLOOKUPSYMBOLINIMAGE_OPTION_BIND |
- NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
- GDK_GL_NOTE (MISC, g_message (" - NSLookupSymbolInImage () - %s",
- symbol ? "succeeded" : "failed"));
-
- g_free (symbol_name);
-
- if (symbol != NULL)
- return NSAddressOfSymbol (symbol);
- }
- else
- {
- /* libGLU */
-
- if (libglu_image == NULL)
- {
- image_name = g_getenv ("GDK_GL_LIBGLU_PATH");
- if (image_name == NULL)
- image_name = _GDK_GL_LIBGLU_PATH;
-
- GDK_GL_NOTE (MISC, g_message (" - Add Mach-O image %s", image_name));
-
- libglu_image = NSAddImage (image_name, NSADDIMAGE_OPTION_RETURN_ON_ERROR);
- if (libglu_image == NULL)
- {
- g_warning ("Cannot add Mach-O image %s", image_name);
- return NULL;
- }
- }
-
- symbol_name = g_strconcat ("_", proc_name, NULL);
-
- symbol = NSLookupSymbolInImage (libglu_image,
- symbol_name,
- NSLOOKUPSYMBOLINIMAGE_OPTION_BIND |
- NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR);
- GDK_GL_NOTE (MISC, g_message (" - NSLookupSymbolInImage () - %s",
- symbol ? "succeeded" : "failed"));
-
- g_free (symbol_name);
-
- if (symbol != NULL)
- return NSAddressOfSymbol (symbol);
- }
-
- return NULL;
-}
-
-#else /* __APPLE__ */
-
-GdkGLProc
-gdk_gl_get_proc_address (const char *proc_name)
-{
- typedef GdkGLProc (*__glXGetProcAddressProc) (const GLubyte *);
- static __glXGetProcAddressProc glx_get_proc_address = (__glXGetProcAddressProc) -1;
- gchar *file_name;
- GModule *module;
- GdkGLProc proc_address = NULL;
-
- GDK_GL_NOTE_FUNC ();
-
- if (strncmp ("glu", proc_name, 3) != 0)
- {
- if (glx_get_proc_address == (__glXGetProcAddressProc) -1)
- {
- /*
- * Look up glXGetProcAddress () function.
- */
-
- file_name = g_module_build_path (NULL, "GL");
- GDK_GL_NOTE (MISC, g_message (" - Open %s", file_name));
- module = g_module_open (file_name, G_MODULE_BIND_LAZY);
- g_free (file_name);
-
- if (module != NULL)
- {
- g_module_symbol (module, "glXGetProcAddress",
- (gpointer) &glx_get_proc_address);
- if (glx_get_proc_address == NULL)
- {
- g_module_symbol (module, "glXGetProcAddressARB",
- (gpointer) &glx_get_proc_address);
- if (glx_get_proc_address == NULL)
- {
- g_module_symbol (module, "glXGetProcAddressEXT",
- (gpointer) &glx_get_proc_address);
- }
- }
- GDK_GL_NOTE (MISC, g_message (" - glXGetProcAddress () - %s",
- glx_get_proc_address ? "supported" : "not supported"));
- g_module_close (module);
- }
- else
- {
- g_warning ("Cannot open %s", file_name);
- glx_get_proc_address = NULL;
- return NULL;
- }
- }
-
- /* Try glXGetProcAddress () */
-
- if (glx_get_proc_address != NULL)
- {
- proc_address = glx_get_proc_address (proc_name);
- GDK_GL_NOTE (IMPL, g_message (" ** glXGetProcAddress () - %s",
- proc_address ? "succeeded" : "failed"));
- if (proc_address != NULL)
- return proc_address;
- }
-
- /* Try g_module_symbol () */
-
- /* libGL */
- file_name = g_module_build_path (NULL, "GL");
- GDK_GL_NOTE (MISC, g_message (" - Open %s", file_name));
- module = g_module_open (file_name, G_MODULE_BIND_LAZY);
- g_free (file_name);
-
- if (module != NULL)
- {
- g_module_symbol (module, proc_name, (gpointer) &proc_address);
- GDK_GL_NOTE (MISC, g_message (" - g_module_symbol () - %s",
- proc_address ? "succeeded" : "failed"));
- g_module_close (module);
- }
- else
- {
- g_warning ("Cannot open %s", file_name);
- }
-
- if (proc_address == NULL)
- {
- /* libGLcore */
- file_name = g_module_build_path (NULL, "GLcore");
- GDK_GL_NOTE (MISC, g_message (" - Open %s", file_name));
- module = g_module_open (file_name, G_MODULE_BIND_LAZY);
- g_free (file_name);
-
- if (module != NULL)
- {
- g_module_symbol (module, proc_name, (gpointer) &proc_address);
- GDK_GL_NOTE (MISC, g_message (" - g_module_symbol () - %s",
- proc_address ? "succeeded" : "failed"));
- g_module_close (module);
- }
- }
- }
- else
- {
- /* libGLU */
- file_name = g_module_build_path (NULL, "GLU");
- GDK_GL_NOTE (MISC, g_message (" - Open %s", file_name));
- module = g_module_open (file_name, G_MODULE_BIND_LAZY);
- g_free (file_name);
-
- if (module != NULL)
- {
- g_module_symbol (module, proc_name, (gpointer) &proc_address);
- GDK_GL_NOTE (MISC, g_message (" - g_module_symbol () - %s",
- proc_address ? "succeeded" : "failed"));
- g_module_close (module);
- }
- else
- {
- g_warning ("Cannot open %s", file_name);
- }
- }
-
- return proc_address;
-}
-
-#endif /* __APPLE__ */
-
-/*< private >*/
-void
-_gdk_x11_gl_print_glx_info (Display *xdisplay,
- int screen_num)
-{
- static gboolean done = FALSE;
-
- if (!done)
- {
- g_message (" -- Server GLX_VENDOR : %s",
- glXQueryServerString (xdisplay, screen_num, GLX_VENDOR));
- g_message (" -- Server GLX_VERSION : %s",
- glXQueryServerString (xdisplay, screen_num, GLX_VERSION));
- g_message (" -- Server GLX_EXTENSIONS : %s",
- glXQueryServerString (xdisplay, screen_num, GLX_EXTENSIONS));
-
- g_message (" -- Client GLX_VENDOR : %s",
- glXGetClientString (xdisplay, GLX_VENDOR));
- g_message (" -- Client GLX_VERSION : %s",
- glXGetClientString (xdisplay, GLX_VERSION));
- g_message (" -- Client GLX_EXTENSIONS : %s",
- glXGetClientString (xdisplay, GLX_EXTENSIONS));
-
- done = TRUE;
- }
-}