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:
parent
8555ed865c
commit
5a4c5e5925
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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._
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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.
|
@ -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.
|
||||
|
|
|
@ -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 {
|
||||
|
|
181
src/spec/vk.xml
181
src/spec/vk.xml
|
@ -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) & 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 <<devsandqueues-queueprops>>)</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 <<devsandqueues-queueprops>>)</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 <<devsandqueues-queueprops>>)</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 <<devsandqueues-queueprops>>)</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 <<resources-image-views>>)</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 <<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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>If the <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stage mustnot: be pname:VK_SHADER_STAGE_GEOMETRY_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stage mustnot: be ename:VK_SHADER_STAGE_GEOMETRY_BIT</usage>
|
||||
<usage>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</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 <<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</usage>
|
||||
<usage>If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:topology mustnot: be VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</usage>
|
||||
<usage>If the <<features-features-tessellationShader,tessellation shaders>> 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 <<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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, any given element of pname:pWaitDstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<copies-images-format-compatibility, below>></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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain pname:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:srcStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:dstStageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</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 <<synchronization-pipeline-barriers-subpass-self-dependencies,Subpass Self-dependency>></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=""VK_KHR_display"" 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=""VK_EXT_debug_report"" 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=""VK_KHR_sampler_mirror_clamp_to_edge"" 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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue