| = OpenCL-Registry |
| |
| The OpenCL-Registry repository contains the OpenCL API and Extension |
| Registry, including specifications, reference pages and reference cards, and |
| the enumerant registry. It is also used as a backing store for the web view |
| of the registry at https://www.khronos.org/registry/cl/ ; commits to the |
| master branch of this repository will be reflected there. |
| |
| Please file issues with the OpenCL API (specification bugs, feature |
| requests, etc.) on the companion https://github.com/KhronosGroup/OpenCL-Docs |
| repository. |
| |
| Issues that should be filed in *this* repository include adding OpenCL |
| extension specifications, and problems with the content of the registry |
| *itself*. |
| |
| == Reserving OpenCL Enumerant Ranges |
| |
| OpenCL enumerants are now documented in the specification repository |
| https://github.com/KhronosGroup/OpenCL-Docs in the file |
| https://github.com/KhronosGroup/OpenCL-Docs/blob/master/xml/cl.xml |
| |
| New enumerant ranges can be allocated by proposing a pull request to master |
| branch of OpenCL-Docs modifying `cl.xml`, following the |
| existing examples. Allocate ranges starting at the lowest free values |
| available (search for "`Reserved for vendor extensions`"). Ranges are not |
| officially allocated until your pull request is *accepted* into master |
| branch of the OpenCL-Docs repository. At that point you can use values from |
| your assigned range for API extensions. |
| |
| == Adding Extension Specifications |
| |
| Extension specification documents can be added by proposing a pull request |
| to master, adding the specification '.txt' file under |
| 'extensions/<vendor>/filename.txt'. You must also: |
| |
| * Modify 'extensions/registry.py' to include the extension, using the next |
| free extension number. Execute the python script 'nextfree.py' in the |
| 'extensions/' directory to find the next free number. The extension `flags` |
| must be marked as `public` , similar to other entries in 'registry.py', |
| for the extension to be linked from the registry index page. |
| * Include that extension number in the extension specification document |
| * In the 'extensions/' directory, `make` to regenerate the HTML index file |
| 'clext.php' from 'registry.py'. If this doesn't succeed due to not having |
| the right Python version or something like that, we'll take care of it |
| when merging to master. |
| |
| Sometimes extension text files contain inappropriate UTF-8 characters. They |
| should be restricted to the ASCII subset of UTF-8 at present. They can be |
| removed using the iconv Linux command-line tool via |
| |
| iconv -c -f utf-8 -t ascii filename.txt |
| |
| (see internal Bugzilla issue 16141 for more). |
| |
| We will be transitioning to an asciidoc-based extension specification format |
| at some point. |
| |
| == Repository Contents |
| |
| Interesting files in this repository include: |
| |
| * 'index.php' - toplevel index page for the web view. This relies on PHP |
| include files found elsewhere on https://www.khronos.org and so is not very useful |
| in isolation. |
| * 'extensions/' - OpenCL extension specifications, grouped into |
| vendor-specific subdirectories. |
| ** 'extensions/registry.py' - extension registry. |
| ** 'extensions/makeindex.py' - create HTML extension indices from 'registry.py'. |
| ** 'extensions/nextfree.py' - determine the next free extension number in |
| 'registry.py'. |
| * 'sdk/' - OpenCL reference pages and reference cards. There are separate |
| sets for each API version. The current (OpenCL 2.2) reference pages are |
| extracted from the OpenCL Specification, so problems with these pages |
| should be filed in the OpenCL-Docs repository - only the generated HTML |
| for the reference pages is published here. |
| * 'specs/' - OpenCL specification documents. |
| |
| |