mirror of
https://github.com/nigels-com/glew.git
synced 2025-04-21 08:02:55 +00:00
Merge 2fb3fade79
into e82b76f719
This commit is contained in:
commit
7f693734db
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -1,5 +1,6 @@
|
|||||||
* text eol=lf
|
* text eol=lf
|
||||||
*.png binary
|
*.png binary
|
||||||
|
*.pdf binary
|
||||||
build/*/* text eol=crlf
|
build/*/* text eol=crlf
|
||||||
CMakeLists.txt text eol=lf
|
CMakeLists.txt text eol=lf
|
||||||
build/cmake/* text eol=lf
|
build/cmake/* text eol=lf
|
||||||
|
13
.travis.yml
13
.travis.yml
@ -5,10 +5,14 @@ script:
|
|||||||
- make -C auto clobber
|
- make -C auto clobber
|
||||||
- make extensions
|
- make extensions
|
||||||
- make dist-src
|
- make dist-src
|
||||||
- make clean; SYSTEM=linux make
|
- make clean; SYSTEM=linux make
|
||||||
- make clean; SYSTEM=linux-osmesa make
|
- make clean; SYSTEM=linux-osmesa make
|
||||||
- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' . ; make; popd
|
- make clean; SYSTEM=linux-egl make
|
||||||
- pushd build/cmake; git clean -xdf .; cmake -G 'Unix Makefiles' -DGLEW_OSMESA=1 .; make; popd
|
- 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:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
@ -16,6 +20,7 @@ addons:
|
|||||||
- cmake
|
- cmake
|
||||||
- dos2unix
|
- dos2unix
|
||||||
- libosmesa6-dev
|
- libosmesa6-dev
|
||||||
|
- libegl1-mesa-dev
|
||||||
artifacts:
|
artifacts:
|
||||||
bucket: glew
|
bucket: glew
|
||||||
s3_region: "us-east-1"
|
s3_region: "us-east-1"
|
||||||
|
@ -41,16 +41,19 @@ BLACKLIST = blacklist
|
|||||||
|
|
||||||
GL_CORE_SPEC := $(CORE)/GL_VERSION*
|
GL_CORE_SPEC := $(CORE)/GL_VERSION*
|
||||||
GLX_CORE_SPEC := $(CORE)/GLX_VERSION*
|
GLX_CORE_SPEC := $(CORE)/GLX_VERSION*
|
||||||
|
EGL_CORE_SPEC := $(CORE)/EGL_VERSION*
|
||||||
ifeq (custom,$(MAKECMDGOALS))
|
ifeq (custom,$(MAKECMDGOALS))
|
||||||
#GL_CORE_SPEC := $(shell grep GL_VERSION custom.txt | perl -pi -e "s=^=$(CORE)/=g;")
|
#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;")
|
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;")
|
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_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;")
|
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
|
else
|
||||||
GL_EXT_SPEC := $(EXT)/GL_*
|
GL_EXT_SPEC := $(EXT)/GL_*
|
||||||
WGL_EXT_SPEC := $(EXT)/WGL_*
|
WGL_EXT_SPEC := $(EXT)/WGL_*
|
||||||
GLX_EXT_SPEC := $(EXT)/GLX_*
|
GLX_EXT_SPEC := $(EXT)/GLX_*
|
||||||
|
EGL_EXT_SPEC := $(EXT)/EGL_*
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PARSE_SPEC = parse_spec.pl
|
PARSE_SPEC = parse_spec.pl
|
||||||
@ -65,7 +68,8 @@ B.DEST = $(TOP)/build
|
|||||||
I.TARGETS = \
|
I.TARGETS = \
|
||||||
$(I.DEST)/glew.h \
|
$(I.DEST)/glew.h \
|
||||||
$(I.DEST)/wglew.h \
|
$(I.DEST)/wglew.h \
|
||||||
$(I.DEST)/glxew.h
|
$(I.DEST)/glxew.h \
|
||||||
|
$(I.DEST)/eglew.h
|
||||||
|
|
||||||
ifeq (yes,$(GLEW_SPLIT_SOURCE))
|
ifeq (yes,$(GLEW_SPLIT_SOURCE))
|
||||||
S.TARGETS = \
|
S.TARGETS = \
|
||||||
@ -114,6 +118,7 @@ $(EXT)/.dummy: $(REGISTRY)/.dummy
|
|||||||
@echo "--------------------------------------------------------------------"
|
@echo "--------------------------------------------------------------------"
|
||||||
rm -rf $(EXT)
|
rm -rf $(EXT)
|
||||||
$(BIN)/update_ext.sh $(EXT) $(REGISTRY) $(BLACKLIST)
|
$(BIN)/update_ext.sh $(EXT) $(REGISTRY) $(BLACKLIST)
|
||||||
|
$(BIN)/parse_xml.py registry/xml/egl.xml --core core/gl --extensions extensions/gl
|
||||||
$(BIN)/$(FILTER) $(EXT)
|
$(BIN)/$(FILTER) $(EXT)
|
||||||
ifeq ($(patsubst Darwin%,Darwin,$(SYSTEM)), Darwin)
|
ifeq ($(patsubst Darwin%,Darwin,$(SYSTEM)), Darwin)
|
||||||
find $(CORE) -maxdepth 1 -type f | grep -v VERSION | grep -v "~" | \
|
find $(CORE) -maxdepth 1 -type f | grep -v VERSION | grep -v "~" | \
|
||||||
@ -183,6 +188,21 @@ $(I.DEST)/glxew.h: $(EXT)/.dummy
|
|||||||
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 $@
|
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 >> $@
|
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
|
$(S.DEST)/glew.c: $(EXT)/.dummy
|
||||||
@echo "--------------------------------------------------------------------"
|
@echo "--------------------------------------------------------------------"
|
||||||
@echo "Creating glew.c"
|
@echo "Creating glew.c"
|
||||||
@ -214,7 +234,21 @@ $(S.DEST)/glew.c: $(EXT)/.dummy
|
|||||||
$(BIN)/make_list.pl $(GL_EXT_SPEC) >> $@
|
$(BIN)/make_list.pl $(GL_EXT_SPEC) >> $@
|
||||||
$(BIN)/make_list2.pl $(GL_EXT_SPEC) >> $@
|
$(BIN)/make_list2.pl $(GL_EXT_SPEC) >> $@
|
||||||
echo -e "\n return GLEW_OK;\n}\n" >> $@
|
echo -e "\n return GLEW_OK;\n}\n" >> $@
|
||||||
echo -e "\n#if defined(_WIN32) && ! defined(GLEW_OSMESA)" >> $@
|
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) >> $@
|
||||||
|
echo -e "\n#if !defined(GLEW_MX)" >> $@;
|
||||||
|
$(BIN)/make_def_var.pl EGL $(EGL_CORE_SPEC) >> $@
|
||||||
|
$(BIN)/make_def_var.pl EGL $(EGL_EXT_SPEC) >> $@
|
||||||
|
echo -e "\n#endif /* !GLEW_MX */\n" >> $@;
|
||||||
|
$(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)" >> $@
|
||||||
echo -e "\n#if !defined(GLEW_MX)" >> $@
|
echo -e "\n#if !defined(GLEW_MX)" >> $@
|
||||||
$(BIN)/make_def_fun.pl WGL $(WGL_EXT_SPEC) >> $@
|
$(BIN)/make_def_fun.pl WGL $(WGL_EXT_SPEC) >> $@
|
||||||
$(BIN)/make_def_var.pl WGL $(WGL_EXT_SPEC) >> $@
|
$(BIN)/make_def_var.pl WGL $(WGL_EXT_SPEC) >> $@
|
||||||
@ -223,7 +257,7 @@ $(S.DEST)/glew.c: $(EXT)/.dummy
|
|||||||
cat $(SRC)/glew_init_wgl.c >> $@
|
cat $(SRC)/glew_init_wgl.c >> $@
|
||||||
$(BIN)/make_list.pl $(WGL_EXT_SPEC) >> $@
|
$(BIN)/make_list.pl $(WGL_EXT_SPEC) >> $@
|
||||||
echo -e "\n return GLEW_OK;\n}" >> $@;
|
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_CORE_SPEC) >> $@
|
||||||
$(BIN)/make_def_fun.pl GLX $(GLX_EXT_SPEC) >> $@
|
$(BIN)/make_def_fun.pl GLX $(GLX_EXT_SPEC) >> $@
|
||||||
echo -e "\n#if !defined(GLEW_MX)" >> $@;
|
echo -e "\n#if !defined(GLEW_MX)" >> $@;
|
||||||
@ -246,6 +280,8 @@ $(S.DEST)/glew.c: $(EXT)/.dummy
|
|||||||
$(BIN)/make_str.pl $(WGL_EXT_SPEC) >> $@
|
$(BIN)/make_str.pl $(WGL_EXT_SPEC) >> $@
|
||||||
cat $(SRC)/glew_str_glx.c >> $@
|
cat $(SRC)/glew_str_glx.c >> $@
|
||||||
$(BIN)/make_str.pl $(GLX_CORE_SPEC) $(GLX_EXT_SPEC) >> $@
|
$(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 >> $@
|
cat $(SRC)/glew_str_tail.c >> $@
|
||||||
perl -e "s/GLEW_VERSION_STRING/$(GLEW_VERSION)/g" -pi $@
|
perl -e "s/GLEW_VERSION_STRING/$(GLEW_VERSION)/g" -pi $@
|
||||||
perl -e "s/GLEW_VERSION_MAJOR_STRING/$(GLEW_MAJOR)/g" -pi $@
|
perl -e "s/GLEW_VERSION_MAJOR_STRING/$(GLEW_MAJOR)/g" -pi $@
|
||||||
@ -263,7 +299,10 @@ $(S.DEST)/glewinfo.c: $(EXT)/.dummy
|
|||||||
cat $(SRC)/glewinfo_head.c >> $@
|
cat $(SRC)/glewinfo_head.c >> $@
|
||||||
$(BIN)/make_info.pl $(GL_CORE_SPEC) >> $@
|
$(BIN)/make_info.pl $(GL_CORE_SPEC) >> $@
|
||||||
$(BIN)/make_info.pl $(GL_EXT_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) >> $@
|
$(BIN)/make_info.pl $(WGL_EXT_SPEC) >> $@
|
||||||
echo -e "#else /* _UNIX */\n" >> $@
|
echo -e "#else /* _UNIX */\n" >> $@
|
||||||
$(BIN)/make_info.pl $(GLX_CORE_SPEC) >> $@
|
$(BIN)/make_info.pl $(GLX_CORE_SPEC) >> $@
|
||||||
@ -278,6 +317,9 @@ $(S.DEST)/glewinfo.c: $(EXT)/.dummy
|
|||||||
cat $(SRC)/glewinfo_glx.c >> $@
|
cat $(SRC)/glewinfo_glx.c >> $@
|
||||||
$(BIN)/make_info_list.pl $(GLX_CORE_SPEC) >> $@
|
$(BIN)/make_info_list.pl $(GLX_CORE_SPEC) >> $@
|
||||||
$(BIN)/make_info_list.pl $(GLX_EXT_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 >> $@
|
cat $(SRC)/glewinfo_tail.c >> $@
|
||||||
perl -e 's/"glColorSubTable"/"glBlendEquation", glBlendEquation == NULL);\n glewInfoFunc("glColorSubTable"/g' -pi $@
|
perl -e 's/"glColorSubTable"/"glBlendEquation", glBlendEquation == NULL);\n glewInfoFunc("glColorSubTable"/g' -pi $@
|
||||||
rm -f $@.bak
|
rm -f $@.bak
|
||||||
|
@ -38,7 +38,7 @@ if (@ARGV)
|
|||||||
$extvar =~ s/GL(X*)_/GL$1EW_/;
|
$extvar =~ s/GL(X*)_/GL$1EW_/;
|
||||||
|
|
||||||
my $extpre = $extname;
|
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);
|
#my $pextvar = prefix_varname($extvar);
|
||||||
|
|
||||||
|
@ -24,11 +24,11 @@ if (@ARGV)
|
|||||||
{
|
{
|
||||||
my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
|
my ($extname, $exturl, $extstring, $reuse, $types, $tokens, $functions, $exacts) = parse_ext($ext);
|
||||||
my $exttype = $extname;
|
my $exttype = $extname;
|
||||||
$exttype =~ s/(W*?)GL(X*?)_(.*?_)(.*)/$3/;
|
$exttype =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$3/;
|
||||||
my $extrem = $extname;
|
my $extrem = $extname;
|
||||||
$extrem =~ s/(W*?)GL(X*?)_(.*?_)(.*)/$4/;
|
$extrem =~ s/(W?E?)GL(X?)_(.*?_)(.*)/$4/;
|
||||||
my $extvar = $extname;
|
my $extvar = $extname;
|
||||||
$extvar =~ s/(W*)GL(X*)_/$1GL$2EW_/;
|
$extvar =~ s/(W?E?)GL(X?)_/$1GL$2EW_/;
|
||||||
if(!($exttype =~ $curexttype))
|
if(!($exttype =~ $curexttype))
|
||||||
{
|
{
|
||||||
if(length($curexttype) > 0)
|
if(length($curexttype) > 0)
|
||||||
|
131
auto/bin/parse_xml.py
Executable file
131
auto/bin/parse_xml.py
Executable file
@ -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()
|
||||||
|
|
BIN
auto/khronos/readme.pdf
Normal file
BIN
auto/khronos/readme.pdf
Normal file
Binary file not shown.
87
auto/src/eglew_head.h
Normal file
87
auto/src/eglew_head.h
Normal file
@ -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 <sys/types.h>
|
||||||
|
|
||||||
|
#include <KHR/khrplatform.h>
|
||||||
|
#include <EGL/eglplatform.h>
|
||||||
|
|
||||||
|
#include <GL/glew.h>
|
||||||
|
|
||||||
|
#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);
|
4
auto/src/eglew_mid.h
Normal file
4
auto/src/eglew_mid.h
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/* ------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#define EGLEW_FUN_EXPORT GLEW_FUN_EXPORT
|
||||||
|
#define EGLEW_VAR_EXPORT GLEW_VAR_EXPORT
|
15
auto/src/eglew_tail.h
Normal file
15
auto/src/eglew_tail.h
Normal file
@ -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__ */
|
@ -3,6 +3,8 @@
|
|||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
# define GLAPI extern
|
# define GLAPI extern
|
||||||
# include <GL/osmesa.h>
|
# include <GL/osmesa.h>
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
|
# include <GL/eglew.h>
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
# include <GL/wglew.h>
|
# include <GL/wglew.h>
|
||||||
#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
|
#elif !defined(__ANDROID__) && !defined(__native_client__) && !defined(__HAIKU__) && (!defined(__APPLE__) || defined(GLEW_APPLE_GLX))
|
||||||
@ -13,7 +15,8 @@
|
|||||||
#include <stdlib.h> /* For bsearch */
|
#include <stdlib.h> /* For bsearch */
|
||||||
#include <string.h> /* For memset */
|
#include <string.h> /* For memset */
|
||||||
|
|
||||||
#if defined(GLEW_REGAL)
|
#if defined(GLEW_EGL)
|
||||||
|
#elif defined(GLEW_REGAL)
|
||||||
|
|
||||||
/* In GLEW_REGAL mode we call direcly into the linked
|
/* In GLEW_REGAL mode we call direcly into the linked
|
||||||
libRegal.so glGetProcAddressREGAL for looking up
|
libRegal.so glGetProcAddressREGAL for looking up
|
||||||
@ -117,6 +120,8 @@ void* NSGLGetProcAddress (const GLubyte *name)
|
|||||||
# define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name)
|
# define glewGetProcAddress(name) regalGetProcAddress((const GLchar *)name)
|
||||||
#elif defined(GLEW_OSMESA)
|
#elif defined(GLEW_OSMESA)
|
||||||
# define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name)
|
# define glewGetProcAddress(name) OSMesaGetProcAddress((const char *)name)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
|
# define glewGetProcAddress(name) eglGetProcAddress((const char *)name)
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
|
# define glewGetProcAddress(name) wglGetProcAddress((LPCSTR)name)
|
||||||
#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
|
#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
|
||||||
@ -148,6 +153,11 @@ void* NSGLGetProcAddress (const GLubyte *name)
|
|||||||
# define GLXEW_GET_VAR(x) (x)
|
# define GLXEW_GET_VAR(x) (x)
|
||||||
#endif /* GLXEW_GET_VAR */
|
#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.
|
* GLEW, just like OpenGL or GLU, does not rely on the standard C library.
|
||||||
* These functions implement the functionality required in this file.
|
* These functions implement the functionality required in this file.
|
||||||
|
45
auto/src/glew_init_egl.c
Normal file
45
auto/src/glew_init_egl.c
Normal file
@ -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 */
|
@ -71,14 +71,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 ()
|
static GLenum GLEWAPIENTRY glewContextInit ()
|
||||||
{
|
{
|
||||||
|
PFNGLGETSTRINGPROC getString;
|
||||||
const GLubyte* s;
|
const GLubyte* s;
|
||||||
GLuint dot;
|
GLuint dot;
|
||||||
GLint major, minor;
|
GLint major, minor;
|
||||||
|
|
||||||
/* query opengl version */
|
/* 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, '.');
|
dot = _glewStrCLen(s, '.');
|
||||||
if (dot == 0)
|
if (dot == 0)
|
||||||
return GLEW_ERROR_NO_GL_VERSION;
|
return GLEW_ERROR_NO_GL_VERSION;
|
||||||
@ -123,11 +131,14 @@ static GLenum GLEWAPIENTRY glewContextInit ()
|
|||||||
{
|
{
|
||||||
GLint n = 0;
|
GLint n = 0;
|
||||||
GLint i;
|
GLint i;
|
||||||
|
PFNGLGETINTEGERVPROC getIntegerv;
|
||||||
PFNGLGETSTRINGIPROC getStringi;
|
PFNGLGETSTRINGIPROC getStringi;
|
||||||
const char *ext;
|
const char *ext;
|
||||||
GLboolean *enable;
|
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 */
|
/* glGetStringi is OpenGL 3.0 */
|
||||||
getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)"glGetStringi");
|
getStringi = (PFNGLGETSTRINGIPROC) glewGetProcAddress((const GLubyte*)"glGetStringi");
|
||||||
@ -156,7 +167,7 @@ static GLenum GLEWAPIENTRY glewContextInit ()
|
|||||||
char ext[128];
|
char ext[128];
|
||||||
GLboolean *enable;
|
GLboolean *enable;
|
||||||
|
|
||||||
extensions = (const char *) glGetString(GL_EXTENSIONS);
|
extensions = (const char *) getString(GL_EXTENSIONS);
|
||||||
|
|
||||||
if (extensions)
|
if (extensions)
|
||||||
{
|
{
|
||||||
|
@ -35,9 +35,15 @@ GLboolean glewExperimental = GL_FALSE;
|
|||||||
GLenum GLEWAPIENTRY glewInit (void)
|
GLenum GLEWAPIENTRY glewInit (void)
|
||||||
{
|
{
|
||||||
GLenum r;
|
GLenum r;
|
||||||
|
#if defined(GLEW_EGL)
|
||||||
|
PFNEGLGETCURRENTDISPLAYPROC getCurrentDisplay = NULL;
|
||||||
|
#endif
|
||||||
r = glewContextInit();
|
r = glewContextInit();
|
||||||
if ( r != 0 ) return r;
|
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;
|
return r;
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
return wglewInit();
|
return wglewInit();
|
||||||
|
17
auto/src/glew_str_egl.c
Normal file
17
auto/src/glew_str_egl.c
Normal file
@ -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))
|
||||||
|
{
|
@ -4,7 +4,7 @@
|
|||||||
return ret;
|
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)
|
GLboolean glxewIsSupported (const char* name)
|
||||||
{
|
{
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(GLEW_OSMESA)
|
#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
|
||||||
|
|
||||||
GLboolean GLEWAPIENTRY wglewIsSupported (const char* name)
|
GLboolean GLEWAPIENTRY wglewIsSupported (const char* name)
|
||||||
{
|
{
|
||||||
|
6
auto/src/glewinfo_egl.c
Normal file
6
auto/src/glewinfo_egl.c
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
}
|
||||||
|
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
|
|
||||||
|
static void eglewInfo ()
|
||||||
|
{
|
@ -1,6 +1,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#elif !defined(GLEW_OSMESA) /* _UNIX */
|
#elif !defined(GLEW_EGL) && !defined(GLEW_OSMESA) /* _UNIX */
|
||||||
|
|
||||||
static void glxewInfo ()
|
static void glxewInfo ()
|
||||||
{
|
{
|
||||||
|
@ -2,7 +2,9 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_EGL)
|
||||||
|
#include <GL/eglew.h>
|
||||||
|
#elif defined(GLEW_OSMESA)
|
||||||
#define GLAPI extern
|
#define GLAPI extern
|
||||||
#include <GL/osmesa.h>
|
#include <GL/osmesa.h>
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
@ -26,6 +28,7 @@ static FILE* f;
|
|||||||
struct createParams
|
struct createParams
|
||||||
{
|
{
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
int pixelformat;
|
int pixelformat;
|
||||||
#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
|
#elif !defined(__APPLE__) && !defined(__HAIKU__) || defined(GLEW_APPLE_GLX)
|
||||||
|
@ -10,6 +10,7 @@ int main (int argc, char** argv)
|
|||||||
struct createParams params =
|
struct createParams params =
|
||||||
{
|
{
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
-1, /* pixelformat */
|
-1, /* pixelformat */
|
||||||
#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
|
#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
|
||||||
@ -22,20 +23,26 @@ int main (int argc, char** argv)
|
|||||||
0 /* flags */
|
0 /* flags */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if defined(GLEW_EGL)
|
||||||
|
typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum name);
|
||||||
|
PFNGLGETSTRINGPROC getString;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (glewParseArgs(argc-1, argv+1, ¶ms))
|
if (glewParseArgs(argc-1, argv+1, ¶ms))
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Usage: glewinfo "
|
fprintf(stderr, "Usage: glewinfo "
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
"[-pf <pixelformat>] "
|
"[-pf <pixelformat>] "
|
||||||
#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
|
#elif !defined(__HAIKU__) && !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
|
||||||
"[-display <display>] "
|
"[-display <display>] "
|
||||||
"[-visual <visual id>] "
|
"[-visual <visual id>] "
|
||||||
#endif
|
#endif
|
||||||
"[-version <OpenGL version>] "
|
"[-version <OpenGL version>] "
|
||||||
"[-profile core|compatibility] "
|
"[-profile core|compatibility] "
|
||||||
"[-flag debug|forward]"
|
"[-flag debug|forward]"
|
||||||
"\n");
|
"\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,6 +60,17 @@ int main (int argc, char** argv)
|
|||||||
glewDestroyContext();
|
glewDestroyContext();
|
||||||
return 1;
|
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(_WIN32)
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||||
if (fopen_s(&f, "glewinfo.txt", "w") != 0)
|
if (fopen_s(&f, "glewinfo.txt", "w") != 0)
|
||||||
@ -69,17 +87,26 @@ int main (int argc, char** argv)
|
|||||||
fprintf(f, "---------------------------\n\n");
|
fprintf(f, "---------------------------\n\n");
|
||||||
fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION));
|
fprintf(f, "GLEW version %s\n", glewGetString(GLEW_VERSION));
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
fprintf(f, "Reporting capabilities of pixelformat %d\n", params.pixelformat);
|
fprintf(f, "Reporting capabilities of pixelformat %d\n", params.pixelformat);
|
||||||
#elif !defined(__APPLE__) || defined(GLEW_APPLE_GLX)
|
#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);
|
params.display == NULL ? getenv("DISPLAY") : params.display, params.visual);
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(GLEW_EGL)
|
||||||
fprintf(f, "Running on a %s from %s\n",
|
fprintf(f, "Running on a %s from %s\n",
|
||||||
glGetString(GL_RENDERER), glGetString(GL_VENDOR));
|
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));
|
fprintf(f, "OpenGL version %s is supported\n", glGetString(GL_VERSION));
|
||||||
|
#endif
|
||||||
glewInfo();
|
glewInfo();
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
|
eglewInfo();
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
wglewInfo();
|
wglewInfo();
|
||||||
#else
|
#else
|
||||||
@ -119,6 +146,7 @@ GLboolean glewParseArgs (int argc, char** argv, struct createParams *params)
|
|||||||
++p;
|
++p;
|
||||||
}
|
}
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
else if (!strcmp(argv[p], "-pf") || !strcmp(argv[p], "-pixelformat"))
|
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;
|
if (++p >= argc) return GL_TRUE;
|
||||||
params->display = argv[p++];
|
params->display = argv[p++];
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[p], "-visual"))
|
else if (!strcmp(argv[p], "-visual"))
|
||||||
{
|
{
|
||||||
if (++p >= argc) return GL_TRUE;
|
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;
|
OSMesaContext ctx;
|
||||||
|
|
||||||
static const GLint osmFormat = GL_UNSIGNED_BYTE;
|
static const GLint osmFormat = GL_UNSIGNED_BYTE;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(GLEW_OSMESA)
|
#if defined(_WIN32) && !defined(GLEW_EGL) && !defined(GLEW_OSMESA)
|
||||||
|
|
||||||
static void wglewInfo ()
|
static void wglewInfo ()
|
||||||
{
|
{
|
||||||
|
4
config/Makefile.linux-clang-egl
Normal file
4
config/Makefile.linux-clang-egl
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
include config/Makefile.linux-clang
|
||||||
|
|
||||||
|
LDFLAGS.GL = -lEGL -lGL
|
||||||
|
CFLAGS.EXTRA += -DGLEW_EGL
|
4
config/Makefile.linux-egl
Normal file
4
config/Makefile.linux-egl
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
include config/Makefile.linux
|
||||||
|
|
||||||
|
LDFLAGS.GL = -lEGL -lGL
|
||||||
|
CFLAGS.EXTRA += -DGLEW_EGL
|
@ -37,6 +37,8 @@
|
|||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
#define GLAPI extern
|
#define GLAPI extern
|
||||||
#include <GL/osmesa.h>
|
#include <GL/osmesa.h>
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
|
#include <GL/eglew.h>
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
#include <GL/wglew.h>
|
#include <GL/wglew.h>
|
||||||
#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
|
#elif defined(__APPLE__) && !defined(GLEW_APPLE_GLX)
|
||||||
@ -62,6 +64,8 @@ typedef struct GLContextStruct
|
|||||||
{
|
{
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
OSMesaContext ctx;
|
OSMesaContext ctx;
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
|
EGLContext ctx;
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
HWND wnd;
|
HWND wnd;
|
||||||
HDC dc;
|
HDC dc;
|
||||||
@ -186,6 +190,7 @@ main (int argc, char** argv)
|
|||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
/* extensions string */
|
/* extensions string */
|
||||||
#if defined(GLEW_OSMESA)
|
#if defined(GLEW_OSMESA)
|
||||||
|
#elif defined(GLEW_EGL)
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
/* WGL extensions */
|
/* WGL extensions */
|
||||||
if (WGLEW_ARB_extensions_string || WGLEW_EXT_extensions_string)
|
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
|
void
|
||||||
VisualInfo (GLContext* ctx)
|
VisualInfo (GLContext* ctx)
|
||||||
@ -1048,6 +1053,27 @@ void DestroyContext (GLContext* ctx)
|
|||||||
if (NULL == ctx) return;
|
if (NULL == ctx) return;
|
||||||
if (NULL != ctx->ctx) OSMesaDestroyContext(ctx->ctx);
|
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)
|
#elif defined(_WIN32)
|
||||||
|
|
||||||
void InitContext (GLContext* ctx)
|
void InitContext (GLContext* ctx)
|
||||||
|
Loading…
Reference in New Issue
Block a user