mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-01-15 00:44:39 +00:00
85184f305a
* Bump API patch number and header version number to 25 for this update. * Structurally change the specification so that multiple extensions are included in the +1.0+ git branch, and specifications will include or not include those extensions at build time based on options passed to the Makefile. See +doc/specs/vulkan/README.html+ and the ``Layers and Extensions'' section of the ``Vulkan Documentation and Extensions'' document for more information on this change. * Register and publish new extensions in the single-branch form: ** +VK_NV_external_memory_capabilities+ ** +VK_NV_external_memory+ ** +VK_NV_external_memory_win32+ ** +VK_NV_win32_keyed_mutex+ Github Issues: * Clarify description of GetInstanceProcAddr and GetDeviceProcAddr (public issue 212). * Add SPIR-V <<textures-operation-validation, instruction validation>> for single-sampled images (public issue 316). * Fix spelling of ``tesselation'' in a few places and note it as an exception to the American spelling rules convention (public issue 327). * Fix Makefile to create output directory for ``styleguide'' target (public issue 329). * Fix numerous minor issues with incorrectly tags on enumerant names and table titles (public issue 330). * Generate specversion.txt date in UTC time and RFC 2822 format (public issue 335). * Convert link to the SPIR-V Specification for flink:VkShaderModuleCreateInfo into an internal link to the normative reference (public issue 336). * Add ename:VK_ERROR_OUT_OF_MEMORY error code to flink:vkCreateDebugReportCallbackEXT (public issue 337). Internal Issues: * Update style guide regarding use of code:NULL and dname:VK_NULL_HANDLE (internal issue 393). * Change the definition of latexmath:[$q$] in the <<textures-image-level-selection,texture image level selection>> section to be the index of the maximum defined level for the view, not the number of levels in the view (internal issue 406). * Allow developers to override dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE with their own binary-compatible definition (internal issue 439). * Fix +vk_platform.h+ conditional logic causing compile failure with some Android compilers (internal issue 441). * Implement the single-branch model as described above (internal issue 461). Other Issues:
121 lines
4.7 KiB
Markdown
121 lines
4.7 KiB
Markdown
Vulkan API Documentation Project
|
|
================================
|
|
|
|
This repository contains formal documentation of the Vulkan API. This
|
|
includes the main API Specification, the reference (man) pages, the XML API
|
|
Registry, and related tools and scripts.
|
|
|
|
Single-Branch Model
|
|
-------------------
|
|
|
|
As of the 1.0.25 release, we have switch to a new 'single-branch' model in
|
|
which all extensions are included in the source of the 1.0 branch of the
|
|
Specification, and can be configured in or out of the build using Makefile
|
|
options.
|
|
|
|
The single-branch model seems to be working for all the spec builds,
|
|
although there are probably a few issues we haven't caught yet. The ref page
|
|
build needs some additional work, as genRef.py is creating reference pages
|
|
for all interfaces, not just those for the API and extensions being built,
|
|
and we'll get to that within a week or two. The validation scripts also need
|
|
to be tweaked further for the single-branch model.
|
|
|
|
Repository Structure
|
|
--------------------
|
|
|
|
```
|
|
README.md This file
|
|
ChangeLog.txt Change log summary
|
|
doc/specs/ Main documentation tree
|
|
vulkan/ Vulkan specification
|
|
appendices/ Appendices - one file each
|
|
chapters/ Chapters - one file each
|
|
config/ asciidoc configuration
|
|
images/ Images (figures, diagrams, icons)
|
|
man/ Reference (manual) pages for API, mostly extracted from the spec source
|
|
misc/ Related specifications (GL_KHR_vulkan_glsl)
|
|
src/spec/ XML API Registry (vk.xml) and related scripts
|
|
src/vulkan/ Vulkan headers, generated from the Registry
|
|
```
|
|
|
|
Building the Specification and Reference Pages
|
|
----------------------------------------------
|
|
|
|
To build the documents, you need to install, at a minimum:
|
|
|
|
* GNU-compatible make
|
|
* asciidoc (http://www.methods.co.nz/asciidoc/)
|
|
|
|
On some systems/build targets you may also need:
|
|
|
|
* dblatex
|
|
* source-highlight
|
|
|
|
These tools are known to work on several varieties of Linux, MacOS X, and
|
|
Cygwin running under Microsoft Windows.
|
|
|
|
There are several make targets in doc/specs/vulkan :
|
|
|
|
* make xhtml - Build one large HTML specification document.
|
|
* make pdf - Build one large PDF specification document.
|
|
* make chunked - Build an HTML document broken into one file per chapter.
|
|
* make manhtml - Make HTML API reference (all man pages as one big file).
|
|
* make manpdf - Make a one-giant PDF API reference.
|
|
* make manhtmlpages - Make man pages as one-file-per-API.
|
|
* make manpages - Make man pages as nroff Unix-style (real) man pages.
|
|
* make allchecks - Run the validation rules on the specification.
|
|
|
|
The outputs will be written to $(OUTDIR), which defaults to out/ at the root
|
|
of the checked-out git repository.
|
|
|
|
To build PDF outputs (make pdf, make manpdf), you need
|
|
dblatex and a LaTeX processor. The PDF builds are
|
|
currently configured to use asciidoc to go from asciidoc markdown to docbook, and
|
|
then run the result through dblatex to go from there to LaTeX and then
|
|
through your LaTeX processor to PDF.
|
|
|
|
Spec Validation
|
|
---------------
|
|
|
|
There are a couple of validation tools which look for inconsistencies and
|
|
missing material between the specification and ref pages, and the canonical
|
|
description of the API in vk.xml :
|
|
|
|
* checkinc
|
|
* checklinks
|
|
* allchecks - both checkinc and checklinks
|
|
|
|
They are necessarily heuristic since they're dealing with lots of
|
|
hand-written material. To use them you'll also need to install:
|
|
|
|
* python3
|
|
|
|
The '''checkinc''' target uses Unix filters to determine which autogenerated
|
|
API include files are used (and not used) in the spec. It generates several
|
|
output files, but the only one you're likely to care about is
|
|
'''actual.only'''. This is a list of the include files which are *not*
|
|
referenced anywhere in the spec, and probably correspond to undocumented
|
|
material in the spec.
|
|
|
|
The '''checklinks''' target validates the various internal tagged links in
|
|
the man pages and spec (e.g. the '''fname:vkFuncBlah''',
|
|
'''sname:VkStructBlah''', etc.) against the canonical description of the API
|
|
in vk.xml . It generates two output files, manErrs.txt and specErrs.txt,
|
|
which report problematic tags and the filenames/lines on which those tags
|
|
were found.
|
|
|
|
|
|
Generating Headers and Related Files
|
|
------------------------------------
|
|
|
|
The header file (src/vulkan/vulkan.h) and many parts of the specification
|
|
and reference page documents are generated from descriptions in the XML API
|
|
Registry (src/spec/vk.xml). The generated files, with the exception
|
|
of vulkan.h, are not checked into the repository. If you change vk.xml, you
|
|
can regenerate the header by going to src/spec and running:
|
|
|
|
* make clobber install
|
|
|
|
The other generated files are built as required via dependencies in
|
|
doc/specs/vulkan/Makefile .
|