Change log for February 25, 2015 Vulkan 1.0.4 spec update:

* Bump API patch number from 3 to 4 for the first public update to the
    spec. Add patch number to the spec title (this will be done
    automatically from XML, later).
  * Fixes for numerous editorial issues. Regularize descriptions of
    variable-length array queries. Properly tag enumerants so they come
    out in the right font (many were mislabeled in usage tags in vk.xml,
    or not tagged). Spelling and markup corrections (public issue 4).
  * Fix typos and clearly separate description of different types of
    memory areas (public issue 5).
  * Use standards-compliant preprocessor guard symbols on headers
    (public issue 7).
  * Note that Github users can't currently set labels on issues, and
    recommend a fallback approach (public issue 15).
  * Use latexmath prefix on len= attributes (public issue 29).
  * Make flink:vkCmdUpdateBuffer pname:dataSize limit consistent (public
    issue 65).
  * Add VK_KHR_mirror_clamp_to_edge extension to core API branch, as an
    optional feature not introducing new commands or enums (internal
    issue 104).
  * Cleanup invariance language inherited from the GL specification to
    not refer to nonexistent (GL-specific) state (internal issue 111).
  * Modify the flink:vkCmdDrawIndexed pname:vertexOffset definition to
    not be the "base offset within the index buffer" but rather the
    "value added to the vertex index before indexing into the vertex
    buffer" (internal issue 118).
  * Fix drawing chapter in the "Programmable Primitive Shading" section
    where it described categories of drawing commands. It referenced
    flink:vkCmdDrawIndexed twice. Replace the second reference with
    flink:vkCmdDrawIndexedIndirect (internal issue 119).
  * Typo fixed in <<sparsememory-examples-advanced,Advanced Sparse
    Resources>> sparse memory example (internal issue 122).
  * Add flink:VkDisplayPlaneAlphaFlagsKHR to <require> section of
    VK_KHR_display extension (internal issue 125)
  * Add missing optional="false,true" to
    flink:vkGetImageSparseMemoryRequirements
    pname:pSparseMemoryRequirementCount parameter (internal issue 132)
  * Rename ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT to
    ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
    (internal issue 133)
  * Fix a handful of broken cross-references in the
    <<samplers,Samplers>> chapter (internal issue 134).
  * Fix "Input Attachement" GLSL example to use correct syntax (internal
    issue 135).
  * Update XML schema and documentation to accomodate recently added
    attributes for validity. Add some introductory material describing
    design choices and pointing to the public repository to file issues.
  * Put include of validity in the core spec extensions chapter on its
    own line, so that asciidoc is happy.
  * Fix vertexOffset language to specify that it's the value added to
    the vertex index before indexing into the vertex buffer, not the
    base offset within the index buffer.
  * Fix error in the description of flink:vkCmdNextSubpass.
This commit is contained in:
Jon Leech 2016-02-24 22:02:34 -08:00
parent 8555ed865c
commit 5a4c5e5925
52 changed files with 512 additions and 354 deletions

View File

@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
# A generate included file with the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0
SPECREVISION = 1.0.4
SPECREMARK =
# Spec targets

View File

@ -0,0 +1,59 @@
== VK_KHR_sampler_mirror_clamp_to_edge
*Name String*:: VK_KHR_sampler_mirror_clamp_to_edge
*Extension Type*:: Device extension
*Registered Extension Number*:: 15
*Status*:: Final
*Last Modified Date*:: 16/02/2016
*Revision*:: 1
*Dependencies*::
- This extension is written against version 1.0. of the {apiname} API.
*Contributors*::
- Tobias Hector, Imagination Technologies
*Contacts*::
- Tobias Hector (tobias.hector@imgtec.com)
VK_KHR_sampler_mirror_clamp_to_edge extends the set of sampler address modes to
include an additional mode (ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE)
that effectively uses a texture map twice as large as the original image in
which the additional half of the new image is a mirror image of the original
image.
This new mode relaxes the need to generate images whose opposite edges
match by using the original image to generate a matching "mirror image".
This mode allows the texture to be mirrored only once in the negative
s, t, and r directions.
=== New Enum Constants
* Extending ename:VkSamplerAddressMode:
** ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
=== Example
Creating a sampler with the new address mode in each dimension
[source,{basebackend@docbook:C++:cpp}]
----------------------------------------
VkSamplerCreateInfo createInfo =
{
VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO // sType
// Other members set to application-desired values
};
createInfo.addressModeU = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
createInfo.addressModeV = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
createInfo.addressModeW = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE;
VkSampler sampler;
VkResult result = vkCreateSampler(
device,
&createInfo,
&sampler);
----------------------------------------
=== Version History
* Revision 1, 2016-02-16 (Tobias Hector)
- Initial draft

View File

@ -76,7 +76,7 @@ use of any other state value is not affected by the change):_
* _Pixel storage state_
*Corollary 1* _Fragment generation is invariant with respect to the state
values marked with * in Rule 2._
values listed in Rule 2._
*Rule 3* _The arithmetic of each per-fragment operation is invariant except
with respect to parameters that directly control it._

View File

@ -203,13 +203,15 @@ include::../protos/vkResetCommandBuffer.txt[]
can: be in any state, and is put in the initial state.
* pname:flags is of type elink:VkCommandBufferResetFlags:
+
--
include::../enums/VkCommandBufferResetFlagBits.txt[]
+
If pname:flags includes ename:VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,
then most or all memory resources currently owned by the command buffer
should: be returned to the parent command pool. If this flag is not set,
then the command buffer may: hold onto memory resources and reuse them when
recording commands.
--
include::../validity/protos/vkResetCommandBuffer.txt[]

View File

@ -503,7 +503,7 @@ attachment index in addition to descriptor set and binding numbers.
.GLSL example
[source,{basebackend@docbook:c:glsl}]
---------------------------------------------------
layout (input_attachment_index=i, set=m, binding=n) uniform subpass myInputAttachment;
layout (input_attachment_index=i, set=m, binding=n) uniform subpassInput myInputAttachment;
---------------------------------------------------
.SPIR-V example

View File

@ -23,13 +23,20 @@ include::../protos/vkEnumeratePhysicalDevices.txt[]
* pname:instance is a handle to a {apiname} instance previously created
with fname:vkCreateInstance.
* If pname:pPhysicalDevices is `NULL`, the number of physical devices
available is returned in pname:pPhysicalDeviceCount. If
pname:pPhysicalDevices is not `NULL`,
* pname:pPhysicalDeviceCount must: point to a variable set by the user to
the size of the array pointed to by pname:pPhysicalDevices, and is
overwritten with the number of physical devices actually written to
pname:pPhysicalDevices.
* pname:pPhysicalDeviceCount is a pointer to an integer related to the
number of physical devices available or queried, as described below.
* pname:pPhysicalDevices is either `NULL` or a pointer to an
array of sname:VkPhysicalDevice structures.
If pname:pPhysicalDevices is `NULL`, then the number of physical devices
available is returned in pname:pPhysicalDeviceCount. Otherwise,
pname:pPhysicalDeviceCount must: point to a variable set by the user to
the number of elements in the pname:pPhysicalDevices array, and on
return the variable is overwritten with the number of structures actually
written to pname:pPhysicalDevices. If the value of
pname:pPhysicalDeviceCount is less than the number of physical devices
available, at most pname:pPhysicalDeviceCount structures will be
written.
include::../validity/protos/vkEnumeratePhysicalDevices.txt[]
@ -142,7 +149,7 @@ include::../protos/vkGetPhysicalDeviceQueueFamilyProperties.txt[]
* pname:pQueueFamilyPropertyCount is a pointer to an integer related to
the number of queue families available or queried, as described below.
* pname:pQueueFamilyProperties is either `NULL` or a pointer to an array
of sname:VkQueueFamilyProperties structures.
of slink:VkQueueFamilyProperties structures.
If pname:pQueueFamilyProperties is `NULL`, then the number of queue families
available is returned in pname:pQueueFamilyPropertyCount. Otherwise,

View File

@ -427,7 +427,8 @@ include::../protos/vkCmdDrawIndexed.txt[]
* pname:indexCount is the number of vertices to draw.
* pname:instanceCount is the number of instances to draw.
* pname:firstIndex is the base index within the index buffer.
* pname:vertexOffset is the base offset within the index buffer.
* pname:vertexOffset is the value added to the vertex index before indexing
into the vertex buffer.
* pname:firstInstance is the instance ID of the first instance to draw.
When the command is executed, primitives are assembled using the current

View File

@ -36,11 +36,10 @@ To query the available instance layers, call:
include::../protos/vkEnumerateInstanceLayerProperties.txt[]
* pname:pPropertyCount is the number of layer properties that can be
returned in pname:pProperties.
* pname:pProperties is an array of slink:VkLayerProperties structures in
which properties of instance layers available on this implementation are
returned.
* pname:pPropertyCount is a pointer to an integer related to the number of
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/vkEnumerateInstanceLayerProperties.txt[]
@ -53,11 +52,10 @@ To query the layers available to a given physical device, call:
include::../protos/vkEnumerateDeviceLayerProperties.txt[]
* pname:physicalDevice is the physical device that will be queried.
* pname:pPropertyCount is the number of layer properties that can be
returned in pname:pProperties.
* pname:pProperties is an array of slink:VkLayerProperties structures in
which properties of layers available on pname:physicalDevice are
returned.
* pname:pPropertyCount is a pointer to an integer related to the number of
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[]
@ -65,17 +63,18 @@ To enable a device layer, the name of the layer should be added to the
pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo when creating
a slink:VkDevice.
Both commands will return an array of sname:VkLayerProperties of the
respective instance or device layers present. Calling
fname:vkEnumerateInstanceLayerProperties or
fname:vkEnumerateDeviceLayerProperties with pname:pProperties set to `NULL`
will return the number of supported layers in the basetype:uint32_t variable
pointed to by pname:pPropertyCount. If pname:pProperties is not set to
`NULL`, the query will fill the array and update pname:pPropertyCount to
indicate the number of sname:VkLayerProperties filled in. 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 properties were returned.
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 the value of 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 properties were
returned.
The definition of sname:VkLayerProperties is:
@ -123,14 +122,14 @@ include::../protos/vkEnumerateInstanceExtensionProperties.txt[]
* pname:pLayerName is either `NULL` or the name of a instance layer to
retrieve extensions from.
* pname:pPropertyCount is the number of extension properties that can be
returned in pname:pProperties.
* pname:pProperties is an array of slink:VkExtensionProperties structures
in which properties of instance extensions available on this
implementation are returned.
* pname:pPropertyCount is a pointer to an integer related to the number of
extension properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of
slink:VkExtensionProperties structures.
include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[] Any
instance extensions provided by the {apiname} implementation or by
include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[]
Any instance extensions provided by the {apiname} implementation or by
implicitly enabled layers, but not by explicitly enabled layers, are
returned when pname:pLayerName parameter is `NULL`. When pname:pLayerName is
the name of a layer, the instance extensions provided by that layer are
@ -147,11 +146,10 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[]
* pname:physicalDevice is the physical device that will be queried.
* pname:pLayerName is either `NULL` or the name of a device layer to
retrieve extensions from.
* pname:pPropertyCount is the number of extension properties that can be
returned in pname:pProperties.
* pname:pProperties is an array of slink:VkExtensionProperties structures
in which properties of extensions available on pname:physicalDevice are
returned.
* pname:pPropertyCount is a pointer to an integer related to the number of
extension properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of
slink:VkExtensionProperties structures.
include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[]
@ -165,21 +163,18 @@ To enable a device layer, the name of the layer should be added to the
pname:ppEnabledExtensionNames member of slink:VkDeviceCreateInfo when
creating a slink:VkDevice.
Both commands return an array of sname:VkExtensionProperties
for any extensions implemented by the given pname:pLayerName.
Set pname:pLayerName to `NULL` to query for extensions not part of any
layer. Calling fname:vkEnumerateInstanceExtensionProperties or
fname:vkEnumerateDeviceExtensionProperties with pname:pProperties set to
`NULL` will return the count of extensions for the given layer in the
basetype:uint32_t variable pointed to by pname:pPropertyCount. With
pname:pProperties pointing to an array of sname:VkExtensionProperties,
fname:vkEnumerateInstanceExtensionProperties
and fname:vkEnumerateDeviceExtensionProperties will fill the array and
update the count to indicate the number of sname:VkExtensionProperties
filled in. If the provided count is smaller than the number of extensions
available, ename:VK_INCOMPLETE will be returned
instead of ename:VK_SUCCESS to indicate that not all the
available properties were returned.
For both flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`,
then the number of extensions 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 the value of
pname:pPropertyCount is less than the number of extension properties
available, at most pname:pPropertyCount structures will be written. If
pname:pPropertyCount is smaller than the number of extensions available,
ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS, to
indicate that not all the available properties were returned.
The definition of sname:VkExtensionProperties is:

View File

@ -979,7 +979,7 @@ different equations in the spec).
subpixel precision that floating-point viewport bounds are interpreted
at is given by this limit.
* [[features-limits-minMemoryMapAlignment]] pname:minMemoryMapAlignment is
the minimum required alignment, in bytes, of host-visible memory
the minimum required alignment, in bytes, of host visible memory
allocations within the host address space. When mapping a memory
allocation with flink:vkMapMemory, subtracting pname:offset bytes from
the returned pointer will always produce an integer multiple of this

View File

@ -42,12 +42,16 @@ advertise one or more heaps, representing different areas of memory. Memory
heaps are either device local or host local, but are always visible to the
device. Further detail about memory heaps is exposed via memory types
available on that heap. Examples of memory areas that may: be available on
an implementation include _device local_ (memory that is physically
connected to the device), _device local, host visible_ (device local memory
that is visible to the host) and _host local, host visible_ (memory that is
local to the host and visible to the device and host). On other
architectures, there may: only be a single heap that can: be used for any
purpose.
an implementation include:
* _device local_ is memory that is physically connected to the device.
* _device local, host visible_ is device local memory that is visible to
the host.
* _host local, host visible_ is memory that is local to the host and
visible to the device and host.
On other architectures, there may: only be a single heap that can: be used
for any purpose.
A {apiname} application controls a set of devices through the submission of
command buffers which have recorded device commands issued via {apiname}
@ -73,8 +77,9 @@ the responsibility of the application.
{apiname} queues provide an interface to the execution engines of a device.
Commands are recorded into command buffers ahead of execution time.
These command buffers are then submitted to queues for execution. Command
buffers submitted to a single queue play back the commands in the order
they were recorded, both within and across command buffer boundaries.
buffers submitted to a single queue are played back in the order they were
submitted, and commands within each buffer are played back in the order they
were recorded.
Work performed by those commands respects the ordering guarantees provided
by explicit and implicit dependencies, as described below. Work submitted
to separate queues may: execute in any relative order unless otherwise
@ -206,7 +211,7 @@ There are two classes of handles, dispatchable and non-dispatchable.
_Dispatchable_ handle types are a pointer to an opaque type. This pointer
may: be used by layers as part of intercepting API commands, and thus each
API command takes a dispatchable type as its first parameter. Each object of
a dispatchable type has a unique handle value.
a dispatchable type must: have a unique handle value during its lifetime.
_Non-dispatchable_ handle types are a 64-bit integer type whose meaning is
implementation-dependent, and may: encode object information directly in the
@ -301,7 +306,7 @@ reset, then it can: be used as if it never used the freed object. An
exception to this is when there is a parent/child relationship between
objects. In this case, the application mustnot: destroy a parent object
before its children, except when the parent is explicitly defined to free
its children when it is destroyed (i.e. for pool objects, as defined below).
its children when it is destroyed (e.g. for pool objects, as defined below).
sname:VkCommandPool objects are parents of sname:VkCommandBuffer objects.
sname:VkDescriptorPool objects are parents of sname:VkDescriptorSet objects.
@ -520,19 +525,19 @@ by the command, and all fundamental types accessed through the pointer (e.g.
as elements of an array or as members of a structure) satisfy the alignment
requirements of the host processor.
Any parameter that is an enumerant must: be a valid value for that enumerant
type. A value is valid for an enumerant if:
Any parameter of an enumerated type must: be a valid enumerant for that
type. A enumerant is valid if:
* The value is defined as part of the enumerant type.
* The value is not one of the special values defined for an enumerant
type, which are suffixed with etext:_BEGIN_RANGE, etext:_END_RANGE,
etext:_RANGE_SIZE or etext:_MAX_ENUM.
* The enumerant is defined as part of the enumerated type.
* The enumerant is not one of the special values defined for the
enumerated type, which are suffixed with etext:_BEGIN_RANGE,
etext:_END_RANGE, etext:_RANGE_SIZE or etext:_MAX_ENUM.
Any parameter that is a flag value must: be a valid combination of bit
flags. A valid combination is either zero or the bitwise OR of valid bit
flags. A bit flag is valid if:
* The value is defined as part of the bits type, where the bits type is
* The flag is defined as part of the bits type, where the bits type is
obtained by taking the flag type and replacing the trailing etext:Flags
with etext:FlagBits. For example, a flag value of type
elink:VkColorComponentFlags must: contain only values selected from the

View File

@ -94,7 +94,10 @@ http://github.com/KhronosGroup/Vulkan-Docs
Please tag issues with appropriate labels, such as ``Specification'',
``Ref Pages'' or ``Registry'', to help us triage and assign them
appropriately.
appropriately. Unfortunately, Github does not currently let users who do not
have write access to the repository set Github labels on issues. In the
meantime, they can be added to the title line of the issue set in brackets,
e.g. ''[Specification]''.
[[introduction-terminology]]

View File

@ -817,7 +817,7 @@ include::../protos/vkCmdNextSubpass.txt[]
* pname:commandBuffer is the command buffer in which to record the
command.
* pname:contents specifies how the commands in the first subpass will be
* pname:contents specifies how the commands in the next subpass will be
provided, in the same fashion as the corresponding parameter of
flink:vkCmdBeginRenderPass.

View File

@ -42,7 +42,7 @@ include::../enums/VkFilter.txt[]
* pname:minFilter is the minification filter to apply to lookups, and is
of type elink:VkFilter.
* pname:mipmapMode is the mipmap filter to apply to lookups as described
in the <<texture-texel-filtering, Texel Filtering>> section, and is of
in the <<textures-texel-filtering, Texel Filtering>> section, and is of
type:
+
--
@ -61,7 +61,7 @@ include::../enums/VkSamplerMipmapMode.txt[]
Level-of-Detail Operation>> section.
* [[samplers-maxAnisotropy]] pname:anisotropyEnable is ename:VK_TRUE to
enable anisotropic filtering, as described in the
<<texture-anisotropic-texel-selection, Anisotropic Texel Selection>>
<<textures-texel-anisotropic-filtering, Texel Anisotropic Filtering>>
section, or ename:VK_FALSE otherwise.
* pname:maxAnisotropy is the anisotropy value clamp.
* pname:compareEnable is ename:VK_TRUE to enable comparison against a
@ -69,14 +69,14 @@ include::../enums/VkSamplerMipmapMode.txt[]
** Note: Some implementations will default to shader state if this member
does not match.
* pname:compareOp is the comparison function to apply to fetched data
before filtering as described in the <<texture-depth-compare-operation,
before filtering as described in the <<textures-depth-compare-operation,
Depth Compare Operation>> section. See elink:VkCompareOp.
* pname:minLod and pname:maxLod are the values used to clamp the computed
level-of-detail value, as described in the
<<textures-level-of-detail-operation, Level-of-Detail Operation>>
section. pname:maxLod must: be greater than or equal to pname:minLod.
* pname:borderColor is the predefined border color to use, as described
in the <<texture-texel-replacement, Texel Replacement>>
in the <<textures-texel-replacement, Texel Replacement>>
section, and is of type:
+
--
@ -146,7 +146,7 @@ include::../enums/VkSamplerAddressMode.txt[]
These values control the behavior of sampling with coordinates outside the
range [0,1] for the respective u, v, or w coordinate as defined in the
<<texture-wrapping-operation, Wrapping Operation>> section.
<<textures-wrapping-operation, Wrapping Operation>> section.
* ename:VK_SAMPLER_ADDRESS_MODE_REPEAT indicates that the repeat wrap mode
will be used.
@ -156,8 +156,9 @@ range [0,1] for the respective u, v, or w coordinate as defined in the
edge wrap mode will be used.
* ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER indicates that the clamp
to border wrap mode will be used.
* ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE indicates that the
mirror clamp to edge wrap mode will be used.
* ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE indicates that
the mirror clamp to edge wrap mode will be used. This is only valid
if the VK_KHR_mirror_clamp_to_edge extension is enabled.
The maximum number of sampler objects which can: be simultaneously created
on a device is implementation-dependent and specified by the

View File

@ -751,25 +751,24 @@ include::../protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[]
elink:VkSampleCountFlagBits.
* pname:usage is a bitfield describing the intended usage of the image.
* pname:tiling is the tiling arrangement of the data elements in memory.
* pname:pPropertyCount points to a variable specifying the length of the
pname:pProperties array, or a variable receiving the expected size of
the array if pname:pProperties is `NULL`.
* pname:pProperties is an array of pname:pPropertyCount
slink:VkSparseImageFormatProperties format property structures in which
values are returned.
* pname:pPropertyCount is a pointer to an integer related to the number of
sparse format properties available or queried, as described below.
* pname:pProperties is either `NULL` or a pointer to an array of
slink:VkSparseImageFormatProperties structures.
If pname:pProperties is `NULL`, then the number of sparse format 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 the value of pname:pPropertyCount is less than the
number of sparse format properties available, at most pname:pPropertyCount
structures will be written, and ename:VK_INCOMPLETE will be returned instead
of ename:VK_SUCCESS to indicate that not all the available values were
returned.
include::../validity/protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[]
If pname:pProperties is `NULL`, then pname:pPropertyCount will be updated
with the required size of the array pointed by pname:pProperties. If
pname:pProperties is not `NULL`, then pname:pPropertyCount must: hold the
size of the array pointed to by pname:pProperties, and is overwritten with
the number of sname:VkSparseImageFormatProperties structures actually
written to pname:pProperties. If pname:pPropertyCount is smaller than the
number of sparse image properties for the given set of parameters,
ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate
that not all the available values were returned.
If ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT is not supported for the given
arguments, pname:pPropertyCount will be set to zero upon return, and no data
will be written to pname:pProperties.
@ -892,33 +891,31 @@ include::../protos/vkGetImageSparseMemoryRequirements.txt[]
* pname:device is the logical device that owns the image.
* pname:image is the sname:VkImage object to get the memory requirements
for.
* pname:pSparseMemoryRequirementCount points to a variable specifying the
length of the pname:pSparseMemoryRequirements array, or a variable
receiving the expected size of the array if
pname:pSparseMemoryRequirements is `NULL`.
* pname:pSparseMemoryRequirements is an array of
pname:pSparseMemoryRequirementCount
slink:VkSparseImageMemoryRequirements structures to be written by the
API.
* pname:pSparseMemoryRequirementCount is a pointer to an integer related
to the number of sparse memory requirements available or queried, as
described below.
* pname:pSparseMemoryRequirements is either `NULL` or a pointer to an
array of sname:VkSparseImageMemoryRequirements structures.
include::../validity/protos/vkGetImageSparseMemoryRequirements.txt[]
If pname:pSparseMemoryRequirements is `NULL`, then
pname:pSparseMemoryRequirementCount will be updated with the required size
of the array pointed by pname:pProperties. If
pname:pSparseMemoryRequirements is not `NULL`, then
pname:pSparseMemoryRequirementCount must: hold the size of the array pointed
to by pname:pSparseMemoryRequirements, and is overwritten with the number of
sname:VkSparseImageMemoryRequirements structures actually written to
pname:pSparseMemoryRequirements. If pname:pSparseMemoryRequirementCount is
smaller than the number of sparse memory requirements for the given set of
parameters, ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS
to indicate that not all the available values were returned.
If pname:pSparseMemoryRequirements is `NULL`, then the number of sparse
memory requirements available is returned in
pname:pSparseMemoryRequirementCount. Otherwise,
pname:pSparseMemoryRequirementCount must: point to a variable set by the
user to the number of elements in the pname:pSparseMemoryRequirements array,
and on return the variable is overwritten with the number of structures
actually written to pname:pSparseMemoryRequirements. If the value of
pname:pSparseMemoryRequirementCount is less than the number of sparse memory
requirements available, at most pname:pSparseMemoryRequirementCount
structures will be written, and ename:VK_INCOMPLETE will be returned instead
of ename:VK_SUCCESS to indicate that not all the available values were
returned.
If the image was not created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
then pname:pSparseMemoryRequirementCount will be set to zero and
pname:pSparseMemoryRequirements will not be written to.
include::../validity/protos/vkGetImageSparseMemoryRequirements.txt[]
[NOTE]
.Note
====
@ -1375,7 +1372,7 @@ vkGetImageSparseMemoryRequirements(
NULL);
pSparseReqs = (VkSparseImageMemoryRequirements*)
malloc(reqCount * sizeof(VkSparseImageMemoryRequirements));
malloc(sparseRequirementsCount * sizeof(VkSparseImageMemoryRequirements));
vkGetImageSparseMemoryRequirements(
device,
@ -1467,6 +1464,8 @@ for (uint32_t i = 0; i < sparseRequirementsCount; ++i)
pBind->flags = 0;
}
}
free(pSparseReqs);
}
const VkSparseImageOpaqueMemoryBindInfo opaqueBindInfo =

View File

@ -1226,7 +1226,7 @@ are <<synchronization-fences-devicewrites,visible to the host>>.
When submitting batches of command buffers to a queue via
flink:vkQueueSubmit, it is guaranteed that:
* Host writes to mappable device memory that occured before the call to
* Host writes to mappable device memory that occurred before the call to
fname:vkQueueSubmit are visible to the command buffers in that
submission, if the device memory is coherent or if the memory range was
flushed with flink:vkFlushMappedMemoryRanges.

View File

@ -236,7 +236,7 @@ rasterized (see <<primsrast-lines-basic,Basic Line Segment Rasterization>>
and <<primsrast-polygons-basic,Basic Polygon Rasterization>>), and no
interpolation is performed. The output value latexmath:[${\textbf c}$] is
taken from either latexmath:[${\textbf c}_1$] or latexmath:[${\textbf
c}_2$], since flatshading has already occured and the two values are
c}_2$], since flatshading has already occurred and the two values are
identical.

View File

@ -23,13 +23,13 @@ endif::doctype-manpage[]
* The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties
* pname:srcImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties
* pname:dstImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The sample count of pname:srcImage and pname:dstImage must: both be equal to ename:VK_SAMPLE_COUNT_1_BIT
* If either of pname:srcImage or pname:dstImage was created with a signed integer elink:VkFormat, the other must: also have been created with a signed integer elink:VkFormat
* If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat

View File

@ -17,9 +17,9 @@ endif::doctype-manpage[]
* This command must: only be called outside of a render pass instance
* The value of pname:rangeCount must: be greater than `0`
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:image must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -17,9 +17,9 @@ endif::doctype-manpage[]
* This command must: only be called outside of a render pass instance
* The value of pname:rangeCount must: be greater than `0`
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:image must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -19,8 +19,8 @@ endif::doctype-manpage[]
* The sum of the pname:srcOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer
* The sum of the pname:dstOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer
* The union of the source regions, and the union of the destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
* pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -20,11 +20,11 @@ endif::doctype-manpage[]
* The buffer region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcBuffer
* The image region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
* pname:dstImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -21,12 +21,12 @@ endif::doctype-manpage[]
* The source region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage
* The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:dstImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined <<copies-images-format-compatibility, below>>
* The sample count of pname:srcImage and pname:dstImage must: match
ifndef::doctype-manpage[]

View File

@ -20,11 +20,11 @@ endif::doctype-manpage[]
* The image region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage
* The buffer region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstBuffer
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -14,8 +14,8 @@ endif::doctype-manpage[]
* pname:commandBuffer must: be a primary sname:VkCommandBuffer
* The value of pname:commandBufferCount must: be greater than `0`
* Each of pname:commandBuffer and the elements of pname:pCommandBuffers must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:commandBuffer must: have been created with a pname:level value of VK_COMMAND_BUFFER_LEVEL_PRIMARY
* Any given element of pname:pCommandBuffers must: have been created with a pname:level value of VK_COMMAND_BUFFER_LEVEL_SECONDARY
* pname:commandBuffer must: have been created with a pname:level value of ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY
* Any given element of pname:pCommandBuffers must: have been created with a pname:level value of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
* Any given element of pname:pCommandBuffers mustnot: be already pending execution in pname:commandBuffer, or appear twice in pname:pCommandBuffers, unless it was created with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag
* Any given element of pname:pCommandBuffers mustnot: be already pending execution in any other sname:VkCommandBuffer, unless it was created with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag
* Any given element of pname:pCommandBuffers must: be in the executable state

View File

@ -14,7 +14,7 @@ endif::doctype-manpage[]
* This command must: only be called outside of a render pass instance
* Each of pname:commandBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
* If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:dstOffset and pname:size must: be less than or equal to the size of pname:dstBuffer
* pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstOffset must: be a multiple of `4`
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be a multiple of `4`
ifndef::doctype-manpage[]

View File

@ -18,10 +18,10 @@ endif::doctype-manpage[]
* If pname:imageMemoryBarrierCount is not `0`, pname:pImageMemoryBarriers must: be a pointer to an array of pname:imageMemoryBarrierCount valid sname:VkImageMemoryBarrier structures
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must: declare at least one self-dependency from the current subpass to itself - see <<synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency>>
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -15,8 +15,8 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* This command must: only be called outside of a render pass instance
* Each of pname:commandBuffer and pname:event must: have been created, allocated or retrieved from the same sname:VkDevice
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -24,9 +24,9 @@ endif::doctype-manpage[]
* pname:srcImage must: have a sample count equal to any valid sample count value other than ename:VK_SAMPLE_COUNT_1_BIT
* pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
ifndef::doctype-manpage[]

View File

@ -15,8 +15,8 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* This command must: only be called outside of a render pass instance
* Each of pname:commandBuffer and pname:event must: have been created, allocated or retrieved from the same sname:VkDevice
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -9,16 +9,16 @@ Valid Usage
endif::doctype-manpage[]
* pname:commandBuffer must: be a valid sname:VkCommandBuffer handle
* pname:dstBuffer must: be a valid sname:VkBuffer handle
* pname:pData must: be a pointer to an array of pname:dataSize/4 basetype:uint32_t values
* pname:pData must: be a pointer to an array of latexmath:[$dataSize \over 4$] basetype:uint32_t values
* pname:commandBuffer must: be in the recording state
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
* This command must: only be called outside of a render pass instance
* Each of pname:commandBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
* The sum of pname:dstOffset and pname:dataSize must: be less than or equal to the size of pname:dstBuffer
* pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
* The value of pname:dstOffset must: be a multiple of `4`
* The value of pname:dataSize must: be greater than `0`
* The value of pname:dataSize must: be less than `65536`
* The value of pname:dataSize must: be less than or equal to `65536`
* The value of pname:dataSize must: be a multiple of `4`
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -20,11 +20,11 @@ endif::doctype-manpage[]
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
* The value of pname:eventCount must: be greater than `0`
* Each of pname:commandBuffer and the elements of pname:pEvents must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:srcStageMask must: be the bitwise OR of the pname:stageMask parameter used in previous calls to fname:vkCmdSetEvent with any of the members of pname:pEvents and VK_PIPELINE_STAGE_HOST_BIT if any of the members of pname:pEvents was set using fname:vkSetEvent
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* pname:srcStageMask must: be the bitwise OR of the pname:stageMask parameter used in previous calls to fname:vkCmdSetEvent with any of the members of pname:pEvents and ename:VK_PIPELINE_STAGE_HOST_BIT if any of the members of pname:pEvents was set using fname:vkSetEvent
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If pname:pEvents includes one or more events that will be signaled by fname:vkSetEvent after pname:commandBuffer has been submitted to a queue, then fname:vkCmdWaitEvents mustnot: be called inside a render pass instance
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -10,8 +10,7 @@ endif::doctype-manpage[]
* pname:device must: be a valid sname:VkDevice handle
* pname:image must: be a valid sname:VkImage handle
* pname:pSparseMemoryRequirementCount must: be a pointer to a basetype:uint32_t value
* If pname:pSparseMemoryRequirements is not `NULL`, pname:pSparseMemoryRequirements must: be a pointer to an array of pname:pSparseMemoryRequirementCount sname:VkSparseImageMemoryRequirements structures
* If pname:pSparseMemoryRequirements is not `NULL`, the value referenced by pname:pSparseMemoryRequirementCount must: be greater than `0`
* If the value referenced by pname:pSparseMemoryRequirementCount is not `0`, and pname:pSparseMemoryRequirements is not `NULL`, pname:pSparseMemoryRequirements must: be a pointer to an array of pname:pSparseMemoryRequirementCount sname:VkSparseImageMemoryRequirements structures
* pname:image must: have been created, allocated or retrieved from pname:device
* Each of pname:device and pname:image must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
* pname:image must: have been created with the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag

View File

@ -14,8 +14,8 @@ endif::doctype-manpage[]
* pname:buffer must: be a valid sname:VkBuffer handle
* The value of pname:offset must: be less than the size of pname:buffer
* The sum of pname:offset and pname:size must: be less than or equal to than the size of pname:buffer
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be VK_QUEUE_FAMILY_IGNORED
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -47,20 +47,20 @@ endif::doctype-manpage[]
* If the <<features-features-textureCompressionBC,BC texture compression>> feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK, ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK, ename:VK_FORMAT_BC2_UNORM_BLOCK, ename:VK_FORMAT_BC2_SRGB_BLOCK, ename:VK_FORMAT_BC3_UNORM_BLOCK, ename:VK_FORMAT_BC3_SRGB_BLOCK, ename:VK_FORMAT_BC4_UNORM_BLOCK, ename:VK_FORMAT_BC4_SNORM_BLOCK, ename:VK_FORMAT_BC5_UNORM_BLOCK, ename:VK_FORMAT_BC5_SNORM_BLOCK, ename:VK_FORMAT_BC6H_UFLOAT_BLOCK, ename:VK_FORMAT_BC6H_SFLOAT_BLOCK, ename:VK_FORMAT_BC7_UNORM_BLOCK, or ename:VK_FORMAT_BC7_SRGB_BLOCK
* If the <<features-features-shaderStorageImageMultisample,multisampled storage images>> feature is not enabled, and pname:usage contains ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be ename:VK_SAMPLE_COUNT_1_BIT
* If the <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
* If the <<features-features-sparseResidencyImage2D,sparse residency for 2D images>> feature is not enabled, and pname:imageType is VK_IMAGE_TYPE_2D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidencyImage3D,sparse residency for 3D images>> feature is not enabled, and pname:imageType is VK_IMAGE_TYPE_3D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency2Samples,sparse residency for images with 2 samples>> feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_2_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency4Samples,sparse residency for images with 4 samples>> feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_4_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency8Samples,sparse residency for images with 8 samples>> feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_8_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency16Samples,sparse residency for images with 16 samples>> feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_16_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If the <<features-features-sparseResidencyImage2D,sparse residency for 2D images>> feature is not enabled, and pname:imageType is ename:VK_IMAGE_TYPE_2D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidencyImage3D,sparse residency for 3D images>> feature is not enabled, and pname:imageType is ename:VK_IMAGE_TYPE_3D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency2Samples,sparse residency for images with 2 samples>> feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_2_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency4Samples,sparse residency for images with 4 samples>> feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_4_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency8Samples,sparse residency for images with 8 samples>> feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_8_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidency16Samples,sparse residency for images with 16 samples>> feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_16_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -17,8 +17,8 @@ endif::doctype-manpage[]
* pname:subresourceRange must: be a valid sname:VkImageSubresourceRange structure
* pname:oldLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED, ename:VK_IMAGE_LAYOUT_PREINITIALIZED or the current layout of the image region affected by the barrier
* pname:newLayout mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be VK_QUEUE_FAMILY_IGNORED
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier
* pname:subresourceRange must: be a valid subresource range for the image (see <<resources-image-views>>)
* If pname:image has a depth/stencil format with both depth and stencil components, then pname:aspectMask member of pname:subresourceRange must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT

View File

@ -14,10 +14,10 @@ endif::doctype-manpage[]
* pname:dstAlphaBlendFactor must: be a valid elink:VkBlendFactor value
* pname:alphaBlendOp must: be a valid elink:VkBlendOp value
* pname:colorWriteMask must: be a valid combination of elink:VkColorComponentFlagBits values
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
* If the <<features-features-dualSrcBlend,dual source blending>> feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -13,7 +13,7 @@ endif::doctype-manpage[]
* pname:topology must: be a valid elink:VkPrimitiveTopology value
* If pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY or ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, the value of pname:primitiveRestartEnable must: be ename:VK_FALSE
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:topology mustnot: be any of ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY or ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:topology mustnot: be VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:topology mustnot: be ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -14,8 +14,8 @@ endif::doctype-manpage[]
* pname:module must: be a valid sname:VkShaderModule handle
* pname:pName must: be a null-terminated string
* If pname:pSpecializationInfo is not `NULL`, pname:pSpecializationInfo must: be a pointer to a valid sname:VkSpecializationInfo structure
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stage mustnot: be pname:VK_SHADER_STAGE_GEOMETRY_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stage mustnot: be pname:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or pname:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stage mustnot: be ename:VK_SHADER_STAGE_GEOMETRY_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stage mustnot: be ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
* pname:stage mustnot: be ename:VK_SHADER_STAGE_ALL_GRAPHICS, or ename:VK_SHADER_STAGE_ALL
* pname:pName must: be the name of an code:OpEntryPoint in pname:module with an execution model that matches pname:stage
* If the identified entry point includes any variable in its interface that is declared with the code:ClipDistance code:BuiltIn decoration, that variable mustnot: have an array size greater than sname:VkPhysicalDeviceLimits::pname:maxClipDistances

View File

@ -26,6 +26,7 @@ endif::doctype-manpage[]
* If pname:unnormalizedCoordinates is ename:VK_TRUE, pname:anisotropyEnable must: be ename:VK_FALSE
* If pname:unnormalizedCoordinates is ename:VK_TRUE, pname:compareEnable must: be ename:VK_FALSE
* If any of pname:addressModeU, pname:addressModeV or pname:addressModeW are ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, pname:borderColor must: be a valid elink:VkBorderColor value
* If the VK_KHR_mirror_clamp_to_edge extension is not enabled, pname:addressModeU, pname:addressModeV and pname:addressModeW mustnot: be ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
* If pname:compareEnable is ename:VK_TRUE, pname:compareOp must: be a valid elink:VkCompareOp value
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -10,7 +10,7 @@ endif::doctype-manpage[]
* pname:sType must: be ename:VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
* pname:pNext must: be `NULL`
* pname:flags must: be `0`
* pname:pCode must: be a pointer to an array of pname:codeSize/4 basetype:uint32_t values
* pname:pCode must: be a pointer to an array of latexmath:[$codeSize \over 4$] basetype:uint32_t values
* pname:codeSize must: be greater than 0
* pname:codeSize must: be a multiple of 4
* pname:pCode must: point to valid SPIR-V code, formatted and packed as described by https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.html[the SPIR-V Specification v1.0]

View File

@ -16,7 +16,7 @@ endif::doctype-manpage[]
* 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
* Any given element of pname:pSignalSemaphores must: currently be unsignalled
* Any given element of pname:pCommandBuffers must: either have been recorded with the 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
* 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 was created with ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, it mustnot: have been previously submitted without re-recording that command buffer
@ -24,8 +24,8 @@ endif::doctype-manpage[]
* Any given element of pname:pCommandBuffers must: have been created on a sname:VkCommandPool that was created for the same queue family that the calling command's pname:queue belongs to
* Any given element of pname:pCommandBuffers mustnot: have been created with ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
* Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -14,10 +14,10 @@ endif::doctype-manpage[]
* pname:srcAccessMask must: be a valid combination of elink:VkAccessFlagBits values
* pname:dstAccessMask must: be a valid combination of elink:VkAccessFlagBits values
* pname:dependencyFlags must: be a valid combination of elink:VkDependencyFlagBits values
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* The value of pname:srcSubpass must: be less than or equal to pname:dstSubpass, unless one of them is ename:VK_SUBPASS_EXTERNAL, to avoid cyclic dependencies and ensure a valid execution order
* The values of pname:srcSubpass and pname:dstSubpass mustnot: both be equal to ename:VK_SUBPASS_EXTERNAL
ifndef::doctype-manpage[]

View File

@ -110,8 +110,8 @@ consts['VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType'
consts['VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType'
consts['VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType'
consts['VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType'
consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT'] = 'VkStructureType'
enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT']
consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] = 'VkStructureType'
enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT']
# Unprocessed type: void
# Unprocessed type: uint32_t
# Unprocessed type: VkFlags category: basetype
@ -1025,3 +1025,5 @@ protos['vkCmdExecuteCommands'] = ['commandBuffer', 'commandBufferCount', 'pComm
structs['VkDispatchIndirectCommand'] = ['x', 'y', 'z']
structs['VkDrawIndexedIndirectCommand'] = ['indexCount', 'instanceCount', 'firstIndex', 'vertexOffset', 'firstInstance']
structs['VkDrawIndirectCommand'] = ['vertexCount', 'instanceCount', 'firstVertex', 'firstInstance']
consts['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION'] = None
consts['VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME'] = None

View File

@ -102,6 +102,8 @@ include::appendices/compressedtex.txt[]
include::appendices/extensions.txt[]
include::appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt[]
include::appendices/invariance.txt[]
include::appendices/glossary.txt[]

View File

@ -625,7 +625,8 @@ class COutputGenerator(OutputGenerator):
#
# Multiple inclusion protection & C++ wrappers.
if (genOpts.protectFile and self.genOpts.filename):
headerSym = '__' + re.sub('\.h', '_h_', os.path.basename(self.genOpts.filename))
headerSym = re.sub('\.h', '_h_',
os.path.basename(self.genOpts.filename)).upper()
write('#ifndef', headerSym, file=self.outFile)
write('#define', headerSym, '1', file=self.outFile)
self.newline()

View File

@ -203,6 +203,7 @@ buildList = [
defaultExtensions = None,
addExtensions =
makeREstring([
'VK_KHR_sampler_mirror_clamp_to_edge',
]),
removeExtensions =
makeREstring([
@ -226,6 +227,7 @@ buildList = [
defaultExtensions = None,
addExtensions =
makeREstring([
'VK_KHR_sampler_mirror_clamp_to_edge',
]),
removeExtensions =
makeREstring([
@ -243,6 +245,7 @@ buildList = [
defaultExtensions = None,
addExtensions =
makeREstring([
'VK_KHR_sampler_mirror_clamp_to_edge',
]),
removeExtensions =
makeREstring([
@ -261,6 +264,7 @@ buildList = [
defaultExtensions = None,
addExtensions =
makeREstring([
'VK_KHR_sampler_mirror_clamp_to_edge',
]),
removeExtensions =
makeREstring([

Binary file not shown.

View File

@ -50,40 +50,78 @@
\title{The Khronos Vulkan API Registry for Vulkan}
\author{Jon Leech}
\date{Last updated 2016/02/07}
\date{Last updated 2016/02/22}
\maketitle
\begin{abstract}
This document describes the Khronos Vulkan API Registry schema, and provides
some additional information about using the registry and scripts to generate
a variety of outputs including C header files and several types of asciidoc
include files used in the Vulkan API specification and reference pages. The
underlying XML files and scripts are located on the Khronos Gitlab server,
currently in the {\em master} branch at URL
a variety of outputs, including C header files as well as several types of
asciidoc include files used in the Vulkan API specification and reference
pages. The underlying XML files and scripts are located on the Khronos
public Github server as URL
\begin{center}
{\bf \href{https://gitlab.khronos.org/vulkan/vulkan/tree/master/src/spec/}
{https://gitlab.khronos.org/vulkan/vulkan/tree/master/src/spec/}}
{\bf \href{https://github.com/KhronosGroup/Vulkan-Docs}
{https://github.com/KhronosGroup/Vulkan-Docs}}
\end{center}
The authoritative copy of the Registry is maintained in the {\em 1.0}
branch.
\end{abstract}
\tableofcontents
\section{Introduction}
The registry uses an XML representation of the Vulkan API and a set of
Python scripts to manipulate the XML, based on the lxml Python bindings. It
includes an XML schema and validator.
The registry uses an XML representation of the Vulkan API, together with a
set of Python scripts to manipulate the registry once loaded. The scripts
rely on the lxml Python bindings to parse and operate on XML. An XML schema
and validator target are included.
The registry schema is based on, but not identical to the schema used for
the previously published OpenGL, OpenGL ES and EGL API registries. The
schema was extended to represent additional types and concepts not needed
for those APIS, such as structure and enumerant types.
The schema is based on, but not identical to that used for the previously
published OpenGL, OpenGL ES and EGL API registries. It was extended to
represent additional types and concepts not needed for those APIS, such as
structure and enumerant types, as well as additional types
of registered information specific to Vulkan.
The processed C header file corresponding to the registry is checked in
under src/vulkan/vulkan.h .
under {\tt src/vulkan/vulkan.h}.
\subsection{Schema Choices}
The XML schema is not pure XML all the way down. In particular, command
return types/names and parameters, and structure members, are described in
mixed-mode tag containing C declarations of the appropriate information,
with some XML nodes annotating particular parts of the declaration such as
its base type and name. This choice is based on prior experience with the
SGI {\tt .spec} file format used to describe OpenCL, and greatly eases human
reading and writing the XML, and generating C-oriented output. The cost is
that people writing output generators for other languages will have to
include enough logic to parse the C declarations and extract the relevant
information.
People who don't find the supplied Python scripts to suit their needs are
likely to write their own parsers, interpreters, and/or converters operating
on the registry XML. We hope that we've provided enough information in this
document, the RNC schema ({\tt registry.rnc}), and comments in the Registry
({\tt vk.xml}) itself to enable such projects. If not and you need
clarifications; if you have other problems using the registry; or if you
have proposed changes and enhancements, then please file issues on Khronos'
public Github project at
\begin{center}
{\bf \href{https://github.com/KhronosGroup/Vulkan-Docs/issues}
{https://github.com/KhronosGroup/Vulkan-Docs/issues}}
\end{center}
Please tag your issues with {\tt [Registry]} in the title line to help us
categorize them. We expect that we will eventually separate the registry
from the specification source into a separate repository, but for now they
are mixed together.
\section{Getting Started}
@ -144,9 +182,6 @@ Other Makefile targets include:
\code{vulkan-docs}.
\item \code{validate} - validate \code{vk.xml} against the XML schema.
Recommended if you're making nontrivial changes.
%% \item \code{vk.json} - generate JSON version of \code{vk.xml}. Currently the
%% converter is generating syntactically but not semantically legal JSON,
%% and it's difficult to map the XML schemaanso don't use this target yet.
\item \code{readme.pdf} - regenerate this document from the LaTeX source.
Most people will never need to do this. If you do, you must have
pdflatex installed, preferably from the TeTeX distribution.
@ -342,11 +377,13 @@ information is used to generate more complicated C types.
\code{enum}, \code{funcpointer}, \code{group}, \code{handle},
\code{include}, \code{struct}, and \code{union}, as described below.
\item \attr{comment} - optional. Arbitrary string (unused).
\item \attr{parent} only applicable if category is \code{handle}. Notes another type with
the \code{handle} category that acts as a parent object for this type.
\item \attr{returnedonly} only applicable if category is \code{struct} or \code{union}.
Notes that this struct/union is going to be filled in by the API, rather than an
application filling it out and passing it to the API.
\item \attr{parent} only applicable if category is \code{handle}. Notes
another type with the \code{handle} category that acts as a parent
object for this type.
\item \attr{returnedonly} only applicable if category is \code{struct} or
\code{union}. Notes that this struct/union is going to be filled in by
the API, rather than an application filling it out and passing it to
the API.
\end{itemize}
\subsection{Contents of \tag{type} tags}
@ -381,18 +418,20 @@ member.
\paragraph{Attributes of \tag{member} tags}
\begin{itemize}
\item \attr{len} - if the member is an array, len may be one or more of the following
things, separated by commas (one for each array indirection): another
member of that struct, ``null-terminated'' for a string, ``1'' to indicate it's
just a pointer (used for nested pointers), or a latex equation (prefixed with
``latex:'')
\item \attr{externsync} - denotes that the member should be externally synchronized
when accessed by Vulkan
\item \attr{optional} - whether this value can be omitted by providing \code{NULL} (for
pointers), \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values)
\item \attr{noautovalidity} - prevents automatic validity language being generated
for the tagged item. Only suppresses item-specific validity - parenting issues
etc. are still captured.
\item \attr{len} - if the member is an array, len may be one or more of the
following things, separated by commas (one for each array
indirection): another member of that struct; ``null-terminated'' for a
string; ``1'' to indicate it's just a pointer (used for nested
pointers); or an equation (a LaTeX math expression delimited by {\tt
latexmath:[\$} and {\tt \$]}.
\item \attr{externsync} - denotes that the member should be externally
synchronized when accessed by Vulkan
\item \attr{optional} - whether this value can be omitted by providing
\code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0
(for bitmasks/values)
\item \attr{noautovalidity} - prevents automatic validity language being
generated for the tagged item. Only suppresses item-specific validity
- parenting issues etc. are still captured.
\end{itemize}
\paragraph{Contents of \tag{member} tags}
@ -663,6 +702,12 @@ command (function).
more of the terms \code{"compute"}, \code{"dma"}, and
\code{"graphics"}, with multiple terms separated by commas
(\code{","}).
\item \attr{successcodes} - optional. A string describing possible
successful return codes from the command, as a comma-separated list of
Vulkan result code names.
\item \attr{errorcodes} - optional. A string describing possible error
return codes from the command, as a comma-separated list of Vulkan
result code names.
\item \attr{renderpass} - optional. A string identifying whether the
command can be issued only inside a render pass (\code{"inside"}),
only outside a render pass (\code{"outside"}), or both
@ -751,16 +796,18 @@ members.
\label{tag:command:param:attr}
\begin{itemize}
\item \attr{len} - if the param is an array, len may be one or more of the following
things, separated by commas (one for each array indirection): another
param of that command, ``null-terminated'' for a string, ``1'' to indicate it's
just a pointer (used for nested pointers), or a latex equation (prefixed with
``latex:'')
\item \attr{optional} - whether this value can be omitted by providing \code{NULL} (for
pointers), \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values)
\item \attr{noautovalidity} - prevents automatic validity language being generated
for the tagged item. Only suppresses item-specific validity - parenting issues
etc. are still captured.
\item \attr{len} - if the param is an array, len may be one or more of the
following things, separated by commas (one for each array
indirection): another param of that command; ``null-terminated'' for a
string; ``1'' to indicate it's just a pointer (used for nested
pointers); or an equation (a simple expression prefixed with
``math:'')
\item \attr{optional} - whether this value can be omitted by providing
\code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0
(for bitmasks/values)
\item \attr{noautovalidity} - prevents automatic validity language being
generated for the tagged item. Only suppresses item-specific validity
- parenting issues etc. are still captured.
\item \attr{externsync} - optional. A boolean string, which must have the
value \code{"true"} if present, indicating that this parameter (e.g.
the object a handle refers to, or the contents of an array a pointer
@ -1358,8 +1405,8 @@ resulting \code{vulkan.h} header will look like this:
\begin{verbatim}
#ifndef __vulkan_h_
#define __vulkan_h_ 1
#ifndef VULKAN_H_
#define VULKAN_H_ 1
#ifdef __cplusplus
extern "C" {
@ -1754,6 +1801,12 @@ log of this document (see section~\ref{changelog}). Changes to the
\label{changelog}
\begin{itemize}
\item 2016/02/22 - Change math markup in \attr{len} attributes to use
asciidoc ``latexmath:[$'' and ``$]'' delimiters.
\item 2016/02/19 - Add \attr{successcodes} and \attr{errorcodes} attributes
of \tag{command} tags. Add a subsection to the introduction
describing the schema choices and how to file issues against
the registry.
\item 2016/02/07 - Add \attr{vendorids} tags for Khronos vendor IDs.
\item 2015/12/10 - Add \attr{author} and \attr{contact} attributes for
\tag{extension} tags.

View File

@ -49,11 +49,11 @@ Vendorids = element vendorids {
# <vendorid> defines a single vendor ID.
# name - author ID of the vendor
# id - Khronos vendor ID
# id - Khronos vendor ID (hexadecimal constant starting at 0x10000)
# comment - unused
Tag = element tag {
Vendorid = element vendorid {
attribute name { text } ,
attribute author { text } ,
attribute id { text } ,
Comment ?
}
@ -244,6 +244,10 @@ Commands = element commands {
}
# <command> defines a single command
#
# The possible attributes are not described in this comment block yet, but
# are in readme.pdf.
#
# <proto> is the C function prototype, including the return type
# <param> are function parameters, in order
# len - if the member is an array, len may be one or more of the following
@ -268,6 +272,8 @@ Commands = element commands {
# are related to them and also require external synchronization.
Command = element command {
attribute queues { text } ? ,
attribute successcodes { text } ? ,
attribute errorcodes { text } ? ,
attribute renderpass { text } ? ,
attribute cmdbufferlevel { text } ? ,
Comment ? ,
@ -347,8 +353,7 @@ Extensions = element extensions {
# or "disabled" to never generate output.
# author - name of the author (usually a company or project name)
# contact - contact responsible for the tag (name and contact information)
# In addition, <require> / <remove> tags also support an
# api attribute:
# In addition, <require> / <remove> tags also support an api attribute:
# api - only require/remove these features for the matching API.
# Not a regular expression.
Extension = element extension {

View File

@ -36,6 +36,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<!-- SECTION: Vulkan vendor IDs for physical devices without PCI vendor IDs -->
<vendorids>
<vendorid name="KHR" id="0x10000" comment="This is the next available Khronos vendor ID"/>
<vendorid name="VIV" id="0x10001" comment="Vivante vendor ID"/>
<vendorid name="VSI" id="0x10002" comment="VeriSilicon vendor ID"/>
</vendorids>
<!-- SECTION: Vulkan vendor/author tags for extensions and layers -->
@ -49,6 +51,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<tag name="NV" author="NVIDIA Corporation" contact="Daniel Koch @dgkoch"/>
<tag name="NVX" author="NVIDIA Corporation" contact="Daniel Koch @dgkoch"/>
<tag name="VIV" author="Vivante Corporation" contact="Yanjun Zhang @yanjunzhang"/>
<tag name="VSI" author="VeriSilicon Holdings Co., Ltd." contact="Yanjun Zhang @yanjunzhang"/>
<tag name="KDAB" author="KDAB" contact="Sean Harmer @seanharmer"/>
<tag name="ANDROID" author="Google, Inc." contact="Jesse Hall @jessehall"/>
<tag name="CHROMIUM" author="Google, Inc." contact="Jesse Hall @jessehall"/>
@ -94,7 +97,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<type category="define">#define <name>VK_VERSION_PATCH</name>(version) ((uint32_t)(version) &amp; 0xfff)</type>
<type category="define">// Vulkan API version supported by this file
#define <name>VK_API_VERSION</name> <type>VK_MAKE_VERSION</type>(1, 0, 3)</type>
#define <name>VK_API_VERSION</name> <type>VK_MAKE_VERSION</type>(1, 0, 4)</type>
<type category="define">
@ -741,8 +744,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<validity>
<usage>The value of pname:offset must: be less than the size of pname:buffer</usage>
<usage>The sum of pname:offset and pname:size must: be less than or equal to than the size of pname:buffer</usage>
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be VK_QUEUE_FAMILY_IGNORED</usage>
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see &lt;&lt;devsandqueues-queueprops&gt;&gt;)</usage>
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED</usage>
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see &lt;&lt;devsandqueues-queueprops&gt;&gt;)</usage>
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier</usage>
</validity>
</type>
@ -760,8 +763,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<validity>
<usage>pname:oldLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED, ename:VK_IMAGE_LAYOUT_PREINITIALIZED or the current layout of the image region affected by the barrier</usage>
<usage>pname:newLayout mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED</usage>
<usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be VK_QUEUE_FAMILY_IGNORED</usage>
<usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see &lt;&lt;devsandqueues-queueprops&gt;&gt;)</usage>
<usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED</usage>
<usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see &lt;&lt;devsandqueues-queueprops&gt;&gt;)</usage>
<usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier</usage>
<usage>pname:subresourceRange must: be a valid subresource range for the image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
<usage>If pname:image has a depth/stencil format with both depth and stencil components, then pname:aspectMask member of pname:subresourceRange must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT</usage>
@ -819,20 +822,20 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If the &lt;&lt;features-features-textureCompressionBC,BC texture compression&gt;&gt; feature is not enabled, pname:format mustnot: be ename:VK_FORMAT_BC1_RGB_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGB_SRGB_BLOCK, ename:VK_FORMAT_BC1_RGBA_UNORM_BLOCK, ename:VK_FORMAT_BC1_RGBA_SRGB_BLOCK, ename:VK_FORMAT_BC2_UNORM_BLOCK, ename:VK_FORMAT_BC2_SRGB_BLOCK, ename:VK_FORMAT_BC3_UNORM_BLOCK, ename:VK_FORMAT_BC3_SRGB_BLOCK, ename:VK_FORMAT_BC4_UNORM_BLOCK, ename:VK_FORMAT_BC4_SNORM_BLOCK, ename:VK_FORMAT_BC5_UNORM_BLOCK, ename:VK_FORMAT_BC5_SNORM_BLOCK, ename:VK_FORMAT_BC6H_UFLOAT_BLOCK, ename:VK_FORMAT_BC6H_SFLOAT_BLOCK, ename:VK_FORMAT_BC7_UNORM_BLOCK, or ename:VK_FORMAT_BC7_SRGB_BLOCK</usage>
<usage>If the &lt;&lt;features-features-shaderStorageImageMultisample,multisampled storage images&gt;&gt; feature is not enabled, and pname:usage contains ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:samples must: be ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseBinding,sparse bindings&gt;&gt; feature is not enabled, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidencyImage2D,sparse residency for 2D images&gt;&gt; feature is not enabled, and pname:imageType is VK_IMAGE_TYPE_2D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidencyImage3D,sparse residency for 3D images&gt;&gt; feature is not enabled, and pname:imageType is VK_IMAGE_TYPE_3D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency2Samples,sparse residency for images with 2 samples&gt;&gt; feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_2_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency4Samples,sparse residency for images with 4 samples&gt;&gt; feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_4_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency8Samples,sparse residency for images with 8 samples&gt;&gt; feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_8_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency16Samples,sparse residency for images with 16 samples&gt;&gt; feature is not enabled, pname:imageType is VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_16_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidencyImage2D,sparse residency for 2D images&gt;&gt; feature is not enabled, and pname:imageType is ename:VK_IMAGE_TYPE_2D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidencyImage3D,sparse residency for 3D images&gt;&gt; feature is not enabled, and pname:imageType is ename:VK_IMAGE_TYPE_3D, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency2Samples,sparse residency for images with 2 samples&gt;&gt; feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_2_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency4Samples,sparse residency for images with 4 samples&gt;&gt; feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_4_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency8Samples,sparse residency for images with 8 samples&gt;&gt; feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_8_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidency16Samples,sparse residency for images with 16 samples&gt;&gt; feature is not enabled, pname:imageType is ename:VK_IMAGE_TYPE_2D, and pname:samples is ename:VK_SAMPLE_COUNT_16_BIT, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_LINEAR, and the value of sname:VkFormatProperties::pname:linearTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_SAMPLED_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</usage>
<usage>If the value of pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and the value of sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</usage>
<usage>If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
</validity>
</type>
@ -1037,7 +1040,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
<member optional="true"><type>VkShaderModuleCreateFlags</type> <name>flags</name></member> <!-- Reserved -->
<member><type>size_t</type> <name>codeSize</name></member> <!-- Specified in bytes -->
<member len="codeSize/4">const <type>uint32_t</type>* <name>pCode</name></member> <!-- Binary code of size codeSize -->
<member len="latexmath:[$codeSize \over 4$]">const <type>uint32_t</type>* <name>pCode</name></member> <!-- Binary code of size codeSize -->
<validity>
<usage>pname:codeSize must: be greater than 0</usage>
<usage>pname:codeSize must: be a multiple of 4</usage>
@ -1118,8 +1121,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member len="null-terminated">const <type>char</type>* <name>pName</name></member> <!-- Null-terminated entry point name -->
<member optional="true">const <type>VkSpecializationInfo</type>* <name>pSpecializationInfo</name></member>
<validity>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:stage mustnot: be pname:VK_SHADER_STAGE_GEOMETRY_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:stage mustnot: be pname:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or pname:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:stage mustnot: be ename:VK_SHADER_STAGE_GEOMETRY_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:stage mustnot: be ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</usage>
<usage>pname:stage mustnot: be ename:VK_SHADER_STAGE_ALL_GRAPHICS, or ename:VK_SHADER_STAGE_ALL</usage>
<usage>pname:pName must: be the name of an code:OpEntryPoint in pname:module with an execution model that matches pname:stage</usage>
<usage>If the identified entry point includes any variable in its interface that is declared with the code:ClipDistance code:BuiltIn decoration, that variable mustnot: have an array size greater than sname:VkPhysicalDeviceLimits::pname:maxClipDistances</usage>
@ -1201,7 +1204,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<validity>
<usage>If pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_POINT_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY or ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, the value of pname:primitiveRestartEnable must: be ename:VK_FALSE</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:topology mustnot: be any of ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY or ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:topology mustnot: be VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:topology mustnot: be ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</usage>
</validity>
</type>
<type category="struct" name="VkPipelineTessellationStateCreateInfo">
@ -1255,7 +1258,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member><type>VkSampleCountFlagBits</type> <name>rasterizationSamples</name></member> <!-- Number of samples used for rasterization -->
<member><type>VkBool32</type> <name>sampleShadingEnable</name></member> <!-- optional (GL45) -->
<member><type>float</type> <name>minSampleShading</name></member> <!-- optional (GL45) -->
<member optional="true" len="latexmath:[$\lceil{\mathit{rasterizationSamples} \over 32}\rceil$]">const <type>VkSampleMask</type>* <name>pSampleMask</name></member> <!-- Array of sampleMask words, containing ceil(rasterSamples/32) words -->
<member optional="true" len="latexmath:[$\lceil{\mathit{rasterizationSamples} \over 32}\rceil$]">const <type>VkSampleMask</type>* <name>pSampleMask</name></member> <!-- Array of sampleMask words -->
<member><type>VkBool32</type> <name>alphaToCoverageEnable</name></member>
<member><type>VkBool32</type> <name>alphaToOneEnable</name></member>
<validity>
@ -1273,10 +1276,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member><type>VkBlendOp</type> <name>alphaBlendOp</name></member>
<member optional="true"><type>VkColorComponentFlags</type> <name>colorWriteMask</name></member>
<validity>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcColorBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstColorBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcAlphaBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstAlphaBlendFactor mustnot: be pname:VK_BLEND_SRC1_COLOR, pname:VK_BLEND_ONE_MINUS_SRC1_COLOR, pname:VK_BLEND_SRC1_ALPHA, or pname:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstColorBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:srcAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
<usage>If the &lt;&lt;features-features-dualSrcBlend,dual source blending&gt;&gt; feature is not enabled, pname:dstAlphaBlendFactor mustnot: be ename:VK_BLEND_SRC1_COLOR, ename:VK_BLEND_ONE_MINUS_SRC1_COLOR, ename:VK_BLEND_SRC1_ALPHA, or ename:VK_BLEND_ONE_MINUS_SRC1_ALPHA</usage>
</validity>
</type>
<type category="struct" name="VkPipelineColorBlendStateCreateInfo">
@ -1457,6 +1460,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If pname:unnormalizedCoordinates is ename:VK_TRUE, pname:anisotropyEnable must: be ename:VK_FALSE</usage>
<usage>If pname:unnormalizedCoordinates is ename:VK_TRUE, pname:compareEnable must: be ename:VK_FALSE</usage>
<usage>If any of pname:addressModeU, pname:addressModeV or pname:addressModeW are ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, pname:borderColor must: be a valid elink:VkBorderColor value</usage>
<usage>If the VK_KHR_mirror_clamp_to_edge extension is not enabled, pname:addressModeU, pname:addressModeV and pname:addressModeW mustnot: be ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</usage>
<usage>If pname:compareEnable is ename:VK_TRUE, pname:compareOp must: be a valid elink:VkCompareOp value</usage>
</validity>
</type>
@ -1586,10 +1590,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member optional="true"><type>VkAccessFlags</type> <name>dstAccessMask</name></member> <!-- Memory accesses from the destination of the dependency to synchronize -->
<member optional="true"><type>VkDependencyFlags</type> <name>dependencyFlags</name></member>
<validity>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>The value of pname:srcSubpass must: be less than or equal to pname:dstSubpass, unless one of them is ename:VK_SUBPASS_EXTERNAL, to avoid cyclic dependencies and ensure a valid execution order</usage>
<usage>The values of pname:srcSubpass and pname:dstSubpass mustnot: both be equal to ename:VK_SUBPASS_EXTERNAL</usage>
</validity>
@ -1904,7 +1908,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member>
<validity>
<usage>Any given element of pname:pSignalSemaphores must: currently be unsignalled</usage>
<usage>Any given element of pname:pCommandBuffers must: either have been recorded with the 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>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 was created with ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, it mustnot: have been previously submitted without re-recording that command buffer</usage>
@ -1912,8 +1916,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>Any given element of pname:pCommandBuffers must: have been created on a sname:VkCommandPool that was created for the same queue family that the calling command's pname:queue belongs to</usage>
<usage>Any given element of pname:pCommandBuffers mustnot: have been created with ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY</usage>
<usage>Any given element of sname:VkSemaphore in pname:pWaitSemaphores must: refer to a prior signal of that sname:VkSemaphore that won't be consumed by any other wait on that semaphore</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
</validity>
</type>
<!-- WSI extensions -->
@ -2100,7 +2104,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
</validity>
</type>
<type category="struct" name="VkDebugReportCallbackCreateInfoEXT">
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO -->
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT -->
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
<member><type>VkDebugReportFlagsEXT</type> <name>flags</name></member> <!-- Indicates which events call this callback-->
<member><type>PFN_vkDebugReportCallbackEXT</type> <name>pfnCallback</name></member> <!-- Function pointer of a callback function-->
@ -2254,7 +2258,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="1" name="VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"/>
<enum value="2" name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"/>
<enum value="3" name="VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"/>
<enum value="4" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"/>
<!-- <enum value="4" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Reserved for VK_KHR_sampler_mirror_clamp_to_edge, do not alias!"/> -->
</enums>
<enums name="VkCompareOp" type="enum" expand="VK_COMPARE_OP">
<enum value="0" name="VK_COMPARE_OP_NEVER"/>
@ -2868,14 +2872,14 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum bitpos="7" name="VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"/>
<enum bitpos="8" name="VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"/>
</enums>
<enums namespace="VK" name="VkDebugReportFlagBitsEXT" type="bitmask">
<enums name="VkDebugReportFlagBitsEXT" type="bitmask">
<enum bitpos="0" name="VK_DEBUG_REPORT_INFORMATION_BIT_EXT"/>
<enum bitpos="1" name="VK_DEBUG_REPORT_WARNING_BIT_EXT"/>
<enum bitpos="2" name="VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"/>
<enum bitpos="3" name="VK_DEBUG_REPORT_ERROR_BIT_EXT"/>
<enum bitpos="4" name="VK_DEBUG_REPORT_DEBUG_BIT_EXT"/>
</enums>
<enums namespace="VK" name="VkDebugReportObjectTypeEXT" type="enum">
<enums name="VkDebugReportObjectTypeEXT" type="enum">
<enum value="0" name="VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"/>
<enum value="1" name="VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"/>
<enum value="2" name="VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"/>
@ -2906,7 +2910,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="27" name="VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"/>
<enum value="28" name="VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT"/>
</enums>
<enums namespace="VK" name="VkDebugReportErrorEXT" type="enum">
<enums name="VkDebugReportErrorEXT" type="enum">
<enum value="0" name="VK_DEBUG_REPORT_ERROR_NONE_EXT"/> <!-- Used for INFO & other non-error messages -->
<enum value="1" name="VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT"/> <!-- Callbacks were not destroyed prior to calling DestroyInstance -->
</enums>
@ -3187,7 +3191,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<proto><type>void</type> <name>vkGetImageSparseMemoryRequirements</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkImage</type> <name>image</name></param>
<param><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
<param optional="false,true"><type>uint32_t</type>* <name>pSparseMemoryRequirementCount</name></param>
<param optional="true" len="pSparseMemoryRequirementCount"><type>VkSparseImageMemoryRequirements</type>* <name>pSparseMemoryRequirements</name></param>
<validity>
<usage>pname:image must: have been created with the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flag</usage>
@ -4045,8 +4049,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The sum of the pname:srcOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer</usage>
<usage>The sum of the pname:dstOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer</usage>
<usage>The union of the source regions, and the union of the destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
</validity>
</command>
<command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4062,12 +4066,12 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The source region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage</usage>
<usage>The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage</usage>
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined &lt;&lt;copies-images-format-compatibility, below&gt;&gt;</usage>
<usage>The sample count of pname:srcImage and pname:dstImage must: match</usage>
</validity>
@ -4087,13 +4091,13 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage</usage>
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>pname:srcImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>pname:dstImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The sample count of pname:srcImage and pname:dstImage must: both be equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>If either of pname:srcImage or pname:dstImage was created with a signed integer elink:VkFormat, the other must: also have been created with a signed integer elink:VkFormat</usage>
<usage>If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat</usage>
@ -4113,11 +4117,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The buffer region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcBuffer</usage>
<usage>The image region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage</usage>
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:dstImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
</validity>
</command>
<command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4132,11 +4136,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The image region specified by a given element of pname:pRegions must: be a region that is contained within pname:srcImage</usage>
<usage>The buffer region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstBuffer</usage>
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcImage must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
</validity>
</command>
<command queues="transfer,graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4145,13 +4149,13 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param><type>VkBuffer</type> <name>dstBuffer</name></param>
<param><type>VkDeviceSize</type> <name>dstOffset</name></param>
<param><type>VkDeviceSize</type> <name>dataSize</name></param>
<param len="dataSize/4">const <type>uint32_t</type>* <name>pData</name></param>
<param len="latexmath:[$dataSize \over 4$]">const <type>uint32_t</type>* <name>pData</name></param>
<validity>
<usage>The sum of pname:dstOffset and pname:dataSize must: be less than or equal to the size of pname:dstBuffer</usage>
<usage>pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>The value of pname:dstOffset must: be a multiple of `4`</usage>
<usage>The value of pname:dataSize must: be greater than `0`</usage>
<usage>The value of pname:dataSize must: be less than `65536`</usage>
<usage>The value of pname:dataSize must: be less than or equal to `65536`</usage>
<usage>The value of pname:dataSize must: be a multiple of `4`</usage>
</validity>
</command>
@ -4164,7 +4168,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param><type>uint32_t</type> <name>data</name></param>
<validity>
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:dstOffset and pname:size must: be less than or equal to the size of pname:dstBuffer</usage>
<usage>pname:dstBuffer must: have been created with pname:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstOffset must: be a multiple of `4`</usage>
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be a multiple of `4`</usage>
</validity>
@ -4178,9 +4182,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param><type>uint32_t</type> <name>rangeCount</name></param>
<param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
<validity>
<usage>pname:image must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage>
</validity>
</command>
@ -4193,9 +4197,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param><type>uint32_t</type> <name>rangeCount</name></param>
<param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
<validity>
<usage>pname:image must: have been created with pname:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage>
</validity>
</command>
@ -4228,9 +4232,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:srcImage must: have a sample count equal to any valid sample count value other than ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
@ -4242,8 +4246,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param><type>VkEvent</type> <name>event</name></param>
<param><type>VkPipelineStageFlags</type> <name>stageMask</name></param>
<validity>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
</validity>
</command>
<command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4252,8 +4256,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param><type>VkEvent</type> <name>event</name></param>
<param><type>VkPipelineStageFlags</type> <name>stageMask</name></param>
<validity>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
</validity>
</command>
<command queues="graphics,compute" renderpass="both" cmdbufferlevel="primary,secondary">
@ -4270,11 +4274,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param>
<param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param>
<validity>
<usage>pname:srcStageMask must: be the bitwise OR of the pname:stageMask parameter used in previous calls to fname:vkCmdSetEvent with any of the members of pname:pEvents and VK_PIPELINE_STAGE_HOST_BIT if any of the members of pname:pEvents was set using fname:vkSetEvent</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>pname:srcStageMask must: be the bitwise OR of the pname:stageMask parameter used in previous calls to fname:vkCmdSetEvent with any of the members of pname:pEvents and ename:VK_PIPELINE_STAGE_HOST_BIT if any of the members of pname:pEvents was set using fname:vkSetEvent</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If pname:pEvents includes one or more events that will be signaled by fname:vkSetEvent after pname:commandBuffer has been submitted to a queue, then fname:vkCmdWaitEvents mustnot: be called inside a render pass instance</usage>
</validity>
</command>
@ -4291,10 +4295,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="true"><type>uint32_t</type> <name>imageMemoryBarrierCount</name></param>
<param len="imageMemoryBarrierCount">const <type>VkImageMemoryBarrier</type>* <name>pImageMemoryBarriers</name></param>
<validity>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-geometryShader,geometry shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If the &lt;&lt;features-features-tessellationShader,tessellation shaders&gt;&gt; feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or pname:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</usage>
<usage>If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must: declare at least one self-dependency from the current subpass to itself - see &lt;&lt;synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency&gt;&gt;</usage>
</validity>
</command>
@ -4414,8 +4418,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param><type>uint32_t</type> <name>commandBufferCount</name></param>
<param len="commandBufferCount">const <type>VkCommandBuffer</type>* <name>pCommandBuffers</name></param>
<validity>
<usage>pname:commandBuffer must: have been created with a pname:level value of VK_COMMAND_BUFFER_LEVEL_PRIMARY</usage>
<usage>Any given element of pname:pCommandBuffers must: have been created with a pname:level value of VK_COMMAND_BUFFER_LEVEL_SECONDARY</usage>
<usage>pname:commandBuffer must: have been created with a pname:level value of ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY</usage>
<usage>Any given element of pname:pCommandBuffers must: have been created with a pname:level value of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY</usage>
<usage>Any given element of pname:pCommandBuffers mustnot: be already pending execution in pname:commandBuffer, or appear twice in pname:pCommandBuffers, unless it was created with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag</usage>
<usage>Any given element of pname:pCommandBuffers mustnot: be already pending execution in any other sname:VkCommandBuffer, unless it was created with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag</usage>
<usage>Any given element of pname:pCommandBuffers must: be in the executable state</usage>
@ -4969,6 +4973,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="&quot;VK_KHR_display&quot;" name="VK_KHR_DISPLAY_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"/>
<type name="VkDisplayPlaneAlphaFlagsKHR"/>
<type name="VkDisplayPlaneAlphaFlagBitsKHR"/>
<type name="VkDisplayPropertiesKHR"/>
<type name="VkDisplayModeParametersKHR"/>
@ -5070,10 +5075,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
</extension>
<extension name="VK_EXT_debug_report" number="12" author="Google, Inc." contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
<require>
<enum value="1" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
<enum value="2" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_debug_report&quot;" name="VK_EXT_DEBUG_REPORT_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"/>
<enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_VALIDATION_FAILED_EXT"/>
<enum value="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT"/>
<type name="VkDebugReportObjectTypeEXT"/>
<type name="VkDebugReportErrorEXT"/>
<command name="vkCreateDebugReportCallbackEXT"/>
@ -5095,5 +5101,12 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum offset="0" dir="-" extends="VkResult" name="VK_NV_EXTENSION_1_ERROR"/>
</require>
</extension>
<extension name="VK_KHR_sampler_mirror_clamp_to_edge" number="15" author="KHR" contact="Tobias Hector @tobias" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_sampler_mirror_clamp_to_edge&quot;" name="VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME"/>
<enum value="4" extends="VkSamplerAddressMode" name="VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE" comment="Note that this defines what was previously a core enum, and so uses the 'value' attribute rather than 'offset', and doesn't have a suffix. This is a special case, and should not be repeated"/>
</require>
</extension>
</extensions>
</registry>

View File

@ -25,8 +25,8 @@
*/
#ifndef __VK_PLATFORM_H__
#define __VK_PLATFORM_H__
#ifndef VK_PLATFORM_H_
#define VK_PLATFORM_H_
#ifdef __cplusplus
extern "C"
@ -124,4 +124,4 @@ extern "C"
#include <xcb/xcb.h>
#endif
#endif // __VK_PLATFORM_H__
#endif

View File

@ -1,5 +1,5 @@
#ifndef __vulkan_h_
#define __vulkan_h_ 1
#ifndef VULKAN_H_
#define VULKAN_H_ 1
#ifdef __cplusplus
extern "C" {
@ -41,7 +41,7 @@ extern "C" {
(((major) << 22) | ((minor) << 12) | (patch))
// Vulkan API version supported by this file
#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 3)
#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 4)
#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
@ -209,7 +209,7 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
@ -701,8 +701,8 @@ typedef enum VkSamplerAddressMode {
VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
} VkSamplerAddressMode;
@ -3326,8 +3326,8 @@ typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
} VkDisplayPlaneAlphaFlagBitsKHR;
typedef VkFlags VkDisplayModeCreateFlagsKHR;
typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
typedef VkFlags VkDisplayModeCreateFlagsKHR;
typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
typedef struct VkDisplayPropertiesKHR {
@ -3667,11 +3667,17 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
#endif
#endif /* VK_USE_PLATFORM_WIN32_KHR */
#define VK_KHR_sampler_mirror_clamp_to_edge 1
#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
#define VK_EXT_debug_report 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 1
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 2
#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
#define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
typedef enum VkDebugReportObjectTypeEXT {