| // Copyright 2014-2023 The Khronos Group Inc. |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| = Vulkan^(R)^ Specification Repository Scripts |
| |
| This directory contains scripts used in building the Vulkan API |
| specification and related artifacts. For the most part, these scripts are |
| invoked from the top-level directory or from the API Registry in |
| ../xml to build generated components of the specification. |
| |
| Scripts in this directory include: |
| |
| * `genvk.py` - Python script to generate Vulkan headers and some other |
| targets, using the generators described below. |
| * `reg.py` - Python tools to read a registry XML file and call into |
| generators to create headers and other types of output. |
| * `conventions.py`, `vkconventions.py`, `apiconventions.py` - API-specific |
| parameters and formatting / style conventions used by generators. |
| * `generator.py` - output generator base class. |
| ** `cgenerator.py` - C header output generator. |
| ** `docgenerator.py` - Asciidoc interface language include generator. |
| ** `extensionmetadocgenerator.py` - Generator for Asciidoc extension |
| descriptions in spec appendices. |
| ** `hostsyncgenerator.py` - Asciidoc host sync table generator. |
| ** `interfacedocgenerator.py` - Asciidoc extension appendix interface |
| generator. |
| ** `pygenerator.py, `rubygenerator.py`, `scriptgenerator.py` - generate |
| Python and Ruby encodings of parts of the API description for use in |
| other scripts and asciidoctor extensions. |
| ** `spirvcapgenerator.py` - Asciidoc generator for SPIR-V capability |
| tables. |
| ** `validitygenerator.py` - Asciidoc validity language generator. |
| |
| * `check_spec_links.py` - validates a variety of markup and content in the |
| Asciidoctor specification source. |
| * `conventions.py`, `vkconventions.py` - API-specific options used by |
| scripts shared with OpenXR and other APIs. |
| * `extdependency.py` - generate extension dependencies for use when |
| building the specification. |
| * `genRelease`, `genspec.py` - build HTML and PDF Specifications with a |
| variety of options to control target directories, extensions included |
| while building, etc. |
| * `genRef.py`, `reflib.py`, `makemanaliases.py` - extract API reference |
| pages from specification source into single-page source documents, and |
| create symbolic links in the generated refpage HTML for API aliases. |
| * `indexExt.py` - generate HTML index of all extensions for inclusion into |
| the Vulkan registry index page. |
| * `reflow.py`, `reflow_count.py` - reflow specification source text to |
| follow style guidelines, and insert Valid Usage statements where they |
| are needed. |
| * `test_check_spec_links.py`, `test_check_spec_links_api_specific.py`, |
| `test_entity_db.py` - these are from another Khronos WG repository and |
| are unused by Vulkan at present. |
| * `xml_consistency.py` - perform some internal consistency checks on |
| `vk.xml`. |
| |
| * `compImages.sh` - compare images in two branches. |
| * `htmldiff/htmldiff` - HTML diff script (see below). |
| * `Retired/` - contains obsolete, unused, or single-purpose scripts. Not |
| maintained. |
| |
| == HTML Diff Script for Vulkan |
| |
| This is a first cut at a script to compare Vulkan HTML specifications. Usage |
| is simply 'htmldiff file1.html file2.html > diff.html'. The script does not |
| copy CSS and images required by the input specs, so it is best to generate |
| the output in the same directory as one of the inputs. However, the script |
| must be invoked from the directory it is located within. |
| |
| The scripts used require Python and Perl. Additionally, the python |
| 'utidylib' module and the underlying libtidy C library are required. |
| On Debian Linux, it may be necessary to install the 'python-utidylib' and |
| 'libtidy' packages if they are not already present. |
| |
| The scripts are taken from the code backing the |
| |
| http://services.w3.org/htmldiff |
| |
| website. `htmldiff` is the Python driver script. `htmldiff.pl` is the |
| Perl script which generates the diff after preprocessing of the input |
| HTML by `htmldiff`. `htmldiff.orig` is the original Python script from |
| the website, modified to run at the command line instead of as a CGI |
| script. |