README.adoc 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. = OpenGL-Registry
  2. == OpenGL, OpenGL ES, and OpenGL ES-SC API and Extension Registry
  3. This site contains the API and Extension registries for the OpenGL family
  4. APIs - OpenGL, OpenGL ES, and OpenGL SC. It includes API specifications;
  5. specifications of Khronos- and vendor-approved extensions; header files
  6. corresponding to the specifications; the XML API Registry definining each
  7. API; and related tools and scripts.
  8. It does not contain the OpenGL and OpenGL ES Reference Pages, which are in
  9. the KhronosGroup/OpenGL-Refpages repository.
  10. If you want to add an extension specification to the Registry, correct an
  11. existing specification, request allocation of enumerants and other
  12. controlled resources in the OpenGL / GLX / WGL namespaces, or otherwise
  13. change the Registry, propose a pull request against the OpenGL-Registry
  14. repository adding the appropriate extension specifications, making changes
  15. to the appropriate XML file, etc. Note that any changes you propose to
  16. reserved values in the registry are not official until your pull request is
  17. *accepted* into the master branch.
  18. Feel free to post issues on the repository if it's unclear how to do
  19. something you need to with extensions, or if you find problems.
  20. == Please Don't File API And GLSL Bugs Here!
  21. The OpenGL-Registry repository isn't the right place to report problems with
  22. the OpenGL and OpenGL ES API and Shading Language Specifications.
  23. For API (both core and extension) issues, please use the issue tracker in
  24. the https://github.com/KhronosGroup/OpenGL-API repository.
  25. For Shading Language (both core and extension) issues, please use the issue
  26. tracker in the https://github.com/KhronosGroup/OpenGL-GLSL repository.
  27. Please tag your issues with +[OpenGL]+ or +[OpenGL ES]+ in the title, if
  28. they are specific to that API and/or Shading Language.
  29. Reporting problems with the registry *itself*, including missing or badly
  30. formed extension documents, headers, or XML files, should be done using the
  31. OpenGL-Registry issue tracker.
  32. === Defining New Extensions
  33. To create a new extension specification, take these steps:
  34. * Request one or more blocks of unused enumerants for GL, GLX, or WGL
  35. depending on the needs of your extension, by adding the reservation(s) to
  36. the end of gl.xml, glx.xml, and/or wgl.xml.
  37. * Once the pull request modifying the XML files is accepted into master, you
  38. have control of those enumerant blocks.
  39. * Create an extension specification, following the model of existing vendor
  40. specifications under extensions/*vendor*/ .
  41. * Obtain whatever degree of review, implementation, and signoff you need
  42. from affected parties before declaring the extension complete.
  43. * Add the extension specification under extensions/*vendor*/*extension* .
  44. * Modify extensions/registry.py to include the extension, using the next
  45. free ARB, GL, and/or ES extension numbers (depending on which API the
  46. extension is defined for). Execute the python script nextfree.py in the
  47. extensions/ directory to find the next free numbers.
  48. * Once registry.py is updated, 'make' in extensions/ to update the PHP
  49. include files which are used to show an index of extensions on the
  50. registry website. This requires GNU make and Python 3.
  51. * Add the extension number(s) to the extension specification in the 'Number'
  52. block.
  53. * Add the extension interfaces and enumerant assignments to xml/gl.xml,
  54. glx.xml, and/or wgl.xml following existing examples. Verify that the
  55. relevant extension headers are generated with the correct interfaces by
  56. running 'make' in xml/. This requires the lxml Python module.
  57. * Once the pull request adding the extension specification and modifying
  58. registry.py is accepted, your extension is registered.
  59. There are some documents under the docs/ directory describing some of the
  60. processes for making extensions, but they are largely out of date. They may
  61. be updated or removed over time:
  62. * link:docs/rules.html[How to create extensions]
  63. * link:docs/enums.html[Enumerant allocation policies]
  64. * link:docs/template.txt[Extension specification template]
  65. * link:docs/promoting.html[Extension promotion guidelines]
  66. * link:docs/reserved.txt[GLX opcode registry (rarely updated)]
  67. * link:docs/syntaxrules.txt[OpenGL Syntax Rules (updated 2006/12/13)]
  68. * link:docs/GLSLExtensionRules.txt[OpenGL Shading Language Extension Conventions (updated 2006/12/18)]
  69. * link:docs/fog_coord.txt[Extension Specification Example]
  70. === Repository Contents
  71. * ABI - OpenGL ABI for Linux
  72. * api - Header files for all APIs
  73. ** api/ES - Headers for OpenGL ES
  74. ** api/GL - Headers for OpenGL
  75. ** api/SC - Headers for OpenGL SC
  76. ** Note that the OpenGL ES and OpenGL SC headers all depend on the shared
  77. https://www.khronos.org/registry/EGL/api/KHR/khrplatform.h[khrplatform.h]
  78. This file is maintained in the http://www.khronos.org/registry/EGL/[EGL
  79. Registry].
  80. * docs - Miscellaneous documentation on creating extensions, mostly out of date.
  81. * extensions - Extension specifications for all APIs
  82. ** extensions/registry.py - combined extension registry for all APIs
  83. ** extensions/makeindex.py - create HTML extension indices from registry.py
  84. * index_{es,gl,sc}.php - Index files for the website, linking to specifications, headers, and extensions relevant to each API
  85. * specs - API and Shading Language Specifications for all APIs
  86. ** specs/es - OpenGL ES Specifications
  87. ** specs/gl - OpenGL Specifications
  88. ** specs/sc - OpenGL SC Specifications
  89. * xml - XML API Registry and related tools
  90. === There Sure Is A Lot Of Stuff In Here!
  91. Yes, there sure is. The specs/ directory contains over 125 MB of PDFs,
  92. including the latest specs for each version of OpenGL and OpenGL ES. While
  93. this may be somewhat distressing to people who just want to add a single
  94. extension, due to the repository download time, the *primary* purpose of
  95. this repository is to be the backing store for the web registry on
  96. khronos.org. Fortunately git is very efficient, so once you've done the
  97. initial repository clone, updates will be small and quick.