| = OpenCL-Registry |
| |
| The OpenCL-Registry repository contains the OpenCL API and Extension |
| Registry, including specifications, reference pages, and reference cards. |
| It is also used as a backing store for the web view of the registry at |
| https://registry.khronos.org/OpenCL/ ; commits to the main branch of this |
| repository will be reflected there. |
| |
| Please file issues with the OpenCL API (specification bugs, feature |
| requests, etc.) in the companion |
| link:https://github.com/KhronosGroup/OpenCL-Docs[OpenCL-Docs] repository. |
| |
| Issues that should be filed in *this* repository include adding OpenCL |
| extension specifications, and problems with the structure and content of the |
| registry *itself*. |
| |
| |
| == Reserving OpenCL Enumerant Ranges |
| |
| OpenCL enumerants are now documented in the |
| link:https://github.com/KhronosGroup/OpenCL-Docs[OpenCL-Docs] repository in |
| the file |
| link:https://github.com/KhronosGroup/OpenCL-Docs/blob/main/xml/cl.xml[xml/cl.xml]. |
| |
| New enumerant ranges can be allocated by proposing a pull request to `main` |
| 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 `main` branch of the OpenCL-Docs repository. |
| At that point you can use values from your assigned range for API |
| extensions. |
| |
| |
| == Adding Khronos Extension Specifications |
| |
| Khronos `khr` extensions must now be documented in the OpenCL API and OpenCL |
| C Specifications, written as conditionally-included markup. |
| Propose a pull request against the appropriate specification markup and XML |
| files in the link:https://github.com/KhronosGroup/OpenCL-Docs[OpenCL-Docs] |
| repository. |
| |
| |
| == Adding Vendor Extension Specifications |
| |
| Vendor extension specification documents should be written as separate |
| asciidoc markup files in the |
| link:https://github.com/KhronosGroup/OpenCL-Docs[OpenCL-Docs] repository. |
| Use the |
| link:https://github.com/KhronosGroup/OpenCL-Docs/blob/main/extensions/cl_extension_template.asciidoc[asciidoc |
| extension template] and follow the markup style of existing, similar |
| extensions. |
| Propose a pull request against the appropriate specification markup and XML |
| files in the link:https://github.com/KhronosGroup/OpenCL-Docs[OpenCL-Docs] |
| repository when you are ready to publish the extension. |
| |
| The repository maintainer will assist with importing the HTML generated from |
| the asciidoc source file and making needed changes to files in this |
| repository when publishing: |
| |
| * 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 main. |
| |
| Older extensions are written as text (`.txt`) files. |
| Sometimes extension text files contain inappropriate UTF-8 characters. |
| They should be restricted to the ASCII subset of UTF-8. |
| Problematic characters can be identified using the iconv Linux command-line |
| tool: |
| |
| iconv -c -f utf-8 -t ascii filename.txt |
| |
| |
| == Repository Contents |
| |
| Interesting files in this repository include: |
| |
| * 'index.php' - top-level 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. |
| |
| |