HLSF use long as aloloc size

This commit is contained in:
Nitload
2026-02-23 12:32:15 +08:00
parent 4bd88ccbca
commit c155cab510
552 changed files with 154266 additions and 154330 deletions
+4 -4
View File
@@ -1,4 +1,4 @@
#!/bin/sh
for header in glcorearb.h glext.h gl.h ; do
./genglvnd.py -registry drafts/GL/gl.xml drafts/GL/$header
done
#!/bin/sh
for header in glcorearb.h glext.h gl.h ; do
./genglvnd.py -registry drafts/GL/gl.xml drafts/GL/$header
done
+74 -74
View File
@@ -1,74 +1,74 @@
# Copyright 2013-2025 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# Generator scripts and options
# GENOPTS can be e.g. '-noprotect'
PYFILES = genheaders.py reg.py
GENOPTS =
GENHEADERS = ./genheaders.py $(GENOPTS)
# Generate all headers for GL / GLES / WGL / GLX
# Different headers depend on different XML registry files
# The $(GENHEADERS) script has targets for the additional headers
# $(API)/GL/gl.h
# $(API)/GL/glx.h
# $(API)/GL/wgl.h
# but these are experimental and not supported by Khronos. OpenGL
# drivers and SDKs provided by OS vendors and IHVs include their own
# platform-specific versions of these headers, where appropriate.
API = ../api
GLHEADERS = $(API)/GL/glext.h \
$(API)/GL/glcorearb.h \
$(API)/GLES/gl.h \
$(API)/GLES/glext.h \
$(API)/GLES2/gl2.h \
$(API)/GLES2/gl2ext.h \
$(API)/GLES3/gl3.h \
$(API)/GLSC2/glsc2.h \
$(API)/GLSC2/glsc2ext.h
GLXHEADERS = $(API)/GL/glxext.h
WGLHEADERS = $(API)/GL/wglext.h \
$(API)/GL/wgl.h
ALLHEADERS = $(GLHEADERS) $(GLXHEADERS) $(WGLHEADERS)
# Generated files to clean up
TEXDIRT = readme.aux readme.idx readme.ilg readme.ind readme.log readme.toc readme.out
PYDIRT = diag.txt dumpReg.txt errwarn.txt reg.pyc
default: $(ALLHEADERS)
$(GLHEADERS): gl.xml $(PYFILES)
$(GENHEADERS) $@
$(GLXHEADERS): glx.xml $(PYFILES)
$(GENHEADERS) $@ -registry glx.xml
$(WGLHEADERS): wgl.xml $(PYFILES)
$(GENHEADERS) $@ -registry wgl.xml
# Generate Relax NG XML schema from Compact schema
registry.rng: registry.rnc
trang registry.rnc registry.rng
# Verify all registry XML files against the schema
validate:
jing -c registry.rnc gl.xml
jing -c registry.rnc glx.xml
jing -c registry.rnc wgl.xml
# Documentation target
readme.pdf: readme.tex
touch readme.ind
pdflatex readme.tex
pdflatex readme.tex
makeindex readme.idx
pdflatex readme.tex
clean:
-rm -f $(PYDIRT) $(TEXDIRT)
# Copyright 2013-2025 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# Generator scripts and options
# GENOPTS can be e.g. '-noprotect'
PYFILES = genheaders.py reg.py
GENOPTS =
GENHEADERS = ./genheaders.py $(GENOPTS)
# Generate all headers for GL / GLES / WGL / GLX
# Different headers depend on different XML registry files
# The $(GENHEADERS) script has targets for the additional headers
# $(API)/GL/gl.h
# $(API)/GL/glx.h
# $(API)/GL/wgl.h
# but these are experimental and not supported by Khronos. OpenGL
# drivers and SDKs provided by OS vendors and IHVs include their own
# platform-specific versions of these headers, where appropriate.
API = ../api
GLHEADERS = $(API)/GL/glext.h \
$(API)/GL/glcorearb.h \
$(API)/GLES/gl.h \
$(API)/GLES/glext.h \
$(API)/GLES2/gl2.h \
$(API)/GLES2/gl2ext.h \
$(API)/GLES3/gl3.h \
$(API)/GLSC2/glsc2.h \
$(API)/GLSC2/glsc2ext.h
GLXHEADERS = $(API)/GL/glxext.h
WGLHEADERS = $(API)/GL/wglext.h \
$(API)/GL/wgl.h
ALLHEADERS = $(GLHEADERS) $(GLXHEADERS) $(WGLHEADERS)
# Generated files to clean up
TEXDIRT = readme.aux readme.idx readme.ilg readme.ind readme.log readme.toc readme.out
PYDIRT = diag.txt dumpReg.txt errwarn.txt reg.pyc
default: $(ALLHEADERS)
$(GLHEADERS): gl.xml $(PYFILES)
$(GENHEADERS) $@
$(GLXHEADERS): glx.xml $(PYFILES)
$(GENHEADERS) $@ -registry glx.xml
$(WGLHEADERS): wgl.xml $(PYFILES)
$(GENHEADERS) $@ -registry wgl.xml
# Generate Relax NG XML schema from Compact schema
registry.rng: registry.rnc
trang registry.rnc registry.rng
# Verify all registry XML files against the schema
validate:
jing -c registry.rnc gl.xml
jing -c registry.rnc glx.xml
jing -c registry.rnc wgl.xml
# Documentation target
readme.pdf: readme.tex
touch readme.ind
pdflatex readme.tex
pdflatex readme.tex
makeindex readme.idx
pdflatex readme.tex
clean:
-rm -f $(PYDIRT) $(TEXDIRT)
+25 -25
View File
@@ -1,25 +1,25 @@
// Copyright 2017-2021 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0
# OpenGL XML API Registry
This directory contains the OpenGL, GLX, and WGL XML API registries, in
gl.xml, glx.xml, and wgl.xml respectively. They are used to reserve
enumerant ranges for vendors working on new extensions, to register
extension interfaces when an extension is published, and to generate the
Khronos-supplied header files in ../api .
The canonical versions are always found in the master branch of the github
repository at https://github.com/KhronosGroup/OpenGL-Registry
The 'validate' Makefile target uses the 'jing' tool to confirm that each XML
file is structurally valid and conforms to the registry schema in
registry.rnc. The schema is described in detail in readme.pdf.
The 'default' Makefile target generates updated headers in ../api/ from the
XML files.
Note that while there are targets for ../api/{gl.h,glx.h,wgl.h} in
genglvnd.py and genheaders.py, these targets are not generated by default
and are experimental. At present, you should use the versions of these
headers shipped with your OS or IHV SDK.
// Copyright 2017-2021 The Khronos Group Inc.
// SPDX-License-Identifier: CC-BY-4.0
# OpenGL XML API Registry
This directory contains the OpenGL, GLX, and WGL XML API registries, in
gl.xml, glx.xml, and wgl.xml respectively. They are used to reserve
enumerant ranges for vendors working on new extensions, to register
extension interfaces when an extension is published, and to generate the
Khronos-supplied header files in ../api .
The canonical versions are always found in the master branch of the github
repository at https://github.com/KhronosGroup/OpenGL-Registry
The 'validate' Makefile target uses the 'jing' tool to confirm that each XML
file is structurally valid and conforms to the registry schema in
registry.rnc. The schema is described in detail in readme.pdf.
The 'default' Makefile target generates updated headers in ../api/ from the
XML files.
Note that while there are targets for ../api/{gl.h,glx.h,wgl.h} in
genglvnd.py and genheaders.py, these targets are not generated by default
and are experimental. At present, you should use the versions of these
headers shipped with your OS or IHV SDK.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+47736 -47736
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+289 -289
View File
@@ -1,289 +1,289 @@
# Copyright 2013-2020 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# Relax NG schema for Khronos Registry XML
# See https://github.com/KhronosGroup/OpenGL-Registry
#
# Last modified 2013/06/14
# This definition is subject to change (mostly in the form of additions)
namespace xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
# Toplevel is a <registry> tag.
# May be led by an optional <comment> tag containing e.g. copyrights.
start = element registry {
(
element comment { text } ? |
Types * |
Kinds * |
Groups * |
Enums * |
Commands * |
Feature * |
Extensions *
) *
}
# <types> defines a group of types
Types = element types {
Type *
}
# <type> defines a single type. It is usually a C typedef but
# may contain arbitrary C code.
# name - name of this type, if not present in the <name> tag
# api - matches a <feature> api attribute, if present
# requires - name of another type definition required by this one
# type - "group", if present, indicating a group of values in the
# corresponding <enums> definition.
# comment - unused
# <apientry /> - substitutes for an APIENTRY-style macro on output
# <name> - contains typename
Type = element type {
attribute api { text } ? ,
attribute requires { text } ? ,
attribute name { TypeName } ? ,
attribute type { text } ? ,
Comment ? ,
text ,
element apientry { text } ? ,
text ,
element name { TypeName } ? ,
text
}
# <kinds> defines descriptions for kinds.
Kinds = element kinds {
Kind *
}
# <kind> defines a description for a single kind.
Kind = element kind {
Name ,
attribute desc { text }
}
# <groups> defines a group of enum groups
Groups = element groups {
Group *
}
# <group> defines a single enum group. Enums may
# be in multiple groups.
# name - group name
# comment - unused
# <enum name=""> - members of the group
Group = element group {
Name ,
Comment ? ,
element enum { Name } *
}
# <enums> defines a group of enumerants
# namespace - identifies a numeric namespace
# group - identifies a functional subset of the namespace - same as group=""
# start, end - beginning and end of a numeric range in the namespace
# vendor - owner of the numeric range
# type - "bitmask", if present
# comment - unused
Enums = element enums {
attribute namespace { text } ? ,
attribute group { text } ? ,
attribute type { text } ? ,
attribute start { Integer } ? ,
attribute end { Integer } ? ,
Vendor ? ,
Comment ? ,
(Enum | Unused) *
}
# <enum> defines a single enumerant
# value - integer (including hex) value of the enumerant
# api - matches a <feature> api attribute, if present
# type - "u" (unsigned), "ull" (uint64), or integer if not present
# name - enumerant name
# group - identifies a functional subset of the namespace
# alias - another enumerant this is semantically identical to
# comment - unused
Enum = element enum {
(
attribute value { Integer } &
attribute api { text } ? &
attribute type { TypeSuffix } ? &
attribute name { text } &
attribute group { text } ? &
attribute alias { text } ? &
Comment ?
)
}
# <unused> defines a range of enumerants not currently being used
# start, end - beginning and end of an unused numeric range
# vendor - unused
# comment - unused
Unused = element unused {
attribute start { Integer } ,
attribute end { Integer } ? ,
Vendor ? ,
Comment ?
}
# <commands> defines a group of commands
# namespace - identifies a function namespace
Commands = element commands {
attribute namespace { text } ? ,
Command *
}
# <command> defines a single command
# <proto> is the C function prototype, including the return type
# <param> are function parameters, in order
# class - type of object name (object handle). Handles with different types are not compatible. So handle created as [class=buffer] can not be passed to [class=shader]
# <ptype> is a <type> name, if present
# <name> is the function / parameter name
# The textual contents of <proto> and <param> should be legal C
# for those parts of a function declaration.
# <alias> - denotes function aliasing
# name - name of aliased function
# <vecequiv> - denotes scalar / vector function equivalence
# name - name of corresponding vector form, e.g. (glColor3f -> glColor3fv)
# <glx> - information about GLX protocol
# type - "render", "single", or "vendor" for GLXRender, GLXSingle, GLXVendorPrivate{WithReply}
# opcode - numeric opcode of specified type for this function
# name - if present, protocol name (defaults to command name)
# comment - unused
Command = element command {
Comment ? ,
element proto {
attribute group { text } ? ,
attribute kind { text } ? ,
attribute class { text } ? ,
text ,
element ptype { TypeName } ? ,
text ,
element name { text } ,
text
} ,
element param {
attribute group { text } ? ,
attribute kind { text } ? ,
attribute class { text } ? ,
attribute len { text } ? ,
text ,
element ptype { TypeName } ? ,
text ,
element name { text } ,
text
} * ,
(
element alias {
Name
} ? &
element vecequiv {
Name
} ? &
element glx {
attribute type { text } ,
attribute opcode { xsd:integer } ,
Name ? ,
Comment ?
} *
)
}
# Each <feature> defines the interface of an API version (e.g. OpenGL 1.2)
# api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not
# neccessarily an actual API name
# name - version name (C preprocessor name, e.g. GL_VERSION_4_2)
# number - version number, e.g. 4.2
# protect - additional #ifdef symbol to place around the feature
# <require> / <remove> contains features to require or remove in
# this version
# profile - only require/remove when generated profile matches
# comment - unused
Feature = element feature {
attribute api { text } ,
Name ,
attribute number { xsd:float } ,
attribute protect { text } ?,
Comment ? ,
(
element require {
ProfileName ? ,
Comment ? ,
InterfaceElement *
} |
element remove {
ProfileName ? ,
Comment ? ,
InterfaceElement *
}
) *
}
Extensions = element extensions {
Extension *
}
# Defines the interface of an API <extension>. Like a <feature>
# tag, but with a slightly different api attribute.
# api - regexp pattern matching one or more API tags, indicating
# which APIs the extension is known to work with. The only
# syntax supported is <name>{|<name>}* and each name must
# exactly match an API being generated (implicit ^$ surrounding).
# In addition, <require> / <remove> tags also support an
# api attribute:
# api - only require/remove these features for the matching API.
# Not a regular expression.
Extension = element extension {
Name ,
attribute protect { text } ?,
attribute supported { StringGroup } ? ,
Comment ? ,
(
element require {
attribute api { text } ? ,
ProfileName ? ,
Comment ? ,
InterfaceElement *
} |
element remove {
attribute api { text } ? ,
ProfileName ? ,
Comment ? ,
InterfaceElement *
}
) *
}
# Contents of a <require> / <remove> tag, defining a group
# of features to require or remove.
# <type> / <enum> / <command> all have attributes
# name - feature name which must match
InterfaceElement =
element type {
Name ,
Comment ?
} |
element enum {
Name ,
Comment ?
} |
element command {
Name ,
Comment ?
}
# Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but
# XML Schema types don't seem to support hex notation, so we use this
# as a placeholder.
Integer = text
# TypeName is an argument/return value C type name
TypeName = text
# TypeSuffix is a C numeric type suffix, e.g. 'u' or 'ull'
TypeSuffix = text
# StringGroup is a regular expression with an implicit
# '^(' and ')$' bracketing it.
StringGroup = text
# Repeatedly used attributes
ProfileName = attribute profile { text }
Vendor = attribute vendor { text }
Comment = attribute comment { text }
Name = attribute name { text }
# Copyright 2013-2020 The Khronos Group Inc.
# SPDX-License-Identifier: Apache-2.0
# Relax NG schema for Khronos Registry XML
# See https://github.com/KhronosGroup/OpenGL-Registry
#
# Last modified 2013/06/14
# This definition is subject to change (mostly in the form of additions)
namespace xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
# Toplevel is a <registry> tag.
# May be led by an optional <comment> tag containing e.g. copyrights.
start = element registry {
(
element comment { text } ? |
Types * |
Kinds * |
Groups * |
Enums * |
Commands * |
Feature * |
Extensions *
) *
}
# <types> defines a group of types
Types = element types {
Type *
}
# <type> defines a single type. It is usually a C typedef but
# may contain arbitrary C code.
# name - name of this type, if not present in the <name> tag
# api - matches a <feature> api attribute, if present
# requires - name of another type definition required by this one
# type - "group", if present, indicating a group of values in the
# corresponding <enums> definition.
# comment - unused
# <apientry /> - substitutes for an APIENTRY-style macro on output
# <name> - contains typename
Type = element type {
attribute api { text } ? ,
attribute requires { text } ? ,
attribute name { TypeName } ? ,
attribute type { text } ? ,
Comment ? ,
text ,
element apientry { text } ? ,
text ,
element name { TypeName } ? ,
text
}
# <kinds> defines descriptions for kinds.
Kinds = element kinds {
Kind *
}
# <kind> defines a description for a single kind.
Kind = element kind {
Name ,
attribute desc { text }
}
# <groups> defines a group of enum groups
Groups = element groups {
Group *
}
# <group> defines a single enum group. Enums may
# be in multiple groups.
# name - group name
# comment - unused
# <enum name=""> - members of the group
Group = element group {
Name ,
Comment ? ,
element enum { Name } *
}
# <enums> defines a group of enumerants
# namespace - identifies a numeric namespace
# group - identifies a functional subset of the namespace - same as group=""
# start, end - beginning and end of a numeric range in the namespace
# vendor - owner of the numeric range
# type - "bitmask", if present
# comment - unused
Enums = element enums {
attribute namespace { text } ? ,
attribute group { text } ? ,
attribute type { text } ? ,
attribute start { Integer } ? ,
attribute end { Integer } ? ,
Vendor ? ,
Comment ? ,
(Enum | Unused) *
}
# <enum> defines a single enumerant
# value - integer (including hex) value of the enumerant
# api - matches a <feature> api attribute, if present
# type - "u" (unsigned), "ull" (uint64), or integer if not present
# name - enumerant name
# group - identifies a functional subset of the namespace
# alias - another enumerant this is semantically identical to
# comment - unused
Enum = element enum {
(
attribute value { Integer } &
attribute api { text } ? &
attribute type { TypeSuffix } ? &
attribute name { text } &
attribute group { text } ? &
attribute alias { text } ? &
Comment ?
)
}
# <unused> defines a range of enumerants not currently being used
# start, end - beginning and end of an unused numeric range
# vendor - unused
# comment - unused
Unused = element unused {
attribute start { Integer } ,
attribute end { Integer } ? ,
Vendor ? ,
Comment ?
}
# <commands> defines a group of commands
# namespace - identifies a function namespace
Commands = element commands {
attribute namespace { text } ? ,
Command *
}
# <command> defines a single command
# <proto> is the C function prototype, including the return type
# <param> are function parameters, in order
# class - type of object name (object handle). Handles with different types are not compatible. So handle created as [class=buffer] can not be passed to [class=shader]
# <ptype> is a <type> name, if present
# <name> is the function / parameter name
# The textual contents of <proto> and <param> should be legal C
# for those parts of a function declaration.
# <alias> - denotes function aliasing
# name - name of aliased function
# <vecequiv> - denotes scalar / vector function equivalence
# name - name of corresponding vector form, e.g. (glColor3f -> glColor3fv)
# <glx> - information about GLX protocol
# type - "render", "single", or "vendor" for GLXRender, GLXSingle, GLXVendorPrivate{WithReply}
# opcode - numeric opcode of specified type for this function
# name - if present, protocol name (defaults to command name)
# comment - unused
Command = element command {
Comment ? ,
element proto {
attribute group { text } ? ,
attribute kind { text } ? ,
attribute class { text } ? ,
text ,
element ptype { TypeName } ? ,
text ,
element name { text } ,
text
} ,
element param {
attribute group { text } ? ,
attribute kind { text } ? ,
attribute class { text } ? ,
attribute len { text } ? ,
text ,
element ptype { TypeName } ? ,
text ,
element name { text } ,
text
} * ,
(
element alias {
Name
} ? &
element vecequiv {
Name
} ? &
element glx {
attribute type { text } ,
attribute opcode { xsd:integer } ,
Name ? ,
Comment ?
} *
)
}
# Each <feature> defines the interface of an API version (e.g. OpenGL 1.2)
# api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not
# neccessarily an actual API name
# name - version name (C preprocessor name, e.g. GL_VERSION_4_2)
# number - version number, e.g. 4.2
# protect - additional #ifdef symbol to place around the feature
# <require> / <remove> contains features to require or remove in
# this version
# profile - only require/remove when generated profile matches
# comment - unused
Feature = element feature {
attribute api { text } ,
Name ,
attribute number { xsd:float } ,
attribute protect { text } ?,
Comment ? ,
(
element require {
ProfileName ? ,
Comment ? ,
InterfaceElement *
} |
element remove {
ProfileName ? ,
Comment ? ,
InterfaceElement *
}
) *
}
Extensions = element extensions {
Extension *
}
# Defines the interface of an API <extension>. Like a <feature>
# tag, but with a slightly different api attribute.
# api - regexp pattern matching one or more API tags, indicating
# which APIs the extension is known to work with. The only
# syntax supported is <name>{|<name>}* and each name must
# exactly match an API being generated (implicit ^$ surrounding).
# In addition, <require> / <remove> tags also support an
# api attribute:
# api - only require/remove these features for the matching API.
# Not a regular expression.
Extension = element extension {
Name ,
attribute protect { text } ?,
attribute supported { StringGroup } ? ,
Comment ? ,
(
element require {
attribute api { text } ? ,
ProfileName ? ,
Comment ? ,
InterfaceElement *
} |
element remove {
attribute api { text } ? ,
ProfileName ? ,
Comment ? ,
InterfaceElement *
}
) *
}
# Contents of a <require> / <remove> tag, defining a group
# of features to require or remove.
# <type> / <enum> / <command> all have attributes
# name - feature name which must match
InterfaceElement =
element type {
Name ,
Comment ?
} |
element enum {
Name ,
Comment ?
} |
element command {
Name ,
Comment ?
}
# Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but
# XML Schema types don't seem to support hex notation, so we use this
# as a placeholder.
Integer = text
# TypeName is an argument/return value C type name
TypeName = text
# TypeSuffix is a C numeric type suffix, e.g. 'u' or 'ull'
TypeSuffix = text
# StringGroup is a regular expression with an implicit
# '^(' and ')$' bracketing it.
StringGroup = text
# Repeatedly used attributes
ProfileName = attribute profile { text }
Vendor = attribute vendor { text }
Comment = attribute comment { text }
Name = attribute name { text }
+14 -14
View File
@@ -1,14 +1,14 @@
/*% cc -I. -I../api -I../../../../../registry/trunk/egl/api/ -c % ; rm testesext.o
*
* Test to make sure gl3.h builds properly.
* Will also use SVN internal versions of gl3platform.h
* and khrplatform.h (if needed) (via GLES and KHR symlinks into
* appropriate parts of the tree).
*/
#define GL_GLEXT_PROTOTYPES
#include "GLES3/gl31.h"
#include "GLES2/gl2ext.h"
#if GL_NV_non_square_matrices != 1
#error "No extension GL_NV_non_square_matrices!"
#endif
/*% cc -I. -I../api -I../../../../../registry/trunk/egl/api/ -c % ; rm testesext.o
*
* Test to make sure gl3.h builds properly.
* Will also use SVN internal versions of gl3platform.h
* and khrplatform.h (if needed) (via GLES and KHR symlinks into
* appropriate parts of the tree).
*/
#define GL_GLEXT_PROTOTYPES
#include "GLES3/gl31.h"
#include "GLES2/gl2ext.h"
#if GL_NV_non_square_matrices != 1
#error "No extension GL_NV_non_square_matrices!"
#endif
+27 -27
View File
@@ -1,27 +1,27 @@
/*% /lib/cpp -I../api testglext.c > testglext.i ; cc -c % ; rm testglext.[oi]
*/
#define GL_GLEXT_LEGACY
#include <GL/gl.h>
#define GL_GLEXT_PROTOTYPES
#include "GL/glext.h"
#define GLX_GLXEXT_LEGACY
#include <GL/glx.h>
/* Necessary to avoid token redefinition warnings */
#undef GLX_SAMPLE_BUFFERS
#undef GLX_SAMPLES
#undef GLX_FRONT_EXT
#undef GLX_BACK_EXT
#define GLX_GLXEXT_PROTOTYPES
#include "GL/glxext.h"
int VERSION_4_3 = GL_VERSION_4_3;
/* These should be the same */
int mcsor = GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES;
int mciufo = GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS;
/* See if latest extension is included */
int latest_ext = GL_NV_blend_equation_advanced;
GLenum latest_enum = GL_CONJOINT_NV;
/*% /lib/cpp -I../api testglext.c > testglext.i ; cc -c % ; rm testglext.[oi]
*/
#define GL_GLEXT_LEGACY
#include <GL/gl.h>
#define GL_GLEXT_PROTOTYPES
#include "GL/glext.h"
#define GLX_GLXEXT_LEGACY
#include <GL/glx.h>
/* Necessary to avoid token redefinition warnings */
#undef GLX_SAMPLE_BUFFERS
#undef GLX_SAMPLES
#undef GLX_FRONT_EXT
#undef GLX_BACK_EXT
#define GLX_GLXEXT_PROTOTYPES
#include "GL/glxext.h"
int VERSION_4_3 = GL_VERSION_4_3;
/* These should be the same */
int mcsor = GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES;
int mciufo = GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS;
/* See if latest extension is included */
int latest_ext = GL_NV_blend_equation_advanced;
GLenum latest_enum = GL_CONJOINT_NV;
+58 -58
View File
@@ -1,58 +1,58 @@
Miscellaneous data about extensions:
- GLU enumerant reserved values
- Information about extension vendors (probably out of date and incomplete)
GLU Enumerants
==============
Value Range Definition Contact
Control (if different)
100208 SGI
Definition Contact Email
Control
========== ======= =====
OpenGL ARB Jon Leech jon 'at' alumni.caltech.edu
Khronos Jon Leech jon 'at' alumni.caltech.edu (OpenML, OpenGL ES)
Apple Bob Beretta beretta 'at' apple.com
ARM Tom Olson tom.olson 'at' arm.com
AMD and ATI Graham Sellers graham.sellers 'at' amd.com
ATI/NVIDIA Graham Sellers graham.sellers 'at' amd.com
Broadcom Gary Sweet gsweet 'at' broadcom.com
HP Andrew Wiltzius andrew.wiltzius 'at' hp.com
Imagination Graham Connor gconnor 'at' videologic.com
Intel Ian Romanick ian.d.romanick 'at' intel.com
Mesa Brian Paul brianp 'at' mesa3d.org
Microsoft Dave Aronson daronson 'at' microsoft.com
NEC Seiji Uchida uchida 'at' hpc.bs1.fc.nec.co.jp
NVIDIA James Jones jajones 'at' nvidia.com
S3 Yanjun Zhang YanjunZhang 'at' s3graphics.com
Vivante Frido Garritsen TBD
Samsung Jeff Vigil j.vigil 'at' samsung.com
Qualcomm Ashish Mathur asmathur@qti.qualcomm.com
Out of business / acquired / unknown:
3Dfx - Acquired by NVIDIA
3Dlabs - Acquired by Creative, refocused on mobile, renamed ZiiLabs
ADD - Out of business
ATI - Acquired by AMD
Compaq - Acquired by HP
DEC - Acquired by Compaq, then HP
E&S - No longer in the graphics business (sells planetarium displays)
HP - No longer in the graphics business (other than as a system integrator)
IBM - No longer in the graphics business (other than as a system integrator)
Intense3D - Acquired by 3Dlabs
Intergraph - Acquired by 3Dlabs. Spinoff of Intense3D.
Micron - No longer in the graphics business
KPC (Kubota) - Out of business
PGI (Pacific Graphics Inc.) - Acquired by Template Graphics Systems
Pixelfusion - No longer in the graphics business
Rendition - Acquired by Micron
SGI (Silicon Graphics Inc.) - Acquired by Silicon Graphics International, then HP
SUN - Acquired by Oracle. No longer in the graphics business.
XGI - Acquired by Silicon Integrated Systems. No longer in the graphics business.
ZiiLabs - Still has a website but appears to be inactive as of 2017-01-12.
Miscellaneous data about extensions:
- GLU enumerant reserved values
- Information about extension vendors (probably out of date and incomplete)
GLU Enumerants
==============
Value Range Definition Contact
Control (if different)
100208 SGI
Definition Contact Email
Control
========== ======= =====
OpenGL ARB Jon Leech jon 'at' alumni.caltech.edu
Khronos Jon Leech jon 'at' alumni.caltech.edu (OpenML, OpenGL ES)
Apple Bob Beretta beretta 'at' apple.com
ARM Tom Olson tom.olson 'at' arm.com
AMD and ATI Graham Sellers graham.sellers 'at' amd.com
ATI/NVIDIA Graham Sellers graham.sellers 'at' amd.com
Broadcom Gary Sweet gsweet 'at' broadcom.com
HP Andrew Wiltzius andrew.wiltzius 'at' hp.com
Imagination Graham Connor gconnor 'at' videologic.com
Intel Ian Romanick ian.d.romanick 'at' intel.com
Mesa Brian Paul brianp 'at' mesa3d.org
Microsoft Dave Aronson daronson 'at' microsoft.com
NEC Seiji Uchida uchida 'at' hpc.bs1.fc.nec.co.jp
NVIDIA James Jones jajones 'at' nvidia.com
S3 Yanjun Zhang YanjunZhang 'at' s3graphics.com
Vivante Frido Garritsen TBD
Samsung Jeff Vigil j.vigil 'at' samsung.com
Qualcomm Ashish Mathur asmathur@qti.qualcomm.com
Out of business / acquired / unknown:
3Dfx - Acquired by NVIDIA
3Dlabs - Acquired by Creative, refocused on mobile, renamed ZiiLabs
ADD - Out of business
ATI - Acquired by AMD
Compaq - Acquired by HP
DEC - Acquired by Compaq, then HP
E&S - No longer in the graphics business (sells planetarium displays)
HP - No longer in the graphics business (other than as a system integrator)
IBM - No longer in the graphics business (other than as a system integrator)
Intense3D - Acquired by 3Dlabs
Intergraph - Acquired by 3Dlabs. Spinoff of Intense3D.
Micron - No longer in the graphics business
KPC (Kubota) - Out of business
PGI (Pacific Graphics Inc.) - Acquired by Template Graphics Systems
Pixelfusion - No longer in the graphics business
Rendition - Acquired by Micron
SGI (Silicon Graphics Inc.) - Acquired by Silicon Graphics International, then HP
SUN - Acquired by Oracle. No longer in the graphics business.
XGI - Acquired by Silicon Integrated Systems. No longer in the graphics business.
ZiiLabs - Still has a website but appears to be inactive as of 2017-01-12.
File diff suppressed because it is too large Load Diff
+106 -106
View File
@@ -1,106 +1,106 @@
<type>struct <name>_POINTFLOAT</name> {
FLOAT x;
FLOAT y;
};</type>
<type>typedef struct _POINTFLOAT <name>POINTFLOAT</name>;</type>
<type>typedef struct _POINTFLOAT *<name>PPOINTFLOAT</name>;</type>
<type requires="POINTFLOAT">struct <name>_GLYPHMETRICSFLOAT</name> {
FLOAT gmfBlackBoxX;
FLOAT gmfBlackBoxY;
POINTFLOAT gmfptGlyphOrigin;
FLOAT gmfCellIncX;
FLOAT gmfCellIncY;
};</type>
<type requires="_GLYPHMETRICSFLOAT">typedef struct _GLYPHMETRICSFLOAT <name>GLYPHMETRICSFLOAT</name>;</type>
<type requires="_GLYPHMETRICSFLOAT">typedef struct _GLYPHMETRICSFLOAT *<name>PGLYPHMETRICSFLOAT</name>;</type>
typedef struct tagPIXELFORMATDESCRIPTOR {
WORD nSize;
WORD nVersion;
DWORD dwFlags;
BYTE iPixelType;
BYTE cColorBits;
BYTE cRedBits;
BYTE cRedShift;
BYTE cGreenBits;
BYTE cGreenShift;
BYTE cBlueBits;
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType;
BYTE bReserved;
DWORD dwLayerMask;
DWORD dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR;
PFD_DRAW_TO_WINDOW The buffer can draw to a window or device surface.
PFD_DRAW_TO_BITMAP The buffer can draw to a memory bitmap.
PFD_SUPPORT_GDI The buffer supports GDI drawing. This flag and PFD_DOUBLEBUFFER are mutually exclusive in the current generic implementation.
PFD_SUPPORT_OPENGL The buffer supports OpenGL drawing.
PFD_GENERIC_ACCELERATED The pixel format is supported by a device driver that accelerates the generic implementation. If this flag is clear and the PFD_GENERIC_FORMAT flag is set, the pixel format is supported by the generic implementation only.
PFD_GENERIC_FORMAT The pixel format is supported by the GDI software implementation, which is also known as the generic implementation. If this bit is clear, the pixel format is supported by a device driver or hardware.
PFD_NEED_PALETTE The buffer uses RGBA pixels on a palette-managed device. A logical palette is required to achieve the best results for this pixel type. Colors in the palette should be specified according to the values of the cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits, and cBlueShift members. The palette should be created and realized in the device context before calling wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE Defined in the pixel format descriptors of hardware that supports one hardware palette in 256-color mode only. For such systems to use hardware acceleration, the hardware palette must be in a fixed order (for example, 3-3-2) when in RGBA mode or must match the logical palette when in color-index mode.
PFD_DOUBLEBUFFER The buffer is double-buffered. This flag and PFD_SUPPORT_GDI are mutually exclusive in the current generic implementation.
PFD_STEREO The buffer is stereoscopic. This flag is not supported in the current generic implementation.
PFD_SWAP_LAYER_BUFFERS Indicates whether a device can swap individual layer planes with pixel formats that include double-buffered overlay or underlay planes. Otherwise all layer planes are swapped together as a group. When this flag is set, wglSwapLayerBuffers is supported.
PFD_DEPTH_DONTCARE The requested pixel format can either have or not have a depth buffer. To select a pixel format without a depth buffer, you must specify this flag. The requested pixel format can be with or without a depth buffer. Otherwise, only pixel formats with a depth buffer are considered.
PFD_DOUBLEBUFFER_DONTCARE The requested pixel format can be either single- or double-buffered.
PFD_STEREO_DONTCARE The requested pixel format can be either monoscopic or stereoscopic.
PFD_SWAP_COPY Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the content of the back buffer to be copied to the front buffer. The content of the back buffer is not affected by the swap. PFD_SWAP_COPY is a hint only and might not be provided by a driver.
PFD_SWAP_EXCHANGE Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the exchange of the back buffer's content with the front buffer's content. Following the swap, the back buffer's content contains the front buffer's content before the swap. PFD_SWAP_EXCHANGE is a hint only and might not be provided by a driver.
PFD_TYPE_RGBA RGBA pixels. Each pixel has four components in this order: red, green, blue, and alpha.
PFD_TYPE_COLORINDEX Color-index pixels. Each pixel uses a color-index value.
typedef struct tag_LAYERPLANEDESCRIPTOR {
WORD nSize;
WORD nVersion;
DWORD dwFlags;
BYTE iPixelType;
BYTE cColorBits;
BYTE cRedBits;
BYTE cRedShift;
BYTE cGreenBits;
BYTE cGreenShift;
BYTE cBlueBits;
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType;
BYTE bReserved;
COLORREF crTransparent;
} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR;
LPD_SUPPORT_OPENGL The layer plane supports OpenGL drawing.
LPD_SUPPORT_GDI The layer plane supports GDI drawing. The current implementation of OpenGL doesn't support this flag.
LPD_DOUBLEBUFFER The layer plane is double-buffered. A layer plane can be double-buffered even when the main plane is single-buffered and vice versa.
LPD_STEREO The layer plane is stereoscopic. A layer plane can be stereoscopic even when the main plane is monoscopic and vice versa.
LPD_SWAP_EXCHANGE In a double-buffered layer plane, swapping the color buffer exchanges the front buffer and back buffer contents. The back buffer then contains the contents of the front buffer before the swap. This flag is a hint only and might not be provided by a driver.
LPD_SWAP_COPY In a double-buffered layer plane, swapping the color buffer copies the back buffer contents to the front buffer. The swap does not affect the back buffer contents. This flag is a hint only and might not be provided by a driver.
LPD_TRANSPARENT The crTransparent member of this structure contains a transparent color or index value that enables underlying layers to show through this layer. All layer planes, except the lowest-numbered underlay layer, have a transparent color or index.
LPD_SHARE_DEPTH The layer plane shares the depth buffer with the main plane.
LPD_SHARE_STENCIL The layer plane shares the stencil buffer with the main plane.
LPD_SHARE_ACCUM The layer plane shares the accumulation buffer with the main plane.
iPixelType
Specifies the type of pixel data. The following types are defined.
Value Meaning
LPD_TYPE_RGBA RGBA pixels. Each pixel has four components: red, green, blue, and alpha.
LPD_TYPE_COLORINDEX Color-index pixels. Each pixel uses a color-index value.
<type>struct <name>_POINTFLOAT</name> {
FLOAT x;
FLOAT y;
};</type>
<type>typedef struct _POINTFLOAT <name>POINTFLOAT</name>;</type>
<type>typedef struct _POINTFLOAT *<name>PPOINTFLOAT</name>;</type>
<type requires="POINTFLOAT">struct <name>_GLYPHMETRICSFLOAT</name> {
FLOAT gmfBlackBoxX;
FLOAT gmfBlackBoxY;
POINTFLOAT gmfptGlyphOrigin;
FLOAT gmfCellIncX;
FLOAT gmfCellIncY;
};</type>
<type requires="_GLYPHMETRICSFLOAT">typedef struct _GLYPHMETRICSFLOAT <name>GLYPHMETRICSFLOAT</name>;</type>
<type requires="_GLYPHMETRICSFLOAT">typedef struct _GLYPHMETRICSFLOAT *<name>PGLYPHMETRICSFLOAT</name>;</type>
typedef struct tagPIXELFORMATDESCRIPTOR {
WORD nSize;
WORD nVersion;
DWORD dwFlags;
BYTE iPixelType;
BYTE cColorBits;
BYTE cRedBits;
BYTE cRedShift;
BYTE cGreenBits;
BYTE cGreenShift;
BYTE cBlueBits;
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType;
BYTE bReserved;
DWORD dwLayerMask;
DWORD dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR;
PFD_DRAW_TO_WINDOW The buffer can draw to a window or device surface.
PFD_DRAW_TO_BITMAP The buffer can draw to a memory bitmap.
PFD_SUPPORT_GDI The buffer supports GDI drawing. This flag and PFD_DOUBLEBUFFER are mutually exclusive in the current generic implementation.
PFD_SUPPORT_OPENGL The buffer supports OpenGL drawing.
PFD_GENERIC_ACCELERATED The pixel format is supported by a device driver that accelerates the generic implementation. If this flag is clear and the PFD_GENERIC_FORMAT flag is set, the pixel format is supported by the generic implementation only.
PFD_GENERIC_FORMAT The pixel format is supported by the GDI software implementation, which is also known as the generic implementation. If this bit is clear, the pixel format is supported by a device driver or hardware.
PFD_NEED_PALETTE The buffer uses RGBA pixels on a palette-managed device. A logical palette is required to achieve the best results for this pixel type. Colors in the palette should be specified according to the values of the cRedBits, cRedShift, cGreenBits, cGreenShift, cBluebits, and cBlueShift members. The palette should be created and realized in the device context before calling wglMakeCurrent.
PFD_NEED_SYSTEM_PALETTE Defined in the pixel format descriptors of hardware that supports one hardware palette in 256-color mode only. For such systems to use hardware acceleration, the hardware palette must be in a fixed order (for example, 3-3-2) when in RGBA mode or must match the logical palette when in color-index mode.
PFD_DOUBLEBUFFER The buffer is double-buffered. This flag and PFD_SUPPORT_GDI are mutually exclusive in the current generic implementation.
PFD_STEREO The buffer is stereoscopic. This flag is not supported in the current generic implementation.
PFD_SWAP_LAYER_BUFFERS Indicates whether a device can swap individual layer planes with pixel formats that include double-buffered overlay or underlay planes. Otherwise all layer planes are swapped together as a group. When this flag is set, wglSwapLayerBuffers is supported.
PFD_DEPTH_DONTCARE The requested pixel format can either have or not have a depth buffer. To select a pixel format without a depth buffer, you must specify this flag. The requested pixel format can be with or without a depth buffer. Otherwise, only pixel formats with a depth buffer are considered.
PFD_DOUBLEBUFFER_DONTCARE The requested pixel format can be either single- or double-buffered.
PFD_STEREO_DONTCARE The requested pixel format can be either monoscopic or stereoscopic.
PFD_SWAP_COPY Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the content of the back buffer to be copied to the front buffer. The content of the back buffer is not affected by the swap. PFD_SWAP_COPY is a hint only and might not be provided by a driver.
PFD_SWAP_EXCHANGE Specifies the content of the back buffer in the double-buffered main color plane following a buffer swap. Swapping the color buffers causes the exchange of the back buffer's content with the front buffer's content. Following the swap, the back buffer's content contains the front buffer's content before the swap. PFD_SWAP_EXCHANGE is a hint only and might not be provided by a driver.
PFD_TYPE_RGBA RGBA pixels. Each pixel has four components in this order: red, green, blue, and alpha.
PFD_TYPE_COLORINDEX Color-index pixels. Each pixel uses a color-index value.
typedef struct tag_LAYERPLANEDESCRIPTOR {
WORD nSize;
WORD nVersion;
DWORD dwFlags;
BYTE iPixelType;
BYTE cColorBits;
BYTE cRedBits;
BYTE cRedShift;
BYTE cGreenBits;
BYTE cGreenShift;
BYTE cBlueBits;
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType;
BYTE bReserved;
COLORREF crTransparent;
} LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR;
LPD_SUPPORT_OPENGL The layer plane supports OpenGL drawing.
LPD_SUPPORT_GDI The layer plane supports GDI drawing. The current implementation of OpenGL doesn't support this flag.
LPD_DOUBLEBUFFER The layer plane is double-buffered. A layer plane can be double-buffered even when the main plane is single-buffered and vice versa.
LPD_STEREO The layer plane is stereoscopic. A layer plane can be stereoscopic even when the main plane is monoscopic and vice versa.
LPD_SWAP_EXCHANGE In a double-buffered layer plane, swapping the color buffer exchanges the front buffer and back buffer contents. The back buffer then contains the contents of the front buffer before the swap. This flag is a hint only and might not be provided by a driver.
LPD_SWAP_COPY In a double-buffered layer plane, swapping the color buffer copies the back buffer contents to the front buffer. The swap does not affect the back buffer contents. This flag is a hint only and might not be provided by a driver.
LPD_TRANSPARENT The crTransparent member of this structure contains a transparent color or index value that enables underlying layers to show through this layer. All layer planes, except the lowest-numbered underlay layer, have a transparent color or index.
LPD_SHARE_DEPTH The layer plane shares the depth buffer with the main plane.
LPD_SHARE_STENCIL The layer plane shares the stencil buffer with the main plane.
LPD_SHARE_ACCUM The layer plane shares the accumulation buffer with the main plane.
iPixelType
Specifies the type of pixel data. The following types are defined.
Value Meaning
LPD_TYPE_RGBA RGBA pixels. Each pixel has four components: red, green, blue, and alpha.
LPD_TYPE_COLORINDEX Color-index pixels. Each pixel uses a color-index value.