Change log for May 13, 2016 Vulkan 1.0.13 spec update:

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

Github Issues:

  * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the
    VK_KHR_surface extension (public issue 174).
  * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command
    buffers (public issue 182).
  * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was
    used instead of code:wl_display (public issue 193).
  * Replaced {apiname} with ``Vulkan'' in XML validity statements (public
    issue 199).
  * Fix dead links for WSI handle types (public issue 200).
	*** N.b. this needs to be done in WSI branches as well ***
  * Use "signaled" instead of "signalled" spelling everywhere (public issue
    201).
	*** N.b. this needs to be done in WSI branches as well ***
  * Move readme.pdf target directory for XML schema documentation into the
    target generation directory, instead of leaving it checked into the spec
    source tree (public issue 203).
	*** N.b. need to add generated PDF to registry index/1.0 page
  * Fix duplicate 'which which' typo in description of
    elink:VkCommandPoolResetFlagBits (public issue 204).
  * Move the <<Programmable Primitive Shading>> section up one level, out of
    the <<drawing-primitive-topologies,Primitive Topologies>> section
    (public issue 209).

Internal Issues:

  * Clarify in the <<pipelines-cache,Pipeline Cache>> section that
    implementations should not manage the size of pipeline cache (internal
    issue 192).
  * Deprecate the concept of device layers and associated commands (internal
    issue 255).
  * Remove ename:VK_INCOMPLETE from the list of possible result codes of
    flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314).
  * Add missing std140/std430 rule: the base alignment of a member following
    a structure is a multiple of the structure's base alignment (internal
    issue 321).
  * Fixes naming of the single elink:VkColorSpaceKHR enum from
    ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to
    ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the
    VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the
    typename (space and color are two words, not one) (internal issue 322).
  * Make it clear that code:LocalInvocationID should only be applied to an
    input variable and normalize the language describing
    code:LocalInvocationID to the language for other compute shader
    variables in the <<interfaces-builtin-variables,Built-in Variables>>
    section, and add normative language (internal issue 323).
  * Clarify in the <<fundamentals-returncodes,Return Codes>> section that
    the result pointer may be modified for specific commands, even if a
    runtime error is returned (internal issue 324).
This commit is contained in:
Jon Leech 2016-05-13 17:01:59 -07:00
parent 648049f625
commit 2656f45933
25 changed files with 311 additions and 5437 deletions

View File

@ -580,3 +580,63 @@ Other Commits:
* Replace the {apiname} macro with hardcoded "Vulkan", now that we've * Replace the {apiname} macro with hardcoded "Vulkan", now that we've
committed to that name. committed to that name.
* Add the VK_AMD_rasterization_order extension to vk.xml. * Add the VK_AMD_rasterization_order extension to vk.xml.
-----------------------------------------------------
Change log for May 13, 2016 Vulkan 1.0.13 spec update:
* Bump API patch number and header version number to 13 for this
update.
Github Issues:
* Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the
VK_KHR_surface extension (public issue 174).
* Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command
buffers (public issue 182).
* Fix typos in VK_KHR_wayland_surface extension where code:wl_device was
used instead of code:wl_display (public issue 193).
* Replaced {apiname} with ``Vulkan'' in XML validity statements (public
issue 199).
* Fix dead links for WSI handle types (public issue 200).
* Use "signaled" instead of "signalled" spelling everywhere (public issue
201).
* Move readme.pdf target directory for XML schema documentation into the
target generation directory, instead of leaving it checked into the spec
source tree (public issue 203).
* Fix duplicate 'which which' typo in description of
elink:VkCommandPoolResetFlagBits (public issue 204).
* Move the <<Programmable Primitive Shading>> section up one level, out of
the <<drawing-primitive-topologies,Primitive Topologies>> section
(public issue 209).
Internal Issues:
* Clarify in the <<pipelines-cache,Pipeline Cache>> section that
implementations should not manage the size of pipeline cache (internal
issue 192).
* Deprecate the concept of device layers and associated commands (internal
issue 255).
* Remove ename:VK_INCOMPLETE from the list of possible result codes of
flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314).
* Add missing std140/std430 rule: the base alignment of a member following
a structure is a multiple of the structure's base alignment (internal
issue 321).
* Fixes naming of the single elink:VkColorSpaceKHR enum from
ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to
ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the
VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the
typename (space and color are two words, not one) (internal issue 322).
* Make it clear that code:LocalInvocationID should only be applied to an
input variable and normalize the language describing
code:LocalInvocationID to the language for other compute shader
variables in the <<interfaces-builtin-variables,Built-in Variables>>
section, and add normative language (internal issue 323).
* Clarify in the <<fundamentals-returncodes,Return Codes>> section that
the result pointer may be modified for specific commands, even if a
runtime error is returned (internal issue 324).

View File

@ -43,7 +43,7 @@ ECHO:=echo
# XHTMLDIR - 'xhtml' target # XHTMLDIR - 'xhtml' target
# PDFDIR - 'pdf' target # PDFDIR - 'pdf' target
# CHECKDIR - 'allchecks' target # CHECKDIR - 'allchecks' target
OUTDIR :=../../../out/1.0 OUTDIR := ../../../out/1.0
HTMLDIR := $(OUTDIR)/html HTMLDIR := $(OUTDIR)/html
XHTMLDIR := $(OUTDIR)/xhtml XHTMLDIR := $(OUTDIR)/xhtml
PDFDIR := $(OUTDIR)/pdf PDFDIR := $(OUTDIR)/pdf
@ -125,7 +125,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
COMMONDOCS := $(CHAPTERS) $(INCLUDES) COMMONDOCS := $(CHAPTERS) $(INCLUDES)
# A generated included file with the spec version, date, and git commit # A generated included file with the spec version, date, and git commit
SPECVERSION = specversion.txt SPECVERSION = specversion.txt
SPECREVISION = 1.0.12 SPECREVISION = 1.0.13
SPECREMARK = SPECREMARK =
# Spec targets # Spec targets

View File

@ -245,7 +245,7 @@ Explicitly-Enabled Layer::
list in flink:vkCreateInstance or flink:vkCreateDevice. list in flink:vkCreateInstance or flink:vkCreateDevice.
Event:: Event::
A synchronization primitive that is signalled when execution of previous A synchronization primitive that is signaled when execution of previous
commands complete through a specified set of pipeline stages. Events can commands complete through a specified set of pipeline stages. Events can
be waited on by the device and polled by the host. Represented by a be waited on by the device and polled by the host. Represented by a
sname:VkEvent object. sname:VkEvent object.

View File

@ -33,8 +33,7 @@ git checkout master
echo "**** AUTOGENERATING HEADERS AND SPEC INCLUDE FILES ****" echo "**** AUTOGENERATING HEADERS AND SPEC INCLUDE FILES ****"
cd $xml cd $xml
make clobber make OUTDIR=$outdir clobber full_install
make full_install
echo "**** CLEANING SPEC ****" echo "**** CLEANING SPEC ****"
cd $spec cd $spec

View File

@ -136,7 +136,7 @@ command buffers allocated from the command pool back to the command pool.
All command buffers that have been allocated from the command pool are put All command buffers that have been allocated from the command pool are put
in the initial state. in the initial state.
pname:flags is a bitmask controlling the operation. Bits which which can: be pname:flags is a bitmask controlling the operation. Bits which can: be
set include: set include:
include::../enums/VkCommandPoolResetFlagBits.txt[] include::../enums/VkCommandPoolResetFlagBits.txt[]
@ -336,7 +336,8 @@ fname:vkCmdExecuteCommands) until the final time that primary buffer's
submission to a queue completes. If, after the primary buffer completes, the submission to a queue completes. If, after the primary buffer completes, the
secondary command buffer is recorded to execute on a different primary secondary command buffer is recorded to execute on a different primary
buffer, the first primary buffer mustnot: be resubmitted until after it is buffer, the first primary buffer mustnot: be resubmitted until after it is
reset with flink:vkResetCommandBuffer. reset with flink:vkResetCommandBuffer unless the secondary command buffer
was recorded with ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT.
If ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is not set on a If ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is not set on a
secondary command buffer, that command buffer mustnot: be used more than secondary command buffer, that command buffer mustnot: be used more than
@ -428,7 +429,7 @@ Each call to fname:vkQueueSubmit submits zero or more _batches_ of work to
the queue for execution. pname:submitCount is used to specify the number of the queue for execution. pname:submitCount is used to specify the number of
batches to submit. Each batch includes zero or more semaphores to wait upon, batches to submit. Each batch includes zero or more semaphores to wait upon,
and a corresponding set of stages that will wait for the semaphore to be and a corresponding set of stages that will wait for the semaphore to be
signalled before executing any work, followed by a number of command buffers signaled before executing any work, followed by a number of command buffers
that will be executed, and finally, zero or more semaphores that will be that will be executed, and finally, zero or more semaphores that will be
signaled after command buffer execution completes. Each batch is represented signaled after command buffer execution completes. Each batch is represented
as an instance of the slink:VkSubmitInfo structure stored in an array, the as an instance of the slink:VkSubmitInfo structure stored in an array, the

View File

@ -330,11 +330,9 @@ include::../structs/VkDeviceCreateInfo.txt[]
requested to be created along with the logical device. Refer to the requested to be created along with the logical device. Refer to the
<<devsandqueues-queue-creation,Queue Creation>> section below for <<devsandqueues-queue-creation,Queue Creation>> section below for
further details. further details.
* pname:enabledLayerCount is the number of device layers to enable. * pname:enabledLayerCount is deprecated and ignored.
* pname:ppEnabledLayerNames is a pointer to an array of * pname:ppEnabledLayerNames is deprecated and ignored. See
pname:enabledLayerCount null-terminated UTF-8 strings containing the <<extended-functionality-device-layer-deprecation,Device Layer Deprecation>>.
names of layers to enable for the created device. See the
<<extended-functionality-layers,Layers>> section for further details.
* pname:enabledExtensionCount is the number of device extensions to * pname:enabledExtensionCount is the number of device extensions to
enable. enable.
* pname:ppEnabledExtensionNames is a pointer to an array of * pname:ppEnabledExtensionNames is a pointer to an array of

View File

@ -340,7 +340,7 @@ The order of vertices in such a primitive is significant during
<<shaders-fragment,fragment shading>>. <<shaders-fragment,fragment shading>>.
=== Programmable Primitive Shading == Programmable Primitive Shading
Once primitives are assembled, they proceed to the vertex shading stage of Once primitives are assembled, they proceed to the vertex shading stage of
the pipeline. If the draw includes multiple instances, then the set of the pipeline. If the draw includes multiple instances, then the set of

View File

@ -7,17 +7,23 @@
Additional functionality may: be provided by layers or extensions. A layer Additional functionality may: be provided by layers or extensions. A layer
cannot: add or modify Vulkan commands, while an extension may: do so. cannot: add or modify Vulkan commands, while an extension may: do so.
There are two kinds of layers and extensions, instance and device. Instance The set of layers to enable is specified when creating an instance, and those
layers and extensions are general purpose and do not depend on a specific layers are able to intercept any Vulkan command dispatched to that instance
device. Device layers and extensions operate on specific devices, and or any of its child objects.
require a valid sname:VkDevice to be used. Instance extensions usually
affect the operation of the API as a whole, whereas device layers and
extensions tend to be hardware-specific. Examples of these might be:
* Whole API validation is an example of a good instance layer. Extensions can operate at either the instance or device scope. Enabled instance
extensions are able to affect the operation of the instance and any of its
child objects, while device extensions may: only be available on a subset of
physical devices, must be individually enabled per-device, and only affect the
operation of the devices where they are enabled.
Examples of these might be:
* Whole API validation is an example of a layer.
* Debug capabilities might make a good instance extension. * Debug capabilities might make a good instance extension.
* A layer that provides hardware-specific performance telemetry and * A layer that provides hardware-specific performance telemetry and
analysis could be a device layer. analysis could be a layer that is only active for devices created from
compatible physical devices.
* Functions to allow an application to use additional hardware features * Functions to allow an application to use additional hardware features
beyond the core would be a good candidate for a device extension. beyond the core would be a good candidate for a device extension.
@ -32,7 +38,7 @@ allowed ranges. Instead, a validation layer would do those checks and flag
issues. This avoids a performance penalty during production use of the issues. This avoids a performance penalty during production use of the
application because those layers would not be enabled in production. application because those layers would not be enabled in production.
To query the available instance layers, call: To query the available layers, call:
include::../protos/vkEnumerateInstanceLayerProperties.txt[] include::../protos/vkEnumerateInstanceLayerProperties.txt[]
@ -43,38 +49,16 @@ include::../protos/vkEnumerateInstanceLayerProperties.txt[]
include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[] include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[]
To enable a instance layer, the name of the layer should be added to the If pname:pProperties is `NULL`, then the number of layer properties available
pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must:
a sname:VkInstance. point to a variable set by the user to the number of elements in the
pname:pProperties array, and on return the variable is overwritten with the
To query the layers available to a given physical device, call: number of structures actually written to pname:pProperties. If
pname:pPropertyCount is less than the number of layer properties available, at
include::../protos/vkEnumerateDeviceLayerProperties.txt[] most pname:pPropertyCount structures will be written. If pname:pPropertyCount
is smaller than the number of layers available, ename:VK_INCOMPLETE will be
* pname:physicalDevice is the physical device that will be queried. returned instead of ename:VK_SUCCESS, to indicate that not all the available
* pname:pPropertyCount is a pointer to an integer related to the number of layer properties were returned.
layer properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of
slink:VkLayerProperties structures.
include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[]
To enable a device layer, the name of the layer should be added to the
pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo when creating
a sname:VkDevice.
For both flink:vkEnumerateInstanceLayerProperties and
flink:vkEnumerateDeviceLayerProperties, if pname:pProperties is `NULL`, then
the number of layer properties available is returned in pname:pPropertyCount.
Otherwise, pname:pPropertyCount must: point to a variable set by the user to
the number of elements in the pname:pProperties array, and on return the
variable is overwritten with the number of structures actually written to
pname:pProperties. If pname:pPropertyCount is less than the
number of layer properties available, at most pname:pPropertyCount
structures will be written. If pname:pPropertyCount is smaller than the
number of layers available, ename:VK_INCOMPLETE will be returned instead of
ename:VK_SUCCESS, to indicate that not all the available layer properties
were returned.
The sname:VkLayerProperties structure is defined as: The sname:VkLayerProperties structure is defined as:
@ -82,9 +66,8 @@ include::../structs/VkLayerProperties.txt[]
* pname:layerName is a null-terminated UTF-8 string specifying the name of * pname:layerName is a null-terminated UTF-8 string specifying the name of
the layer. Use this name in the pname:ppEnabledLayerNames array passed the layer. Use this name in the pname:ppEnabledLayerNames array passed
in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo in the slink:VkInstanceCreateInfo structure to enable this layer for an
structures passed to flink:vkCreateInstance and flink:vkCreateDevice, instance.
respectively, to enable this layer for an instance or device.
* pname:specVersion is the Vulkan version the layer was written to, * pname:specVersion is the Vulkan version the layer was written to,
encoded as described in the <<fundamentals-versionnum,API Version encoded as described in the <<fundamentals-versionnum,API Version
Numbers and Semantics>> section. Numbers and Semantics>> section.
@ -95,16 +78,82 @@ include::../structs/VkLayerProperties.txt[]
include::../validity/structs/VkLayerProperties.txt[] include::../validity/structs/VkLayerProperties.txt[]
To enable a layer, the name of the layer should be added to the
pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating
a sname:VkInstance.
Loader implementations may: provide mechanisms outside the Vulkan API for Loader implementations may: provide mechanisms outside the Vulkan API for
enabling specific layers. Layers enabled through such a mechanism are enabling specific layers. Layers enabled through such a mechanism are
_implicitly enabled_, while layers enabled by including the layer name in _implicitly enabled_, while layers enabled by including the layer name in
the pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo are the pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo are
_explicitly enabled_. Except where otherwise specified, implicitly enabled _explicitly enabled_. Except where otherwise specified, implicitly enabled
and explicitly enabled layers differ only in the way they are enabled. and explicitly enabled layers differ only in the way they are enabled.
Explicitly enabling a layer that is implicitly enabled has no additional Explicitly enabling a layer that is implicitly enabled has no additional
effect. effect.
[[extended-functionality-device-layer-deprecation]]
=== Device Layer Deprecation
Previous versions of this specification distinguished between instance and
device layers. Instance layers were only able to intercept commands that
operate on sname:VkInstance and sname:VkPhysicalDevice, except they were not
able to intercept flink:vkCreateDevice. Device layers were enabled for
individual devices when they were created, and could only intercept commands
operating on that device or its child objects.
Device-only layers are now deprecated, and this specification no longer
distinguishes between instance and device layers. Layers are enabled during
instance creation, and are able to intercept all commands operating on that
instance or any of its child objects. At the time of deprecation there were no
known device-only layers and no compelling reason to create one.
In order to maintain compatibility with implementations released prior to
device-layer deprecation, applications should: still enumerate and enable
device layers. The behavior of fname:vkEnumerateDeviceLayerProperties and
valid usage of the pname:ppEnabledLayerNames member of sname:VkDeviceCreateInfo
maximizes compatibility with applications written to work with the previous
requirements.
Device layers can: be enumerated by calling:
include::../protos/vkEnumerateDeviceLayerProperties.txt[]
* pname:pPropertyCount is a pointer to an integer related to the number of
layer properties available or queried.
* pname:pProperties is either `NULL` or a pointer to an array of
slink:VkLayerProperties structures.
include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[]
If pname:pProperties is `NULL`, then the number of layer properties available
is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must:
point to a variable set by the user to the number of elements in the
pname:pProperties array, and on return the variable is overwritten with the
number of structures actually written to pname:pProperties. If
pname:pPropertyCount is less than the number of layer properties available, at
most pname:pPropertyCount structures will be written. If pname:pPropertyCount
is smaller than the number of layers available, ename:VK_INCOMPLETE will be
returned instead of ename:VK_SUCCESS, to indicate that not all the available
layer properties were returned.
The list of layers enumerated by fname:vkEnumerateDeviceLayerProperties must:
be exactly the sequence of layers enabled for the instance. The members of
sname:VkLayerProperties for each enumerated layer must: be the same as the
properties when the layer was enumerated by
fname:vkEnumerateInstanceLayerProperties.
The pname:ppEnabledLayerNames and pname:enabledLayerCount members of
sname:VkDeviceCreateInfo are deprecated and their values must: be ignored by
implementations. However, for compatibility, only an empty list of layers or a
list that exactly matches the sequence enabled at instance creation time are
valid, and validation layers should: issue diagnostics for other cases.
Regardless of the enabled layer list provided in sname:VkDeviceCreateInfo, the
sequence of layers active for a device will be exactly the sequence of layers
enabled when the parent instance was created.
[[extended-functionality-extensions]] [[extended-functionality-extensions]]
== Extensions == Extensions
@ -123,7 +172,7 @@ To query the available instance extensions, call:
include::../protos/vkEnumerateInstanceExtensionProperties.txt[] include::../protos/vkEnumerateInstanceExtensionProperties.txt[]
* pname:pLayerName is either `NULL` or a pointer to a null-terminated * pname:pLayerName is either `NULL` or a pointer to a null-terminated
UTF-8 string naming the instance layer to retrieve extensions from. UTF-8 string naming the layer to retrieve extensions from.
* pname:pPropertyCount is a pointer to an integer related to the number of * pname:pPropertyCount is a pointer to an integer related to the number of
extension properties available or queried, as described below. extension properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of * pname:pProperties is either `NULL` or a pointer to an array of
@ -136,7 +185,7 @@ implementation or by implicitly enabled layers are returned.
When pname:pLayerName is the name of a layer, the instance extensions When pname:pLayerName is the name of a layer, the instance extensions
provided by that layer are returned. provided by that layer are returned.
To enable a instance extension, the name of the extension should be added to To enable an instance extension, the name of the extension should be added to
the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when
creating a sname:VkInstance. creating a sname:VkInstance.
@ -146,7 +195,7 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[]
* pname:physicalDevice is the physical device that will be queried. * pname:physicalDevice is the physical device that will be queried.
* pname:pLayerName is either `NULL` or a pointer to a null-terminated * pname:pLayerName is either `NULL` or a pointer to a null-terminated
UTF-8 string naming the device layer to retrieve extensions from. UTF-8 string naming the layer to retrieve extensions from.
* pname:pPropertyCount is a pointer to an integer related to the number of * pname:pPropertyCount is a pointer to an integer related to the number of
extension properties available or queried, as described below. extension properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of * pname:pProperties is either `NULL` or a pointer to an array of
@ -159,10 +208,6 @@ implementation or by implicitly enabled layers are returned.
When pname:pLayerName is the name of a layer, the device extensions When pname:pLayerName is the name of a layer, the device extensions
provided by that layer are returned. provided by that layer are returned.
To enable a device layer, the name of the layer should be added to the
pname:ppEnabledExtensionNames member of slink:VkDeviceCreateInfo when
creating a sname:VkDevice.
For both flink:vkEnumerateInstanceExtensionProperties and For both flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`, flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`,
then the number of extensions properties available is returned in then the number of extensions properties available is returned in

View File

@ -691,7 +691,7 @@ include::../enums/VkResult.txt[]
A requested format is not supported on this device. A requested format is not supported on this device.
If a command returns a run time error, it will leave any result pointers If a command returns a run time error, it will leave any result pointers
unmodified. unmodified, unless other behavior is explicitly defined in the specification.
Out of memory errors do not damage any currently existing Vulkan objects. Out of memory errors do not damage any currently existing Vulkan objects.
Objects that have already been successfully created can: still be used by Objects that have already been successfully created can: still be used by

View File

@ -643,6 +643,11 @@ out according to the following rules.
+ +
* Any code:ArrayStride or code:MatrixStride decoration must: be an integer * Any code:ArrayStride or code:MatrixStride decoration must: be an integer
multiple of the base alignment of the array or matrix from above. multiple of the base alignment of the array or matrix from above.
+
* The code:Offset Decoration of a member immediately following a structure or
an array must: be greater than or equal to the next multiple of the base
alignment of that structure or array.
[NOTE] [NOTE]
.Note .Note
@ -742,7 +747,7 @@ The z component of code:FragCoord is the interpolated depth value of the
primitive, and the w component is the interpolated primitive, and the w component is the interpolated
latexmath:[$\frac{1}{w}$]. latexmath:[$\frac{1}{w}$].
+ +
The code:FragCoord decoration is only supported in fragment shaders. The The code:FragCoord decoration must: be used only within fragment shaders. The
code:Centroid interpolation decoration is ignored on code:FragCoord. code:Centroid interpolation decoration is ignored on code:FragCoord.
+ +
code:FragCoord must: be declared as a four-component vector of 32-bit code:FragCoord must: be declared as a four-component vector of 32-bit
@ -760,7 +765,7 @@ is an execution path through the shader that does not set code:FragDepth,
then the fragment's depth value is undefined for executions of the shader then the fragment's depth value is undefined for executions of the shader
that take that path. that take that path.
+ +
The code:FragDepth decoration is only supported in fragment shaders. The code:FragDepth decoration must: be used only within fragment shaders.
+ +
code:FragDepth must: be declared as a scalar 32-bit floating-point value. code:FragDepth must: be declared as a scalar 32-bit floating-point value.
@ -797,7 +802,8 @@ workgroup. The value in this variable is equal to the index of the local
workgroup multiplied by the size of the local workgroup plus workgroup multiplied by the size of the local workgroup plus
code:LocalInvocationID. code:LocalInvocationID.
+ +
The code:GlobalInvocationID decoration is only supported in compute shaders. The code:GlobalInvocationID decoration must: be used only within compute
shaders.
+ +
code:GlobalInvocationID must: be declared as a three-component vector of code:GlobalInvocationID must: be declared as a three-component vector of
32-bit integers. 32-bit integers.
@ -810,7 +816,8 @@ the shader that is produced to satisfy internal requirements such as the
generation of derivatives. generation of derivatives.
+ +
-- --
The code:HelperInvocation decoration is only supported in fragment shaders. The code:HelperInvocation decoration must: be used only within fragment
shaders.
code:HelperInvocation must: be declared as a scalar 32-bit integer. code:HelperInvocation must: be declared as a scalar 32-bit integer.
@ -877,26 +884,34 @@ vertices of a given primitive. When used in a fragment shader, an input
variable decorated with code:Layer contains the layer index of the primitive variable decorated with code:Layer contains the layer index of the primitive
that the fragment invocation belongs to. that the fragment invocation belongs to.
+ +
The code:Layer decoration is only supported in geometry and fragment The code:Layer decoration must: be used only within geometry and fragment
shaders. shaders.
+ +
code:Layer must: be declared as a scalar 32-bit integer. code:Layer must: be declared as a scalar 32-bit integer.
code:LocalInvocationID:: code:LocalInvocationID::
This variable contains the location of the current compute shader invocation The code:LocalInvocationID decoration can: be applied to a code:uvec3 input
within the local workgroup. The range of possible values for each component variable in a compute shader, in which case it will contain the location of the
of LocalInvocationID range from zero through the size of the workgroup in that current compute shader invocation within the local workgroup. The possible
dimension minus one. If the size of the workgroup in a particular dimension is values for each component of code:LocalInvocationID range from zero through to
one, then LocalInvocationID in that dimension will be zero. That is, if the the size of the workgroup in that dimension minus one.
workgroup is effectively two-dimensional, then code:LocalInvocationID.z will +
be zero, and if the workgroup is one-dimensional, then both The code:LocalInvocationID decoration must: be used only within compute
shaders.
+
code:LocalInvocationID must: be declared as a three-component vector of 32-bit
integers.
[NOTE]
.Note
====
If the size of the workgroup in a particular dimension is one, then the
code:LocalInvocationID in that dimension will be zero. If the workgroup is
effectively two-dimensional, then code:LocalInvocationID.z will be zero.
If the workgroup is effectively one-dimensional, then both
code:LocalInvocationID.y and code:LocalInvocationID.z will be zero. code:LocalInvocationID.y and code:LocalInvocationID.z will be zero.
+ ====
The code:LocalInvocationID decoration is only supported in compute shaders.
+
code:LocalInvocationID must: be declared as a three-component vector of
32-bit integers.
code:NumWorkGroups:: code:NumWorkGroups::
@ -907,7 +922,7 @@ to. It reflects the values passed to a call to flink:vkCmdDispatch or
through the structure consumed by the execution of through the structure consumed by the execution of
flink:vkCmdDispatchIndirect. flink:vkCmdDispatchIndirect.
+ +
The code:NumWorkGroups decoration is only supported in compute shaders. The code:NumWorkGroups decoration must: be used only within compute shaders.
+ +
code:NumWorkGroups must: be declared as a three-component vector of 32-bit code:NumWorkGroups must: be declared as a three-component vector of 32-bit
integers. integers.
@ -923,7 +938,7 @@ If a specialization constant or a constant is decorated with the
code:WorkgroupSize decoration, this must: take precedence over any execution code:WorkgroupSize decoration, this must: take precedence over any execution
mode set for code:LocalSize. mode set for code:LocalSize.
+ +
The code:WorkgroupSize decoration is only supported in compute shaders. The code:WorkgroupSize decoration must: be used only within compute shaders.
+ +
code:WorkgroupSize must: be declared as a three-component vector of 32-bit code:WorkgroupSize must: be declared as a three-component vector of 32-bit
integers. integers.
@ -936,8 +951,8 @@ vertices in the input patch being processed by the shader. A single
tessellation control or evaluation shader can: read patches of differing tessellation control or evaluation shader can: read patches of differing
sizes, so the code:PatchVertices variable may: differ between patches. sizes, so the code:PatchVertices variable may: differ between patches.
+ +
The code:PatchVertices decoration is only supported in tessellation control The code:PatchVertices decoration must: be used only within tessellation
and evaluation shaders. control and evaluation shaders.
+ +
code:PatchVertices must: be declared as scalar 32-bit integer. code:PatchVertices must: be declared as scalar 32-bit integer.
@ -951,7 +966,7 @@ Point Rasterization>>. If the primitive the fragment shader invocation
belongs to is not a point, then code:PointCoord is undefined. belongs to is not a point, then code:PointCoord is undefined.
+ +
-- --
The code:PointCoord decoration is only supported in fragment shaders. The code:PointCoord decoration must: be used only within fragment shaders.
code:PointCoord must: be declared as two-component vector of 32-bit code:PointCoord must: be declared as two-component vector of 32-bit
floating-point values. floating-point values.
@ -1076,7 +1091,7 @@ shader entry point's interface does not include an output variable decorated
with code:SampleMask, the sample mask has no effect on the processing of a with code:SampleMask, the sample mask has no effect on the processing of a
fragment. fragment.
+ +
The code:SampleMask decoration is only supported in fragment shaders. The code:SampleMask decoration must: be used only within fragment shaders.
+ +
code:SampleMask must: be declared as an array of 32-bit integers. code:SampleMask must: be declared as an array of 32-bit integers.
@ -1089,7 +1104,7 @@ fragment shader entry point's interface includes an input variable decorated
with code:SamplePosition, per-sample shading is enabled for draws that use with code:SamplePosition, per-sample shading is enabled for draws that use
that fragment shader. that fragment shader.
+ +
The code:SamplePosition decoration is only supported in fragment shaders. The code:SamplePosition decoration must: be used only within fragment shaders.
+ +
code:SamplePosition must: be declared as a two-component vector of code:SamplePosition must: be declared as a two-component vector of
floating-point values. floating-point values.
@ -1103,7 +1118,7 @@ and w are in the range latexmath:[$[0,1\]$] and vary linearly across the
primitive being subdivided. For the tessellation modes of code:Quads or primitive being subdivided. For the tessellation modes of code:Quads or
code:IsoLines, the third component is always zero. code:IsoLines, the third component is always zero.
+ +
The code:TessellationCoord decoration is only available to tessellation The code:TessellationCoord decoration must: be used only within tessellation
evaluation shaders. evaluation shaders.
+ +
code:TessellationCoord must: be declared as three-component vector of 32-bit code:TessellationCoord must: be declared as three-component vector of 32-bit
@ -1119,7 +1134,7 @@ tessellation evaluation shaders. When applied to an input variable in a
tessellation evaluation shader, the shader can: read the value written by tessellation evaluation shader, the shader can: read the value written by
the tessellation control shader. the tessellation control shader.
+ +
The code:TessellationLevelOuter decoration is not available outside The code:TessellationLevelOuter decoration must: be used only within
tessellation control and evaluation shaders. tessellation control and evaluation shaders.
+ +
code:TessellationLevelOuter must: be declared as an array of size two, code:TessellationLevelOuter must: be declared as an array of size two,
@ -1135,7 +1150,7 @@ tessellation evaluation shaders. When applied to an input variable in a
tessellation evaluation shader, the shader can: read the value written by tessellation evaluation shader, the shader can: read the value written by
the tessellation control shader. the tessellation control shader.
+ +
The code:TessellationLevelInner decoration is not available outside The code:TessellationLevelInner decoration must: be used only within
tessellation control and evaluation shaders. tessellation control and evaluation shaders.
+ +
code:TessellationLevelInner must: be declared as an array of size four, code:TessellationLevelInner must: be declared as an array of size four,
@ -1156,8 +1171,7 @@ consumed by flink:vkCmdDrawIndexedIndirect.
+ +
code:VertexIndex starts at the same starting value for each instance. code:VertexIndex starts at the same starting value for each instance.
+ +
The code:VertexIndex decoration mustnot: be used in any shader stage other The code:VertexIndex decoration must: be used only within vertex shaders.
than vertex.
+ +
code:VertexIndex must: be declared as a 32-bit integer. code:VertexIndex must: be declared as a 32-bit integer.
@ -1176,8 +1190,8 @@ in a fragment shader, an input variable decorated with code:ViewportIndex
contains the viewport index of the primitive that the fragment invocation contains the viewport index of the primitive that the fragment invocation
belongs to. belongs to.
+ +
The code:ViewportIndex decoration is only supported in geometry and fragment The code:ViewportIndex decoration must: be used only within geometry and
shaders. fragment shaders.
+ +
code:ViewportIndex must: be declared as a 32-bit integer. code:ViewportIndex must: be declared as a 32-bit integer.
@ -1190,7 +1204,7 @@ Each component ranges from zero to the values of the parameters passed into
flink:vkCmdDispatch or read from the sname:VkDispatchIndirectCommand flink:vkCmdDispatch or read from the sname:VkDispatchIndirectCommand
structure read through a call to flink:vkCmdDispatchIndirect. structure read through a call to flink:vkCmdDispatchIndirect.
+ +
The code:WorkGroupID decoration is only supported in compute shaders. The code:WorkGroupID decoration must: be used only within compute shaders.
+ +
code:WorkGroupID must: be declared as a three-component vector of 32-bit code:WorkGroupID must: be declared as a three-component vector of 32-bit
integers. integers.

View File

@ -493,8 +493,9 @@ pipelines is achieved by passing the same pipeline cache object when
creating multiple related pipelines. Reuse across runs of an application is creating multiple related pipelines. Reuse across runs of an application is
achieved by retrieving pipeline cache contents in one run of an application, achieved by retrieving pipeline cache contents in one run of an application,
saving the contents, and using them to preinitialize a pipeline cache on a saving the contents, and using them to preinitialize a pipeline cache on a
subsequent run. The contents and size of the pipeline cache objects are subsequent run. The contents of the pipeline cache objects are
managed by the implementation. Applications can: control the amount of data managed by the implementation. Applications can: manage the host memory
consumed by a pipeline cache object and control the amount of data
retrieved from a pipeline cache object. retrieved from a pipeline cache object.
Pipeline cache objects are created by calling: Pipeline cache objects are created by calling:
@ -511,6 +512,16 @@ include::../protos/vkCreatePipelineCache.txt[]
* pname:pPipelineCache is a pointer to a sname:VkPipelineCache handle in * pname:pPipelineCache is a pointer to a sname:VkPipelineCache handle in
which the resulting pipeline cache object is returned. which the resulting pipeline cache object is returned.
[NOTE]
.Note
====
Applications can: track and manage the total host memory size of a pipeline
cache object using the pname:pAllocator. Applications can: limit the amount
of data retrieved from a pipeline cache object in fname:vkGetPipeineCacheData.
Implementations shouldnot: internally limit the total number of entries added to a
pipeline cache object or the total host memory consumed.
====
include::../validity/protos/vkCreatePipelineCache.txt[] include::../validity/protos/vkCreatePipelineCache.txt[]
The sname:VkPipelineCacheCreateInfo structure is defined as: The sname:VkPipelineCacheCreateInfo structure is defined as:

View File

@ -18,7 +18,9 @@ from datetime import *
# branch = branch or commit or tag name # branch = branch or commit or tag name
# label = textual label to apply # label = textual label to apply
# outdir = directory to generate specs in # outdir = directory to generate specs in
def buildRelease(branch,label,outdir,targets): # xmlTargets = targets to build in src/spec/
# specTargets = targets to build in doc/specs/vulkan/
def buildRelease(branch,label,outdir,xmlTargets,specTargets):
global root, xml, spec global root, xml, spec
print('echo Info: Generating branch=' + branch, print('echo Info: Generating branch=' + branch,
@ -26,10 +28,6 @@ def buildRelease(branch,label,outdir,targets):
'outdir=' + outdir) 'outdir=' + outdir)
print('git checkout', branch) print('git checkout', branch)
print('echo Info: Generating headers and spec include files')
print('cd', xml)
print('make clobber full_install')
print('echo Info: Cleaning spec in', outdir) print('echo Info: Cleaning spec in', outdir)
print('cd', spec) print('cd', spec)
print('rm -rf', print('rm -rf',
@ -40,9 +38,15 @@ def buildRelease(branch,label,outdir,targets):
outdir + '/vkspec.html', outdir + '/vkspec.html',
'specversion.txt') 'specversion.txt')
print('echo Info: Generating headers and spec include files')
print('cd', xml)
print('make OUTDIR=' + outdir, xmlTargets)
print('echo Info: Generating spec') print('echo Info: Generating spec')
print('cd', spec)
print('make specversion.txt') print('make specversion.txt')
print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"', targets) print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"',
specTargets)
print('rm', outdir + '/pdf/vkspec.xml') print('rm', outdir + '/pdf/vkspec.xml')
# Main # Main
@ -68,11 +72,15 @@ wsibranch = '1.0-wsi_extensions'
now = datetime.today().strftime('%Y%m%d') now = datetime.today().strftime('%Y%m%d')
# Generate specs # Generate specs
coretargets='xhtml pdf styleguide manhtml manpdf manhtmlpages' coreXmlTargets='clobber full_install pdf_install'
buildRelease(corebranch, corebranch, outdir + corebranch, coretargets) coreSpecTargets='xhtml pdf styleguide manhtml manpdf manhtmlpages'
buildRelease(corebranch, corebranch, outdir + corebranch,
coreXmlTargets, coreSpecTargets)
wsitargets='xhtml pdf' wsiXmlTargets='clobber full_install'
buildRelease(wsibranch, wsibranch, outdir + wsibranch, wsitargets) wsiSpecTargets='xhtml pdf'
buildRelease(wsibranch, wsibranch, outdir + wsibranch,
wsiXmlTargets, wsiSpecTargets)
print('echo Info: post-generation cleanup') print('echo Info: post-generation cleanup')
@ -80,8 +88,9 @@ print('git checkout ' + corebranch)
print('echo To tag the spec branches, execute these commands:') print('echo To tag the spec branches, execute these commands:')
print('echo git checkout', corebranch) print('echo git checkout', corebranch)
print('echo git tag -a -m \\"Tag core API specification for', now, 'release\\"', 'v1.0-core-' + now) print('echo git tag -a -m \\"Tag core API specification for', now,
'release\\"', 'v1.0-core-' + now)
print('echo git checkout', wsibranch) print('echo git checkout', wsibranch)
print('echo git tag -a -m \\"Tag core+WSI API specification for', now, 'release\\"', 'v1.0-core+wsi-' + now) print('echo git tag -a -m \\"Tag core+WSI API specification for', now,
print('echo git push --tags') 'release\\"', 'v1.0-core+wsi-' + now)

View File

@ -43,13 +43,13 @@ Description
----------- -----------
fname:vkCmdWaitEvents waits for a number of event objects to become fname:vkCmdWaitEvents waits for a number of event objects to become
signalled and inserts a set of memory barriers into the command buffer signaled and inserts a set of memory barriers into the command buffer
specified by pname:commandBuffer. specified by pname:commandBuffer.
fname:vkCmdWaitEvents waits for each of the pname:eventCount event object fname:vkCmdWaitEvents waits for each of the pname:eventCount event object
specified by pname:pEvents to become signalled. The point at which each is specified by pname:pEvents to become signaled. The point at which each is
signalled must have been specified in the command that caused the object to signaled must have been specified in the command that caused the object to
become signalled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must become signaled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must
also have the corresponding bit set in pname:srcStageMask. also have the corresponding bit set in pname:srcStageMask.
The pname:ppMemoryBarriers parameter is a pointer to an array of pname:memoryBarrierCount The pname:ppMemoryBarriers parameter is a pointer to an array of pname:memoryBarrierCount

View File

@ -641,6 +641,16 @@ write that it ``contains one or more bits''. A counter example is that it is oka
to write ``For non-stereoscopic-3D applications, this value is 1.'' to write ``For non-stereoscopic-3D applications, this value is 1.''
=== Use American Spelling Conventions
In case of conflict, use American rather than British spelling
conventions. For example:
*Correct:* color, signaled.
*Incorrect:* colour, signalled.
[[writingstyle-describing]] [[writingstyle-describing]]
== Describing Commands and Parameters == Describing Commands and Parameters
@ -963,6 +973,9 @@ for this structure:
= Revision History = Revision History
* May 1, 2016 - Include feedback from public Github issues 120 and 190. Use
consistent conventions for defining structures. Use American rather than
British spelling conventions.
* March 12, 2016 - Recommend against "the value of". * March 12, 2016 - Recommend against "the value of".
* February 26, 2016 - Replace use of the "maynot{cl}" macro with "may{cl} not". * February 26, 2016 - Replace use of the "maynot{cl}" macro with "may{cl} not".
* February 16, 2016 - Place asciidoc conversion post-release. * February 16, 2016 - Place asciidoc conversion post-release.

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string
* pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value
* If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures
* If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties * If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties
ifndef::doctype-manpage[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::doctype-manpage[] endif::doctype-manpage[]

View File

@ -10,7 +10,7 @@ endif::doctype-manpage[]
* If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string
* pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value
* If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures
* If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties * If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties
ifndef::doctype-manpage[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::doctype-manpage[] endif::doctype-manpage[]

View File

@ -12,7 +12,7 @@ endif::doctype-manpage[]
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle
* The pname:queue must: support sparse binding operations * The pname:queue must: support sparse binding operations
* Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:fence must: be unsignalled * pname:fence must: be unsignaled
* pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue * pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue
ifndef::doctype-manpage[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures * If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle
* Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue
ifndef::doctype-manpage[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************

View File

@ -15,7 +15,7 @@ endif::doctype-manpage[]
* If pname:enabledExtensionCount is not `0`, pname:ppEnabledExtensionNames must: be a pointer to an array of pname:enabledExtensionCount null-terminated strings * If pname:enabledExtensionCount is not `0`, pname:ppEnabledExtensionNames must: be a pointer to an array of pname:enabledExtensionCount null-terminated strings
* If pname:pEnabledFeatures is not `NULL`, pname:pEnabledFeatures must: be a pointer to a valid sname:VkPhysicalDeviceFeatures structure * If pname:pEnabledFeatures is not `NULL`, pname:pEnabledFeatures must: be a pointer to a valid sname:VkPhysicalDeviceFeatures structure
* pname:queueCreateInfoCount must: be greater than `0` * pname:queueCreateInfoCount must: be greater than `0`
* Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties * pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance
* Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties * Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties
* If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension * If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension
* The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos * The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos

View File

@ -15,7 +15,7 @@ endif::doctype-manpage[]
* If pname:commandBufferCount is not `0`, pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount valid sname:VkCommandBuffer handles * If pname:commandBufferCount is not `0`, pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount valid sname:VkCommandBuffer handles
* If pname:signalSemaphoreCount is not `0`, pname:pSignalSemaphores must: be a pointer to an array of pname:signalSemaphoreCount valid sname:VkSemaphore handles * If pname:signalSemaphoreCount is not `0`, pname:pSignalSemaphores must: be a pointer to an array of pname:signalSemaphoreCount valid sname:VkSemaphore handles
* Each of the elements of pname:pWaitSemaphores, the elements of pname:pCommandBuffers and the elements of pname:pSignalSemaphores that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice * Each of the elements of pname:pWaitSemaphores, the elements of pname:pCommandBuffers and the elements of pname:pSignalSemaphores that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
* Any given element of pname:pSignalSemaphores must: currently be unsignalled * Any given element of pname:pSignalSemaphores must: currently be unsignaled
* Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device * Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device
* Any given element of pname:pCommandBuffers must: be in the executable state * Any given element of pname:pCommandBuffers must: be in the executable state
* If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device * If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device

View File

@ -9,9 +9,11 @@
related documents. It is updated by hand periodically by Jon Leech. </p> related documents. It is updated by hand periodically by Jon Leech. </p>
<ul> <ul>
<li> The <a href="1.0/styleguide.html">Vulkan Style Guide</a> is a work <li> The <a href="1.0/styleguide.html">Vulkan Style Guide</a> is a work in
in progress (but significantly complete) document, useful when progress (but significantly complete) document, useful when writing
writing and modifying Specification and reference page language. and modifying Specification and reference page language. </li>
<li> The <a href="1.0/readme.pdf">XML Registry README</a> describes the
schema and some use cases for <tt>vk.xml</tt>. </li>
<li> <b> Core API Specifications </b> <li> <b> Core API Specifications </b>
<ul> <ul>
<li> <a href="1.0/xhtml/vkspec.html">Single document</a> (XHTML from 'a2x') </li> <li> <a href="1.0/xhtml/vkspec.html">Single document</a> (XHTML from 'a2x') </li>
@ -48,13 +50,13 @@
</ul> </ul>
</li> </li>
<li> <b> The following targets are for internal use only and are probably <li> <b> The following targets are for internal use only and are probably
not included in, or if included, not up to date in the sandbox not included in, or if included, not up to date in the sandbox
</b> </li> </b> </li>
<ul> <ul>
<li> Core API <a href="1.0/html/vkspec.html">Single document</a> (HTML from <li> Core API <a href="1.0/html/vkspec.html">Single document</a> (HTML from
'asciibook') </li> 'asciibook') </li>
<li> Core+WSI API <a href="1.0-wsi_extensions/html/vkspec.html">Single <li> Core+WSI API <a href="1.0-wsi_extensions/html/vkspec.html">Single
document</a> (HTML from 'asciibook') </li> document</a> (HTML from 'asciibook') </li>
</ul> </ul>
</li> </li>
</ul> </ul>

View File

@ -19,6 +19,7 @@ PYTHON ?= python3
PYFILES = genheaders.py reg.py PYFILES = genheaders.py reg.py
GENOPTS = GENOPTS =
GENHEADERS = genheaders.py $(GENOPTS) GENHEADERS = genheaders.py $(GENOPTS)
OUTDIR = ../../out/1.0
# Generate all outputs for Vulkan, including headers and (soon) Asciidoc # Generate all outputs for Vulkan, including headers and (soon) Asciidoc
# frameworks. Targets: # frameworks. Targets:
@ -39,7 +40,7 @@ DOCROOT = ../../doc/specs/vulkan
DOCPYSRC = $(DOCROOT)/vkapi.py DOCPYSRC = $(DOCROOT)/vkapi.py
DOCVALIDITY = validity DOCVALIDITY = validity
DOCHOSTSYNCTABLE = hostsynctable DOCHOSTSYNCTABLE = hostsynctable
XMLDOC = readme.pdf XMLDOC = $(OUTDIR)/readme.pdf
# Could add $(XMLDOC) to default, but that requires a LaTeX install. # Could add $(XMLDOC) to default, but that requires a LaTeX install.
# Could regenerate vk.json automatically but the generator script isn't # Could regenerate vk.json automatically but the generator script isn't
@ -50,6 +51,8 @@ default install: $(HEADERS)
full_install: default $(DOCINCLUDES) $(DOCPYSRC) $(DOCVALIDITY) $(DOCHOSTSYNCTABLE) full_install: default $(DOCINCLUDES) $(DOCPYSRC) $(DOCVALIDITY) $(DOCHOSTSYNCTABLE)
pdf_install: $(OUTDIR)/readme.pdf
################################################ ################################################
# Python and XML files on which vulkan.h depends # Python and XML files on which vulkan.h depends
@ -97,12 +100,13 @@ vk.json: tojson.py vk.xml
################################################ ################################################
# Documentation targets # Documentation targets
readme.pdf: readme.tex Makefile $(OUTDIR)/readme.pdf: readme.tex Makefile
touch readme.ind touch readme.ind
pdflatex readme.tex pdflatex readme.tex
pdflatex readme.tex pdflatex readme.tex
makeindex readme.idx makeindex readme.idx
pdflatex readme.tex pdflatex readme.tex
mv readme.pdf $@
################################################ ################################################
@ -128,6 +132,7 @@ clean:
# (installed header & asciidoc includes) # (installed header & asciidoc includes)
clobber: clean clobber: clean
-rm -f $(HEADERS) $(DOCINCLUDES) -rm -f $(HEADERS) $(DOCINCLUDES)
-rm -f $(OUTDIR)/readme.pdf
-rm -f $(DOCROOT)/vkapi.py -rm -f $(DOCROOT)/vkapi.py
-rm -f $(DOCROOT)/structs/*.txt $(DOCROOT)/protos/*.txt -rm -f $(DOCROOT)/structs/*.txt $(DOCROOT)/protos/*.txt
-rm -f $(DOCROOT)/enums/*.txt $(DOCROOT)/flags/*.txt -rm -f $(DOCROOT)/enums/*.txt $(DOCROOT)/flags/*.txt

File diff suppressed because it is too large Load Diff

View File

@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<type category="define">// Vulkan 1.0 version number <type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 --> #define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
<type category="define">// Version of this file <type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 12</type> #define <name>VK_HEADER_VERSION</name> 13</type>
<type category="define"> <type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -505,7 +505,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member len="enabledExtensionCount,null-terminated">const <type>char</type>* const* <name>ppEnabledExtensionNames</name></member> <member len="enabledExtensionCount,null-terminated">const <type>char</type>* const* <name>ppEnabledExtensionNames</name></member>
<member optional="true">const <type>VkPhysicalDeviceFeatures</type>* <name>pEnabledFeatures</name></member> <member optional="true">const <type>VkPhysicalDeviceFeatures</type>* <name>pEnabledFeatures</name></member>
<validity> <validity>
<usage>Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties</usage> <usage>pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance</usage>
<usage>Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties</usage> <usage>Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties</usage>
<usage>If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension</usage> <usage>If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension</usage>
<usage>The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos</usage> <usage>The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos</usage>
@ -1926,7 +1926,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member> <member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member>
<member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member> <member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member>
<validity> <validity>
<usage>Any given element of pname:pSignalSemaphores must: currently be unsignalled</usage> <usage>Any given element of pname:pSignalSemaphores must: currently be unsignaled</usage>
<usage>Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device</usage> <usage>Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device</usage>
<usage>Any given element of pname:pCommandBuffers must: be in the executable state</usage> <usage>Any given element of pname:pCommandBuffers must: be in the executable state</usage>
<usage>If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device</usage> <usage>If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device</usage>
@ -2095,7 +2095,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member optional="true"><type>VkSwapchainKHR</type> <name>oldSwapchain</name></member> <!-- Existing swap chain to replace, if any --> <member optional="true"><type>VkSwapchainKHR</type> <name>oldSwapchain</name></member> <!-- Existing swap chain to replace, if any -->
<validity> <validity>
<usage>pname:surface must: be a surface that is supported by the device as determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR</usage> <usage>pname:surface must: be a surface that is supported by the device as determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR</usage>
<usage>The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-{apiname} graphics API surface</usage> <usage>The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-Vulkan graphics API surface</usage>
<usage>pname:minImageCount must: be greater than or equal to the value returned in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface</usage> <usage>pname:minImageCount must: be greater than or equal to the value returned in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface</usage>
<usage>pname:minImageCount must: be less than or equal to the value returned in the pname:maxImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface if the returned pname:maxImageCount is not zero</usage> <usage>pname:minImageCount must: be less than or equal to the value returned in the pname:maxImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface if the returned pname:maxImageCount is not zero</usage>
<usage>pname:imageFormat and pname:imageColorspace must: match the pname:format and pname:colorSpace members, respectively, of one of the sname:VkSurfaceFormatKHR structures returned by fname:vkGetPhysicalDeviceSurfaceFormatsKHR for the surface</usage> <usage>pname:imageFormat and pname:imageColorspace must: match the pname:format and pname:colorSpace members, respectively, of one of the sname:VkSurfaceFormatKHR structures returned by fname:vkGetPhysicalDeviceSurfaceFormatsKHR for the surface</usage>
@ -2657,7 +2657,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="1" name="VK_NOT_READY" comment="A fence or query has not yet completed"/> <enum value="1" name="VK_NOT_READY" comment="A fence or query has not yet completed"/>
<enum value="2" name="VK_TIMEOUT" comment="A wait operation has not completed in the specified time"/> <enum value="2" name="VK_TIMEOUT" comment="A wait operation has not completed in the specified time"/>
<enum value="3" name="VK_EVENT_SET" comment="An event is signaled"/> <enum value="3" name="VK_EVENT_SET" comment="An event is signaled"/>
<enum value="4" name="VK_EVENT_RESET" comment="An event is unsignalled"/> <enum value="4" name="VK_EVENT_RESET" comment="An event is unsignaled"/>
<enum value="5" name="VK_INCOMPLETE" comment="A return array was too small for the result"/> <enum value="5" name="VK_INCOMPLETE" comment="A return array was too small for the result"/>
<!-- Error codes (negative values) --> <!-- Error codes (negative values) -->
<enum value="-1" name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/> <enum value="-1" name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/>
@ -2894,7 +2894,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="3" name="VK_PRESENT_MODE_FIFO_RELAXED_KHR"/> <enum value="3" name="VK_PRESENT_MODE_FIFO_RELAXED_KHR"/>
</enums> </enums>
<enums name="VkColorSpaceKHR" type="enum"> <enums name="VkColorSpaceKHR" type="enum">
<enum value="0" name="VK_COLORSPACE_SRGB_NONLINEAR_KHR"/> <enum value="0" name="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"/>
</enums> </enums>
<enums name="VkDisplayPlaneAlphaFlagBitsKHR" type="bitmask"> <enums name="VkDisplayPlaneAlphaFlagBitsKHR" type="bitmask">
<enum bitpos="0" name="VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"/> <enum bitpos="0" name="VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"/>
@ -3072,7 +3072,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
<param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param> <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
<validity> <validity>
<usage>If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties</usage> <usage>If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties</usage>
</validity> </validity>
</command> </command>
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY"> <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
@ -3088,7 +3088,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param> <param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
<param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param> <param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
<validity> <validity>
<usage>If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties</usage> <usage>If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties</usage>
</validity> </validity>
</command> </command>
<command> <command>
@ -3109,7 +3109,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param> <param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
<param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
<validity> <validity>
<usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled</usage> <usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled</usage>
<usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage> <usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage>
</validity> </validity>
</command> </command>
@ -3265,7 +3265,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param len="bindInfoCount" externsync="pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param> <param len="bindInfoCount" externsync="pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param>
<param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
<validity> <validity>
<usage>pname:fence must: be unsignalled</usage> <usage>pname:fence must: be unsignaled</usage>
<usage>pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage> <usage>pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage>
</validity> </validity>
</command> </command>
@ -4599,7 +4599,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:queueFamilyIndex must: be less than pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties for the given pname:physicalDevice</usage> <usage>pname:queueFamilyIndex must: be less than pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties for the given pname:physicalDevice</usage>
</validity> </validity>
</command> </command>
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR"> <command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</name></proto> <proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</name></proto>
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param> <param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
<param><type>VkSurfaceKHR</type> <name>surface</name></param> <param><type>VkSurfaceKHR</type> <name>surface</name></param>
@ -4653,8 +4653,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param> <param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
<param><type>uint32_t</type>* <name>pImageIndex</name></param> <param><type>uint32_t</type>* <name>pImageIndex</name></param>
<validity> <validity>
<usage>If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignalled</usage> <usage>If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignaled</usage>
<usage>If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignalled and mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage> <usage>If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignaled and mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage>
</validity> </validity>
</command> </command>
<command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR"> <command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
@ -4761,7 +4761,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:instance must: be a valid sname:VkInstance handle</usage> <usage>pname:instance must: be a valid sname:VkInstance handle</usage>
<usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage> <usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
<usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage> <usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
<usage>pname:object may: be a {apiname} object</usage> <usage>pname:object may: be a Vulkan object</usage>
<usage>pname:pLayerPrefix must: be a `NULL` terminated string.</usage> <usage>pname:pLayerPrefix must: be a `NULL` terminated string.</usage>
<usage>pname:pMsg must: be a `NULL` terminated string.</usage> <usage>pname:pMsg must: be a `NULL` terminated string.</usage>
</validity> </validity>
@ -5043,6 +5043,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="&quot;VK_KHR_surface&quot;" name="VK_KHR_SURFACE_EXTENSION_NAME"/> <enum value="&quot;VK_KHR_surface&quot;" name="VK_KHR_SURFACE_EXTENSION_NAME"/>
<enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_SURFACE_LOST_KHR"/> <enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_SURFACE_LOST_KHR"/>
<enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"/> <enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"/>
<enum value="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR" name="VK_COLORSPACE_SRGB_NONLINEAR_KHR"/>
<command name="vkDestroySurfaceKHR"/> <command name="vkDestroySurfaceKHR"/>
<command name="vkGetPhysicalDeviceSurfaceSupportKHR"/> <command name="vkGetPhysicalDeviceSurfaceSupportKHR"/>
<command name="vkGetPhysicalDeviceSurfaceCapabilitiesKHR"/> <command name="vkGetPhysicalDeviceSurfaceCapabilitiesKHR"/>

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file // Version of this file
#define VK_HEADER_VERSION 12 #define VK_HEADER_VERSION 13
#define VK_NULL_HANDLE 0 #define VK_NULL_HANDLE 0
@ -3172,13 +3172,14 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
#define VK_KHR_SURFACE_SPEC_VERSION 25 #define VK_KHR_SURFACE_SPEC_VERSION 25
#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" #define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
#define VK_COLORSPACE_SRGB_NONLINEAR_KHR VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
typedef enum VkColorSpaceKHR { typedef enum VkColorSpaceKHR {
VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
VK_COLOR_SPACE_END_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1), VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
} VkColorSpaceKHR; } VkColorSpaceKHR;