... | ... |
@@ -158,6 +158,48 @@ Environment variables: |
158 | 158 |
Defaults to `ms=01;31:fn=35:ln=32:se=36:ve=01;34:ex=34:un=01;33`. |
159 | 159 |
``` |
160 | 160 |
|
161 |
+## Examples |
|
162 |
+ |
|
163 |
+The following example demonstrates exploring the OpenGL API starting from code |
|
164 |
+in a repository. |
|
165 |
+ |
|
166 |
+``` |
|
167 |
+$ glregistry audit-tree example-repo |
|
168 |
+4.6,GL_ARB_texture_filter_anisotropic,GL_EXT_texture_filter_anisotropic |
|
169 |
+ GL_TEXTURE_MAX_ANISOTROPY |
|
170 |
+ src/gltexture.cpp:3:17 |
|
171 |
+ |
|
172 |
+$ glregistry exts-all GL_TEXTURE_MAX_ANISOTROPY |
|
173 |
+GL_ARB_sampler_objects |
|
174 |
+GL_ARB_texture_filter_anisotropic |
|
175 |
+GL_EXT_texture_filter_anisotropic |
|
176 |
+ |
|
177 |
+$ glregistry groups GL_TEXTURE_MAX_ANISOTROPY |
|
178 |
+SamplerParameterF |
|
179 |
+TextureParameterName |
|
180 |
+ |
|
181 |
+$ glregistry enums-tree SamplerParameterF |
|
182 |
+1.0 |
|
183 |
+ GL_TEXTURE_BORDER_COLOR |
|
184 |
+1.2 |
|
185 |
+ GL_TEXTURE_MAX_LOD |
|
186 |
+ GL_TEXTURE_MIN_LOD |
|
187 |
+1.4,GL_EXT_texture_lod_bias |
|
188 |
+ GL_TEXTURE_LOD_BIAS |
|
189 |
+4.6,GL_ARB_texture_filter_anisotropic,GL_EXT_texture_filter_anisotropic |
|
190 |
+ GL_TEXTURE_MAX_ANISOTROPY |
|
191 |
+ |
|
192 |
+$ glregistry params-tree SamplerParameterF |
|
193 |
+pname:3 |
|
194 |
+ 3.3,GL_ARB_sampler_objects |
|
195 |
+ glGetSamplerParameterfv |
|
196 |
+ glSamplerParameterf |
|
197 |
+ glSamplerParameterfv |
|
198 |
+ |
|
199 |
+$ glregistry refs glSamplerParameter |
|
200 |
+https://registry.khronos.org/OpenGL-Refpages/gl4/html/glSamplerParameter.xhtml |
|
201 |
+``` |
|
202 |
+ |
|
161 | 203 |
## References |
162 | 204 |
|
163 | 205 |
Note that some of these might be out of date. |
... | ... |
@@ -153,9 +153,9 @@ Environment variables: |
153 | 153 |
`enums-tree`, `params`, `params-tree`, `audit,` and `audit-tree` commands. |
154 | 154 |
It uses the same format (and defaults) as GREP_COLORS, i.e. a |
155 | 155 |
colon-separated list of capabilties: `ms` (matching selected), `fn` (file |
156 |
- name), `ln` (line number), `se` (separators). Added custom capabilities |
|
157 |
- are: `ve` (version), `ex` (extension), `un` (unsupported). Defaults to |
|
158 |
- `ms=01;31:fn=35:ln=32:se=36:ve=01;34:ex=34:un=01;33`. |
|
156 |
+ name), `ln` (line and column number), `se` (separators). Added custom |
|
157 |
+ capabilities are: `ve` (version), `ex` (extension), `un` (unsupported). |
|
158 |
+ Defaults to `ms=01;31:fn=35:ln=32:se=36:ve=01;34:ex=34:un=01;33`. |
|
159 | 159 |
``` |
160 | 160 |
|
161 | 161 |
## References |
... | ... |
@@ -100,7 +100,7 @@ Commands: |
100 | 100 |
value <enum> |
101 | 101 |
Print the value of <enum>. |
102 | 102 |
enum <value> |
103 |
- Print the enum(s) that has the given <value>, using exact string matching. |
|
103 |
+ Print the enum(s) that has the given <value>. |
|
104 | 104 |
supports <name> |
105 | 105 |
Print the OpenGL version or extension required to use <name>. |
106 | 106 |
names [<support>] |
... | ... |
@@ -148,6 +148,14 @@ Environment variables: |
148 | 148 |
is not defined, `pager` if it exists in `$PATH`, else `less` . The value is |
149 | 149 |
interpreted by the shell. If the `$LESS` environment variable is unset, it |
150 | 150 |
is set to `FR`. |
151 |
+ GLREGISTRY_COLORS |
|
152 |
+ If standard out is a terminal, the colors used in output of the `enums`, |
|
153 |
+ `enums-tree`, `params`, `params-tree`, `audit,` and `audit-tree` commands. |
|
154 |
+ It uses the same format (and defaults) as GREP_COLORS, i.e. a |
|
155 |
+ colon-separated list of capabilties: `ms` (matching selected), `fn` (file |
|
156 |
+ name), `ln` (line number), `se` (separators). Added custom capabilities |
|
157 |
+ are: `ve` (version), `ex` (extension), `un` (unsupported). Defaults to |
|
158 |
+ `ms=01;31:fn=35:ln=32:se=36:ve=01;34:ex=34:un=01;33`. |
|
151 | 159 |
``` |
152 | 160 |
|
153 | 161 |
## References |
... | ... |
@@ -13,6 +13,12 @@ appropriate each line is in a widely supported format, usable with e.g. |
13 | 13 |
-q`][]` <(glregistry audit)`) and [GNU Emacs][]' [Compilation Mode][] ([`M-x |
14 | 14 |
compile`][]` glregistry audit`). |
15 | 15 |
|
16 |
+The vendors `KHR` (Khronos), `ARB` (Architecture Review Board), and `EXT` |
|
17 |
+(Extension) are treated specially and are sorted before other vendors. When |
|
18 |
+querying for enums, either directly or indirectly, enums with the same name, |
|
19 |
+except for one of these vendors added as a suffix, and the same value is |
|
20 |
+matched as well. |
|
21 |
+ |
|
16 | 22 |
Note that only the OpenGL (not OpenGL ES) API, and only the core (not |
17 | 23 |
compatibility) [profile][] is considered. |
18 | 24 |
|
... | ... |
@@ -52,7 +58,9 @@ Usage: |
52 | 58 |
glregistry exts |
53 | 59 |
glregistry exts-download |
54 | 60 |
glregistry exts-all <name> |
61 |
+ glregistry vendors |
|
55 | 62 |
glregistry type <type> |
63 |
+ glregistry aliases <enum> |
|
56 | 64 |
glregistry value <enum> |
57 | 65 |
glregistry enum <value> |
58 | 66 |
glregistry supports <name> |
... | ... |
@@ -83,8 +91,12 @@ Commands: |
83 | 91 |
Download all extension specs. |
84 | 92 |
exts-all <name> |
85 | 93 |
Print all downloaded extensions that mention <name>. |
94 |
+ vendors |
|
95 |
+ Print all vendor abbreviations. |
|
86 | 96 |
type <type> |
87 | 97 |
Print the definition of <type>. |
98 |
+ aliases <enum> |
|
99 |
+ Print the KHR, ARB, and EXT aliases of <enum>. |
|
88 | 100 |
value <enum> |
89 | 101 |
Print the value of <enum>. |
90 | 102 |
enum <value> |
... | ... |
@@ -64,6 +64,8 @@ Usage: |
64 | 64 |
glregistry params-tree [<group>] |
65 | 65 |
glregistry audit [<path>] |
66 | 66 |
glregistry audit-tree [<path>] |
67 |
+ glregistry refs <name> |
|
68 |
+ glregistry refs-all <name> |
|
67 | 69 |
glregistry -h|--help |
68 | 70 |
|
69 | 71 |
Commands: |
... | ... |
@@ -115,6 +117,11 @@ Commands: |
115 | 117 |
Search files in <path> if given, or the current directory if omitted, |
116 | 118 |
recursively for OpenGL API names and print them sorted on support, name, |
117 | 119 |
and location, in a tree. |
120 |
+ refs <name> |
|
121 |
+ Print the URLs of all reference pages with name <name>. |
|
122 |
+ refs-all <name> |
|
123 |
+ Print the URLs of all reference pages that mention <name>, sorted on |
|
124 |
+ support, in a tree. |
|
118 | 125 |
|
119 | 126 |
Environment variables: |
120 | 127 |
GLREGISTRY_CACHE |
... | ... |
@@ -2,9 +2,154 @@ |
2 | 2 |
|
3 | 3 |
Cache and query the [OpenGL][] [registry][] locally. |
4 | 4 |
|
5 |
+`glregistry` is a Python program that glues together [HTTPS][] downloading, |
|
6 |
+[XPath][] querying, data accumulation/sorting, [`grep`][]ing, [color][] output, |
|
7 |
+and launching external [editor][]/[pager][] programs. |
|
8 |
+ |
|
9 |
+It tries to be a good Unix citizen by obeying relevant environment variables |
|
10 |
+and being [pipe][]-friendly, outputting newline-separated entries. Where |
|
11 |
+appropriate each line is in a widely supported format, usable with e.g. |
|
12 |
+[Vim][]'s [QuickFix][] ([`:cexpr`][]` system('glregistry audit')` or [`vim |
|
13 |
+-q`][]` <(glregistry audit)`) and [GNU Emacs][]' [Compilation Mode][] ([`M-x |
|
14 |
+compile`][]` glregistry audit`). |
|
15 |
+ |
|
16 |
+Note that only the OpenGL (not OpenGL ES) API, and only the core (not |
|
17 |
+compatibility) [profile][] is considered. |
|
18 |
+ |
|
5 | 19 |
[`glregistry`]: https://git.rcrnstn.net/rcrnstn/glregistry |
6 | 20 |
[OpenGL]: https://en.wikipedia.org/wiki/OpenGL |
7 | 21 |
[registry]: https://registry.khronos.org/OpenGL/ |
22 |
+[HTTPS]: https://en.wikipedia.org/wiki/HTTPS |
|
23 |
+[XPath]: https://en.wikipedia.org/wiki/XPath |
|
24 |
+[`grep`]: https://en.wikipedia.org/wiki/Grep |
|
25 |
+[color]: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors |
|
26 |
+[editor]: https://en.wikipedia.org/wiki/Text_editor |
|
27 |
+[pager]: https://en.wikipedia.org/wiki/Terminal_pager |
|
28 |
+[pipe]: https://en.wikipedia.org/wiki/Pipeline_(Unix) |
|
29 |
+[Vim]: https://en.wikipedia.org/wiki/Vim_(text_editor) |
|
30 |
+[QuickFix]: https://vimhelp.org/quickfix.txt.html |
|
31 |
+[`:cexpr`]: https://vimhelp.org/quickfix.txt.html#%3Acexpr |
|
32 |
+[`vim -q`]: https://vimhelp.org/starting.txt.html#-q |
|
33 |
+[GNU Emacs]: https://en.wikipedia.org/wiki/GNU_Emacs |
|
34 |
+[Compilation Mode]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation-Mode.html |
|
35 |
+[`M-x compile`]: https://www.gnu.org/software/emacs/manual/html_node/emacs/Compilation.html#index-compile-2624 |
|
36 |
+[profile]: https://www.khronos.org/opengl/wiki/OpenGL_Context#OpenGL_3.2_and_Profiles |
|
37 |
+ |
|
38 |
+## Usage |
|
39 |
+ |
|
40 |
+`glregistry --help`: |
|
41 |
+ |
|
42 |
+``` |
|
43 |
+glregistry 1.0 |
|
44 |
+ |
|
45 |
+Cache and query the OpenGL registry locally. |
|
46 |
+ |
|
47 |
+Usage: |
|
48 |
+ glregistry xml |
|
49 |
+ glregistry xml-path |
|
50 |
+ glregistry ext <extension> |
|
51 |
+ glregistry ext-path <extension> |
|
52 |
+ glregistry exts |
|
53 |
+ glregistry exts-download |
|
54 |
+ glregistry exts-all <name> |
|
55 |
+ glregistry type <type> |
|
56 |
+ glregistry value <enum> |
|
57 |
+ glregistry enum <value> |
|
58 |
+ glregistry supports <name> |
|
59 |
+ glregistry names [<support>] |
|
60 |
+ glregistry groups [<enum>] |
|
61 |
+ glregistry enums [<group>] |
|
62 |
+ glregistry enums-tree [<group>] |
|
63 |
+ glregistry params [<group>] |
|
64 |
+ glregistry params-tree [<group>] |
|
65 |
+ glregistry audit [<path>] |
|
66 |
+ glregistry audit-tree [<path>] |
|
67 |
+ glregistry -h|--help |
|
68 |
+ |
|
69 |
+Commands: |
|
70 |
+ xml |
|
71 |
+ Download the registry XML and open it with an editor. |
|
72 |
+ xml-path |
|
73 |
+ Download the registry XML and print its local path. |
|
74 |
+ ext <extension> |
|
75 |
+ Download the <extension> spec and open it with an editor. |
|
76 |
+ ext-path <extension> |
|
77 |
+ Download the <extension> spec and print its local path. |
|
78 |
+ exts |
|
79 |
+ Print the names of all extension specs. |
|
80 |
+ exts-download |
|
81 |
+ Download all extension specs. |
|
82 |
+ exts-all <name> |
|
83 |
+ Print all downloaded extensions that mention <name>. |
|
84 |
+ type <type> |
|
85 |
+ Print the definition of <type>. |
|
86 |
+ value <enum> |
|
87 |
+ Print the value of <enum>. |
|
88 |
+ enum <value> |
|
89 |
+ Print the enum(s) that has the given <value>, using exact string matching. |
|
90 |
+ supports <name> |
|
91 |
+ Print the OpenGL version or extension required to use <name>. |
|
92 |
+ names [<support>] |
|
93 |
+ Print the names introduced by the OpenGL version or extension <support> if |
|
94 |
+ given, or all names if omitted. The special values VERSION and EXTENSION |
|
95 |
+ print the names introduced by all versions or all extensions respectively. |
|
96 |
+ groups [<enum>] |
|
97 |
+ Print the groups of <enum> if given, or all groups if omitted. |
|
98 |
+ enums [<group>] |
|
99 |
+ Print the enums in <group> if given, or all enums if omitted. |
|
100 |
+ enums-tree [<group>] |
|
101 |
+ Print the enums in <group> if given, or all enums if omitted, sorted on |
|
102 |
+ support, in a tree. |
|
103 |
+ params [<group>] |
|
104 |
+ Print the parameter names of <group> if given, or all parameter names if |
|
105 |
+ omitted. |
|
106 |
+ params-tree [<group>] |
|
107 |
+ Print the parameter names of <group> if given, or all parameter names if |
|
108 |
+ omitted, sorted on count, together with the commands sorted on support, in |
|
109 |
+ a tree. |
|
110 |
+ audit [<path>] |
|
111 |
+ Search files in <path> if given, or the current directory if omitted, |
|
112 |
+ recursively for OpenGL API names and print them sorted on location, |
|
113 |
+ support, and name, in a list. |
|
114 |
+ audit-tree [<path>] |
|
115 |
+ Search files in <path> if given, or the current directory if omitted, |
|
116 |
+ recursively for OpenGL API names and print them sorted on support, name, |
|
117 |
+ and location, in a tree. |
|
118 |
+ |
|
119 |
+Environment variables: |
|
120 |
+ GLREGISTRY_CACHE |
|
121 |
+ The directory to cache files in. Defaults to `$XDG_CACHE_HOME/glregistry` |
|
122 |
+ or, if `$XDG_CACHE_HOME` is not defined, `$HOME/.cache/glregistry`. |
|
123 |
+ GLREGISTRY_EDITOR |
|
124 |
+ The editor to use when opening files. Defaults to `$EDITOR` or, if |
|
125 |
+ `$EDITOR` is not defined, `editor` if it exists in `$PATH`, else `vi`. The |
|
126 |
+ value is interpreted by the shell. |
|
127 |
+ GLREGISTRY_PAGER |
|
128 |
+ The pager to use when viewing output. Defaults to `$PAGER` or, if `$PAGER` |
|
129 |
+ is not defined, `pager` if it exists in `$PATH`, else `less` . The value is |
|
130 |
+ interpreted by the shell. If the `$LESS` environment variable is unset, it |
|
131 |
+ is set to `FR`. |
|
132 |
+``` |
|
133 |
+ |
|
134 |
+## References |
|
135 |
+ |
|
136 |
+Note that some of these might be out of date. |
|
137 |
+ |
|
138 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/xml/readme.pdf> |
|
139 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/xml/registry.rnc> |
|
140 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/xml/reg.py> |
|
141 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/xml/genheaders.py> |
|
142 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/extensions/registry.py> |
|
143 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/docs/syntaxrules.txt> |
|
144 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/docs/promoting.html> |
|
145 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/blob/main/docs/enums.html> |
|
146 |
+- <https://github.com/KhronosGroup/OpenGL-Registry/issues/481> |
|
147 |
+ |
|
148 |
+See also: |
|
149 |
+ |
|
150 |
+- The community-driven [OpenGL Hardware Database][]. |
|
151 |
+ |
|
152 |
+[OpenGL Hardware Database]: https://opengl.gpuinfo.org |
|
8 | 153 |
|
9 | 154 |
## Install |
10 | 155 |
|
... | ... |
@@ -6,6 +6,68 @@ Cache and query the [OpenGL][] [registry][] locally. |
6 | 6 |
[OpenGL]: https://en.wikipedia.org/wiki/OpenGL |
7 | 7 |
[registry]: https://registry.khronos.org/OpenGL/ |
8 | 8 |
|
9 |
+## Install |
|
10 |
+ |
|
11 |
+Make sure [Python is installed][Python download], [`pip`][] is available and |
|
12 |
+the [`pip`][], [`setuptools`][] and [`wheel`][] packages are up to date: |
|
13 |
+ |
|
14 |
+```sh |
|
15 |
+python3 -m pip install --user --upgrade pip setuptools wheel |
|
16 |
+``` |
|
17 |
+ |
|
18 |
+Reference: [Python Packaging User Guide: Requirements for Installing |
|
19 |
+Packages][]. |
|
20 |
+ |
|
21 |
+[Python download]: https://python.org/download |
|
22 |
+[`pip`]: https://pip.readthedocs.io |
|
23 |
+[`setuptools`]: https://setuptools.readthedocs.io |
|
24 |
+[`wheel`]: https://wheel.readthedocs.io |
|
25 |
+[Python Packaging User Guide: Requirements for Installing Packages]: https://packaging.python.org/tutorials/installing-packages/#requirements-for-installing-packages |
|
26 |
+ |
|
27 |
+### With [`pipx`][], for users |
|
28 |
+ |
|
29 |
+Make sure [`pipx`][] is installed: |
|
30 |
+ |
|
31 |
+```sh |
|
32 |
+python3 -m pip install --user pipx |
|
33 |
+``` |
|
34 |
+ |
|
35 |
+Install `glregistry`: |
|
36 |
+ |
|
37 |
+```sh |
|
38 |
+pipx install "git+https://git.rcrnstn.net/rcrnstn/glregistry" |
|
39 |
+``` |
|
40 |
+ |
|
41 |
+`glregistry` should now be in your [`PATH`][] (if not, run `python3 -m pipx |
|
42 |
+ensurepath`). |
|
43 |
+ |
|
44 |
+Reference: [Python Packaging User Guide: Installing stand alone command line |
|
45 |
+tools][]. |
|
46 |
+ |
|
47 |
+[`pipx`]: https://pipxproject.github.io/pipx/ |
|
48 |
+[`PATH`]: https://en.wikipedia.org/wiki/PATH_(variable) |
|
49 |
+[Python Packaging User Guide: Installing stand alone command line tools]: https://packaging.python.org/guides/installing-stand-alone-command-line-tools/ |
|
50 |
+ |
|
51 |
+### Into [`venv`][], for developers |
|
52 |
+ |
|
53 |
+Clone and install into a repository [`venv`][] virtual environment: |
|
54 |
+ |
|
55 |
+```sh |
|
56 |
+git clone "https://git.rcrnstn.net/rcrnstn/glregistry" |
|
57 |
+cd "glregistry" |
|
58 |
+python3 -m venv .venv |
|
59 |
+. .venv/bin/activate |
|
60 |
+python3 -m pip install --editable . |
|
61 |
+``` |
|
62 |
+ |
|
63 |
+`glregistry` should now be in your (virtual environment) [`PATH`][]. |
|
64 |
+ |
|
65 |
+Reference: [Python Packaging User Guide: Installing packages using pip and |
|
66 |
+virtual environments][]. |
|
67 |
+ |
|
68 |
+[`venv`]: https://docs.python.org/3/library/venv.html |
|
69 |
+[Python Packaging User Guide: Installing packages using pip and virtual environments]: https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/ |
|
70 |
+ |
|
9 | 71 |
## License |
10 | 72 |
|
11 | 73 |
Licensed under the [ISC License][] unless otherwise noted, see the |
... | ... |
@@ -5,3 +5,11 @@ Cache and query the [OpenGL][] [registry][] locally. |
5 | 5 |
[`glregistry`]: https://git.rcrnstn.net/rcrnstn/glregistry |
6 | 6 |
[OpenGL]: https://en.wikipedia.org/wiki/OpenGL |
7 | 7 |
[registry]: https://registry.khronos.org/OpenGL/ |
8 |
+ |
|
9 |
+## License |
|
10 |
+ |
|
11 |
+Licensed under the [ISC License][] unless otherwise noted, see the |
|
12 |
+[`LICENSE`][] file. |
|
13 |
+ |
|
14 |
+[ISC License]: https://choosealicense.com/licenses/isc/ |
|
15 |
+[`LICENSE`]: LICENSE |