diff --git a/Makefile b/Makefile index 8bdb0e1..7f97342 100644 --- a/Makefile +++ b/Makefile @@ -81,7 +81,7 @@ endif INCLUDE = -Iinclude CFLAGS = $(OPT) $(WARN) $(INCLUDE) $(CFLAGS.EXTRA) -all debug: glew.lib glew.lib.mx glew.bin +all debug: glew.lib glew.bin # GLEW shared and static libraries @@ -96,11 +96,6 @@ LIB.OBJS := $(LIB.OBJS:.c=.o) LIB.SOBJS := $(addprefix tmp/$(SYSTEM)/default/shared/,$(LIB.SRCS.NAMES)) LIB.SOBJS := $(LIB.SOBJS:.c=.o) -LIB.OBJS.MX := $(addprefix tmp/$(SYSTEM)/mx/static/,$(LIB.SRCS.NAMES)) -LIB.OBJS.MX := $(LIB.OBJS.MX:.c=.o) -LIB.SOBJS.MX := $(addprefix tmp/$(SYSTEM)/mx/shared/,$(LIB.SRCS.NAMES)) -LIB.SOBJS.MX := $(LIB.SOBJS.MX:.c=.o) - glew.lib: lib lib/$(LIB.SHARED) lib/$(LIB.STATIC) glew.pc lib: @@ -150,54 +145,6 @@ glew.pc: glew.pc.in -e "s|@requireslib@|$(LIBGLU)|g" \ < $< > $@ -# GLEW MX static and shared libraries - -glew.lib.mx: lib lib/$(LIB.SHARED.MX) lib/$(LIB.STATIC.MX) glewmx.pc - -lib/$(LIB.STATIC.MX): $(LIB.OBJS.MX) -ifneq ($(AR),) - $(AR) $(ARFLAGS) $@ $^ -else ifneq ($(LIBTOOL),) - $(LIBTOOL) $@ $^ -endif -ifneq ($(STRIP),) - $(STRIP) -x $@ -endif - -lib/$(LIB.SHARED.MX): $(LIB.SOBJS.MX) - $(LD) $(LDFLAGS.SO.MX) -o $@ $^ $(LIB.LDFLAGS) $(LIB.LIBS) -ifneq ($(LN),) - $(LN) $(LIB.SHARED.MX) lib/$(LIB.SONAME.MX) - $(LN) $(LIB.SHARED.MX) lib/$(LIB.DEVLNK.MX) -endif -ifneq ($(STRIP),) - $(STRIP) -x $@ -endif - -tmp/$(SYSTEM)/mx/static/glew.o: src/glew.c include/GL/glew.h include/GL/wglew.h include/GL/glxew.h - @mkdir -p $(dir $@) - $(CC) -DGLEW_NO_GLU -DGLEW_MX -DGLEW_STATIC $(CFLAGS) $(CFLAGS.SO) -o $@ -c $< - -tmp/$(SYSTEM)/mx/shared/glew.o: src/glew.c include/GL/glew.h include/GL/wglew.h include/GL/glxew.h - @mkdir -p $(dir $@) - $(CC) -DGLEW_NO_GLU -DGLEW_MX -DGLEW_BUILD $(CFLAGS) $(CFLAGS.SO) -o $@ -c $< - -# Force re-write of glewmx.pc, GLEW_DEST can vary - -.PHONY: glewmx.pc - -glewmx.pc: glew.pc.in - sed \ - -e "s|@prefix@|$(GLEW_PREFIX)|g" \ - -e "s|@libdir@|$(LIBDIR)|g" \ - -e "s|@exec_prefix@|$(BINDIR)|g" \ - -e "s|@includedir@|$(INCDIR)|g" \ - -e "s|@version@|$(GLEW_VERSION)|g" \ - -e "s|@cflags@|-DGLEW_MX|g" \ - -e "s|@libname@|$(NAME)mx|g" \ - -e "s|@requireslib@|$(LIBGLU)|g" \ - < $< > $@ - # GLEW utility programs BIN.LIBS = -Llib $(LDFLAGS.DYNAMIC) -l$(NAME) $(LDFLAGS.EXTRA) $(LDFLAGS.GL) @@ -245,12 +192,10 @@ $(VISUALINFO.BIN.OBJ): $(VISUALINFO.BIN.SRC) include/GL/glew.h include/GL/wglew. # Install targets -install.all: install install.mx install.bin +install.all: install install.bin install: install.include install.lib install.pkgconfig -install.mx: install.include install.lib.mx install.pkgconfig.mx - install.lib: glew.lib $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)" # runtime @@ -273,27 +218,6 @@ ifneq ($(LN),) endif $(INSTALL) -m 0644 lib/$(LIB.STATIC) "$(DESTDIR)$(LIBDIR)/" -install.lib.mx: glew.lib.mx - $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)" -# runtime -ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),) - $(INSTALL) -d -m 0755 "$(DESTDIR)$(BINDIR)" - $(INSTALL) -m 0755 lib/$(LIB.SHARED.MX) "$(DESTDIR)$(BINDIR)/" -else - $(INSTALL) -m 0644 lib/$(LIB.SHARED.MX) "$(DESTDIR)$(LIBDIR)/" -endif -ifneq ($(LN),) - $(LN) $(LIB.SHARED.MX) "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME.MX)" -endif -# development files -ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),) - $(INSTALL) -m 0644 lib/$(LIB.DEVLNK.MX) "$(DESTDIR)$(LIBDIR)/" -endif -ifneq ($(LN),) - $(LN) $(LIB.SHARED.MX) "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK.MX)" -endif - $(INSTALL) -m 0644 lib/$(LIB.STATIC.MX) "$(DESTDIR)$(LIBDIR)/" - install.bin: glew.bin $(INSTALL) -d -m 0755 "$(DESTDIR)$(BINDIR)" $(INSTALL) -s -m 0755 bin/$(GLEWINFO.BIN) bin/$(VISUALINFO.BIN) "$(DESTDIR)$(BINDIR)/" @@ -309,30 +233,25 @@ install.pkgconfig: glew.pc $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)/pkgconfig" $(INSTALL) -m 0644 glew.pc "$(DESTDIR)$(LIBDIR)/pkgconfig/" -install.pkgconfig.mx: glewmx.pc - $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)" - $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)/pkgconfig" - $(INSTALL) -m 0644 glewmx.pc "$(DESTDIR)$(LIBDIR)/pkgconfig/" - uninstall: $(RM) "$(DESTDIR)$(INCDIR)/wglew.h" $(RM) "$(DESTDIR)$(INCDIR)/glew.h" $(RM) "$(DESTDIR)$(INCDIR)/glxew.h" - $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK)" "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK.MX)" + $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.DEVLNK)" ifeq ($(filter-out mingw% cygwin,$(SYSTEM)),) - $(RM) "$(DESTDIR)$(BINDIR)/$(LIB.SHARED)" "$(DESTDIR)$(BINDIR)/$(LIB.SHARED.MX)" + $(RM) "$(DESTDIR)$(BINDIR)/$(LIB.SHARED)" else - $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME)" "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME.MX)" - $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.SHARED)" "$(DESTDIR)$(LIBDIR)/$(LIB.SHARED.MX)" + $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.SONAME)" + $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.SHARED)" endif - $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.STATIC)" "$(DESTDIR)$(LIBDIR)/$(LIB.STATIC.MX)" + $(RM) "$(DESTDIR)$(LIBDIR)/$(LIB.STATIC)" $(RM) "$(DESTDIR)$(BINDIR)/$(GLEWINFO.BIN)" "$(DESTDIR)$(BINDIR)/$(VISUALINFO.BIN)" clean: $(RM) -r tmp/ $(RM) -r lib/ $(RM) -r bin/ - $(RM) glew.pc glewmx.pc + $(RM) glew.pc distclean: clean find . -name \*~ | xargs $(RM) diff --git a/auto/Makefile b/auto/Makefile index 579f8ee..33663ac 100644 --- a/auto/Makefile +++ b/auto/Makefile @@ -250,7 +250,7 @@ $(S.DEST)/glew.c: $(EXT)/.dummy perl -e "s/GLEW_VERSION_MAJOR_STRING/$(GLEW_MAJOR)/g" -pi $@ perl -e "s/GLEW_VERSION_MINOR_STRING/$(GLEW_MINOR)/g" -pi $@ perl -e "s/GLEW_VERSION_MICRO_STRING/$(GLEW_MICRO)/g" -pi $@ - perl -e "s/GLEW_ARB_vertex_shader = !_glewInit_GL_ARB_vertex_shader\(GLEW_CONTEXT_ARG_VAR_INIT\);/{ GLEW_ARB_vertex_shader = !_glewInit_GL_ARB_vertex_shader(GLEW_CONTEXT_ARG_VAR_INIT); _glewInit_GL_ARB_vertex_program(GLEW_CONTEXT_ARG_VAR_INIT); }/g" -pi $@ + perl -e "s/GLEW_ARB_vertex_shader = !_glewInit_GL_ARB_vertex_shader\(\);/{ GLEW_ARB_vertex_shader = !_glewInit_GL_ARB_vertex_shader(); _glewInit_GL_ARB_vertex_program(); }/g" -pi $@ perl -e "s/\(\(glColorSubTable = /((glBlendEquation = (PFNGLBLENDEQUATIONPROC)glewGetProcAddress((const GLubyte*)\"glBlendEquation\")) == NULL) || r;\n r = ((glColorSubTable = /g" -pi $@ rm -f $@.bak diff --git a/auto/bin/make_init.pl b/auto/bin/make_init.pl index dc9dca1..343a1ad 100755 --- a/auto/bin/make_init.pl +++ b/auto/bin/make_init.pl @@ -23,7 +23,7 @@ sub make_pfn_def_init($%) sub make_reuse_call($%) { - return " r = _glewInit_" . $_[0] . "(GLEW_CONTEXT_ARG_VAR_INIT) || r;"; + return " r = _glewInit_" . $_[0] . "() || r;"; } #------------------------------------------------------------------------------- @@ -49,8 +49,7 @@ if (@ARGV) if (keys %$functions or keys @$reuse) { print "#ifdef $extname\n\n"; - print "static GLboolean _glewInit_$extname (" . $type . - "EW_CONTEXT_ARG_DEF_INIT)\n{\n GLboolean r = GL_FALSE;\n"; + print "static GLboolean _glewInit_$extname ()\n{\n GLboolean r = GL_FALSE;\n"; output_reuse($reuse, \&make_reuse_call); output_decls($functions, \&make_pfn_def_init); print "\n return r;\n}\n\n"; diff --git a/auto/bin/make_initd.pl b/auto/bin/make_initd.pl index b7b552a..35c3b5d 100755 --- a/auto/bin/make_initd.pl +++ b/auto/bin/make_initd.pl @@ -36,8 +36,7 @@ if (@ARGV) #print "#ifdef $extname\n\n"; if (keys %$functions) { - print "static GLboolean _glewInit_$extname (" . $type . - "EW_CONTEXT_ARG_DEF_INIT);\n"; + print "static GLboolean _glewInit_$extname ();\n"; } #print "#endif /* $extname */\n\n"; } diff --git a/auto/bin/make_list.pl b/auto/bin/make_list.pl index e1accb9..3d0ddce 100755 --- a/auto/bin/make_list.pl +++ b/auto/bin/make_list.pl @@ -56,11 +56,11 @@ if (@ARGV) { if ($extname =~ /WGL_.*/) { - print " if (glewExperimental || " . $extvar . "|| crippled) " . $extvar . "= !_glewInit_$extname(GLEW_CONTEXT_ARG_VAR_INIT);\n"; + print " if (glewExperimental || " . $extvar . "|| crippled) " . $extvar . "= !_glewInit_$extname();\n"; } else { - print " if (glewExperimental || " . $extvar . ") " . $extvar . " = !_glewInit_$extname(GLEW_CONTEXT_ARG_VAR_INIT);\n"; + print " if (glewExperimental || " . $extvar . ") " . $extvar . " = !_glewInit_$extname();\n"; } } diff --git a/auto/doc/advanced.html b/auto/doc/advanced.html index 4bf2aa8..740a797 100644 --- a/auto/doc/advanced.html +++ b/auto/doc/advanced.html @@ -110,45 +110,6 @@ WGL_ATI_pixel_format_float
WGL_NV_float_buffer

-

Multiple Rendering Contexts (GLEW MX)

- -

Starting with release 1.2.0, thread-safe support for multiple -rendering contexts, possibly with different capabilities, is -available. Since this is not required by most users, it is not added -to the binary releases to maintain compatibility between different -versions. To include multi-context support, you have to do the -following:

-
    -
  1. Compile and use GLEW with the GLEW_MX preprocessor token -defined.
  2. -
  3. For each rendering context, create a GLEWContext object -that will be available as long as the rendering context exists.
  4. -
  5. Define a macro or function called glewGetContext() that -returns a pointer to the GLEWContext object associated with -the rendering context from which OpenGL/WGL/GLX calls are issued. This -dispatch mechanism is primitive, but generic. -
  6. Make sure that you call glewInit() after creating the -GLEWContext object in each rendering context. Note, that the -GLEWContext pointer returned by glewGetContext() has -to reside in global or thread-local memory. -
- -

Note that according to the MSDN -WGL documentation, you have to initialize the entry points for -every rendering context that use pixel formats with different -capabilities For example, the pixel formats provided by the generic -software OpenGL implementation by Microsoft vs. the hardware -accelerated pixel formats have different capabilities. GLEW by -default ignores this requirement, and does not define per-context -entry points (you can however do this using the steps described -above). Assuming a global namespace for the entry points works in -most situations, because typically all hardware accelerated pixel -formats provide the same entry points and capabilities. This means -that unless you use the multi-context version of GLEW, you need to -call glewInit() only once in your program, or more precisely, -once per process.

-

Separate Namespace

diff --git a/auto/src/glew.rc b/auto/src/glew.rc index c5afe1c..e930220 100644 --- a/auto/src/glew.rc +++ b/auto/src/glew.rc @@ -1,34 +1,18 @@ #include -#ifdef GLEW_MX -# ifdef GLEW_STATIC -# ifdef _DEBUG -# define FILENAME "glew32mxsd.dll" -# else -# define FILENAME "glew32mxs.dll" -# endif -# else -# ifdef _DEBUG -# define FILENAME "glew32mxd.dll" -# else -# define FILENAME "glew32mx.dll" -# endif -# endif +#ifdef GLEW_STATIC +# ifdef _DEBUG +# define FILENAME "glew32sd.dll" +# else +# define FILENAME "glew32s.dll" +# endif #else -# ifdef GLEW_STATIC -# ifdef _DEBUG -# define FILENAME "glew32sd.dll" -# else -# define FILENAME "glew32s.dll" -# endif -# else -# ifdef _DEBUG -# define FILENAME "glew32d.dll" -# else -# define FILENAME "glew32.dll" -# endif -# endif +# ifdef _DEBUG +# define FILENAME "glew32d.dll" +# else +# define FILENAME "glew32.dll" +# endif #endif ///////////////////////////////////////////////////////////////////////////// diff --git a/auto/src/glew_head.c b/auto/src/glew_head.c index ddcdd9f..e8672cb 100644 --- a/auto/src/glew_head.c +++ b/auto/src/glew_head.c @@ -13,35 +13,6 @@ #include /* For malloc, free */ #include /* For memset */ -/* - * Define glewGetContext and related helper macros. - */ -#ifdef GLEW_MX -# define glewGetContext() ctx -# ifdef _WIN32 -# define GLEW_CONTEXT_ARG_DEF_INIT GLEWContext* ctx -# define GLEW_CONTEXT_ARG_VAR_INIT ctx -# define wglewGetContext() ctx -# define WGLEW_CONTEXT_ARG_DEF_INIT WGLEWContext* ctx -# define WGLEW_CONTEXT_ARG_DEF_LIST WGLEWContext* ctx -# else /* _WIN32 */ -# define GLEW_CONTEXT_ARG_DEF_INIT void -# define GLEW_CONTEXT_ARG_VAR_INIT -# define glxewGetContext() ctx -# define GLXEW_CONTEXT_ARG_DEF_INIT void -# define GLXEW_CONTEXT_ARG_DEF_LIST GLXEWContext* ctx -# endif /* _WIN32 */ -# define GLEW_CONTEXT_ARG_DEF_LIST GLEWContext* ctx -#else /* GLEW_MX */ -# define GLEW_CONTEXT_ARG_DEF_INIT void -# define GLEW_CONTEXT_ARG_VAR_INIT -# define GLEW_CONTEXT_ARG_DEF_LIST void -# define WGLEW_CONTEXT_ARG_DEF_INIT void -# define WGLEW_CONTEXT_ARG_DEF_LIST void -# define GLXEW_CONTEXT_ARG_DEF_INIT void -# define GLXEW_CONTEXT_ARG_DEF_LIST void -#endif /* GLEW_MX */ - #if defined(GLEW_REGAL) /* In GLEW_REGAL mode we call direcly into the linked @@ -165,28 +136,16 @@ void* NSGLGetProcAddress (const GLubyte *name) */ #undef GLEW_GET_VAR -#ifdef GLEW_MX -# define GLEW_GET_VAR(x) (glewGetContext()->x) -#else /* GLEW_MX */ # define GLEW_GET_VAR(x) (x) -#endif /* GLEW_MX */ #ifdef WGLEW_GET_VAR # undef WGLEW_GET_VAR -# ifdef GLEW_MX -# define WGLEW_GET_VAR(x) (wglewGetContext()->x) -# else /* GLEW_MX */ -# define WGLEW_GET_VAR(x) (x) -# endif /* GLEW_MX */ +# define WGLEW_GET_VAR(x) (x) #endif /* WGLEW_GET_VAR */ #ifdef GLXEW_GET_VAR # undef GLXEW_GET_VAR -# ifdef GLEW_MX -# define GLXEW_GET_VAR(x) (glxewGetContext()->x) -# else /* GLEW_MX */ -# define GLXEW_GET_VAR(x) (x) -# endif /* GLEW_MX */ +# define GLXEW_GET_VAR(x) (x) #endif /* GLXEW_GET_VAR */ /* diff --git a/auto/src/glew_init_gl.c b/auto/src/glew_init_gl.c index 38293c2..3a30e58 100644 --- a/auto/src/glew_init_gl.c +++ b/auto/src/glew_init_gl.c @@ -59,10 +59,7 @@ GLboolean GLEWAPIENTRY glewGetExtension (const char* name) /* ------------------------------------------------------------------------- */ -#ifndef GLEW_MX -static -#endif -GLenum GLEWAPIENTRY glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST) +static GLenum GLEWAPIENTRY glewContextInit () { const GLubyte* s; GLuint dot; diff --git a/auto/src/glew_init_glx.c b/auto/src/glew_init_glx.c index b54cca3..159e45d 100644 --- a/auto/src/glew_init_glx.c +++ b/auto/src/glew_init_glx.c @@ -12,17 +12,13 @@ GLboolean glxewGetExtension (const char* name) return _glewSearchExtension(name, start, end); } -#ifdef GLEW_MX -GLenum glxewContextInit (GLXEW_CONTEXT_ARG_DEF_LIST) -#else -GLenum glxewInit (GLXEW_CONTEXT_ARG_DEF_LIST) -#endif +GLenum glxewInit () { int major, minor; const GLubyte* extStart; const GLubyte* extEnd; /* initialize core GLX 1.2 */ - if (_glewInit_GLX_VERSION_1_2(GLEW_CONTEXT_ARG_VAR_INIT)) return GLEW_ERROR_GLX_VERSION_11_ONLY; + if (_glewInit_GLX_VERSION_1_2()) return GLEW_ERROR_GLX_VERSION_11_ONLY; /* initialize flags */ GLXEW_VERSION_1_0 = GL_TRUE; GLXEW_VERSION_1_1 = GL_TRUE; diff --git a/auto/src/glew_init_tail.c b/auto/src/glew_init_tail.c index ba68ccf..17735dc 100644 --- a/auto/src/glew_init_tail.c +++ b/auto/src/glew_init_tail.c @@ -32,8 +32,6 @@ const GLubyte * GLEWAPIENTRY glewGetString (GLenum name) GLboolean glewExperimental = GL_FALSE; -#if !defined(GLEW_MX) - GLenum GLEWAPIENTRY glewInit (void) { GLenum r; @@ -49,5 +47,3 @@ GLenum GLEWAPIENTRY glewInit (void) return r; #endif /* _WIN32 */ } - -#endif /* !GLEW_MX */ diff --git a/auto/src/glew_init_wgl.c b/auto/src/glew_init_wgl.c index cc731fe..978cf3c 100644 --- a/auto/src/glew_init_wgl.c +++ b/auto/src/glew_init_wgl.c @@ -20,11 +20,7 @@ GLboolean GLEWAPIENTRY wglewGetExtension (const char* name) return _glewSearchExtension(name, start, end); } -#ifdef GLEW_MX -GLenum GLEWAPIENTRY wglewContextInit (WGLEW_CONTEXT_ARG_DEF_LIST) -#else -GLenum GLEWAPIENTRY wglewInit (WGLEW_CONTEXT_ARG_DEF_LIST) -#endif +GLenum GLEWAPIENTRY wglewInit () { GLboolean crippled; const GLubyte* extStart; diff --git a/auto/src/glew_str_glx.c b/auto/src/glew_str_glx.c index 785c23a..af4f8c6 100644 --- a/auto/src/glew_str_glx.c +++ b/auto/src/glew_str_glx.c @@ -6,11 +6,7 @@ #elif !defined(GLEW_OSMESA) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX) -#if defined(GLEW_MX) -GLboolean glxewContextIsSupported (const GLXEWContext* ctx, const char* name) -#else GLboolean glxewIsSupported (const char* name) -#endif { const GLubyte* pos = (const GLubyte*)name; GLuint len = _glewStrLen(pos); diff --git a/auto/src/glew_str_head.c b/auto/src/glew_str_head.c index 1e8d963..fed3a0f 100644 --- a/auto/src/glew_str_head.c +++ b/auto/src/glew_str_head.c @@ -1,8 +1,4 @@ -#ifdef GLEW_MX -GLboolean GLEWAPIENTRY glewContextIsSupported (const GLEWContext* ctx, const char* name) -#else GLboolean GLEWAPIENTRY glewIsSupported (const char* name) -#endif { const GLubyte* pos = (const GLubyte*)name; GLuint len = _glewStrLen(pos); diff --git a/auto/src/glew_str_wgl.c b/auto/src/glew_str_wgl.c index 01055a4..b204386 100644 --- a/auto/src/glew_str_wgl.c +++ b/auto/src/glew_str_wgl.c @@ -6,11 +6,7 @@ #if defined(_WIN32) && !defined(GLEW_OSMESA) -#if defined(GLEW_MX) -GLboolean GLEWAPIENTRY wglewContextIsSupported (const WGLEWContext* ctx, const char* name) -#else GLboolean GLEWAPIENTRY wglewIsSupported (const char* name) -#endif { const GLubyte* pos = (const GLubyte*)name; GLuint len = _glewStrLen(pos); diff --git a/auto/src/glew_tail.h b/auto/src/glew_tail.h index 92ac0bd..6ee9912 100644 --- a/auto/src/glew_tail.h +++ b/auto/src/glew_tail.h @@ -25,25 +25,6 @@ VERSION_MICRO GLEW_VERSION_MICRO_STRING */ /* API */ -#ifdef GLEW_MX - -typedef struct GLEWContextStruct GLEWContext; -GLEWAPI GLenum GLEWAPIENTRY glewContextInit (GLEWContext *ctx); -GLEWAPI GLboolean GLEWAPIENTRY glewContextIsSupported (const GLEWContext *ctx, const char *name); - -#define glewInit() glewContextInit(glewGetContext()) -#define glewIsSupported(x) glewContextIsSupported(glewGetContext(), x) -#define glewIsExtensionSupported(x) glewIsSupported(x) - -#define GLEW_GET_VAR(x) (*(const GLboolean*)&(glewGetContext()->x)) -#ifdef _WIN32 -# define GLEW_GET_FUN(x) glewGetContext()->x -#else -# define GLEW_GET_FUN(x) x -#endif - -#else /* GLEW_MX */ - GLEWAPI GLenum GLEWAPIENTRY glewInit (void); GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name); #define glewIsExtensionSupported(x) glewIsSupported(x) @@ -51,8 +32,6 @@ GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name); #define GLEW_GET_VAR(x) (*(const GLboolean*)&x) #define GLEW_GET_FUN(x) x -#endif /* GLEW_MX */ - GLEWAPI GLboolean glewExperimental; GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name); GLEWAPI const GLubyte * GLEWAPIENTRY glewGetErrorString (GLenum error); diff --git a/auto/src/glewinfo.rc b/auto/src/glewinfo.rc index 7a2d920..2f46bc5 100644 --- a/auto/src/glewinfo.rc +++ b/auto/src/glewinfo.rc @@ -1,18 +1,10 @@ #include -#ifdef GLEW_MX -# ifdef _DEBUG -# define FILENAME "glewinfo-mxd.exe" -# else -# define FILENAME "glewinfo-mx.exe" -# endif +#ifdef _DEBUG +# define FILENAME "glewinfod.exe" #else -# ifdef _DEBUG -# define FILENAME "glewinfod.exe" -# else -# define FILENAME "glewinfo.exe" -# endif +# define FILENAME "glewinfo.exe" #endif ///////////////////////////////////////////////////////////////////////////// diff --git a/auto/src/glewinfo_head.c b/auto/src/glewinfo_head.c index fd4bead..6a8347b 100644 --- a/auto/src/glewinfo_head.c +++ b/auto/src/glewinfo_head.c @@ -21,18 +21,6 @@ static FILE* f; -#ifdef GLEW_MX -GLEWContext _glewctx; -#define glewGetContext() (&_glewctx) -#if defined(_WIN32) -WGLEWContext _wglewctx; -#define wglewGetContext() (&_wglewctx) -#elif !defined(GLEW_OSMESA) && !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX) -GLXEWContext _glxewctx; -#define glxewGetContext() (&_glxewctx) -#endif -#endif - /* Command-line parameters for GL context creation */ struct createParams diff --git a/auto/src/glewinfo_tail.c b/auto/src/glewinfo_tail.c index 1999b06..e69f96d 100644 --- a/auto/src/glewinfo_tail.c +++ b/auto/src/glewinfo_tail.c @@ -46,18 +46,7 @@ int main (int argc, char** argv) return 1; } glewExperimental = GL_TRUE; -#ifdef GLEW_MX - err = glewContextInit(glewGetContext()); -#if defined(GLEW_OSMESA) -#elif defined(_WIN32) - err = err || wglewContextInit(wglewGetContext()); -#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX) - err = err || glxewContextInit(glxewGetContext()); -#endif - -#else err = glewInit(); -#endif if (GLEW_OK != err) { fprintf(stderr, "Error [main]: glewInit failed: %s\n", glewGetErrorString(err)); diff --git a/auto/src/glxew_mid.h b/auto/src/glxew_mid.h index e9a3391..7fcf5d6 100644 --- a/auto/src/glxew_mid.h +++ b/auto/src/glxew_mid.h @@ -1,9 +1,4 @@ /* ------------------------------------------------------------------------- */ -#ifdef GLEW_MX -#define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT -#define GLXEW_VAR_EXPORT -#else #define GLXEW_FUN_EXPORT GLEW_FUN_EXPORT #define GLXEW_VAR_EXPORT GLEW_VAR_EXPORT -#endif /* GLEW_MX */ diff --git a/auto/src/glxew_tail.h b/auto/src/glxew_tail.h index e086253..4026fa7 100644 --- a/auto/src/glxew_tail.h +++ b/auto/src/glxew_tail.h @@ -1,27 +1,11 @@ /* ------------------------------------------------------------------------ */ -#ifdef GLEW_MX - -typedef struct GLXEWContextStruct GLXEWContext; -GLEWAPI GLenum GLEWAPIENTRY glxewContextInit (GLXEWContext *ctx); -GLEWAPI GLboolean GLEWAPIENTRY glxewContextIsSupported (const GLXEWContext *ctx, const char *name); - -#define glxewInit() glxewContextInit(glxewGetContext()) -#define glxewIsSupported(x) glxewContextIsSupported(glxewGetContext(), x) - -#define GLXEW_GET_VAR(x) (*(const GLboolean*)&(glxewGetContext()->x)) -#define GLXEW_GET_FUN(x) x - -#else /* GLEW_MX */ - GLEWAPI GLenum GLEWAPIENTRY glxewInit (); GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name); #define GLXEW_GET_VAR(x) (*(const GLboolean*)&x) #define GLXEW_GET_FUN(x) x -#endif /* GLEW_MX */ - GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name); #ifdef __cplusplus diff --git a/auto/src/visualinfo.rc b/auto/src/visualinfo.rc index ed747df..5719592 100644 --- a/auto/src/visualinfo.rc +++ b/auto/src/visualinfo.rc @@ -1,18 +1,10 @@ #include -#ifdef GLEW_MX -# ifdef _DEBUG -# define FILENAME "visualinfo-mxd.exe" -# else -# define FILENAME "visualinfo-mx.exe" -# endif +#ifdef _DEBUG +# define FILENAME "visualinfod.exe" #else -# ifdef _DEBUG -# define FILENAME "visualinfod.exe" -# else -# define FILENAME "visualinfo.exe" -# endif +# define FILENAME "visualinfo.exe" #endif ///////////////////////////////////////////////////////////////////////////// diff --git a/auto/src/wglew_mid.h b/auto/src/wglew_mid.h index a0a5ade..25b1037 100644 --- a/auto/src/wglew_mid.h +++ b/auto/src/wglew_mid.h @@ -1,9 +1,4 @@ /* ------------------------------------------------------------------------- */ -#ifdef GLEW_MX -#define WGLEW_FUN_EXPORT -#define WGLEW_VAR_EXPORT -#else #define WGLEW_FUN_EXPORT GLEW_FUN_EXPORT #define WGLEW_VAR_EXPORT GLEW_VAR_EXPORT -#endif /* GLEW_MX */ diff --git a/auto/src/wglew_tail.h b/auto/src/wglew_tail.h index f48f36c..3810662 100644 --- a/auto/src/wglew_tail.h +++ b/auto/src/wglew_tail.h @@ -1,27 +1,11 @@ /* ------------------------------------------------------------------------- */ -#ifdef GLEW_MX - -typedef struct WGLEWContextStruct WGLEWContext; -GLEWAPI GLenum GLEWAPIENTRY wglewContextInit (WGLEWContext *ctx); -GLEWAPI GLboolean GLEWAPIENTRY wglewContextIsSupported (const WGLEWContext *ctx, const char *name); - -#define wglewInit() wglewContextInit(wglewGetContext()) -#define wglewIsSupported(x) wglewContextIsSupported(wglewGetContext(), x) - -#define WGLEW_GET_VAR(x) (*(const GLboolean*)&(wglewGetContext()->x)) -#define WGLEW_GET_FUN(x) wglewGetContext()->x - -#else /* GLEW_MX */ - GLEWAPI GLenum GLEWAPIENTRY wglewInit (); GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name); #define WGLEW_GET_VAR(x) (*(const GLboolean*)&x) #define WGLEW_GET_FUN(x) x -#endif /* GLEW_MX */ - GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name); #ifdef __cplusplus diff --git a/build/cmake/CMakeLists.txt b/build/cmake/CMakeLists.txt index 1f458a7..353be7f 100644 --- a/build/cmake/CMakeLists.txt +++ b/build/cmake/CMakeLists.txt @@ -84,20 +84,11 @@ set_target_properties (glew_s PROPERTIES COMPILE_DEFINITIONS "GLEW_STATIC" OUTPU target_link_libraries (glew ${GLEW_LIBRARIES}) target_link_libraries (glew_s ${GLEW_LIBRARIES}) -add_library(glewmx SHARED ${GLEW_SRC_FILES}) -set_target_properties (glewmx PROPERTIES COMPILE_DEFINITIONS "GLEW_BUILD;GLEW_MX" OUTPUT_NAME "${GLEW_LIB_NAME}mx" PREFIX "${DLL_PREFIX}") -add_library(glewmx_s STATIC ${GLEW_SRC_FILES}) -set_target_properties (glewmx_s PROPERTIES COMPILE_DEFINITIONS "GLEW_STATIC;GLEW_MX" OUTPUT_NAME "${GLEW_LIB_NAME}mx" PREFIX lib) -target_link_libraries (glewmx ${GLEW_LIBRARIES}) -target_link_libraries (glewmx_s ${GLEW_LIBRARIES}) - if(CMAKE_VERSION VERSION_LESS 2.8.12) set(MAYBE_EXPORT "") else() target_compile_definitions(glew_s INTERFACE "GLEW_STATIC") - target_compile_definitions(glewmx INTERFACE "GLEW_MX") - target_compile_definitions(glewmx_s INTERFACE "GLEW_STATIC;GLEW_MX") - foreach(t glew glew_s glewmx glewmx_s) + foreach(t glew glew_s ) target_include_directories(${t} PUBLIC $) endforeach() set(MAYBE_EXPORT EXPORT glew-targets) @@ -105,11 +96,11 @@ endif() set(targets_to_install "") if(NOT DEFINED BUILD_SHARED_LIBS OR BUILD_SHARED_LIBS) - list(APPEND targets_to_install glew glewmx) + list(APPEND targets_to_install glew ) endif() if(NOT DEFINED BUILD_SHARED_LIBS OR NOT BUILD_SHARED_LIBS) - list(APPEND targets_to_install glew_s glewmx_s) + list(APPEND targets_to_install glew_s ) endif() install ( TARGETS ${targets_to_install} @@ -148,11 +139,8 @@ set (libname ${GLEW_LIB_NAME}) set (cflags) set (requireslib glu) configure_file (${GLEW_DIR}/glew.pc.in ${GLEW_DIR}/glew.pc @ONLY) -set (cflags "-DGLEW_MX") -set (libname ${GLEW_LIB_NAME}mx) -configure_file (${GLEW_DIR}/glew.pc.in ${GLEW_DIR}/glewmx.pc @ONLY) -install(FILES ${GLEW_DIR}/glew.pc ${GLEW_DIR}/glewmx.pc +install(FILES ${GLEW_DIR}/glew.pc DESTINATION lib/pkgconfig ) diff --git a/doc/advanced.html b/doc/advanced.html index 8165a72..ffd1242 100644 --- a/doc/advanced.html +++ b/doc/advanced.html @@ -204,45 +204,6 @@ WGL_ATI_pixel_format_float
WGL_NV_float_buffer

-

Multiple Rendering Contexts (GLEW MX)

- -

Starting with release 1.2.0, thread-safe support for multiple -rendering contexts, possibly with different capabilities, is -available. Since this is not required by most users, it is not added -to the binary releases to maintain compatibility between different -versions. To include multi-context support, you have to do the -following:

-
    -
  1. Compile and use GLEW with the GLEW_MX preprocessor token -defined.
  2. -
  3. For each rendering context, create a GLEWContext object -that will be available as long as the rendering context exists.
  4. -
  5. Define a macro or function called glewGetContext() that -returns a pointer to the GLEWContext object associated with -the rendering context from which OpenGL/WGL/GLX calls are issued. This -dispatch mechanism is primitive, but generic. -
  6. Make sure that you call glewInit() after creating the -GLEWContext object in each rendering context. Note, that the -GLEWContext pointer returned by glewGetContext() has -to reside in global or thread-local memory. -
- -

Note that according to the MSDN -WGL documentation, you have to initialize the entry points for -every rendering context that use pixel formats with different -capabilities For example, the pixel formats provided by the generic -software OpenGL implementation by Microsoft vs. the hardware -accelerated pixel formats have different capabilities. GLEW by -default ignores this requirement, and does not define per-context -entry points (you can however do this using the steps described -above). Assuming a global namespace for the entry points works in -most situations, because typically all hardware accelerated pixel -formats provide the same entry points and capabilities. This means -that unless you use the multi-context version of GLEW, you need to -call glewInit() only once in your program, or more precisely, -once per process.

-

Separate Namespace

diff --git a/doc/glew.html b/doc/glew.html index 1b26e5f..3b82eae 100644 --- a/doc/glew.html +++ b/doc/glew.html @@ -494,206 +494,207 @@ THE POSSIBILITY OF SUCH DAMAGE. 384 KHR_robustness 385 KHR_texture_compression_astc_hdr 386 KHR_texture_compression_astc_ldr +387 KHR_texture_compression_astc_sliced_3d
-387 KTX_buffer_region +388 KTX_buffer_region
-388 MESAX_texture_stack +389 MESAX_texture_stack
-389 MESA_pack_invert -390 MESA_resize_buffers -391 MESA_window_pos -392 MESA_ycbcr_texture +390 MESA_pack_invert +391 MESA_resize_buffers +392 MESA_window_pos +393 MESA_ycbcr_texture
-393 NVX_conditional_render -394 NVX_gpu_memory_info +394 NVX_conditional_render +395 NVX_gpu_memory_info
-395 NV_bindless_multi_draw_indirect -396 NV_bindless_multi_draw_indirect_count -397 NV_bindless_texture -398 NV_blend_equation_advanced -399 NV_blend_equation_advanced_coherent -400 NV_blend_square -401 NV_compute_program5 -402 NV_conditional_render -403 NV_conservative_raster -404 NV_conservative_raster_dilate -405 NV_copy_depth_to_color -406 NV_copy_image -407 NV_deep_texture3D -408 NV_depth_buffer_float -409 NV_depth_clamp -410 NV_depth_range_unclamped -411 NV_draw_texture -412 NV_evaluators -413 NV_explicit_multisample -414 NV_fence -415 NV_fill_rectangle -416 NV_float_buffer -417 NV_fog_distance -418 NV_fragment_coverage_to_color -419 NV_fragment_program -420 NV_fragment_program2 -421 NV_fragment_program4 -422 NV_fragment_program_option -423 NV_fragment_shader_interlock -424 NV_framebuffer_mixed_samples -425 NV_framebuffer_multisample_coverage -426 NV_geometry_program4 -427 NV_geometry_shader4 -428 NV_geometry_shader_passthrough -429 NV_gpu_program4 -430 NV_gpu_program5 -431 NV_gpu_program5_mem_extended -432 NV_gpu_program_fp64 -433 NV_gpu_shader5 -434 NV_half_float -435 NV_internalformat_sample_query -436 NV_light_max_exponent -437 NV_multisample_coverage -438 NV_multisample_filter_hint -439 NV_occlusion_query -440 NV_packed_depth_stencil -441 NV_parameter_buffer_object -442 NV_parameter_buffer_object2 -443 NV_path_rendering -444 NV_path_rendering_shared_edge -445 NV_pixel_data_range -446 NV_point_sprite -447 NV_present_video -448 NV_primitive_restart -449 NV_register_combiners -450 NV_register_combiners2 -451 NV_sample_locations -452 NV_sample_mask_override_coverage -453 NV_shader_atomic_counters -454 NV_shader_atomic_float -455 NV_shader_atomic_fp16_vector -456 NV_shader_atomic_int64 -457 NV_shader_buffer_load -458 NV_shader_storage_buffer_object -459 NV_shader_thread_group -460 NV_shader_thread_shuffle -461 NV_tessellation_program5 -462 NV_texgen_emboss -463 NV_texgen_reflection -464 NV_texture_barrier -465 NV_texture_compression_vtc -466 NV_texture_env_combine4 -467 NV_texture_expand_normal -468 NV_texture_multisample -469 NV_texture_rectangle -470 NV_texture_shader -471 NV_texture_shader2 -472 NV_texture_shader3 -473 NV_transform_feedback -474 NV_transform_feedback2 -475 NV_uniform_buffer_unified_memory -476 NV_vdpau_interop -477 NV_vertex_array_range -478 NV_vertex_array_range2 -479 NV_vertex_attrib_integer_64bit -480 NV_vertex_buffer_unified_memory -481 NV_vertex_program -482 NV_vertex_program1_1 -483 NV_vertex_program2 -484 NV_vertex_program2_option -485 NV_vertex_program3 -486 NV_vertex_program4 -487 NV_video_capture -488 NV_viewport_array2 +396 NV_bindless_multi_draw_indirect +397 NV_bindless_multi_draw_indirect_count +398 NV_bindless_texture +399 NV_blend_equation_advanced +400 NV_blend_equation_advanced_coherent +401 NV_blend_square +402 NV_compute_program5 +403 NV_conditional_render +404 NV_conservative_raster +405 NV_conservative_raster_dilate +406 NV_copy_depth_to_color +407 NV_copy_image +408 NV_deep_texture3D +409 NV_depth_buffer_float +410 NV_depth_clamp +411 NV_depth_range_unclamped +412 NV_draw_texture +413 NV_evaluators +414 NV_explicit_multisample +415 NV_fence +416 NV_fill_rectangle +417 NV_float_buffer +418 NV_fog_distance +419 NV_fragment_coverage_to_color +420 NV_fragment_program +421 NV_fragment_program2 +422 NV_fragment_program4 +423 NV_fragment_program_option +424 NV_fragment_shader_interlock +425 NV_framebuffer_mixed_samples +426 NV_framebuffer_multisample_coverage +427 NV_geometry_program4 +428 NV_geometry_shader4 +429 NV_geometry_shader_passthrough +430 NV_gpu_program4 +431 NV_gpu_program5 +432 NV_gpu_program5_mem_extended +433 NV_gpu_program_fp64 +434 NV_gpu_shader5 +435 NV_half_float +436 NV_internalformat_sample_query +437 NV_light_max_exponent +438 NV_multisample_coverage +439 NV_multisample_filter_hint +440 NV_occlusion_query +441 NV_packed_depth_stencil +442 NV_parameter_buffer_object +443 NV_parameter_buffer_object2 +444 NV_path_rendering +445 NV_path_rendering_shared_edge +446 NV_pixel_data_range +447 NV_point_sprite +448 NV_present_video +449 NV_primitive_restart +450 NV_register_combiners +451 NV_register_combiners2 +452 NV_sample_locations +453 NV_sample_mask_override_coverage +454 NV_shader_atomic_counters +455 NV_shader_atomic_float +456 NV_shader_atomic_fp16_vector +457 NV_shader_atomic_int64 +458 NV_shader_buffer_load +459 NV_shader_storage_buffer_object +460 NV_shader_thread_group +461 NV_shader_thread_shuffle +462 NV_tessellation_program5 +463 NV_texgen_emboss +464 NV_texgen_reflection +465 NV_texture_barrier +466 NV_texture_compression_vtc +467 NV_texture_env_combine4 +468 NV_texture_expand_normal +469 NV_texture_multisample +470 NV_texture_rectangle +471 NV_texture_shader +472 NV_texture_shader2 +473 NV_texture_shader3 +474 NV_transform_feedback +475 NV_transform_feedback2 +476 NV_uniform_buffer_unified_memory +477 NV_vdpau_interop +478 NV_vertex_array_range +479 NV_vertex_array_range2 +480 NV_vertex_attrib_integer_64bit +481 NV_vertex_buffer_unified_memory +482 NV_vertex_program +483 NV_vertex_program1_1 +484 NV_vertex_program2 +485 NV_vertex_program2_option +486 NV_vertex_program3 +487 NV_vertex_program4 +488 NV_video_capture +489 NV_viewport_array2
-489 OES_byte_coordinates -490 OES_compressed_paletted_texture -491 OES_read_format -492 OES_single_precision +490 OES_byte_coordinates +491 OES_compressed_paletted_texture +492 OES_read_format +493 OES_single_precision
-493 OML_interlace -494 OML_resample -495 OML_subsample +494 OML_interlace +495 OML_resample +496 OML_subsample
-496 OVR_multiview -497 OVR_multiview2 +497 OVR_multiview +498 OVR_multiview2
-498 PGI_misc_hints -499 PGI_vertex_hints +499 PGI_misc_hints +500 PGI_vertex_hints
-500 REGAL_ES1_0_compatibility -501 REGAL_ES1_1_compatibility -502 REGAL_enable -503 REGAL_error_string -504 REGAL_extension_query -505 REGAL_log -506 REGAL_proc_address +501 REGAL_ES1_0_compatibility +502 REGAL_ES1_1_compatibility +503 REGAL_enable +504 REGAL_error_string +505 REGAL_extension_query +506 REGAL_log +507 REGAL_proc_address
-507 REND_screen_coordinates +508 REND_screen_coordinates
-508 S3_s3tc +509 S3_s3tc
-509 SGIS_color_range -510 SGIS_detail_texture -511 SGIS_fog_function -512 SGIS_generate_mipmap -513 SGIS_multisample -514 SGIS_pixel_texture -515 SGIS_point_line_texgen -516 SGIS_sharpen_texture -517 SGIS_texture4D -518 SGIS_texture_border_clamp -519 SGIS_texture_edge_clamp -520 SGIS_texture_filter4 -521 SGIS_texture_lod -522 SGIS_texture_select +510 SGIS_color_range +511 SGIS_detail_texture +512 SGIS_fog_function +513 SGIS_generate_mipmap +514 SGIS_multisample +515 SGIS_pixel_texture +516 SGIS_point_line_texgen +517 SGIS_sharpen_texture +518 SGIS_texture4D +519 SGIS_texture_border_clamp +520 SGIS_texture_edge_clamp +521 SGIS_texture_filter4 +522 SGIS_texture_lod +523 SGIS_texture_select
-523 SGIX_async -524 SGIX_async_histogram -525 SGIX_async_pixel -526 SGIX_blend_alpha_minmax -527 SGIX_clipmap -528 SGIX_convolution_accuracy -529 SGIX_depth_texture -530 SGIX_flush_raster -531 SGIX_fog_offset -532 SGIX_fog_texture -533 SGIX_fragment_specular_lighting -534 SGIX_framezoom -535 SGIX_interlace -536 SGIX_ir_instrument1 -537 SGIX_list_priority -538 SGIX_pixel_texture -539 SGIX_pixel_texture_bits -540 SGIX_reference_plane -541 SGIX_resample -542 SGIX_shadow -543 SGIX_shadow_ambient -544 SGIX_sprite -545 SGIX_tag_sample_buffer -546 SGIX_texture_add_env -547 SGIX_texture_coordinate_clamp -548 SGIX_texture_lod_bias -549 SGIX_texture_multi_buffer -550 SGIX_texture_range -551 SGIX_texture_scale_bias -552 SGIX_vertex_preclip -553 SGIX_vertex_preclip_hint -554 SGIX_ycrcb +524 SGIX_async +525 SGIX_async_histogram +526 SGIX_async_pixel +527 SGIX_blend_alpha_minmax +528 SGIX_clipmap +529 SGIX_convolution_accuracy +530 SGIX_depth_texture +531 SGIX_flush_raster +532 SGIX_fog_offset +533 SGIX_fog_texture +534 SGIX_fragment_specular_lighting +535 SGIX_framezoom +536 SGIX_interlace +537 SGIX_ir_instrument1 +538 SGIX_list_priority +539 SGIX_pixel_texture +540 SGIX_pixel_texture_bits +541 SGIX_reference_plane +542 SGIX_resample +543 SGIX_shadow +544 SGIX_shadow_ambient +545 SGIX_sprite +546 SGIX_tag_sample_buffer +547 SGIX_texture_add_env +548 SGIX_texture_coordinate_clamp +549 SGIX_texture_lod_bias +550 SGIX_texture_multi_buffer +551 SGIX_texture_range +552 SGIX_texture_scale_bias +553 SGIX_vertex_preclip +554 SGIX_vertex_preclip_hint +555 SGIX_ycrcb
-555 SGI_color_matrix -556 SGI_color_table -557 SGI_texture_color_table +556 SGI_color_matrix +557 SGI_color_table +558 SGI_texture_color_table
-558 SUNX_constant_data +559 SUNX_constant_data
-559 SUN_convolution_border_modes -560 SUN_global_alpha -561 SUN_mesh_array -562 SUN_read_video_pixels -563 SUN_slice_accum -564 SUN_triangle_list -565 SUN_vertex +560 SUN_convolution_border_modes +561 SUN_global_alpha +562 SUN_mesh_array +563 SUN_read_video_pixels +564 SUN_slice_accum +565 SUN_triangle_list +566 SUN_vertex
-566 WIN_phong_shading -567 WIN_specular_fog -568 WIN_swap_hint +567 WIN_phong_shading +568 WIN_specular_fog +569 WIN_swap_hint