122 lines
5.9 KiB
Markdown
122 lines
5.9 KiB
Markdown
![]() |
= OpenGL-Registry
|
||
|
|
||
|
|
||
|
== OpenGL, OpenGL ES, and OpenGL ES-SC API and Extension Registry
|
||
|
|
||
|
This site contains the API and Extension registries for the OpenGL family
|
||
|
APIs - OpenGL, OpenGL ES, and OpenGL SC. It includes API specifications;
|
||
|
specifications of Khronos- and vendor-approved extensions; header files
|
||
|
corresponding to the specifications; the XML API Registry definining each
|
||
|
API; and related tools and scripts.
|
||
|
|
||
|
It does not contain the OpenGL and OpenGL ES Reference Pages, which are in
|
||
|
the KhronosGroup/OpenGL-Refpages repository.
|
||
|
|
||
|
If you want to add an extension specification to the Registry, correct an
|
||
|
existing specification, request allocation of enumerants and other
|
||
|
controlled resources in the OpenGL / GLX / WGL namespaces, or otherwise
|
||
|
change the Registry, propose a pull request against the OpenGL-Registry
|
||
|
repository adding the appropriate extension specifications, making changes
|
||
|
to the appropriate XML file, etc. Note that any changes you propose to
|
||
|
reserved values in the registry are not official until your pull request is
|
||
|
*accepted* into the master branch.
|
||
|
|
||
|
Feel free to post issues on the repository if it's unclear how to do
|
||
|
something you need to with extensions, or if you find problems.
|
||
|
|
||
|
|
||
|
== Please Don't File API And GLSL Bugs Here!
|
||
|
|
||
|
The OpenGL-Registry repository isn't the right place to report problems with
|
||
|
the OpenGL and OpenGL ES API and Shading Language Specifications.
|
||
|
|
||
|
For API (both core and extension) issues, please use the issue tracker in
|
||
|
the https://github.com/KhronosGroup/OpenGL-API repository.
|
||
|
|
||
|
For Shading Language (both core and extension) issues, please use the issue
|
||
|
tracker in the https://github.com/KhronosGroup/OpenGL-GLSL repository.
|
||
|
|
||
|
Please tag your issues with +[OpenGL]+ or +[OpenGL ES]+ in the title, if
|
||
|
they are specific to that API and/or Shading Language.
|
||
|
|
||
|
Reporting problems with the registry *itself*, including missing or badly
|
||
|
formed extension documents, headers, or XML files, should be done using the
|
||
|
OpenGL-Registry issue tracker.
|
||
|
|
||
|
|
||
|
=== Defining New Extensions
|
||
|
|
||
|
To create a new extension specification, take these steps:
|
||
|
|
||
|
* Request one or more blocks of unused enumerants for GL, GLX, or WGL
|
||
|
depending on the needs of your extension, by adding the reservation(s) to
|
||
|
the end of gl.xml, glx.xml, and/or wgl.xml.
|
||
|
* Once the pull request modifying the XML files is accepted into master, you
|
||
|
have control of those enumerant blocks.
|
||
|
* Create an extension specification, following the model of existing vendor
|
||
|
specifications under extensions/*vendor*/ .
|
||
|
* Obtain whatever degree of review, implementation, and signoff you need
|
||
|
from affected parties before declaring the extension complete.
|
||
|
* Add the extension specification under extensions/*vendor*/*extension* .
|
||
|
* Modify extensions/registry.py to include the extension, using the next
|
||
|
free ARB, GL, and/or ES extension numbers (depending on which API the
|
||
|
extension is defined for). Execute the python script nextfree.py in the
|
||
|
extensions/ directory to find the next free numbers.
|
||
|
* Once registry.py is updated, 'make' in extensions/ to update the PHP
|
||
|
include files which are used to show an index of extensions on the
|
||
|
registry website. This requires GNU make and Python 3.
|
||
|
* Add the extension number(s) to the extension specification in the 'Number'
|
||
|
block.
|
||
|
* Add the extension interfaces and enumerant assignments to xml/gl.xml,
|
||
|
glx.xml, and/or wgl.xml following existing examples. Verify that the
|
||
|
relevant extension headers are generated with the correct interfaces by
|
||
|
running 'make' in xml/. This requires the lxml Python module.
|
||
|
* Once the pull request adding the extension specification and modifying
|
||
|
registry.py is accepted, your extension is registered.
|
||
|
|
||
|
There are some documents under the docs/ directory describing some of the
|
||
|
processes for making extensions, but they are largely out of date. They may
|
||
|
be updated or removed over time:
|
||
|
|
||
|
* link:docs/rules.html[How to create extensions]
|
||
|
* link:docs/enums.html[Enumerant allocation policies]
|
||
|
* link:docs/template.txt[Extension specification template]
|
||
|
* link:docs/promoting.html[Extension promotion guidelines]
|
||
|
* link:docs/reserved.txt[GLX opcode registry (rarely updated)]
|
||
|
* link:docs/syntaxrules.txt[OpenGL Syntax Rules (updated 2006/12/13)]
|
||
|
* link:docs/GLSLExtensionRules.txt[OpenGL Shading Language Extension Conventions (updated 2006/12/18)]
|
||
|
* link:docs/fog_coord.txt[Extension Specification Example]
|
||
|
|
||
|
|
||
|
=== Repository Contents
|
||
|
|
||
|
* ABI - OpenGL ABI for Linux
|
||
|
* api - Header files for all APIs
|
||
|
** api/ES - Headers for OpenGL ES
|
||
|
** api/GL - Headers for OpenGL
|
||
|
** api/SC - Headers for OpenGL SC
|
||
|
** Note that the OpenGL ES and OpenGL SC headers all depend on the shared
|
||
|
https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h[khrplatform.h]
|
||
|
This file is maintained in the http://www.khronos.org/registry/EGL/[EGL
|
||
|
Registry].
|
||
|
* docs - Miscellaneous documentation on creating extensions, mostly out of date.
|
||
|
* extensions - Extension specifications for all APIs
|
||
|
** extensions/registry.py - combined extension registry for all APIs
|
||
|
** extensions/makeindex.py - create HTML extension indices from registry.py
|
||
|
* index_{es,gl,sc}.php - Index files for the website, linking to specifications, headers, and extensions relevant to each API
|
||
|
* specs - API and Shading Language Specifications for all APIs
|
||
|
** specs/es - OpenGL ES Specifications
|
||
|
** specs/gl - OpenGL Specifications
|
||
|
** specs/sc - OpenGL SC Specifications
|
||
|
* xml - XML API Registry and related tools
|
||
|
|
||
|
|
||
|
=== There Sure Is A Lot Of Stuff In Here!
|
||
|
|
||
|
Yes, there sure is. The specs/ directory contains over 125 MB of PDFs,
|
||
|
including the latest specs for each version of OpenGL and OpenGL ES. While
|
||
|
this may be somewhat distressing to people who just want to add a single
|
||
|
extension, due to the repository download time, the *primary* purpose of
|
||
|
this repository is to be the backing store for the web registry on
|
||
|
khronos.org. Fortunately git is very efficient, so once you've done the
|
||
|
initial repository clone, updates will be small and quick.
|