diff --git a/.gitattributes b/.gitattributes index b49408f..100a05f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,5 +1,6 @@ * text eol=lf *.png binary +*.pdf binary build/*/* text eol=crlf CMakeLists.txt text eol=lf build/cmake/* text eol=lf diff --git a/.travis.yml b/.travis.yml index 769a9ab..021066d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,10 +5,14 @@ script: - make -C auto clobber - make extensions - make dist-src -- make clean; SYSTEM=linux make -- make clean; SYSTEM=linux-osmesa make -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' . ; make; popd -- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_OSMESA=1 .; make; popd +- make clean; SYSTEM=linux make +- make clean; SYSTEM=linux-osmesa make +- make clean; SYSTEM=linux-egl make +- make clean; SYSTEM=linux-clang make +- make clean; SYSTEM=linux-clang-egl make +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' . ; make; popd +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_OSMESA=1 . ; make; popd +- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_EGL=1 . ; make; popd addons: apt: packages: @@ -16,6 +20,7 @@ addons: - cmake - dos2unix - libosmesa6-dev + - libegl1-mesa-dev artifacts: bucket: glew s3_region: "us-east-1" diff --git a/Makefile b/Makefile index 7f97342..8280f87 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,7 @@ GLEW_DEST ?= /usr BINDIR ?= $(GLEW_DEST)/bin LIBDIR ?= $(GLEW_DEST)/lib INCDIR ?= $(GLEW_DEST)/include/GL +PKGDIR ?= $(GLEW_DEST)/lib/pkgconfig ifneq ($(GLEW_NO_GLU), -DGLEW_NO_GLU) LIBGLU = glu @@ -229,9 +230,9 @@ install.include: $(INSTALL) -m 0644 include/GL/glxew.h "$(DESTDIR)$(INCDIR)/" install.pkgconfig: glew.pc - $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)" - $(INSTALL) -d -m 0755 "$(DESTDIR)$(LIBDIR)/pkgconfig" - $(INSTALL) -m 0644 glew.pc "$(DESTDIR)$(LIBDIR)/pkgconfig/" + $(INSTALL) -d -m 0755 "$(DESTDIR)$(PKGDIR)" + $(INSTALL) -d -m 0755 "$(DESTDIR)$(PKGDIR)" + $(INSTALL) -m 0644 glew.pc "$(DESTDIR)$(PKGDIR)/" uninstall: $(RM) "$(DESTDIR)$(INCDIR)/wglew.h" diff --git a/README.md b/README.md index 6f4659c..a85faa9 100644 --- a/README.md +++ b/README.md @@ -73,8 +73,37 @@ RedHat/CentOS/Fedora: `$ sudo yum install libXmu-devel libXi-devel libGL-devel g ### Windows +#### Visual Studio + Use the provided Visual Studio project file in build/vc12/ +Projects for vc6 and vc10 are also provided + +#### MSYS/Mingw + +Available from [Mingw](http://www.mingw.org/) + +Requirements: bash, make, gcc + + $ mingw32-make + $ mingw32-make install + $ mingw32-make install.all + +Alternative toolchain: `SYSTEM=mingw-win32` + +#### MSYS2/Mingw-w64 + +Available from [Msys2](http://msys2.github.io/) and/or [Mingw-w64](http://mingw-w64.org/) + +Requirements: bash, make, gcc + + $ pacman -S gcc make mingw-w64-i686-gcc mingw-w64-x86_64-gcc + $ make + $ make install + $ make install.all + +Alternative toolchain: `SYSTEM=msys, SYSTEM=msys-win32, SYSTEM=msys-win64` + ## glewinfo `glewinfo` is a command-line tool useful for inspecting the capabilities of an diff --git a/auto/Makefile b/auto/Makefile index 4caf481..ff9dd36 100644 --- a/auto/Makefile +++ b/auto/Makefile @@ -10,6 +10,7 @@ include ../config/version #GLEW_SPLIT_SOURCE = yes SHELL = bash +PYTHON ?= python ### Use git repository for GL extension specifications @@ -41,16 +42,19 @@ BLACKLIST = blacklist GL_CORE_SPEC := $(CORE)/GL_VERSION* GLX_CORE_SPEC := $(CORE)/GLX_VERSION* +EGL_CORE_SPEC := $(CORE)/EGL_VERSION* ifeq (custom,$(MAKECMDGOALS)) #GL_CORE_SPEC := $(shell grep GL_VERSION custom.txt | perl -pi -e "s=^=$(CORE)/=g;") GL_EXT_SPEC := $(shell grep "^[ \t]*GL_" custom.txt | grep -v GL_VERSION | perl -pi -e "s=^=$(EXT)/=g;") WGL_EXT_SPEC := $(shell grep "^[ \t]*WGL_" custom.txt | perl -pi -e "s=^=$(EXT)/=g;") #GLX_CORE_SPEC := $(shell grep GLX_VERSION custom.txt | perl -pi -e "s=^=$(CORE)/=g;") GLX_EXT_SPEC := $(shell grep "^[ \t]*GLX_" custom.txt | grep -v GLX_VERSION | perl -pi -e "s=^=$(EXT)/=g;") +EGL_EXT_SPEC := $(shell grep "^[ \t]*EGL_" custom.txt | grep -v EGL_VERSION | perl -pi -e "s=^=$(EXT)/=g;") else GL_EXT_SPEC := $(EXT)/GL_* WGL_EXT_SPEC := $(EXT)/WGL_* GLX_EXT_SPEC := $(EXT)/GLX_* +EGL_EXT_SPEC := $(EXT)/EGL_* endif PARSE_SPEC = parse_spec.pl @@ -65,7 +69,8 @@ B.DEST = $(TOP)/build I.TARGETS = \ $(I.DEST)/glew.h \ $(I.DEST)/wglew.h \ - $(I.DEST)/glxew.h + $(I.DEST)/glxew.h \ + $(I.DEST)/eglew.h ifeq (yes,$(GLEW_SPLIT_SOURCE)) S.TARGETS = \ @@ -114,6 +119,7 @@ $(EXT)/.dummy: $(REGISTRY)/.dummy @echo "--------------------------------------------------------------------" rm -rf $(EXT) $(BIN)/update_ext.sh $(EXT) $(REGISTRY) $(BLACKLIST) + $(PYTHON) $(BIN)/parse_xml.py registry/xml/egl.xml --core core/gl --extensions extensions/gl $(BIN)/$(FILTER) $(EXT) ifeq ($(patsubst Darwin%,Darwin,$(SYSTEM)), Darwin) find $(CORE) -maxdepth 1 -type f | grep -v VERSION | grep -v "~" | \ @@ -135,13 +141,9 @@ $(I.DEST)/glew.h: $(EXT)/.dummy cat $(SRC)/glew_head.h >> $@ $(BIN)/make_header.pl GLAPIENTRY GL $(GL_CORE_SPEC) >> $@ $(BIN)/make_header.pl GLAPIENTRY GL $(GL_EXT_SPEC) >> $@ - echo -e "/* ------------------------------------------------------------------------- */\n\n#if defined(GLEW_MX) && defined(_WIN32)\n#define GLEW_FUN_EXPORT\n#else\n#define GLEW_FUN_EXPORT GLEWAPI\n#endif /* GLEW_MX */\n" >> $@ - echo -e "#if defined(GLEW_MX)\n#define GLEW_VAR_EXPORT\n#else\n#define GLEW_VAR_EXPORT GLEWAPI\n#endif /* GLEW_MX */\n" >> $@ - echo -e "#if defined(GLEW_MX) && defined(_WIN32)\nstruct GLEWContextStruct\n{\n#endif /* GLEW_MX */" >> $@ + echo -e "/* ------------------------------------------------------------------------- */\n\n" >> $@ $(BIN)/make_struct_fun.pl GLEW_FUN_EXPORT $(GL_CORE_SPEC) $(GL_EXT_SPEC) >> $@ - echo -e "\n#if defined(GLEW_MX) && !defined(_WIN32)\nstruct GLEWContextStruct\n{\n#endif /* GLEW_MX */\n" >> $@ $(BIN)/make_struct_var.pl GLEW_VAR_EXPORT $(GL_CORE_SPEC) $(GL_EXT_SPEC) >> $@ - echo -e "\n#ifdef GLEW_MX\n}; /* GLEWContextStruct */\n#endif /* GLEW_MX */\n" >> $@ perl -e "s/GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2;/GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_1;\nGLEW_VAR_EXPORT GLboolean __GLEW_VERSION_1_2;/" -pi $@ cat $(SRC)/glew_tail.h >> $@ perl -e "s/GLEW_VERSION_STRING/$(GLEW_VERSION)/g" -pi $@ @@ -159,10 +161,8 @@ $(I.DEST)/wglew.h: $(EXT)/.dummy cat $(SRC)/wglew_head.h >> $@ $(BIN)/make_header.pl WINAPI WGL $(WGL_EXT_SPEC) >> $@ cat $(SRC)/wglew_mid.h >> $@ - echo -e "\n#ifdef GLEW_MX\nstruct WGLEWContextStruct\n{\n#endif /* GLEW_MX */" >> $@ $(BIN)/make_struct_fun.pl WGLEW_FUN_EXPORT $(WGL_EXT_SPEC) >> $@ $(BIN)/make_struct_var.pl WGLEW_VAR_EXPORT $(WGL_EXT_SPEC) >> $@ - echo -e "\n#ifdef GLEW_MX\n}; /* WGLEWContextStruct */\n#endif /* GLEW_MX */\n" >> $@ cat $(SRC)/wglew_tail.h >> $@ $(I.DEST)/glxew.h: $(EXT)/.dummy @@ -177,33 +177,40 @@ $(I.DEST)/glxew.h: $(EXT)/.dummy $(BIN)/make_header.pl "" GLX $(GLX_EXT_SPEC) >> $@ cat $(SRC)/glxew_mid.h >> $@ $(BIN)/make_struct_fun.pl GLXEW_FUN_EXPORT $(GLX_CORE_SPEC) $(GLX_EXT_SPEC) >> $@ - echo -e "\n#if defined(GLEW_MX)\nstruct GLXEWContextStruct\n{\n#endif /* GLEW_MX */\n" >> $@ $(BIN)/make_struct_var.pl GLXEW_VAR_EXPORT $(GLX_CORE_SPEC) $(GLX_EXT_SPEC) >> $@ - echo -e "\n#ifdef GLEW_MX\n}; /* GLXEWContextStruct */\n#endif /* GLEW_MX */\n" >> $@ perl -e "s/GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_2;/GLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_0;\nGLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_1;\nGLXEW_VAR_EXPORT GLboolean __GLXEW_VERSION_1_2;/" -pi $@ cat $(SRC)/glxew_tail.h >> $@ +$(I.DEST)/eglew.h: $(EXT)/.dummy + @echo "--------------------------------------------------------------------" + @echo "Creating eglew.h" + @echo "--------------------------------------------------------------------" + cp -f $(SRC)/glew_license.h $@ + cat $(SRC)/mesa_license.h >> $@ + cat $(SRC)/khronos_license.h >> $@ + cat $(SRC)/eglew_head.h >> $@ + $(BIN)/make_header.pl "" EGL $(EGL_CORE_SPEC) >> $@ + $(BIN)/make_header.pl "" EGL $(EGL_EXT_SPEC) >> $@ + cat $(SRC)/eglew_mid.h >> $@ + $(BIN)/make_struct_fun.pl EGLEW_FUN_EXPORT $(EGL_CORE_SPEC) $(EGL_EXT_SPEC) >> $@ + $(BIN)/make_struct_var.pl EGLEW_VAR_EXPORT $(EGL_CORE_SPEC) $(EGL_EXT_SPEC) >> $@ + cat $(SRC)/eglew_tail.h >> $@ + $(S.DEST)/glew.c: $(EXT)/.dummy @echo "--------------------------------------------------------------------" @echo "Creating glew.c" @echo "--------------------------------------------------------------------" cp -f $(SRC)/glew_license.h $@ cat $(SRC)/glew_head.c >> $@ - echo -e "\n#if !defined(_WIN32) || !defined(GLEW_MX)" >> $@ $(BIN)/make_def_fun.pl GL $(GL_CORE_SPEC) >> $@ $(BIN)/make_def_fun.pl GL $(GL_EXT_SPEC) >> $@ - echo -e "\n#endif /* !WIN32 || !GLEW_MX */" >> $@ - echo -e "\n#if !defined(GLEW_MX)" >> $@; echo -e "\nGLboolean __GLEW_VERSION_1_1 = GL_FALSE;" >> $@ $(BIN)/make_def_var.pl GL $(GL_CORE_SPEC) >> $@ $(BIN)/make_def_var.pl GL $(GL_EXT_SPEC) >> $@ - echo -e "\n#endif /* !GLEW_MX */\n" >> $@; echo -e "\nstatic const char * _glewExtensionLookup[] = {" >> $@; $(BIN)/make_index.pl $(GL_CORE_SPEC) $(GL_EXT_SPEC) >> $@ echo -e " NULL\n};\n" >> $@; - echo -e "\n#if !defined(GLEW_MX)" >> $@; $(BIN)/make_enable_index.pl $(GL_CORE_SPEC) $(GL_EXT_SPEC) >> $@ - echo -e "\n#endif /* !GLEW_MX */\n" >> $@; $(BIN)/make_initd.pl GL $(GL_CORE_SPEC) >> $@ $(BIN)/make_initd.pl GL $(GL_EXT_SPEC) >> $@ echo -e "" >> $@; @@ -214,24 +221,32 @@ $(S.DEST)/glew.c: $(EXT)/.dummy $(BIN)/make_list.pl $(GL_EXT_SPEC) >> $@ $(BIN)/make_list2.pl $(GL_EXT_SPEC) >> $@ echo -e "\n return GLEW_OK;\n}\n" >> $@ - echo -e "\n#if defined(_WIN32) && ! defined(GLEW_OSMESA)" >> $@ - echo -e "\n#if !defined(GLEW_MX)" >> $@ + echo -e "\n#if defined(GLEW_OSMESA)" >> $@ + echo -e "\n#elif defined(GLEW_EGL)" >> $@ + $(BIN)/make_def_fun.pl EGL $(EGL_CORE_SPEC) >> $@ + $(BIN)/make_def_fun.pl EGL $(EGL_EXT_SPEC) >> $@ + $(BIN)/make_def_var.pl EGL $(EGL_CORE_SPEC) >> $@ + $(BIN)/make_def_var.pl EGL $(EGL_EXT_SPEC) >> $@ + $(BIN)/make_init.pl EGL $(EGL_CORE_SPEC) >> $@ + $(BIN)/make_init.pl EGL $(EGL_EXT_SPEC) >> $@ + cat $(SRC)/glew_init_egl.c >> $@ + $(BIN)/make_list.pl $(EGL_CORE_SPEC) >> $@ + $(BIN)/make_list.pl $(EGL_EXT_SPEC) >> $@ + echo -e "\n return GLEW_OK;\n}" >> $@ + echo -e "\n#elif defined(_WIN32)" >> $@ $(BIN)/make_def_fun.pl WGL $(WGL_EXT_SPEC) >> $@ $(BIN)/make_def_var.pl WGL $(WGL_EXT_SPEC) >> $@ - echo -e "\n#endif /* !GLEW_MX */\n" >> $@; $(BIN)/make_init.pl WGL $(WGL_EXT_SPEC) >> $@ cat $(SRC)/glew_init_wgl.c >> $@ $(BIN)/make_list.pl $(WGL_EXT_SPEC) >> $@ echo -e "\n return GLEW_OK;\n}" >> $@; - echo -e "\n#elif !defined(GLEW_OSMESA) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))" >> $@ + echo -e "\n#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))" >> $@ $(BIN)/make_def_fun.pl GLX $(GLX_CORE_SPEC) >> $@ $(BIN)/make_def_fun.pl GLX $(GLX_EXT_SPEC) >> $@ - echo -e "\n#if !defined(GLEW_MX)" >> $@; echo -e "\nGLboolean __GLXEW_VERSION_1_0 = GL_FALSE;" >> $@ echo -e "GLboolean __GLXEW_VERSION_1_1 = GL_FALSE;" >> $@ $(BIN)/make_def_var.pl GLX $(GLX_CORE_SPEC) >> $@ $(BIN)/make_def_var.pl GLX $(GLX_EXT_SPEC) >> $@ - echo -e "\n#endif /* !GLEW_MX */\n" >> $@; $(BIN)/make_init.pl GLX $(GLX_CORE_SPEC) >> $@ $(BIN)/make_init.pl GLX $(GLX_EXT_SPEC) >> $@ cat $(SRC)/glew_init_glx.c >> $@ @@ -246,6 +261,8 @@ $(S.DEST)/glew.c: $(EXT)/.dummy $(BIN)/make_str.pl $(WGL_EXT_SPEC) >> $@ cat $(SRC)/glew_str_glx.c >> $@ $(BIN)/make_str.pl $(GLX_CORE_SPEC) $(GLX_EXT_SPEC) >> $@ + cat $(SRC)/glew_str_egl.c >> $@ + $(BIN)/make_str.pl $(EGL_CORE_SPEC) $(EGL_EXT_SPEC) >> $@ cat $(SRC)/glew_str_tail.c >> $@ perl -e "s/GLEW_VERSION_STRING/$(GLEW_VERSION)/g" -pi $@ perl -e "s/GLEW_VERSION_MAJOR_STRING/$(GLEW_MAJOR)/g" -pi $@ @@ -263,7 +280,10 @@ $(S.DEST)/glewinfo.c: $(EXT)/.dummy cat $(SRC)/glewinfo_head.c >> $@ $(BIN)/make_info.pl $(GL_CORE_SPEC) >> $@ $(BIN)/make_info.pl $(GL_EXT_SPEC) >> $@ - echo -e "#ifdef _WIN32\n" >> $@ + echo -e "#if defined(GLEW_EGL)\n" >> $@ + $(BIN)/make_info.pl $(EGL_CORE_SPEC) >> $@ + $(BIN)/make_info.pl $(EGL_EXT_SPEC) >> $@ + echo -e "#elif _WIN32\n" >> $@ $(BIN)/make_info.pl $(WGL_EXT_SPEC) >> $@ echo -e "#else /* _UNIX */\n" >> $@ $(BIN)/make_info.pl $(GLX_CORE_SPEC) >> $@ @@ -278,6 +298,9 @@ $(S.DEST)/glewinfo.c: $(EXT)/.dummy cat $(SRC)/glewinfo_glx.c >> $@ $(BIN)/make_info_list.pl $(GLX_CORE_SPEC) >> $@ $(BIN)/make_info_list.pl $(GLX_EXT_SPEC) >> $@ + cat $(SRC)/glewinfo_egl.c >> $@ + $(BIN)/make_info_list.pl $(EGL_CORE_SPEC) >> $@ + $(BIN)/make_info_list.pl $(EGL_EXT_SPEC) >> $@ cat $(SRC)/glewinfo_tail.c >> $@ perl -e 's/"glColorSubTable"/"glBlendEquation", glBlendEquation == NULL);\n glewInfoFunc("glColorSubTable"/g' -pi $@ rm -f $@.bak diff --git a/auto/bin/make_list.pl b/auto/bin/make_list.pl index 3d0ddce..ef1d81e 100755 --- a/auto/bin/make_list.pl +++ b/auto/bin/make_list.pl @@ -38,7 +38,7 @@ if (@ARGV) $extvar =~ s/GL(X*)_/GL$1EW_/; my $extpre = $extname; - $extpre =~ s/^(W?)GL(X?).*$/\l$1gl\l$2ew/; + $extpre =~ s/^(W?E?)GL(X?).*$/\l$1gl\l$2ew/; #my $pextvar = prefix_varname($extvar); diff --git a/auto/bin/make_str.pl b/auto/bin/make_str.pl index 5b83ef8..6673a80 100755 --- a/auto/bin/make_str.pl +++ b/auto/bin/make_str.pl @@ -24,11 +24,11 @@ if (@ARGV) { my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext); my $exttype = $extname; - $exttype =~ s/(W*?)GL(X*?)_(.*?_)(.*)/$3/; + $exttype =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$3/; my $extrem = $extname; - $extrem =~ s/(W*?)GL(X*?)_(.*?_)(.*)/$4/; + $extrem =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$4/; my $extvar = $extname; - $extvar =~ s/(W*)GL(X*)_/$1GL$2EW_/; + $extvar =~ s/(W?E?)GL(X?)_/$1GL$2EW_/; if(!($exttype =~ $curexttype)) { if(length($curexttype) > 0) diff --git a/auto/bin/parse_xml.py b/auto/bin/parse_xml.py new file mode 100755 index 0000000..a9c1b4b --- /dev/null +++ b/auto/bin/parse_xml.py @@ -0,0 +1,131 @@ +#!/usr/bin/python + +import re +import sys +from xml.dom.minidom import parse, Node + +def findChildren(node, path): + result = [] + if len(path)==1: + for i in node.childNodes: + if i.nodeType==Node.ELEMENT_NODE: + if i.tagName==path[0]: + result.append(i) + else: + for i in node.childNodes: + if i.nodeType==Node.ELEMENT_NODE: + if i.tagName==path[0]: + result.extend(findChildren(i, path[1:])) + return result + +def findData(node, path): + return [ i.firstChild.data for i in findChildren(node, path) ] + +def findParams(node): + n = findData(node, ['name'])[0] + t = '' + for i in node.childNodes: + if i.nodeType==Node.TEXT_NODE: + t += i.data + if i.nodeType==Node.ELEMENT_NODE and i.tagName=='ptype': + t += i.firstChild.data + return ( t, n) + +def findEnums(dom): + ret = {} + for i in findChildren(dom, [ 'registry', 'enums', 'enum' ]): + n = i.getAttribute('name') + v = i.getAttribute('value') + ret[n] = v + return ret + +def findCommands(dom): + ret = {} + for i in findChildren(dom, [ 'registry', 'commands', 'command' ]): + r,n = findParams(findChildren(i, ['proto'])[0]) + p = [ findParams(j) for j in findChildren(i, ['param'])] + ret[n] = (r, p) + return ret + +def findFeatures(dom): + ret = {} + for i in findChildren(dom, [ 'registry', 'feature' ]): + n = i.getAttribute('name') + e = [] + c = [] + for j in findChildren(i, [ 'require', 'enum' ]): + e.append(j.getAttribute("name")) + for j in findChildren(i, [ 'require', 'command' ]): + c.append(j.getAttribute("name")) + ret[n] = (e,c) + return ret + +def findExtensions(dom): + ret = {} + for i in findChildren(dom, [ 'registry', 'extensions', 'extension' ]): + n = i.getAttribute('name') + e = [] + c = [] + for j in findChildren(i, [ 'require', 'enum' ]): + e.append(j.getAttribute("name")) + for j in findChildren(i, [ 'require', 'command' ]): + c.append(j.getAttribute("name")) + ret[n] = (e,c) + return ret + +def findApi(dom, name): + enums = findEnums(dom) + commands = findCommands(dom) + features = findFeatures(dom) + extensions = findExtensions(dom) + return (enums, commands, features, extensions) + +def writeExtension(f, name, extension, enums, commands): + f.write('%s\n'%name) + f.write('%s\n'%'https://www.khronos.org/registry/egl/specs/eglspec.1.5.pdf') + if name.find('_VERSION_')==-1: + f.write('%s\n'%name) + else: + f.write('\n') + f.write('\n') + enums = [ (j, enums[j]) for j in extension[0] ] + for e in sorted(enums, key=lambda i: i[1]): + f.write('\t%s %s\n'%(e[0], e[1])) + commands = [ (j, commands[j]) for j in extension[1] ] + for c in sorted(commands): + params = ', '.join( [ '%s %s'%(j[0], j[1]) for j in c[1][1] ] ) + if len(params)==0: + params = ' void ' + f.write('\t%s %s (%s)\n'%(c[1][0], c[0], params)) + +if __name__ == '__main__': + + from optparse import OptionParser + import os + + parser = OptionParser('usage: %prog [options] [XML specs...]') + parser.add_option("--core", dest="core", help="location for core outputs", default='') + parser.add_option("--extensions", dest="extensions", help="location for extensions outputs", default='') + + (options, args) = parser.parse_args() + + for i in args: + + dom = parse(i) + api = findApi(dom, 'egl') + + print 'Found {} enums, {} commands, {} features and {} extensions.'.format( + len(api[0]), len(api[1]), len(api[2]), len(api[3])) + + if len(options.core): + for i in api[2].keys(): + f = open('%s/%s'%(options.core, i), 'w') + writeExtension(f, i, api[2][i], api[0], api[1]) + f.close() + + if len(options.extensions): + for i in api[3].keys(): + f = open('%s/%s'%(options.extensions, i), 'w') + writeExtension(f, i, api[3][i], api[0], api[1]) + f.close() + diff --git a/auto/khronos/readme.pdf b/auto/khronos/readme.pdf new file mode 100644 index 0000000..7debab5 Binary files /dev/null and b/auto/khronos/readme.pdf differ diff --git a/auto/src/eglew_head.h b/auto/src/eglew_head.h new file mode 100644 index 0000000..58488ae --- /dev/null +++ b/auto/src/eglew_head.h @@ -0,0 +1,87 @@ +#ifndef __eglew_h__ +#define __eglew_h__ +#define __EGLEW_H__ + +#ifdef __eglext_h_ +#error eglext.h included before eglew.h +#endif + +#if defined(__egl_h_) +#error egl.h included before eglew.h +#endif + +#define __eglext_h_ + +#define __egl_h_ + +#ifndef EGLAPIENTRY +#define EGLAPIENTRY +#endif +#ifndef EGLAPI +#define EGLAPI extern +#endif + +/* EGL Types */ +#include + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef int32_t EGLint; + +typedef unsigned int EGLBoolean; +typedef void *EGLDisplay; +typedef void *EGLConfig; +typedef void *EGLSurface; +typedef void *EGLContext; +typedef void (*__eglMustCastToProperFunctionPointerType)(void); + +typedef unsigned int EGLenum; +typedef void *EGLClientBuffer; + +typedef void *EGLSync; +typedef intptr_t EGLAttrib; +typedef khronos_utime_nanoseconds_t EGLTime; +typedef void *EGLImage; + +typedef void *EGLSyncKHR; +typedef intptr_t EGLAttribKHR; +typedef void *EGLLabelKHR; +typedef void *EGLObjectKHR; +typedef void (EGLAPIENTRY *EGLDEBUGPROCKHR)(EGLenum error,const char *command,EGLint messageType,EGLLabelKHR threadLabel,EGLLabelKHR objectLabel,const char* message); +typedef khronos_utime_nanoseconds_t EGLTimeKHR; +typedef void *EGLImageKHR; +typedef void *EGLStreamKHR; +typedef khronos_uint64_t EGLuint64KHR; +typedef int EGLNativeFileDescriptorKHR; +typedef khronos_ssize_t EGLsizeiANDROID; +typedef void (*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); +typedef EGLsizeiANDROID (*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); +typedef void *EGLDeviceEXT; +typedef void *EGLOutputLayerEXT; +typedef void *EGLOutputPortEXT; +typedef void *EGLSyncNV; +typedef khronos_utime_nanoseconds_t EGLTimeNV; +typedef khronos_utime_nanoseconds_t EGLuint64NV; + +struct EGLClientPixmapHI; + +#define EGL_DONT_CARE ((EGLint)-1) + +#define EGL_NO_CONTEXT ((EGLContext)0) +#define EGL_NO_DISPLAY ((EGLDisplay)0) +#define EGL_NO_IMAGE ((EGLImage)0) +#define EGL_NO_SURFACE ((EGLSurface)0) +#define EGL_NO_SYNC ((EGLSync)0) + +#define EGL_UNKNOWN ((EGLint)-1) + +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) + +EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY eglGetProcAddress (const char *procname); diff --git a/auto/src/eglew_mid.h b/auto/src/eglew_mid.h new file mode 100644 index 0000000..f94a149 --- /dev/null +++ b/auto/src/eglew_mid.h @@ -0,0 +1,4 @@ +/* ------------------------------------------------------------------------- */ + +#define EGLEW_FUN_EXPORT GLEW_FUN_EXPORT +#define EGLEW_VAR_EXPORT GLEW_VAR_EXPORT diff --git a/auto/src/eglew_tail.h b/auto/src/eglew_tail.h new file mode 100644 index 0000000..a91a76e --- /dev/null +++ b/auto/src/eglew_tail.h @@ -0,0 +1,15 @@ +/* ------------------------------------------------------------------------ */ + +GLEWAPI GLenum GLEWAPIENTRY eglewInit (EGLDisplay display); +GLEWAPI GLboolean GLEWAPIENTRY eglewIsSupported (const char *name); + +#define EGLEW_GET_VAR(x) (*(const GLboolean*)&x) +#define EGLEW_GET_FUN(x) x + +GLEWAPI GLboolean GLEWAPIENTRY eglewGetExtension (const char *name); + +#ifdef __cplusplus +} +#endif + +#endif /* __eglew_h__ */ diff --git a/auto/src/glew_head.c b/auto/src/glew_head.c index 491156d..8fe8638 100644 --- a/auto/src/glew_head.c +++ b/auto/src/glew_head.c @@ -3,6 +3,8 @@ #if defined(GLEW_OSMESA) # define GLAPI extern # include +#elif defined(GLEW_EGL) +# include #elif defined(_WIN32) # include #elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX)) @@ -11,7 +13,8 @@ #include /* For size_t */ -#if defined(GLEW_REGAL) +#if defined(GLEW_EGL) +#elif defined(GLEW_REGAL) /* In GLEW_REGAL mode we call direcly into the linked libRegal.so glGetProcAddressREGAL for looking up @@ -115,6 +118,8 @@ void* NSGLGetProcAddress (const GLubyte *name) # define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name) #elif defined(GLEW_OSMESA) # define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name) +#elif defined(GLEW_EGL) +# define glewGetProcAddress(name) eglGetProcAddress((const char *)name) #elif defined(_WIN32) # define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name) #elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX) @@ -146,6 +151,11 @@ void* NSGLGetProcAddress (const GLubyte *name) # define GLXEW_GET_VAR(x) (x) #endif /* GLXEW_GET_VAR */ +#ifdef EGLEW_GET_VAR +# undef EGLEW_GET_VAR +# define EGLEW_GET_VAR(x) (x) +#endif /* EGLEW_GET_VAR */ + /* * GLEW, just like OpenGL or GLU, does not rely on the standard C library. * These functions implement the functionality required in this file. diff --git a/auto/src/glew_head.h b/auto/src/glew_head.h index c5592e1..c19cefb 100644 --- a/auto/src/glew_head.h +++ b/auto/src/glew_head.h @@ -184,6 +184,9 @@ typedef _W64 int ptrdiff_t; #define GLEWAPIENTRY #endif +#define GLEW_VAR_EXPORT GLEWAPI +#define GLEW_FUN_EXPORT GLEWAPI + #ifdef __cplusplus extern "C" { #endif diff --git a/auto/src/glew_init_egl.c b/auto/src/glew_init_egl.c new file mode 100644 index 0000000..784285f --- /dev/null +++ b/auto/src/glew_init_egl.c @@ -0,0 +1,45 @@ + /* ------------------------------------------------------------------------ */ + +GLboolean eglewGetExtension (const char* name) +{ + const GLubyte* start; + const GLubyte* end; + + start = (const GLubyte*) eglQueryString(eglGetCurrentDisplay(), EGL_EXTENSIONS); + if (0 == start) return GL_FALSE; + end = start + _glewStrLen(start); + return _glewSearchExtension(name, start, end); +} + +GLenum eglewInit (EGLDisplay display) +{ + EGLint major, minor; + const GLubyte* extStart; + const GLubyte* extEnd; + PFNEGLINITIALIZEPROC initialize = NULL; + PFNEGLQUERYSTRINGPROC queryString = NULL; + + /* Load necessary entry points */ + initialize = (PFNEGLINITIALIZEPROC) glewGetProcAddress("eglInitialize"); + queryString = (PFNEGLQUERYSTRINGPROC) glewGetProcAddress("eglQueryString"); + if (!initialize || !queryString) + return 1; + + /* query EGK version */ + if (initialize(display, &major, &minor) != EGL_TRUE) + return 1; + + EGLEW_VERSION_1_5 = ( major > 1 ) || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE; + EGLEW_VERSION_1_4 = EGLEW_VERSION_1_5 == GL_TRUE || ( major == 1 && minor >= 4 ) ? GL_TRUE : GL_FALSE; + EGLEW_VERSION_1_3 = EGLEW_VERSION_1_4 == GL_TRUE || ( major == 1 && minor >= 3 ) ? GL_TRUE : GL_FALSE; + EGLEW_VERSION_1_2 = EGLEW_VERSION_1_3 == GL_TRUE || ( major == 1 && minor >= 2 ) ? GL_TRUE : GL_FALSE; + EGLEW_VERSION_1_1 = EGLEW_VERSION_1_2 == GL_TRUE || ( major == 1 && minor >= 1 ) ? GL_TRUE : GL_FALSE; + EGLEW_VERSION_1_0 = EGLEW_VERSION_1_1 == GL_TRUE || ( major == 1 && minor >= 0 ) ? GL_TRUE : GL_FALSE; + + /* query EGL extension string */ + extStart = (const GLubyte*) queryString(display, EGL_EXTENSIONS); + if (extStart == 0) + extStart = (const GLubyte *)""; + extEnd = extStart + _glewStrLen(extStart); + + /* initialize extensions */ diff --git a/auto/src/glew_init_gl.c b/auto/src/glew_init_gl.c index 9eb2fff..87503c3 100644 --- a/auto/src/glew_init_gl.c +++ b/auto/src/glew_init_gl.c @@ -70,14 +70,22 @@ GLboolean GLEWAPIENTRY glewGetExtension (const char* name) /* ------------------------------------------------------------------------- */ +typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params); + static GLenum GLEWAPIENTRY glewContextInit () { + PFNGLGETSTRINGPROC getString; const GLubyte* s; GLuint dot; GLint major, minor; /* query opengl version */ - s = glGetString(GL_VERSION); + getString = (PFNGLGETSTRINGPROC) glewGetProcAddress((const GLubyte*)"glGetString"); + if (!getString) + return GLEW_ERROR_NO_GL_VERSION; + + s = getString(GL_VERSION); dot = _glewStrCLen(s, '.'); if (dot == 0) return GLEW_ERROR_NO_GL_VERSION; @@ -122,11 +130,14 @@ static GLenum GLEWAPIENTRY glewContextInit () { GLint n = 0; GLint i; + PFNGLGETINTEGERVPROC getIntegerv; PFNGLGETSTRINGIPROC getStringi; const char *ext; GLboolean *enable; - glGetIntegerv(GL_NUM_EXTENSIONS, &n); + getIntegerv = (PFNGLGETINTEGERVPROC) glewGetProcAddress((const GLubyte*)"glGetIntegerv"); + if (getIntegerv) + getIntegerv(GL_NUM_EXTENSIONS, &n); /* glGetStringi is OpenGL 3.0 */ getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)"glGetStringi"); @@ -155,7 +166,7 @@ static GLenum GLEWAPIENTRY glewContextInit () char ext[128]; GLboolean *enable; - extensions = (const char *) glGetString(GL_EXTENSIONS); + extensions = (const char *) getString(GL_EXTENSIONS); if (extensions) { diff --git a/auto/src/glew_init_tail.c b/auto/src/glew_init_tail.c index 17735dc..2ef3d5b 100644 --- a/auto/src/glew_init_tail.c +++ b/auto/src/glew_init_tail.c @@ -35,9 +35,15 @@ GLboolean glewExperimental = GL_FALSE; GLenum GLEWAPIENTRY glewInit (void) { GLenum r; +#if defined(GLEW_EGL) + PFNEGLGETCURRENTDISPLAYPROC getCurrentDisplay = NULL; +#endif r = glewContextInit(); if ( r != 0 ) return r; -#if defined(GLEW_OSMESA) || defined(__ANDROID__) || defined(__native_client__) || defined(__HAIKU__) +#if defined(GLEW_EGL) + getCurrentDisplay = (PFNEGLGETCURRENTDISPLAYPROC) glewGetProcAddress("eglGetCurrentDisplay"); + return eglewInit(getCurrentDisplay()); +#elif defined(GLEW_OSMESA) || defined(__ANDROID__) || defined(__native_client__) || defined(__HAIKU__) return r; #elif defined(_WIN32) return wglewInit(); diff --git a/auto/src/glew_str_egl.c b/auto/src/glew_str_egl.c new file mode 100644 index 0000000..f0c52f9 --- /dev/null +++ b/auto/src/glew_str_egl.c @@ -0,0 +1,17 @@ + } + ret = (len == 0); + } + return ret; +} + +#elif defined(GLEW_EGL) + +GLboolean eglewIsSupported (const char* name) +{ + const GLubyte* pos = (const GLubyte*)name; + GLuint len = _glewStrLen(pos); + GLboolean ret = GL_TRUE; + while (ret && len > 0) + { + if(_glewStrSame1(&pos, &len, (const GLubyte*)"EGL_", 4)) + { diff --git a/auto/src/glew_str_glx.c b/auto/src/glew_str_glx.c index af4f8c6..893d741 100644 --- a/auto/src/glew_str_glx.c +++ b/auto/src/glew_str_glx.c @@ -4,7 +4,7 @@ return ret; } -#elif !defined(GLEW_OSMESA) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX) +#elif !defined(GLEW_OSMESA) && !defined(GLEW_EGL) && !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX) GLboolean glxewIsSupported (const char* name) { diff --git a/auto/src/glew_str_wgl.c b/auto/src/glew_str_wgl.c index b204386..db67b51 100644 --- a/auto/src/glew_str_wgl.c +++ b/auto/src/glew_str_wgl.c @@ -4,7 +4,7 @@ return ret; } -#if defined(_WIN32) && !defined(GLEW_OSMESA) +#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA) GLboolean GLEWAPIENTRY wglewIsSupported (const char* name) { diff --git a/auto/src/glew_tail.h b/auto/src/glew_tail.h index 6ee9912..ce7ff3c 100644 --- a/auto/src/glew_tail.h +++ b/auto/src/glew_tail.h @@ -29,8 +29,13 @@ GLEWAPI GLenum GLEWAPIENTRY glewInit (void); GLEWAPI GLboolean GLEWAPIENTRY glewIsSupported (const char *name); #define glewIsExtensionSupported(x) glewIsSupported(x) +#ifndef GLEW_GET_VAR #define GLEW_GET_VAR(x) (*(const GLboolean*)&x) +#endif + +#ifndef GLEW_GET_FUN #define GLEW_GET_FUN(x) x +#endif GLEWAPI GLboolean glewExperimental; GLEWAPI GLboolean GLEWAPIENTRY glewGetExtension (const char *name); diff --git a/auto/src/glewinfo_egl.c b/auto/src/glewinfo_egl.c new file mode 100644 index 0000000..877e722 --- /dev/null +++ b/auto/src/glewinfo_egl.c @@ -0,0 +1,6 @@ +} + +#elif defined(GLEW_EGL) + +static void eglewInfo () +{ diff --git a/auto/src/glewinfo_glx.c b/auto/src/glewinfo_glx.c index ead3051..e60b549 100644 --- a/auto/src/glewinfo_glx.c +++ b/auto/src/glewinfo_glx.c @@ -1,6 +1,6 @@ } -#elif !defined(GLEW_OSMESA) /* _UNIX */ +#elif !defined(GLEW_EGL) && !defined(GLEW_OSMESA) /* _UNIX */ static void glxewInfo () { diff --git a/auto/src/glewinfo_head.c b/auto/src/glewinfo_head.c index 6a8347b..02089f6 100644 --- a/auto/src/glewinfo_head.c +++ b/auto/src/glewinfo_head.c @@ -2,7 +2,9 @@ #include #include #include -#if defined(GLEW_OSMESA) +#if defined(GLEW_EGL) +#include +#elif defined(GLEW_OSMESA) #define GLAPI extern #include #elif defined(_WIN32) @@ -26,6 +28,7 @@ static FILE* f; struct createParams { #if defined(GLEW_OSMESA) +#elif defined(GLEW_EGL) #elif defined(_WIN32) int pixelformat; #elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX) diff --git a/auto/src/glewinfo_tail.c b/auto/src/glewinfo_tail.c index e69f96d..30f25fd 100644 --- a/auto/src/glewinfo_tail.c +++ b/auto/src/glewinfo_tail.c @@ -7,9 +7,10 @@ int main (int argc, char** argv) { GLuint err; - struct createParams params = + struct createParams params = { #if defined(GLEW_OSMESA) +#elif defined(GLEW_EGL) #elif defined(_WIN32) -1, /* pixelformat */ #elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX) @@ -22,20 +23,26 @@ int main (int argc, char** argv) 0 /* flags */ }; +#if defined(GLEW_EGL) + typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name); + PFNGLGETSTRINGPROC getString; +#endif + if (glewParseArgs(argc-1, argv+1, ¶ms)) { fprintf(stderr, "Usage: glewinfo " #if defined(GLEW_OSMESA) +#elif defined(GLEW_EGL) #elif defined(_WIN32) - "[-pf ] " + "[-pf ] " #elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX) - "[-display ] " - "[-visual ] " + "[-display ] " + "[-visual ] " #endif - "[-version ] " - "[-profile core|compatibility] " - "[-flag debug|forward]" - "\n"); + "[-version ] " + "[-profile core|compatibility] " + "[-flag debug|forward]" + "\n"); return 1; } @@ -53,6 +60,17 @@ int main (int argc, char** argv) glewDestroyContext(); return 1; } + +#if defined(GLEW_EGL) + getString = (PFNGLGETSTRINGPROC) eglGetProcAddress("glGetString"); + if (!getString) + { + fprintf(stderr, "Error: eglGetProcAddress failed to fetch glGetString\n"); + glewDestroyContext(); + return 1; + } +#endif + #if defined(_WIN32) #if defined(_MSC_VER) && (_MSC_VER >= 1400) if (fopen_s(&f, "glewinfo.txt", "w") != 0) @@ -69,17 +87,26 @@ int main (int argc, char** argv) fprintf(f, "---------------------------\n\n"); fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION)); #if defined(GLEW_OSMESA) +#elif defined(GLEW_EGL) #elif defined(_WIN32) fprintf(f, "Reporting capabilities of pixelformat %d\n", params.pixelformat); #elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX) - fprintf(f, "Reporting capabilities of display %s, visual 0x%x\n", + fprintf(f, "Reporting capabilities of display %s, visual 0x%x\n", params.display == NULL ? getenv("DISPLAY") : params.display, params.visual); #endif - fprintf(f, "Running on a %s from %s\n", - glGetString(GL_RENDERER), glGetString(GL_VENDOR)); +#if defined(GLEW_EGL) + fprintf(f, "Running on a %s from %s\n", + getString(GL_RENDERER), getString(GL_VENDOR)); + fprintf(f, "OpenGL version %s is supported\n", getString(GL_VERSION)); +#else + fprintf(f, "Running on a %s from %s\n", + glGetString(GL_RENDERER), glGetString(GL_VENDOR)); fprintf(f, "OpenGL version %s is supported\n", glGetString(GL_VERSION)); +#endif glewInfo(); #if defined(GLEW_OSMESA) +#elif defined(GLEW_EGL) + eglewInfo(); #elif defined(_WIN32) wglewInfo(); #else @@ -119,6 +146,7 @@ GLboolean glewParseArgs (int argc, char** argv, struct createParams *params) ++p; } #if defined(GLEW_OSMESA) +#elif defined(GLEW_EGL) #elif defined(_WIN32) else if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat")) { @@ -130,7 +158,7 @@ GLboolean glewParseArgs (int argc, char** argv, struct createParams *params) { if (++p >= argc) return GL_TRUE; params->display = argv[p++]; - } + } else if (!strcmp(argv[p], "-visual")) { if (++p >= argc) return GL_TRUE; @@ -145,7 +173,127 @@ GLboolean glewParseArgs (int argc, char** argv, struct createParams *params) /* ------------------------------------------------------------------------ */ -#if defined(GLEW_OSMESA) +#if defined(GLEW_EGL) +EGLDisplay display; +EGLContext ctx; + +/* See: http://stackoverflow.com/questions/12662227/opengl-es2-0-offscreen-context-for-fbo-rendering */ + +GLboolean glewCreateContext (struct createParams *params) +{ + EGLDeviceEXT devices[1]; + EGLint numDevices; + EGLSurface surface; + EGLint majorVersion, minorVersion; + EGLint configAttribs[] = { + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_RED_SIZE, 1, + EGL_GREEN_SIZE, 1, + EGL_BLUE_SIZE, 1, + EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT, + EGL_NONE + }; + static const EGLint contextAttribs[] = { + EGL_CONTEXT_CLIENT_VERSION, 2, + EGL_NONE + }; + static const EGLint pBufferAttribs[] = { + EGL_WIDTH, 128, + EGL_HEIGHT, 128, + EGL_NONE + }; + EGLConfig config; + EGLint numConfig; + EGLBoolean pBuffer; + + PFNEGLQUERYDEVICESEXTPROC queryDevices = NULL; + PFNEGLGETPLATFORMDISPLAYEXTPROC getPlatformDisplay = NULL; + PFNEGLGETERRORPROC getError = NULL; + PFNEGLGETDISPLAYPROC getDisplay = NULL; + PFNEGLINITIALIZEPROC initialize = NULL; + PFNEGLBINDAPIPROC bindAPI = NULL; + PFNEGLCHOOSECONFIGPROC chooseConfig = NULL; + PFNEGLCREATEWINDOWSURFACEPROC createWindowSurface = NULL; + PFNEGLCREATECONTEXTPROC createContext = NULL; + PFNEGLMAKECURRENTPROC makeCurrent = NULL; + PFNEGLCREATEPBUFFERSURFACEPROC createPbufferSurface = NULL; + + /* Load necessary entry points */ + queryDevices = (PFNEGLQUERYDEVICESEXTPROC) eglGetProcAddress("eglQueryDevicesEXT"); + getPlatformDisplay = (PFNEGLGETPLATFORMDISPLAYEXTPROC) eglGetProcAddress("eglGetPlatformDisplayEXT"); + getError = (PFNEGLGETERRORPROC) eglGetProcAddress("eglGetError"); + getDisplay = (PFNEGLGETDISPLAYPROC) eglGetProcAddress("eglGetDisplay"); + initialize = (PFNEGLINITIALIZEPROC) eglGetProcAddress("eglInitialize"); + bindAPI = (PFNEGLBINDAPIPROC) eglGetProcAddress("eglBindAPI"); + chooseConfig = (PFNEGLCHOOSECONFIGPROC) eglGetProcAddress("eglChooseConfig"); + createWindowSurface = (PFNEGLCREATEWINDOWSURFACEPROC) eglGetProcAddress("eglCreateWindowSurface"); + createPbufferSurface = (PFNEGLCREATEPBUFFERSURFACEPROC) eglGetProcAddress("eglCreatePbufferSurface"); + createContext = (PFNEGLCREATECONTEXTPROC) eglGetProcAddress("eglCreateContext"); + makeCurrent = (PFNEGLMAKECURRENTPROC) eglGetProcAddress("eglMakeCurrent"); + if (!getError || !getDisplay || !initialize || !bindAPI || !chooseConfig || !createWindowSurface || !createContext || !makeCurrent) + return GL_TRUE; + + pBuffer = 0; + display = EGL_NO_DISPLAY; + if (queryDevices && getPlatformDisplay) + { + queryDevices(1, devices, &numDevices); + if (numDevices==1) + { + /* Nvidia EGL doesn't need X11 for p-buffer surface */ + display = getPlatformDisplay(EGL_PLATFORM_DEVICE_EXT, devices[0], 0); + configAttribs[1] = EGL_PBUFFER_BIT; + pBuffer = 1; + } + } + if (display==EGL_NO_DISPLAY) + { + /* Fall-back to X11 surface, works on Mesa */ + display = getDisplay(EGL_DEFAULT_DISPLAY); + } + if (display == EGL_NO_DISPLAY) + return GL_TRUE; + + eglewInit(display); + + if (bindAPI(EGL_OPENGL_API) != EGL_TRUE) + return GL_TRUE; + + if (chooseConfig(display, configAttribs, &config, 1, &numConfig) != EGL_TRUE || (numConfig != 1)) + return GL_TRUE; + + ctx = createContext(display, config, EGL_NO_CONTEXT, pBuffer ? contextAttribs : NULL); + if (NULL == ctx) + return GL_TRUE; + + surface = EGL_NO_SURFACE; + /* Create a p-buffer surface if possible */ + if (pBuffer && createPbufferSurface) + { + surface = createPbufferSurface(display, config, pBufferAttribs); + } + /* Create a generic surface without a native window, if necessary */ + if (surface==EGL_NO_SURFACE) + { + surface = createWindowSurface(display, config, (EGLNativeWindowType) NULL, NULL); + } +#if 0 + if (surface == EGL_NO_SURFACE) + return GL_TRUE; +#endif + + if (makeCurrent(display, surface, surface, ctx) != EGL_TRUE) + return GL_TRUE; + + return GL_FALSE; +} + +void glewDestroyContext () +{ + if (NULL != ctx) eglDestroyContext(display, ctx); +} + +#elif defined(GLEW_OSMESA) OSMesaContext ctx; static const GLint osmFormat = GL_UNSIGNED_BYTE; @@ -190,7 +338,7 @@ GLboolean glewCreateContext (struct createParams* params) wc.lpszClassName = "GLEW"; if (0 == RegisterClass(&wc)) return GL_TRUE; /* create window */ - wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + wnd = CreateWindow("GLEW", "GLEW", 0, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, GetModuleHandle(NULL), NULL); if (NULL == wnd) return GL_TRUE; /* get the device context */ @@ -378,8 +526,8 @@ GLboolean glewCreateContext (struct createParams *params) cmap = XCreateColormap(dpy, RootWindow(dpy, vi->screen), vi->visual, AllocNone); swa.border_pixel = 0; swa.colormap = cmap; - wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen), - 0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual, + wnd = XCreateWindow(dpy, RootWindow(dpy, vi->screen), + 0, 0, 1, 1, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel | CWColormap, &swa); /* make context current */ if (!glXMakeCurrent(dpy, wnd, ctx)) return GL_TRUE; diff --git a/auto/src/glewinfo_wgl.c b/auto/src/glewinfo_wgl.c index c80264e..9405667 100644 --- a/auto/src/glewinfo_wgl.c +++ b/auto/src/glewinfo_wgl.c @@ -2,7 +2,7 @@ /* ------------------------------------------------------------------------ */ -#if defined(_WIN32) && !defined(GLEW_OSMESA) +#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA) static void wglewInfo () { diff --git a/auto/src/glxew_tail.h b/auto/src/glxew_tail.h index 4026fa7..05ff1b1 100644 --- a/auto/src/glxew_tail.h +++ b/auto/src/glxew_tail.h @@ -3,8 +3,13 @@ GLEWAPI GLenum GLEWAPIENTRY glxewInit (); GLEWAPI GLboolean GLEWAPIENTRY glxewIsSupported (const char *name); +#ifndef GLXEW_GET_VAR #define GLXEW_GET_VAR(x) (*(const GLboolean*)&x) +#endif + +#ifndef GLXEW_GET_FUN #define GLXEW_GET_FUN(x) x +#endif GLEWAPI GLboolean GLEWAPIENTRY glxewGetExtension (const char *name); diff --git a/auto/src/wglew_tail.h b/auto/src/wglew_tail.h index 3810662..8971158 100644 --- a/auto/src/wglew_tail.h +++ b/auto/src/wglew_tail.h @@ -3,8 +3,13 @@ GLEWAPI GLenum GLEWAPIENTRY wglewInit (); GLEWAPI GLboolean GLEWAPIENTRY wglewIsSupported (const char *name); +#ifndef WGLEW_GET_VAR #define WGLEW_GET_VAR(x) (*(const GLboolean*)&x) +#endif + +#ifndef WGLEW_GET_FUN #define WGLEW_GET_FUN(x) x +#endif GLEWAPI GLboolean GLEWAPIENTRY wglewGetExtension (const char *name); diff --git a/config/Makefile.linux-clang-egl b/config/Makefile.linux-clang-egl new file mode 100644 index 0000000..ca06419 --- /dev/null +++ b/config/Makefile.linux-clang-egl @@ -0,0 +1,4 @@ +include config/Makefile.linux-clang + +LDFLAGS.GL = -lEGL -lGL +CFLAGS.EXTRA += -DGLEW_EGL diff --git a/config/Makefile.linux-egl b/config/Makefile.linux-egl new file mode 100644 index 0000000..bcdc3cb --- /dev/null +++ b/config/Makefile.linux-egl @@ -0,0 +1,4 @@ +include config/Makefile.linux + +LDFLAGS.GL = -lEGL -lGL +CFLAGS.EXTRA += -DGLEW_EGL diff --git a/config/Makefile.msys b/config/Makefile.msys new file mode 100644 index 0000000..dfee9c7 --- /dev/null +++ b/config/Makefile.msys @@ -0,0 +1,17 @@ +NAME = glew32 +# use gcc for linking, with ld it does not work +CC := gcc +LD := gcc +LN := +CFLAGS.EXTRA += -D_WIN32 +LDFLAGS.GL = -lopengl32 -lgdi32 -luser32 -lkernel32 +LDFLAGS.EXTRA = +LIBDIR = $(GLEW_DEST)/bin +WARN = -Wall -W +POPT = -O2 +BIN.SUFFIX = .exe +LIB.SONAME = lib$(NAME).dll +LIB.DEVLNK = lib$(NAME).dll.a # for mingw this is the dll import lib +LIB.SHARED = $(NAME).dll +LIB.STATIC = lib$(NAME).a # the static lib will be broken +LDFLAGS.SO = -shared -Wl,-soname,$(LIB.SONAME) -Wl,--out-implib,lib/$(LIB.DEVLNK) diff --git a/config/Makefile.msys-win32 b/config/Makefile.msys-win32 new file mode 100644 index 0000000..160d3eb --- /dev/null +++ b/config/Makefile.msys-win32 @@ -0,0 +1,5 @@ +include config/Makefile.msys + +POPT := -march=i686 -mtune=generic -O2 +CFLAGS.EXTRA += -m32 +LDFLAGS.EXTRA += -m32 diff --git a/config/Makefile.msys-win64 b/config/Makefile.msys-win64 new file mode 100644 index 0000000..c1c785a --- /dev/null +++ b/config/Makefile.msys-win64 @@ -0,0 +1,5 @@ +include config/Makefile.msys + +POPT := -mtune=generic -O2 +CFLAGS.EXTRA += -m64 +LDFLAGS.EXTRA += -m64 diff --git a/config/config.guess b/config/config.guess index dbfb978..3d2c450 100755 --- a/config/config.guess +++ b/config/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ timestamp='2015-01-01' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -168,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ @@ -197,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +221,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +237,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/LibertyBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +253,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -933,6 +954,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -945,6 +969,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1021,7 +1048,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1100,7 +1127,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1370,6 +1397,9 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 <Building Installation Source Generation -Credits & Copyright Change Log - +
GitHub -Project Page -Bug Tracker +Issues +Pull Requests +Authors +Licensing +
+SourceForge Page
@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + diff --git a/doc/basic.html b/doc/basic.html index 038a155..0480ef7 100644 --- a/doc/basic.html +++ b/doc/basic.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. - - + - - + + + + + +
Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo
Building
Installation
Source Generation
Credits & Copyright
Change Log

GitHub
Project Page
Bug Tracker
Issues
Pull Requests
Authors
Licensing

SourceForge Page

@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + diff --git a/doc/build.html b/doc/build.html index ba0d681..7f15d62 100644 --- a/doc/build.html +++ b/doc/build.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. - - + - - + + + + + +
Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo
Building
Installation
Source Generation
Credits & Copyright
Change Log

GitHub
Project Page
Bug Tracker
Issues
Pull Requests
Authors
Licensing

SourceForge Page

@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + diff --git a/doc/credits.html b/doc/credits.html index 259ace5..a2846a9 100644 --- a/doc/credits.html +++ b/doc/credits.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. - - + - - + + + + + +
Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo
Building
Installation
Source Generation
Credits & Copyright
Change Log

GitHub
Project Page
Bug Tracker
Issues
Pull Requests
Authors
Licensing

SourceForge Page

@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + @@ -92,31 +96,8 @@ THE POSSIBILITY OF SUCH DAMAGE. -

Credits

- -

-GLEW was developed by Milan -Ikits and Marcelo -Magallon. They also perform occasional maintainance to make sure -that GLEW stays in mint condition. Aaron Lefohn, Joe Kniss, and Chris -Wyman were the first users and also assisted with the design and -debugging process. The acronym GLEW originates from Aaron Lefohn. -Pasi Kärkkäinen identified and fixed several problems with -GLX and SDL. Nate Robins created the wglinfo utility, to -which modifications were made by Michael Wimmer. -

- -

Copyright

- -

-GLEW is originally derived from the EXTGL project by Lev Povalahev. -The source code is licensed under the Modified BSD -License, the Mesa 3-D License (MIT -License), and the Khronos License (MIT -License). The automatic code generation scripts are released under -the GNU GPL. -

+

+Author, copyright and licensing information on github.

Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo
diff --git a/doc/glew.html b/doc/glew.html index 3b82eae..65f8c6c 100644 --- a/doc/glew.html +++ b/doc/glew.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. Building Installation Source Generation -Credits & Copyright Change Log - +
GitHub -Project Page -Bug Tracker +Issues +Pull Requests +Authors +Licensing +
+SourceForge Page
@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + @@ -507,194 +511,196 @@ THE POSSIBILITY OF SUCH DAMAGE. + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - + + + - - + + - - + + - - - - - - - + + + + + + + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - + + + + + + + - - - + + +
Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo

394 NVX_conditional_render
395 NVX_gpu_memory_info
396 NVX_linked_gpu_multicast

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
397 NV_bindless_multi_draw_indirect
398 NV_bindless_multi_draw_indirect_count
399 NV_bindless_texture
400 NV_blend_equation_advanced
401 NV_blend_equation_advanced_coherent
402 NV_blend_square
403 NV_command_list
404 NV_compute_program5
405 NV_conditional_render
406 NV_conservative_raster
407 NV_conservative_raster_dilate
408 NV_copy_depth_to_color
409 NV_copy_image
410 NV_deep_texture3D
411 NV_depth_buffer_float
412 NV_depth_clamp
413 NV_depth_range_unclamped
414 NV_draw_texture
415 NV_evaluators
416 NV_explicit_multisample
417 NV_fence
418 NV_fill_rectangle
419 NV_float_buffer
420 NV_fog_distance
421 NV_fragment_coverage_to_color
422 NV_fragment_program
423 NV_fragment_program2
424 NV_fragment_program4
425 NV_fragment_program_option
426 NV_fragment_shader_interlock
427 NV_framebuffer_mixed_samples
428 NV_framebuffer_multisample_coverage
429 NV_geometry_program4
430 NV_geometry_shader4
431 NV_geometry_shader_passthrough
432 NV_gpu_program4
433 NV_gpu_program5
434 NV_gpu_program5_mem_extended
435 NV_gpu_program_fp64
436 NV_gpu_shader5
437 NV_half_float
438 NV_internalformat_sample_query
439 NV_light_max_exponent
440 NV_multisample_coverage
441 NV_multisample_filter_hint
442 NV_occlusion_query
443 NV_packed_depth_stencil
444 NV_parameter_buffer_object
445 NV_parameter_buffer_object2
446 NV_path_rendering
447 NV_path_rendering_shared_edge
448 NV_pixel_data_range
449 NV_point_sprite
450 NV_present_video
451 NV_primitive_restart
452 NV_register_combiners
453 NV_register_combiners2
454 NV_sample_locations
455 NV_sample_mask_override_coverage
456 NV_shader_atomic_counters
457 NV_shader_atomic_float
458 NV_shader_atomic_fp16_vector
459 NV_shader_atomic_int64
460 NV_shader_buffer_load
461 NV_shader_storage_buffer_object
462 NV_shader_thread_group
463 NV_shader_thread_shuffle
464 NV_tessellation_program5
465 NV_texgen_emboss
466 NV_texgen_reflection
467 NV_texture_barrier
468 NV_texture_compression_vtc
469 NV_texture_env_combine4
470 NV_texture_expand_normal
471 NV_texture_multisample
472 NV_texture_rectangle
473 NV_texture_shader
474 NV_texture_shader2
475 NV_texture_shader3
476 NV_transform_feedback
477 NV_transform_feedback2
478 NV_uniform_buffer_unified_memory
479 NV_vdpau_interop
480 NV_vertex_array_range
481 NV_vertex_array_range2
482 NV_vertex_attrib_integer_64bit
483 NV_vertex_buffer_unified_memory
484 NV_vertex_program
485 NV_vertex_program1_1
486 NV_vertex_program2
487 NV_vertex_program2_option
488 NV_vertex_program3
489 NV_vertex_program4
490 NV_video_capture
491 NV_viewport_array2

490 OES_byte_coordinates
491 OES_compressed_paletted_texture
492 OES_read_format
493 OES_single_precision
492 OES_byte_coordinates
493 OES_compressed_paletted_texture
494 OES_read_format
495 OES_single_precision

494 OML_interlace
495 OML_resample
496 OML_subsample
496 OML_interlace
497 OML_resample
498 OML_subsample

497 OVR_multiview
498 OVR_multiview2
499 OVR_multiview
500 OVR_multiview2

499 PGI_misc_hints
500 PGI_vertex_hints
501 PGI_misc_hints
502 PGI_vertex_hints

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
503 REGAL_ES1_0_compatibility
504 REGAL_ES1_1_compatibility
505 REGAL_enable
506 REGAL_error_string
507 REGAL_extension_query
508 REGAL_log
509 REGAL_proc_address

508 REND_screen_coordinates
510 REND_screen_coordinates

509 S3_s3tc
511 S3_s3tc

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
512 SGIS_color_range
513 SGIS_detail_texture
514 SGIS_fog_function
515 SGIS_generate_mipmap
516 SGIS_multisample
517 SGIS_pixel_texture
518 SGIS_point_line_texgen
519 SGIS_sharpen_texture
520 SGIS_texture4D
521 SGIS_texture_border_clamp
522 SGIS_texture_edge_clamp
523 SGIS_texture_filter4
524 SGIS_texture_lod
525 SGIS_texture_select

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
526 SGIX_async
527 SGIX_async_histogram
528 SGIX_async_pixel
529 SGIX_blend_alpha_minmax
530 SGIX_clipmap
531 SGIX_convolution_accuracy
532 SGIX_depth_texture
533 SGIX_flush_raster
534 SGIX_fog_offset
535 SGIX_fog_texture
536 SGIX_fragment_specular_lighting
537 SGIX_framezoom
538 SGIX_interlace
539 SGIX_ir_instrument1
540 SGIX_list_priority
541 SGIX_pixel_texture
542 SGIX_pixel_texture_bits
543 SGIX_reference_plane
544 SGIX_resample
545 SGIX_shadow
546 SGIX_shadow_ambient
547 SGIX_sprite
548 SGIX_tag_sample_buffer
549 SGIX_texture_add_env
550 SGIX_texture_coordinate_clamp
551 SGIX_texture_lod_bias
552 SGIX_texture_multi_buffer
553 SGIX_texture_range
554 SGIX_texture_scale_bias
555 SGIX_vertex_preclip
556 SGIX_vertex_preclip_hint
557 SGIX_ycrcb

556 SGI_color_matrix
557 SGI_color_table
558 SGI_texture_color_table
558 SGI_color_matrix
559 SGI_color_table
560 SGI_texture_color_table

559 SUNX_constant_data
561 SUNX_constant_data

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
562 SUN_convolution_border_modes
563 SUN_global_alpha
564 SUN_mesh_array
565 SUN_read_video_pixels
566 SUN_slice_accum
567 SUN_triangle_list
568 SUN_vertex

567 WIN_phong_shading
568 WIN_specular_fog
569 WIN_swap_hint
569 WIN_phong_shading
570 WIN_specular_fog
571 WIN_swap_hint
diff --git a/doc/glxew.html b/doc/glxew.html index 576ddd3..08fa857 100644 --- a/doc/glxew.html +++ b/doc/glxew.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. Building Installation Source Generation -Credits & Copyright Change Log - +
GitHub -Project Page -Bug Tracker +Issues +Pull Requests +Authors +Licensing +
+SourceForge Page
@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + diff --git a/doc/index.html b/doc/index.html index b9b3605..b2a612b 100644 --- a/doc/index.html +++ b/doc/index.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. - - + - - + + + + + +
Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo
Building
Installation
Source Generation
Credits & Copyright
Change Log

GitHub
Project Page
Bug Tracker
Issues
Pull Requests
Authors
Licensing

SourceForge Page

@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + @@ -154,8 +158,8 @@ An up-to-date copy is also available using gitUnsupported snapshots are also available:

Supported Extensions

diff --git a/doc/install.html b/doc/install.html index 4d00db8..e9427bc 100644 --- a/doc/install.html +++ b/doc/install.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. - - + - - + + + + + +
Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo
Building
Installation
Source Generation
Credits & Copyright
Change Log

GitHub
Project Page
Bug Tracker
Issues
Pull Requests
Authors
Licensing

SourceForge Page

@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + diff --git a/doc/log.html b/doc/log.html index efa0a9f..41c6e27 100644 --- a/doc/log.html +++ b/doc/log.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE. - - + - - + + + + + +
Last Update: 08-10-15
Last Update: 01-31-16
OpenGL Logo
GitHub Logo
+ Travis Logo
SourceForge Logo
Building
Installation
Source Generation
Credits & Copyright
Change Log

GitHub
Project Page
Bug Tracker
Issues
Pull Requests
Authors
Licensing

SourceForge Page

@@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + @@ -103,6 +107,8 @@ THE POSSIBILITY OF SUCH DAMAGE.
  • glxewInit, wglewInit
  • glewinfo adds support for -version, -profile core|compatibility and -flag debug|forward parameters
  • Improved cmake build support + +
    • New extensions:
        diff --git a/doc/wglew.html b/doc/wglew.html index 903cb36..1dd5863 100644 --- a/doc/wglew.html +++ b/doc/wglew.html @@ -57,12 +57,15 @@ THE POSSIBILITY OF SUCH DAMAGE.
  • - - + - - + + + + + +
    Last Update: 08-10-15
    Last Update: 01-31-16
    OpenGL Logo
    GitHub Logo
    + Travis Logo
    SourceForge Logo
    Building
    Installation
    Source Generation
    Credits & Copyright
    Change Log

    GitHub
    Project Page
    Bug Tracker
    Issues
    Pull Requests
    Authors
    Licensing

    SourceForge Page

    @@ -72,10 +75,11 @@ THE POSSIBILITY OF SUCH DAMAGE. - + diff --git a/src/visualinfo.c b/src/visualinfo.c index c24bbaf..d089207 100644 --- a/src/visualinfo.c +++ b/src/visualinfo.c @@ -37,6 +37,8 @@ #if defined(GLEW_OSMESA) #define GLAPI extern #include +#elif defined(GLEW_EGL) +#include #elif defined(_WIN32) #include #elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX) @@ -62,6 +64,8 @@ typedef struct GLContextStruct { #if defined(GLEW_OSMESA) OSMesaContext ctx; +#elif defined(GLEW_EGL) + EGLContext ctx; #elif defined(_WIN32) HWND wnd; HDC dc; @@ -186,6 +190,7 @@ main (int argc, char** argv) /* ---------------------------------------------------------------------- */ /* extensions string */ #if defined(GLEW_OSMESA) +#elif defined(GLEW_EGL) #elif defined(_WIN32) /* WGL extensions */ if (WGLEW_ARB_extensions_string || WGLEW_EXT_extensions_string) @@ -264,7 +269,7 @@ void PrintExtensions (const char* s) /* ---------------------------------------------------------------------- */ -#if defined(GLEW_OSMESA) +#if defined(GLEW_OSMESA) || defined(GLEW_EGL) void VisualInfo (GLContext* ctx) @@ -1048,6 +1053,27 @@ void DestroyContext (GLContext* ctx) if (NULL == ctx) return; if (NULL != ctx->ctx) OSMesaDestroyContext(ctx->ctx); } +/* ------------------------------------------------------------------------ */ + +#elif defined(GLEW_EGL) +void InitContext (GLContext* ctx) +{ + ctx->ctx = NULL; +} + +GLboolean CreateContext (GLContext* ctx) +{ + return GL_FALSE; +} + +void DestroyContext (GLContext* ctx) +{ + if (NULL == ctx) return; + return; +} + +/* ------------------------------------------------------------------------ */ + #elif defined(_WIN32) void InitContext (GLContext* ctx)
    Last Update: 08-10-15
    Last Update: 01-31-16
    OpenGL Logo
    GitHub Logo
    + Travis Logo
    SourceForge Logo