Change log for July 22, 2016 Vulkan 1.0.22 spec update:

* Bump API patch number and header version number to 22 for this update.

Github Issues:

  * Translate the subpass self-dependency language into concrete
    validity statements, and added a validity statement about the
    restrictions on layout parameters (public issue 267).
  * Add validity requirement that
    slink:VkAttachmentDescription::pname:finalLayout and
    slink:VkAttachmentReference::pname:layout must not be
    ename:VK_IMAGE_LAYOUT_UNDEFINED or
    ename:VK_IMAGE_LAYOUT_PREINITIALIZED (public issue 268).
  * Clarify that slink:VkSubpassDescription::pname:pResolveAttachments
    layouts are used. Make language consistent with other attachment
    arrays (public issue 270).
  * Changed 64-bit definition for
    dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE to work for x32 platform in
    +vk.xml+ and the resulting +vulkan.h+ (public issue 282).
  * Add missing error return code for
    flink:vkEnumerateInstanceExtensionProperties and
    flink:vkEnumerateDeviceExtensionProperties (public issue 285)
  * Fix several cases of stext::VkStructName.memberName markup to
    stext::VkStructName::pname:memberName, to match other usage in the
    spec, and describe this markup in the style guide (public issue
    286).
  * Modified validity language generation script to avoid redundant
    common ancestor language if covered by generic parent language, and
    used `Both' instead of `Each' when appropriate (public issue 288).

Internal Issues:

  * Add language about behavior of flink:vkAllocateDescriptorSets when
    allocation fails due to fragmentation, a new error
    ename:VK_ERROR_FRAGMENTED_POOL, and a Note explaining the situation
    (internal issue 309).
  * For the features of code:PointSize, code:ClipDistance, and
    code:CullDistance, the SPIR-V capability is required to be declared
    on use (read or write) rather than on decoration (internal issue
    359).
  * Have desktop versions of GLSL respect precision qualification
    (code:mediump and code:lowp) when compiling for Vulkan. These will
    get translated to SPIR-V's code:RelaxedPrecision decoration as they
    do with OpenGL ES versions of GLSL (ESSL). The default precision of
    all types is code:highp when using a desktop version (internal issue
    360).
  * Add validity statement for slink:VkImageCreateInfo specifying that
    multisampled images must be two-dimensional, optimally tiled, and
    with a single mipmap level (internal issue 369).
  * Add validity statements to slink:VkImageViewCreateInfo disallowing
    creation of images or image views with no supported features. Made
    some slink:VkImageViewCreateInfo validity statements more precise
    and consistent. Added a Note to the <<features,features>> chapter
    about formats with no features (internal issue 371).
  * Remove +manpages+ from default build targets. Nroff outputs
    containing imbedded latexmath will not render properly. Fixing this
    is a lot of work for limited use cases (internal issue 401).

Other Commits:

  * Fix flink:vkRenderPassBeginInfo::pname:clearValueCount validity
    statement to be based on attachment indices rather than the number
    of cleared attachments
    (Vulkan-LoaderAndValidationLayers/issues/601).
  * Convert registry documentation from LaTeX to asciidoc source and
    rename from +src/spec/readme.tex+ to +src/spec/registry.txt+.
  * Fix lack of Oxford commas in validity language.
  * Lots of cleanup of generator scripts and Makefiles to move extension
    list for generator into the script arguments instead of the body of
    genvk.py, and express better dependencies between XML, scripts, and
    generated files.
This commit is contained in:
Jon Leech 2016-07-23 03:15:48 -07:00
parent f4c4113d07
commit 1ca0ea1ef0
981 changed files with 4009 additions and 5466 deletions

4
.gitignore vendored
View File

@ -46,6 +46,4 @@ src/spec/diag.txt
.DS_Store
# Auto-generated files
src/spec/hostsynctable
src/spec/validity
src/spec/vulkan-docs
# doc/specs/vulkan/*/timeMarker

View File

@ -1006,3 +1006,78 @@ Other Commits:
APIs.
* Update vk_platform.h to handle 32-bit ARMv8 binaries.
* Various minor cleanups to the Makefile and build process.
-----------------------------------------------------
Change log for July 22, 2016 Vulkan 1.0.22 spec update:
* Bump API patch number and header version number to 22 for this update.
Github Issues:
* Translate the subpass self-dependency language into concrete
validity statements, and added a validity statement about the
restrictions on layout parameters (public issue 267).
* Add validity requirement that
slink:VkAttachmentDescription::pname:finalLayout and
slink:VkAttachmentReference::pname:layout must not be
ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED (public issue 268).
* Clarify that slink:VkSubpassDescription::pname:pResolveAttachments
layouts are used. Make language consistent with other attachment
arrays (public issue 270).
* Changed 64-bit definition for
dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE to work for x32 platform in
+vk.xml+ and the resulting +vulkan.h+ (public issue 282).
* Add missing error return code for
flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties (public issue 285)
* Fix several cases of stext::VkStructName.memberName markup to
stext::VkStructName::pname:memberName, to match other usage in the
spec, and describe this markup in the style guide (public issue
286).
* Modified validity language generation script to avoid redundant
common ancestor language if covered by generic parent language, and
used `Both' instead of `Each' when appropriate (public issue 288).
Internal Issues:
* Add language about behavior of flink:vkAllocateDescriptorSets when
allocation fails due to fragmentation, a new error
ename:VK_ERROR_FRAGMENTED_POOL, and a Note explaining the situation
(internal issue 309).
* For the features of code:PointSize, code:ClipDistance, and
code:CullDistance, the SPIR-V capability is required to be declared
on use (read or write) rather than on decoration (internal issue
359).
* Have desktop versions of GLSL respect precision qualification
(code:mediump and code:lowp) when compiling for Vulkan. These will
get translated to SPIR-V's code:RelaxedPrecision decoration as they
do with OpenGL ES versions of GLSL (ESSL). The default precision of
all types is code:highp when using a desktop version (internal issue
360).
* Add validity statement for slink:VkImageCreateInfo specifying that
multisampled images must be two-dimensional, optimally tiled, and
with a single mipmap level (internal issue 369).
* Add validity statements to slink:VkImageViewCreateInfo disallowing
creation of images or image views with no supported features. Made
some slink:VkImageViewCreateInfo validity statements more precise
and consistent. Added a Note to the <<features,features>> chapter
about formats with no features (internal issue 371).
* Remove +manpages+ from default build targets. Nroff outputs
containing imbedded latexmath will not render properly. Fixing this
is a lot of work for limited use cases (internal issue 401).
Other Commits:
* Fix flink:vkRenderPassBeginInfo::pname:clearValueCount validity
statement to be based on attachment indices rather than the number
of cleared attachments
(Vulkan-LoaderAndValidationLayers/issues/601).
* Convert registry documentation from LaTeX to asciidoc source and
rename from +src/spec/readme.tex+ to +src/spec/registry.txt+.
* Fix lack of Oxford commas in validity language.
* Lots of cleanup of generator scripts and Makefiles to move extension
list for generator into the script arguments instead of the body of
genvk.py, and express better dependencies between XML, scripts, and
generated files.

View File

@ -33,8 +33,8 @@ Status
Version
Last Modified Date: 12-Apr-2016
Revision: 30
Last Modified Date: 20-Jul-2016
Revision: 31
Number
@ -79,6 +79,9 @@ Overview
* subpass inputs
The following features are changed:
* precision qualifiers (mediump and lowp) will be respected for all
versions, not dropped for desktop versions (default precision for
desktop versions is highp for all types)
* gl_FragColor will no longer indicate an implicit broadcast
* arrays of opaque uniforms take only one binding number for
the entire object, not one per array element
@ -374,19 +377,21 @@ Overview
Non-fragment stage:
in/out gl_PerVertex {
in/out gl_PerVertex { // some subset of these members will be used
gl_Position
gl_PointSize
gl_ClipDistance
gl_CullDistance
} (name of block is for debug only)
} // name of block is for debug only
There is at most one input and one output block per stage in SPIR-V.
The subset and order of members will match between stages sharing an
interface.
Mapping of precision qualifiers:
lowp -> RelaxedPrecision, on variable and operation
mediump -> RelaxedPrecision, on variable and operation
lowp -> RelaxedPrecision, on storage variable and operation
mediump -> RelaxedPrecision, on storage variable and operation
highp -> 32-bit, same as int or float
portability tool/mode -> OpQuantizeToF16
@ -560,11 +565,16 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
samplerShadow | a handle for accessing state describing how to
| sample a depth texture with comparison"
Remove "structure member selection" from 4.1.7 and instead add a sentence
"Opaque types cannot be declared or nested in a structure (struct)."
Modify subsection 4.1.3 Integers, for desktop versions of GLSL, to say:
"Highp unsigned integers have exactly 32 bits of precision. Highp
signed integers use 32 bits, including a sign bit, in two's complement
form. Mediump and lowp integers are as defined by the RelaxedPrecision
decoration in SPIR-V."
Add a subsection to 4.1.7 Opaque Types:
"4.1.7.x Texture, *sampler*, and *samplerShadow* Types
@ -598,6 +608,12 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
"Subpass input types are only available in fragment shaders. It is a
compile-time error to use them in any other stage."
Add to section 4.1.7.3 Atomic Counters:
"It is an error to declare an atomic type with a different precision or
to specify the default precision for an atomic type to be lowp or
mediump."
Change section 4.3.3 Constant Expressions:
Add a new very first sentence to this section:
@ -870,6 +886,50 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
"However, when push_constant is declared, the default layout of the
buffer will be std430. There is no method to globally set this default."
Remove the following preamble from section 4.7, which exists for desktop
versions, but not ES versions. Removal:
"Precision qualifiers are added for code portability with OpenGL ES, not
for functionality. They have the same syntax as in OpenGL ES, as
described below, but they have no semantic meaning, which includes no
effect on the precision used to store or operate on variables.
"If an extension adds in the same semantics and functionality in the
OpenGL ES 2.0 specification for precision qualifiers, then the extension
is allowed to reuse the keywords below for that purpose.
"For the purposes of determining if an output from one shader stage
matches an input of the next stage, the precision qualifier need not
match."
Add:
"For interface matching, uniform variables and uniform and buffer block
members must have the same precision qualification. For matching *out*
variables or block members to *in* variables and block members, the
precision qualification does not have to match.
"Global variables declared in different compilation units linked into the
same shader stage must be declared with the same precision qualification."
More generally, all versions will follow OpenGL ES semantic rules for
precision qualifiers.
Section 4.7.2 Precision Qualifiers (desktop only)
Replace the table saying "none" for all precisions with this statement:
"Mediump and lowp floating-point values have the precision defined by
the RelaxedPrecision decoration in SPIR-V."
Section 4.7.4 Default Precision Qualifiers:
For desktop versions, replace the last three paragraphs that state the
default precisions with the following instead:
"All stages have default precision qualification of highp for all types
that accept precision qualifiers."
Changes to Chapter 5 of the OpenGL Shading Language Specification
Add a new subsection at the end of section 5.4 "Constructors":
@ -1003,6 +1063,77 @@ Changes to Chapter 7 of the OpenGL Shading Language Specification
Changes to Chapter 8 of the OpenGL Shading Language Specification
Add the following ES language to desktop versions of the specification:
"The operation of a built-in function can have a different precision
qualification than the precision qualification of the resulting value.
These two precision qualifications are established as follows.
"The precision qualification of the operation of a built-in function is
based on the precision qualification of its input arguments and formal
parameters: When a formal parameter specifies a precision qualifier,
that is used, otherwise, the precision qualification of the calling
argument is used. The highest precision of these will be the precision
qualification of the operation of the built-in function. Generally,
this is applied across all arguments to a built-in function, with the
exceptions being:
- bitfieldExtract and bitfieldInsert ignore the 'offset' and 'bits'
arguments.
- interpolateAt* functions only look at the 'interpolant' argument.
"The precision qualification of the result of a built-in function is
determined in one of the following ways:
- For the texture sampling, image load, and image store functions,
the precision of the return type matches the precision of the
sampler type:
uniform lowp sampler2D sampler;
highp vec2 coord;
...
lowp vec4 col = texture (sampler, coord); // texture() returns lowp
Otherwise:
- For prototypes that do not specify a resulting precision qualifier,
the precision will be the same as the precision of the operation.
(As defined earlier.)
- For prototypes that do specify a resulting precision qualifier,
the specified precision qualifier is the precision qualification of
the result."
Add precision qualifiers to the following in desktop versions:
genIType floatBitsToInt (highp genFType value)
genUType floatBitsToUint(highp genFType value)
genFType intBitsToFloat (highp genIType value)
genFType uintBitsToFloat(highp genUType value)
genFType frexp(highp genFType x, out highp genIType exp)
genFType ldexp(highp genFType x, in highp genIType exp)
highp uint packSnorm2x16(vec2 v)
vec2 unpackSnorm2x16(highp uint p)
highp uint packUnorm2x16(vec2 v)
vec2 unpackUnorm2x16(highp uint p)
vec2 unpackHalf2x16(highp uint v)
vec4 unpackUnorm4x8(highp uint v)
vec4 unpackSnorm4x8(highp uint v)
genIType bitfieldReverse(highp genIType value)
genUType bitfieldReverse(highp genUType value)
genIType findMSB(highp genIType value)
genIType findMSB(highp genUType value)
genUType uaddCarry(highp genUType x, highp genUType y,
out lowp genUType carry)
genUType usubBorrow(highp genUType x, highp genUType y,
out lowp genUType borrow)
void umulExtended(highp genUType x, highp genUType y,
out highp genUType msb, out highp genUType lsb)
void imulExtended(highp genIType x, highp genIType y,
out highp genIType msb, out highp genIType lsb)
Add a section
"8.X Subpass Functions
@ -1155,6 +1286,7 @@ Revision History
Rev. Date Author Changes
---- ----------- ------- --------------------------------------------
31 20-Jul-2016 JohnK Have desktop versions respect mediump/lowp
30 12-Apr-2016 JohnK Restrict spec-const operations to non-float
29 5-Apr-2016 JohnK Clarify disallowance of spec-const arrays in
initializers

View File

@ -6,12 +6,15 @@
# Default targets:
# - XHTML, XHTML chunked, and PDF specs ('allspecs')
# - HTML single-document reference pages ('manhtml' and 'manpdf')
# - HTML and nroff separate reference pages ('manpages' and 'manhtmlpages')
# - HTML separate reference pages ('manpages' and 'manhtmlpages')
# - Validator scripts ('allchecks')
#
# The 'html' target is deprecated but still supported, for now. It uses
# a different toolchain than XHTML/PDF outputs, isn't quite compatible,
# and will not be published, but is faster to generate for quick tests.
#
# Other targets:
# - Nroff (Unix 'man' format) separate reference pages ('manpages').
all: alldocs allchecks
@ -19,42 +22,46 @@ alldocs: allspecs allman
allspecs: xhtml chunked pdf styleguide
allman: manhtml manpdf manpages manhtmlpages
allman: manhtml manpdf manhtmlpages
allchecks: checkinc checklinks
# Note that the := assignments below are immediate, not deferred, and
# are therefore order-dependent in the Makefile
QUIET?=@
QUIET ?= @
PYTHON ?= python3
ASCIIDOC ?= asciidoc.py
A2X ?= a2x.py
DBLATEX ?= dblatex
A2X ?= a2x.py
DBLATEX ?= dblatex
XSLTPROC ?= xsltproc
# DBLATEXPREFIX can be overriden by setting it as an environment variable,
# if not installed in the standard location on your distribution
DBLATEXPREFIX ?= /etc/asciidoc/dblatex
RM=rm -f
RMRF=rm -rf
MKDIR=mkdir -p
CP=cp
ECHO:=echo
RM = rm -f
RMRF = rm -rf
MKDIR = mkdir -p
CP = cp
ECHO = echo
# Target directories for output files
# HTMLDIR - 'html' target
# XHTMLDIR - 'xhtml' target
# CHUNKDIR - 'chunked' target
# PDFDIR - 'pdf' target
# CHECKDIR - 'allchecks' target
OUTDIR := ../../../out/1.0
HTMLDIR := $(OUTDIR)/html
XHTMLDIR := $(OUTDIR)/xhtml
PDFDIR := $(OUTDIR)/pdf
CHECKDIR := $(OUTDIR)/checks
STYLEXHTMLDIR := $(OUTDIR)/style
# STYLEXHTMLDIR - 'styleguide' target
OUTDIR := ../../../out/1.0
HTMLDIR := $(OUTDIR)/html
XHTMLDIR := $(OUTDIR)/xhtml
CHUNKDIR := $(OUTDIR)/chunked
PDFDIR := $(OUTDIR)/pdf
CHECKDIR := $(OUTDIR)/checks
# Images used in the API spec
IMAGEPATH :=images
ICONPATH :=$(IMAGEPATH)/icons
PDFXSL :=config/vkspec-dblatex.xsl
PDFSTY :=config/vkspec-dblatex.sty
PYTHON ?= python3
ICONPATH :=$(IMAGEPATH)/icons
PDFXSL :=config/vkspec-dblatex.xsl
PDFSTY :=config/vkspec-dblatex.sty
# Set VERBOSE to -v to see what asciidoc is doing.
# Set KEEP to -d to retain intermediate dblatex files
@ -67,7 +74,7 @@ KEEP =
# ATTRIBOPTS sets the api revision and enables MathJax generation
# CONFIG Vulkan-specific Asciidoc macros. File used depends on target.
# ADOCOPTS options for asciidoc->HTML output
# ADOCPDFOPTS options for asciidoc->PDF output via dblatex (not using a2x)
# ADOCDBOPTS options for asciidoc->XHTML or PDF output via docbook (not using a2x)
# A2XOPTS options for a2x->{HTML,PDF} output
XMLLINT = --no-xmllint
NOTEOPTS = -a editing-notes -a implementation-guide
@ -75,17 +82,26 @@ ATTRIBOPTS = -a apirevision="$(SPECREVISION)" -a mathjax
CONFIG = config/vkspec.conf
ADOCOPTS = $(ATTRIBOPTS) $(NOTEOPTS) -f config/mathjax-asciidoc.conf \
-f $(CONFIG) $(VERBOSE)
ADOCPDFOPTS= $(ATTRIBOPTS) $(NOTEOPTS) -f config/mathjax-docbook.conf \
ADOCDBOPTS = $(ATTRIBOPTS) $(NOTEOPTS) -f config/mathjax-docbook.conf \
-f $(CONFIG) $(VERBOSE)
A2XOPTS = $(ATTRIBOPTS) $(NOTEOPTS) \
--asciidoc-opts="-f config/mathjax-docbook.conf -f $(CONFIG)" \
--xsltproc-opts="--param generate.consistent.ids 1" \
$(XMLLINT) $(VERBOSE) --icons
# All the options except the first are taken from a2x
XSLTOPTS = \
--param generate.consistent.ids 1 \
--stringparam callout.graphics 1 \
--stringparam navig.graphics 1 \
--stringparam admon.textlabel 0 \
--stringparam admon.graphics 1
# XSL customizing Asciibook XSL to pass through equations and add
# MathJax. This varies depending on target type.
XHTMLXSL = config/docbook-xsl/xhtml.xsl
CHUNKEDXSL = config/docbook-xsl/chunked.xsl
XHTMLXSL = config/docbook-xsl/xhtml.xsl
CHUNKXSL = config/docbook-xsl/chunked.xsl
MANPAGEXSL = config/docbook-xsl/manpage.xsl
# dblatex options passed two ways, directly to dblatex and via a2x.
DBLATEXOPTS := $(KEEP) -V -T db2latex -I. -I images -I images/icons -s $(DBLATEXPREFIX)/asciidoc-dblatex.sty
@ -94,15 +110,16 @@ A2XDBLATEXOPTS := --dblatex-opts='$(DBLATEXOPTS)'
# Misc. files to clean up (see 'checkinc' target below)
DIRT = $(SPECVERSION)
.PHONY: directories $(MANHTMLDIR) $(MANPAGEDIR)
.PHONY: directories
# Images and icons that are used in or referenced by targets.
# For some targets they must be copied to output directories.
ICONFILES := $(wildcard $(ICONPATH)/*.png)
PNGFILES := $(ICONFILES) $(wildcard $(IMAGEPATH)/*.png)
# Don't use vulkantexture0.svg as a source SVG file, PNG is available
SVGFILES := $(filter-out $(IMAGEPATH)/vulkantexture0.svg,$(wildcard $(IMAGEPATH)/*.svg))
PDFFILES := $(SVGFILES:.svg=.pdf)
# Misc. directories and files that need to be copied into output directory
WEBIMAGES := $(SVGFILES:%=$(HTMLDIR)/%) $(PNGFILES:%=$(HTMLDIR)/%)
# File suffix for image targets for HTML and PDF Builds - Asciidoc {svgtype} attribute
SVGTYPEHTML := svg
SVGTYPEPDF := pdf
@ -111,58 +128,72 @@ TOPDOC := vkspec.txt
# Files making up sections of the API spec. The wildcard expression
# should work in extension branches to pull in those files as well.
CHAPTERS := $(wildcard chapters/[A-Za-z]*.txt appendices/[A-Za-z]*.txt chapters/*/[A-Za-z]*.txt appendices/*/[A-Za-z]*.txt)
INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpointers/*.txt validity/structs/*.txt validity/protos/*.txt)
GENINCLUDE = $(wildcard api/*/[A-Za-z]*.txt validity/*/[A-Za-z]*.txt hostsynctable/*.txt)
GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker
# All non-format-specific dependencies
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
COMMONDOCS = $(CHAPTERS) $(GENINCLUDE) $(GENDEPENDS)
# A generated included file with the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0.21
SPECREVISION = 1.0.22
SPECREMARK =
# Spec targets
# There is some complexity to try and avoid short virtual targets like 'html'
# causing specs to *always* be regenerated.
html: $(HTMLDIR)/vkspec.html $(TOPDOC) $(COMMONDOCS) $(WEBIMAGES)
html: $(HTMLDIR)/vkspec.html $(TOPDOC) $(COMMONDOCS)
$(HTMLDIR)/vkspec.html: $(CONFIG) $(SPECVERSION) $(TOPDOC) $(COMMONDOCS) $(WEBIMAGES)
$(QUIET)if test ! -d $(HTMLDIR) ; then $(MKDIR) $(HTMLDIR) ; fi
$(HTMLDIR)/vkspec.html: $(CONFIG) $(SPECVERSION) $(TOPDOC) $(COMMONDOCS)
$(QUIET)$(MKDIR) $(HTMLDIR)/images/icons
$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) \
-o $(HTMLDIR)/vkspec.html -a svgpdf=$(SVGTYPEHTML) $(TOPDOC)
# Copy resource files in explicitly
$(QUIET)$(CP) $(SVGFILES) $(PNGFILES) $(HTMLDIR)/images
$(QUIET)$(CP) $(ICONFILES) $(HTMLDIR)/images/icons
xhtml: $(XHTMLDIR)/vkspec.html $(TOPDOC) $(COMMONDOCS)
$(XHTMLDIR)/vkspec.html: $(CONFIG) $(SPECVERSION) $(TOPDOC) $(COMMONDOCS)
$(QUIET)if test ! -d $(XHTMLDIR) ; then $(MKDIR) $(XHTMLDIR) ; fi
$(QUIET)$(A2X) $(A2XOPTS) -f xhtml $(TOPDOC) \
--xsl-file=$(XHTMLXSL) \
-a toc2 -a toclevels=2 --destination-dir=$(XHTMLDIR) \
-a svgpdf=$(SVGTYPEHTML)
$(QUIET)$(MKDIR) $(XHTMLDIR)/images/icons $(XHTMLDIR)/config
$(QUIET)$(ASCIIDOC) --backend docbook $(ADOCDBOPTS) \
-a a2x-format=xhtml -a svgpdf=$(SVGTYPEHTML) \
-o $(XHTMLDIR)/vkspec.xml $(TOPDOC)
$(QUIET)$(XSLTPROC) $(XSLTOPTS) -o $@ $(XHTMLXSL) \
$(XHTMLDIR)/vkspec.xml
# Copy resource files in explicitly
$(QUIET)$(CP) config/vkspec-xhtml.css $(XHTMLDIR)/config/
$(QUIET)$(CP) $(SVGFILES) $(PNGFILES) $(XHTMLDIR)/images
$(QUIET)$(CP) $(ICONFILES) $(XHTMLDIR)/images/icons
$(QUIET)$(RM) $(XHTMLDIR)/vkspec.xml
chunked: $(OUTDIR)/vkspec.chunked/index.html $(TOPDOC) $(COMMONDOCS)
chunked: $(CHUNKDIR)/index.html $(TOPDOC) $(COMMONDOCS)
$(OUTDIR)/vkspec.chunked/index.html: $(CONFIG) $(SPECVERSION) $(TOPDOC) $(COMMONDOCS)
$(QUIET)if test ! -d $(OUTDIR)/chunked ; then $(MKDIR) $(OUTDIR) ; fi
$(QUIET)$(A2X) $(A2XOPTS) -f chunked $(TOPDOC) \
--xsl-file=$(CHUNKEDXSL) \
-a toc2 -a toclevels=2 --destination-dir=$(OUTDIR) \
-a svgpdf=$(SVGTYPEHTML)
$(CHUNKDIR)/index.html: $(CONFIG) $(SPECVERSION) $(TOPDOC) $(COMMONDOCS)
$(QUIET)$(MKDIR) $(CHUNKDIR)/images/icons $(CHUNKDIR)/config
$(QUIET)$(ASCIIDOC) --backend docbook $(ADOCDBOPTS) \
-a a2x-format=chunked -a svgpdf=$(SVGTYPEHTML) \
-o $(CHUNKDIR)/vkspec.xml $(TOPDOC)
$(QUIET)$(XSLTPROC) $(XSLTOPTS) \
--stringparam base.dir $(CHUNKDIR)/ \
-o $@ $(CHUNKXSL) $(CHUNKDIR)/vkspec.xml
# Copy resource files in explicitly
$(QUIET)$(CP) config/vkspec-xhtml.css $(CHUNKDIR)/config/
$(QUIET)$(CP) $(SVGFILES) $(PNGFILES) $(CHUNKDIR)/images
$(QUIET)$(CP) $(ICONFILES) $(CHUNKDIR)/images/icons
$(QUIET)$(RM) $(CHUNKDIR)/vkspec.xml
pdf: $(PDFDIR)/vkspec.pdf
$(PDFDIR)/vkspec.pdf: $(PDFXSL) $(PDFSTY) $(PDFDIR)/vkspec.xml
$(PDFDIR)/vkspec.pdf: $(CONFIG) $(SPECVERSION) $(TOPDOC) $(COMMONDOCS) $(PDFFILES)
$(QUIET)$(MKDIR) $(PDFDIR)
$(QUIET)$(ASCIIDOC) --backend docbook $(ADOCDBOPTS) \
-a a2x-format=pdf -a svgpdf=pdf \
-o $(PDFDIR)/vkspec.xml $(TOPDOC)
$(QUIET)$(DBLATEX) -b pdftex $(DBLATEXOPTS) \
-p "$(DBLATEXPREFIX)/asciidoc-dblatex.xsl" \
-p $(PDFXSL) -s $(PDFSTY) \
$(PDFDIR)/vkspec.xml -O $(PDFDIR)
$(PDFDIR)/vkspec.xml: $(CONFIG) $(SPECVERSION) $(TOPDOC) $(COMMONDOCS) $(PDFDIR) $(PDFFILES)
$(QUIET)$(ASCIIDOC) --backend docbook $(ADOCPDFOPTS) \
-a a2x-format=pdf -a svgpdf=pdf \
--out-file $(PDFDIR)/vkspec.xml $(TOPDOC)
$(PDFDIR):
$(QUIET)if test ! -d $(PDFDIR) ; then $(MKDIR) $(PDFDIR) ; fi
-o $@ $(PDFDIR)/vkspec.xml
$(QUIET)$(RM) $(PDFDIR)/vkspec.xml
# Generate Asciidoc attributes for spec version / date
GITHEAD := ../../../.git/logs/HEAD
@ -192,36 +223,30 @@ STYLEFILES = $(wildcard style/[A-Za-z]*.txt)
styleguide: $(OUTDIR)/styleguide.html
$(OUTDIR)/styleguide.html: $(CONFIG) $(SPECVERSION) $(STYLESRC) $(STYLEFILES)
$(OUTDIR)/styleguide.html: $(CONFIG) $(SPECVERSION) $(STYLESRC) $(STYLEFILES) $(GENINCLUDE) $(GENDEPENDS)
$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) \
-o $@ -a svgpdf=$(SVGTYPEHTML) \
$(STYLESRC)
clean: clean_html clean_pdf clean_chunked clean_checks clean_dirt clean_man
clean_man:
$(RM) $(MANHTML)
$(RMRF) $(MANHTMLDIR)
$(RM) $(MANPAGES)
$(RMRF) $(MANPAGEDIR)
clean: clean_html clean_pdf clean_man clean_checks clean_generated clean_dirt
clean_html:
$(QUIET)$(RMRF) $(HTMLDIR) $(XHTMLDIR) $(STYLEXHTMLDIR)
$(QUIET)$(RMRF) $(HTMLDIR) $(XHTMLDIR) $(CHUNKDIR)
$(QUIET)$(RM) $(OUTDIR)/apispec.html $(OUTDIR)/styleguide.html
clean_pdf:
$(QUIET)$(RM) \
$(PDFDIR)/vkspec.pdf \
$(PDFDIR)/vkspec.xml \
$(OUTDIR)/apispec.pdf \
$(OUTDIR)/apispec.xml
$(QUIET)$(RM) $(PDFDIR)/vkspec.pdf $(OUTDIR)/apispec.pdf
clean_chunked:
$(QUIET)$(RMRF) $(OUTDIR)/vkspec.chunked
clean_man:
$(QUIET)$(RMRF) $(MANHTMLDIR)
$(QUIET)$(RMRF) $(MANPAGEDIR)
clean_checks:
$(QUIET)$(RMRF) $(CHECKDIR)
clean_generated:
$(QUIET)$(RMRF) api/* hostsynctable/* validity/* vkapi.py
clean_dirt:
$(QUIET)$(RM) $(DIRT)
@ -238,18 +263,7 @@ WSISOURCES := $(wildcard $(MANDIR)/*KHR.txt)
EXTSOURCES := $(wildcard $(MANDIR)/*EXT.txt)
CORESOURCES := $(filter-out $(WSISOURCES) $(EXTSOURCES) $(MANDIR)/vkman.css,$(wildcard $(MANDIR)/[Vv][Kk]* $(MANDIR)/PFN*txt))
MANSOURCES := $(CORESOURCES) $(WSISOURCES) $(EXTSOURCES)
MANCOPYRIGHT:= $(MANDIR)/khronoscopyright.txt $(MANDIR)/footer.txt
MANPAGEDIR := $(OUTDIR)/man/$(MANSECTION)
MANPAGES := $(MANSOURCES:$(MANDIR)/%.txt=$(MANPAGEDIR)/%.$(MANSECTION))
MANHTMLDIR := $(OUTDIR)/man/html
MANHTML := $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
manpagesall: manpages manhtmlpages
manpages: $(MANPAGEDIR) $(MANPAGES)
manhtmlpages: $(MANHTMLDIR) $(MANHTML)
# Automatic generation of ref pages. Needs to have a proper dependency
# causing the man page sources to be generated by running genRef (once),
@ -260,56 +274,62 @@ man/apispec.txt: $(CHAPTERS) genRef.py reflib.py vkapi.py
# These dependencies don't take into account include directives
$(MANPAGEDIR)/%.$(MANSECTION): $(MANDIR)/%.$(MANSECTION)
$(QUIET)mv $< $@
# These targets are Unix 'man' nroff source, and are essentially useless
# since the ref pages contain both LaTeX math equations and images.
$(MANDIR)/%.$(MANSECTION): CONFIG=config/manpages.conf
MANPAGEDIR := $(OUTDIR)/man/$(MANSECTION)
MANPAGES := $(MANSOURCES:$(MANDIR)/%.txt=$(MANPAGEDIR)/%.$(MANSECTION))
$(MANDIR)/%.$(MANSECTION): $(MANDIR)/%.txt $(MANCOPYRIGHT) config/manpages.conf
$(QUIET)$(ECHO) Building $@
$(QUIET)$(A2X) -d manpage -f manpage --asciidoc-opts "-f config/manpages.conf" $(A2XOPTS) $<
manpages: $(MANPAGES)
$(MANPAGEDIR)/%.$(MANSECTION): CONFIG=config/manpages.conf
$(MANPAGEDIR)/%.$(MANSECTION): $(MANDIR)/%.txt $(MANCOPYRIGHT) config/manpages.conf $(GENINCLUDE) $(GENDEPENDS)
$(QUIET)$(MKDIR) $(MANPAGEDIR)
$(QUIET)$(ASCIIDOC) --backend docbook $(ADOCDBOPTS) --doctype manpage \
-a a2x-format=manpage -a svgpdf=$(SVGTYPEHTML) \
-o $@.xml $<
$(QUIET)$(XSLTPROC) $(XSLTOPTS) -o $@ $(MANPAGEXSL) $@.xml
$(QUIET)$(RM) $@.xml
# These targets are HTML ref pages
MANHTMLDIR := $(OUTDIR)/man/html
MANHTML := $(MANSOURCES:$(MANDIR)/%.txt=$(MANHTMLDIR)/%.html)
manhtmlpages: $(MANHTML)
$(MANHTMLDIR)/%.html: CONFIG=config/manpages.conf
$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) config/manpages.conf
$(QUIET)$(ECHO) Building $@
$(MANHTMLDIR)/%.html: $(MANDIR)/%.txt $(MANCOPYRIGHT) config/manpages.conf $(GENINCLUDE) $(GENDEPENDS)
$(QUIET)$(MKDIR) $(MANHTMLDIR)
$(QUIET)$(ASCIIDOC) -b html5 -d manpage $(ADOCOPTS) \
-a themedir=$(CURDIR)/config -a theme=vkman \
-o $@ -a svgpdf=$(SVGTYPEHTML) $<
$(MANHTMLDIR):
$(QUIET)$(MKDIR) $@
$(MANPAGEDIR):
$(QUIET)$(MKDIR) $@
# Man page targets for HTML and PDF single-file documents
# These targets are HTML and PDF single-file versions of the ref pages
manpdf: $(OUTDIR)/apispec.pdf
manhtml: $(OUTDIR)/apispec.html
$(OUTDIR)/apispec.pdf: $(PDFXSL) $(PDFSTY) $(OUTDIR)/apispec.xml
$(OUTDIR)/apispec.pdf: $(CONFIG) $(SPECVERSION) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(PDFXSL) $(PDFSTY) $(GENINCLUDE) $(GENDEPENDS)
$(QUIET)$(MKDIR) $(OUTDIR)
$(QUIET)$(ASCIIDOC) --backend docbook $(ADOCDBOPTS) \
-a a2x-format=pdf -a svgpdf=pdf \
-o $(OUTDIR)/apispec.xml man/apispec.txt
$(QUIET)$(DBLATEX) -b pdftex $(DBLATEXOPTS) \
-p "$(DBLATEXPREFIX)/asciidoc-dblatex.xsl" \
-p $(PDFXSL) -s $(PDFSTY) \
$(OUTDIR)/apispec.xml -O $(OUTDIR)
-o $(OUTDIR) $(OUTDIR)/apispec.xml
$(QUIET)$(RM) $(OUTDIR)/apispec.xml
$(OUTDIR)/apispec.xml: $(CONFIG) $(SPECVERSION) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(PDFXSL) $(PDFSTY)
$(QUIET)$(ASCIIDOC) --backend docbook $(ADOCPDFOPTS) \
-a a2x-format=pdf -a svgpdf=pdf \
-o $@ man/apispec.txt
$(OUTDIR)/apispec.html: $(CONFIG) $(SPECVERSION) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(SVGFILES)
$(QUIET)if test ! -d $(OUTDIR) ; then $(MKDIR) $(OUTDIR) ; fi
$(OUTDIR)/apispec.html: $(CONFIG) $(SPECVERSION) man/apispec.txt $(MANSOURCES) $(MANCOPYRIGHT) $(SVGFILES) $(GENINCLUDE) $(GENDEPENDS)
$(QUIET)$(MKDIR) $(OUTDIR)
$(QUIET)$(ASCIIDOC) -b html5 -d book $(ADOCOPTS) \
-a themedir=$(CURDIR)/config -a theme=vkspec-xhtml \
-o $@ -a svgpdf=$(SVGTYPEHTML) man/apispec.txt
$(HTMLDIR)/images/%: images/%
$(QUIET)$(MKDIR) $(@D)
$(QUIET)$(CP) $< $@
# Automated (though heuristic) checks of consistency in the spec and
# ref page sources
@ -328,7 +348,7 @@ INSPEC = $(CHECKDIR)/inspec
NOTINSPEC = $(CHECKDIR)/notInSpec.txt
checkinc:
$(QUIET)if test ! -d $(CHECKDIR) ; then $(MKDIR) $(CHECKDIR) ; fi
$(QUIET)ls $(INCLUDES) | sort > $(ACTUAL)
$(QUIET)ls $(GENINCLUDE) | sort > $(ACTUAL)
$(QUIET)cat $(CHAPTERS) | \
egrep '^include::\.\./' | tr -d '[]' | \
sed -e 's#^include::\.\./##g' | sort > $(INCFILES)
@ -347,13 +367,54 @@ checkinc:
# Generates files in $(CHECKDIR):
# specErrs.txt - errors & warnings in API spec
# manErrs.txt - errors & warnings in man pages
checklinks:
checklinks: vkapi.py
$(QUIET)if test ! -d $(CHECKDIR) ; then $(MKDIR) $(CHECKDIR) ; fi
$(QUIET)echo "Generating link checks for spec (specErrs.txt) and man pages (manErrs.txt)"
$(QUIET)$(PYTHON) checkLinks.py -follow man/[Vv][Kk]*.txt > $(CHECKDIR)/manErrs.txt
$(QUIET)$(PYTHON) checkLinks.py -follow $(CHAPTERS) > $(CHECKDIR)/specErrs.txt
# Targets generated from the XML and registry processing scripts
# vkapi.py - Python encoding of the registry
# api/timeMarker - proxy for 'apiincludes' - API include files under api/*/*.txt
# hostsynctable/timeMarker - proxy for host sync table include files under hostsynctable/*.txt
# validity/timeMarker - proxy for API validity include files under validity/*/*.txt
#
# EXTLIST specifies the extensions that will be included in these
# targets. This will differ in different extension branches, although
# all will include the VK_KHR_sampler_mirror_clamp_to_edge extension.
# Each extension should be specified as a separate -extension option.
EXTLIST = -extension VK_KHR_sampler_mirror_clamp_to_edge
REGISTRY = ../../../src/spec
VKXML = $(REGISTRY)/vk.xml
GENVK = $(REGISTRY)/genvk.py
GENVKOPTS= $(EXTLIST) -registry $(VKXML)
vkapi.py: $(VKXML) $(GENVK)
$(PYTHON) $(GENVK) $(GENVKOPTS) -o . vkapi.py
apiinc: api/timeMarker
api/timeMarker: $(VKXML) $(GENVK)
$(QUIET)$(MKDIR) api
$(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o api apiinc
hostsyncinc: hostsynctable/timeMarker
hostsynctable/timeMarker: $(VKXML) $(GENVK)
$(QUIET)$(MKDIR) hostsynctable
$(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o hostsynctable hostsyncinc
validinc: validity/timeMarker
validity/timeMarker: $(VKXML) $(GENVK)
$(QUIET)$(MKDIR) validity
$(QUIET)$(PYTHON) $(GENVK) $(GENVKOPTS) -o validity validinc
# Debugging aid - generate all files from registry XML
generated: vkapi.py api/timeMarker hostsynctable/timeMarker validity/timeMarker
# README file with build instructions
README.html: $(CONFIG) $(SPECVERSION) README.txt
README.html: $(CONFIG) $(SPECVERSION) README.adoc
$(QUIET)$(ASCIIDOC) -b html5 $(ADOCOPTS) \
-o $@ README.txt
-o $@ README.adoc

View File

@ -36,7 +36,7 @@ non-Windows environments.
or equivalently:
$ make xhtml chunked pdf manhtml manpdf manpages manhtmlpages checkinc checklinks
$ make xhtml chunked pdf manhtml manpdf manhtmlpages checkinc checklinks
This will generate a variety of targets under +$(OUTDIR)+ (by default,
+../../../out/1.0+). The checked-in file +$(OUTDIR)/index.html+ links to
@ -50,7 +50,6 @@ them all, or they can individually be found as follows:
** +manhtml+ - Single-file HTML in +$(OUTDIR)/apispec.html+
** +manpdf+ - Single-file PDF in +$(OUTDIR)/apispec.html+
** +manhtmlpages+ - File-per-entry-point HTML in +$(OUTDIR)/man/html/*+
** +manpages+ - File-per-entry-point nroff source in +$(OUTDIR)/man/3/*+
* Validator output:
** +checkinc+ - List of commands, structs, etc. missing from the API spec in
+$(OUTDIR)/checks/notInSpec.txt+
@ -71,6 +70,12 @@ the standard +/etc/asciidoc/dblatex+ directory, set the environment variable
+asciidoc-dblatex.xsl+ and +asciidoc-dblatex.sty+ files installed with
asciidoc).
The +manpages+ target is deprecated, as the resulting Unix man pages have
issues with content like embedded latexmath: constructs, but is still
available for third parties wishing to generate them:
* +manpages+ - File-per-entry-point nroff source in +$(OUTDIR)/man/3/*+
[[building-test]]
=== Alternate and Test Builds ===

View File

@ -797,35 +797,6 @@ asciidoc.install();
<div class="sect1">
<h2 id="intro">Introduction</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="http://www.khronos.org/">http://www.khronos.org/</a></p></div>
<div class="paragraph"><p><code><a href="#www.khronos.org">www.khronos.org</a></code></p></div>
<div class="paragraph"><p><code><a href="#out/apispec.pdf">out/apispec.pdf</a></code></p></div>
<div class="ulist"><ul>
<li>
<p>
link\:{path}/apispec.html#vkWaitForFences
</p>
<div class="ulist"><ul>
<li>
<p>
link:../vulkan/out/apispec.html#vkWaitForFences
</p>
</li>
</ul></div>
</li>
<li>
<p>
link\:{path}/apispec.html#vkWaitForFences\[Relpath\]
</p>
<div class="ulist"><ul>
<li>
<p>
<code><a href="#../vulkan/out/apispec.html#vkWaitForFences">../vulkan/out/apispec.html#vkWaitForFences</a></code>
</p>
</li>
</ul></div>
</li>
</ul></div>
<div class="paragraph"><p>This README describes important stuff for getting the Vulkan API
specification and reference pages building properly.</p></div>
</div>
@ -848,7 +819,7 @@ non-Windows environments.</p></div>
<div class="paragraph"><p>or equivalently:</p></div>
<div class="literalblock">
<div class="content monospaced">
<pre>$ make xhtml chunked pdf manhtml manpdf manpages manhtmlpages checkinc checklinks</pre>
<pre>$ make xhtml chunked pdf manhtml manpdf manhtmlpages checkinc checklinks</pre>
</div></div>
<div class="paragraph"><p>This will generate a variety of targets under <span class="monospaced">$(OUTDIR)</span> (by default,
<span class="monospaced">../../../out/1.0</span>). The checked-in file <span class="monospaced">$(OUTDIR)/index.html</span> links to
@ -896,11 +867,6 @@ Reference pages:
<span class="monospaced">manhtmlpages</span> - File-per-entry-point HTML in <span class="monospaced">$(OUTDIR)/man/html/*</span>
</p>
</li>
<li>
<p>
<span class="monospaced">manpages</span> - File-per-entry-point nroff source in <span class="monospaced">$(OUTDIR)/man/3/*</span>
</p>
</li>
</ul></div>
</li>
<li>
@ -936,6 +902,16 @@ the standard <span class="monospaced">/etc/asciidoc/dblatex</span> directory, se
<span class="monospaced">DBLATEXPREFIX</span> to the path to that directory (the one containing the
<span class="monospaced">asciidoc-dblatex.xsl</span> and <span class="monospaced">asciidoc-dblatex.sty</span> files installed with
asciidoc).</p></div>
<div class="paragraph"><p>The <span class="monospaced">manpages</span> target is deprecated, as the resulting Unix man pages have
issues with content like embedded latexmath: constructs, but is still
available for third parties wishing to generate them:</p></div>
<div class="ulist"><ul>
<li>
<p>
<span class="monospaced">manpages</span> - File-per-entry-point nroff source in <span class="monospaced">$(OUTDIR)/man/3/*</span>
</p>
</li>
</ul></div>
<div class="sect2">
<h3 id="building-test">Alternate and Test Builds</h3>
<div class="paragraph"><p>If you are just testing asciidoc formatting, macros, stylesheets, etc.,
@ -1310,7 +1286,7 @@ Devel/git (2.5.1-1) - Needed for updating specversion.txt
<div id="footer">
<div id="footer-text">
Last updated
2016-07-14 03:33:23 PDT
2016-07-21 01:40:18 PDT
</div>
</div>
</body>

View File

@ -1,3 +1,3 @@
See README.html (asciidoc source in README.txt) for instructions and
See README.html (asciidoc source in README.adoc) for instructions and
notes about building the spec. Unfortunately gitlab won't render HTML or
Asciidoc in its web view page, so this README.md is of limited utility.

View File

@ -8,7 +8,7 @@ ifdef::doctype-manpage[]
endif::doctype-manpage[]
------------------------------------------------------------------------------
#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
#else
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;

View File

@ -8,6 +8,6 @@ ifdef::doctype-manpage[]
endif::doctype-manpage[]
------------------------------------------------------------------------------
// Version of this file
#define VK_HEADER_VERSION 21
#define VK_HEADER_VERSION 22
------------------------------------------------------------------------------

View File

@ -25,5 +25,6 @@ typedef enum VkResult {
VK_ERROR_INCOMPATIBLE_DRIVER = -9,
VK_ERROR_TOO_MANY_OBJECTS = -10,
VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
VK_ERROR_FRAGMENTED_POOL = -12,
} VkResult;
------------------------------------------------------------------------------

Some files were not shown because too many files have changed in this diff Show More