Change log for October 6, 2017 Vulkan 1.0.62 spec update:

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

Github Issues:

  * Move asciidoc conditionals for `VK_KHR_maintenance1` in
    slink:VkDescriptorSetAllocateInfo so valid usage statements for
    `VK_KHR_push_descriptor` aren't accidentally removed when the first
    extension isn't enabled (public issue 573).
  * Fixed errors in API example code for
    flink:vkUpdateDescriptorSetWithTemplateKHR and
    flink:vkCmdPushDescriptorSetWithTemplateKHR (public issue 577).

Internal Issues:

  * Specify constraints on concurrent access to fences that share payload in
    the <<synchronization-fences-importing, Importing Fence Payloads>> and
    <<synchronization-semaphores-waiting-state, Semaphore State Requirements
    For Wait Operations>> sections (internal issue 820).
  * Define the term "`retired swapchain`", reorganize some swapchain
    language, and improve language for pname:oldSwapchain in
    flink:VkSwapchainCreateInfoKHR, the <<swapchain-wsi-image-create-info>>
    table, flink:vkDestroySwapchainKHR, and flink:vkAcquireNextImage2KHX
    (internal issue 869).
  * Describe in the <<writing-arrays, Describing Properties of Array
    Elements>> section of the style guide how and when to use "`each`" and
    "`any`" to refer to properties of array elements, and make those uses in
    the specification consistent (internal issue 884).
  * Clarified that events cannot be used for cross-queue synchronization in
    the <<synchronization-events, Events>> section and for
    flink:vkCmdWaitEvents (internal issue 970).
  * Add success and error codes to +vk.xml+ for
    flink:vkCreateValidationCacheEXT (internal issue 995).
  * Clarify aspect mask usage for image memory barriers of multi-plane
    images in slink:VkImageSubresourceRange, slink:VkImageMemoryBarrier, and
    the <<textures-layout-validation, Layout Validation>> section (internal
    issue 996).

Other Issues:

  * Fixed typo in flink:VkRenderPassSampleLocationsBeginInfoEXT (renamed
    field pname:pSubpassSampleLocations to
    pname:pPostSubpassSampleLocations).
  * Add missing buffer usage requirements for indirect draws in
    flink:vkCmdDrawIndirect, flink:vkCmdDrawIndirectCountAMD,
    flink:vkCmdDrawIndexedIndirect, and
    flink:vlCmdDrawIndexedIndirectCountAMD.
  * Modify Makefile to allow specification to build in git "`detached HEAD`"
    state.
  * Update valid usage ID generation script to allow recursively operating
    on all `.txt` files in a specified directory, and move the `startVUID`
    tracking information into a separate python file that is automatically
    updated by the script.

New Extensions:

  * Add +vk.xml+ entries for pending `VK_ANDROID_native_buffer` extension
    (note, this extension is not yet enabled).
  * `VK_AMD_shader_image_load_store_lod`
This commit is contained in:
Jon Leech 2017-10-06 21:51:59 -07:00
parent d893b6a79a
commit 6012d138c7
36 changed files with 1147 additions and 541 deletions

1
.gitignore vendored
View File

@ -40,6 +40,7 @@ __pycache__
doc/specs/vulkan/api
doc/specs/vulkan/hostsynctable
doc/specs/vulkan/validity
doc/specs/vulkan/appendices/meta
# Files generated by extraction from spec source
doc/specs/vulkan/man/PFN*.txt

View File

@ -8,6 +8,69 @@ public issues.
-----------------------------------------------------
Change log for October 6, 2017 Vulkan 1.0.62 spec update:
* Bump API patch number and header version number to 62 for this update.
Github Issues:
* Move asciidoc conditionals for `VK_KHR_maintenance1` in
slink:VkDescriptorSetAllocateInfo so valid usage statements for
`VK_KHR_push_descriptor` aren't accidentally removed when the first
extension isn't enabled (public issue 573).
* Fixed errors in API example code for
flink:vkUpdateDescriptorSetWithTemplateKHR and
flink:vkCmdPushDescriptorSetWithTemplateKHR (public issue 577).
Internal Issues:
* Specify constraints on concurrent access to fences that share payload in
the <<synchronization-fences-importing, Importing Fence Payloads>> and
<<synchronization-semaphores-waiting-state, Semaphore State Requirements
For Wait Operations>> sections (internal issue 820).
* Define the term "`retired swapchain`", reorganize some swapchain
language, and improve language for pname:oldSwapchain in
flink:VkSwapchainCreateInfoKHR, the <<swapchain-wsi-image-create-info>>
table, flink:vkDestroySwapchainKHR, and flink:vkAcquireNextImage2KHX
(internal issue 869).
* Describe in the <<writing-arrays, Describing Properties of Array
Elements>> section of the style guide how and when to use "`each`" and
"`any`" to refer to properties of array elements, and make those uses in
the specification consistent (internal issue 884).
* Clarified that events cannot be used for cross-queue synchronization in
the <<synchronization-events, Events>> section and for
flink:vkCmdWaitEvents (internal issue 970).
* Add success and error codes to +vk.xml+ for
flink:vkCreateValidationCacheEXT (internal issue 995).
* Clarify aspect mask usage for image memory barriers of multi-plane
images in slink:VkImageSubresourceRange, slink:VkImageMemoryBarrier, and
the <<textures-layout-validation, Layout Validation>> section (internal
issue 996).
Other Issues:
* Fixed typo in flink:VkRenderPassSampleLocationsBeginInfoEXT (renamed
field pname:pSubpassSampleLocations to
pname:pPostSubpassSampleLocations).
* Add missing buffer usage requirements for indirect draws in
flink:vkCmdDrawIndirect, flink:vkCmdDrawIndirectCountAMD,
flink:vkCmdDrawIndexedIndirect, and
flink:vlCmdDrawIndexedIndirectCountAMD.
* Modify Makefile to allow specification to build in git "`detached HEAD`"
state.
* Update valid usage ID generation script to allow recursively operating
on all `.txt` files in a specified directory, and move the `startVUID`
tracking information into a separate python file that is automatically
updated by the script.
New Extensions:
* Add +vk.xml+ entries for pending `VK_ANDROID_native_buffer` extension
(note, this extension is not yet enabled).
* `VK_AMD_shader_image_load_store_lod`
-----------------------------------------------------
Change log for September 15, 2017 Vulkan 1.0.61 spec update:
* Bump API patch number and header version number to 61 for this update.

View File

@ -87,25 +87,19 @@ VERBOSE =
# $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
SPECREVISION = 1.0.61
SPECREVISION = 1.0.62
# Spell out RFC2822 format as not all date commands support -R
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
# Generate Asciidoc attributes for spec remark
GITHEAD := ../../../.git/logs/HEAD
ifeq ($(wildcard $(GITHEAD)),)
# If GITHEAD does not exist, don't include branch info.
SPECREMARK = Git branch information not available
else
# Could use `git log -1 --format="%cd"` to get branch commit date
# This used to be a dependency in the spec html/pdf targets,
# but that's likely to lead to merge conflicts. Just regenerate
# when pushing a new spec for review to the sandbox.
# The dependency on HEAD is per the suggestion in
# http://neugierig.org/software/blog/2014/11/binary-revisions.html
SPECREMARK = from git branch: $(shell echo `git symbolic-ref --short HEAD`) \
SPECREMARK = from git branch: $(shell echo `git symbolic-ref --short HEAD 2> /dev/null || echo Git branch information not available`) \
commit: $(shell echo `git log -1 --format="%H"`)
endif
ATTRIBOPTS = -a revnumber="$(SPECREVISION)" \
-a revdate="$(SPECDATE)" \

View File

@ -0,0 +1,26 @@
include::meta/VK_AMD_shader_image_load_store_lod.txt[]
*Last Modified Date*::
08/21/2017
*Interactions and External Dependencies*::
- This extension requires the
https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_shader_image_load_store_lod.html[+SPV_AMD_shader_image_load_store_lod+]
SPIR-V extension.
- This extension requires
https://www.khronos.org/registry/OpenGL/extensions/AMD/AMD_shader_image_load_store_lod.txt[+GL_AMD_shader_image_load_store_lod+]
for GLSL-based source languages.
*IP Status*::
No known IP claims.
*Contributors*::
- Dominik Witczak, AMD
- Qun Lin, AMD
- Rex Xu, AMD
This extension adds support for the following SPIR-V extension in Vulkan:
* https://www.khronos.org/registry/spir-v/extensions/AMD/SPV_AMD_shader_image_load_store_lod.html[+SPV_AMD_shader_image_load_store_lod+]
=== Version History
* Revision 1, 2017-08-21 (Dominik Witczak)
- Initial draft

View File

@ -375,6 +375,10 @@ ifdef::VK_AMD_shader_fragment_mask[]
include::VK_AMD_shader_fragment_mask.txt[]
endif::VK_AMD_shader_fragment_mask[]
ifdef::VK_AMD_shader_image_load_store_lod[]
include::VK_AMD_shader_image_load_store_lod.txt[]
endif::VK_AMD_shader_image_load_store_lod[]
ifdef::VK_AMD_shader_trinary_minmax[]
include::VK_AMD_shader_trinary_minmax.txt[]
endif::VK_AMD_shader_trinary_minmax[]

View File

@ -977,6 +977,13 @@ Resolve Attachment::
multisample resolve operation from the corresponding color attachment at
the end of the subpass.
Retired Swapchain::
A swapchain that has been used as the pname:oldSwapchain parameter to
flink:vkCreateSwapchainKHR.
Images cannot be acquired from a retired swapchain, however images that
were acquired (but not presented) before the swapchain was retired can:
be presented.
Sampled Image::
A descriptor type that represents an image view, and supports filtered
(sampled) and unfiltered read-only acccess in a shader.

View File

@ -106,6 +106,10 @@ ifdef::VK_KHX_device_group[]
[[spirvenv-capabilities-table-devicegroup]]
| code:DeviceGroup | <<VK_KHX_device_group,VK_KHX_device_group>>
endif::VK_KHX_device_group[]
ifdef::VK_AMD_shader_image_load_store_lod[]
[[spirvenv-capabilities-table-imagereadwritelodamd]]
| code:ImageReadWriteLodAMD | <<VK_AMD_shader_image_load_store_lod,VK_AMD_shader_image_load_store_lod>>
endif::VK_AMD_shader_image_load_store_lod[]
ifdef::VK_AMD_texture_gather_bias_lod[]
[[spirvenv-capabilities-table-imagegatherbiaslodamd]]
| code:ImageGatherBiasLodAMD | <<VK_AMD_texture_gather_bias_lod,VK_AMD_texture_gather_bias_lod>>
@ -174,6 +178,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the +SPV_AMD_shader_ballot+ SPIR-V extension.
endif::VK_AMD_shader_ballot[]
ifdef::VK_AMD_shader_image_load_store_lod[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the +SPV_AMD_shader_image_load_store_lod+ SPIR-V extension.
endif::VK_AMD_shader_image_load_store_lod[]
ifdef::VK_AMD_shader_trinary_minmax[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the +SPV_AMD_shader_trinary_minmax+ SPIR-V extension.

View File

@ -8,7 +8,7 @@ as well as weights [eq]#{alpha}# and [eq]#{beta}#.
++++++++++++++++++++++++
\begin{aligned}
i_{0} & = \left \lfloor u - \frac{3}{2} \right \rfloor & i_{1} & = i_{0} + 1 & i_{2} & = i_{1} + 1 & i_{3} & = i_{2} + 1 \\[1em]
j_{0} & = \left \lfloor u - \frac{3}{2} \right \rfloor & j_{1} & = j_{0} + 1 & j_{2} & = j_{1} + 1 & j_{3} & = j_{2} + 1 \\
j_{0} & = \left \lfloor v - \frac{3}{2} \right \rfloor & j_{1} & = j_{0} + 1 & j_{2} & = j_{1} + 1 & j_{3} & = j_{2} + 1 \\
\\
\alpha & = \mathbin{frac} \left ( u - \frac{1}{2} \right ) \\[1em]
\beta & = \mathbin{frac} \left ( v - \frac{1}{2} \right )

View File

@ -1,5 +1,7 @@
If a swapchain associated with a display surface is destroyed and there are
no valid descendants of that swapchain, the implementation must: either
revert any display resources modified by presenting images with the
swapchain to their state prior to the first present performed with the
swapchain and its ancestors, or leave such resources in their current state.
When a swapchain associated with a display surface is destroyed, if the
image most recently presented to the display surface is from the swapchain
being destroyed, then either any display resources modified by presenting
images from any swapchain associated with the display surface must: be
reverted by the implementation to their state prior to the first present
performed on one of these swapchains, or such resources must: be left in
their current state.

View File

@ -111,7 +111,8 @@ include::../../api/structs/VkSwapchainCreateInfoKHR.txt[]
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:flags is a bitmask of elink:VkSwapchainCreateFlagBitsKHR
indicating parameters of swapchain creation.
* pname:surface is the surface that the swapchain will present images to.
* pname:surface is the surface to which the swapchain will present images.
The swapchain is associated with pname:surface.
* pname:minImageCount is the minimum number of presentable images that the
application needs.
The platform will either create the swapchain with at least that many
@ -175,32 +176,43 @@ after reacquiring them and if their pixel shaders do not have any side
effects that require them to run for all pixels in the presentable image.
====
* pname:oldSwapchain, if not dlink:VK_NULL_HANDLE, specifies the swapchain
that will be replaced by the new swapchain being created.
The new swapchain will be a descendant of pname:oldSwapchain.
Further, any descendants of the new swapchain will also be descendants
of pname:oldSwapchain.
* pname:oldSwapchain, if not dlink:VK_NULL_HANDLE, specifies an existing
non-retired swapchain that is associated with surface.
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
is not dlink:VK_NULL_HANDLE, any images not acquired by the application
may: be freed by the implementation, which may: occur even if creation
of the new swapchain fails.
The application must: destroy the old swapchain to free all memory
associated with the old swapchain.
The application must: wait for the completion of any outstanding
rendering to images it currently has acquired at the time the swapchain
is destroyed.
The application can: continue to present any images it acquired and has
not yet presented using the old swapchain, as long as it has not entered
a state that causes it to return ename:VK_ERROR_OUT_OF_DATE_KHR.
However, the application cannot: acquire any more images from the old
swapchain regardless of whether or not creation of the new swapchain
succeeds.
is not dlink:VK_NULL_HANDLE, pname:oldSwapchain is retired, even if
creation of the new swapchain fails.
The new swapchain is created in the non-retired state whether or not
pname:oldSwapchain is dlink:VK_NULL_HANDLE.
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
is not dlink:VK_NULL_HANDLE, any images from pname:oldSwapchain that are
not acquired by the application may: be freed by the implementation,
which may: occur even if creation of the new swapchain fails.
The application must: destroy sname:oldSwapchain to free all memory
associated with sname:oldSwapchain.
[NOTE]
.Note
====
Multiple retired swapchains can: be associated with the same
sname:VkSurfaceKHR through multiple uses of sname:oldSwapchain that
outnumber calls to flink:vkDestroySwapchainKHR.
After sname:oldSwapchain is retired, the application can: pass to
flink:vkQueuePresentKHR any images it had already acquired from
sname:oldSwapchain.
E.g., an application may present an image from the old swapchain before an
image from the new swapchain is ready to be presented.
As usual, flink:vkQueuePresentKHR may: fail if sname:oldSwapchain has
entered a state that causes ename:VK_ERROR_OUT_OF_DATE_KHR to be returned.
ifdef::VK_KHR_shared_presentable_image[]
The application can: continue to use a shared presentable image obtained
from pname:oldSwapchain until a presentable image is acquired from the
new swapchain, as long as it has not entered a state that causes it to
return ename:VK_ERROR_OUT_OF_DATE_KHR.
The application can: continue to use a shared presentable image obtained
from pname:oldSwapchain until a presentable image is acquired from the new
swapchain, as long as it has not entered a state that causes it to return
ename:VK_ERROR_OUT_OF_DATE_KHR.
endif::VK_KHR_shared_presentable_image[]
====
.Valid Usage
****
@ -308,6 +320,9 @@ ifdef::VK_KHX_device_group[]
to 1, pname:flags must: not contain
ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
endif::VK_KHX_device_group[]
* [[VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01674]]
pname:oldSwapchain must: not be in the retired state
****
include::../../validity/structs/VkSwapchainCreateInfoKHR.txt[]
@ -393,12 +408,17 @@ endif::VK_KHX_device_group[]
| pname:initialLayout | ename:VK_IMAGE_LAYOUT_UNDEFINED
|====
The sname:VkSurfaceKHR associated with a swapchain must: not be destroyed
until after the swapchain is destroyed.
The pname:surface must: not be destroyed until after the swapchain is
destroyed.
The native window referred to by pname:surface must: not already be
associated with a swapchain other than pname:oldSwapchain, or with a
non-Vulkan graphics API surface.
If pname:oldSwapchain is not VK_NULL_HANDLE then pname:surface must: be
associated with pname:oldSwapchain.
Otherwise, the native window referred to by pname:surface must: not already
be associated with another swapchain, and must: not be already be associated
with a non-Vulkan graphics API surface.
The native window referred to by pname:surface must: not become associated
with a non-Vulkan graphics API surface before the swapchain has been
destroyed.
Like core functions, several WSI functions, including
fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical
@ -437,10 +457,12 @@ include::../../api/protos/vkDestroySwapchainKHR.txt[]
swapchain object when there is no more specific allocator available (see
<<memory-allocation,Memory Allocation>>).
The application must: not destroy a swapchain until after completion of all
outstanding operations on images that were acquired from the swapchain.
pname:swapchain and all associated sname:VkImage handles are destroyed, and
must: not be acquired or used any more by the application.
The memory of each sname:VkImage will only be freed after that image is no
longer used by the platform.
longer used by the presentation engine.
For example, if one image of the swapchain is being displayed in a window,
the memory for that image may: not be freed until the window is destroyed,
or another swapchain is created for the window.
@ -549,7 +571,8 @@ that image, call:
include::../../api/protos/vkAcquireNextImageKHR.txt[]
* pname:device is the device associated with pname:swapchain.
* pname:swapchain is the swapchain from which an image is being acquired.
* pname:swapchain is the non-retired swapchain from which an image is
being acquired.
* pname:timeout indicates how long the function waits, in nanoseconds, if
no image is available.
* pname:semaphore is dlink:VK_NULL_HANDLE or a semaphore to signal.
@ -561,9 +584,7 @@ include::../../api/protos/vkAcquireNextImageKHR.txt[]
.Valid Usage
****
* [[VUID-vkAcquireNextImageKHR-swapchain-01285]]
pname:swapchain must: not have been replaced by being passed as the
sname:VkSwapchainCreateInfoKHR::pname:oldSwapchain value to
fname:vkCreateSwapchainKHR
pname:swapchain must: not be in the retired state
* [[VUID-vkAcquireNextImageKHR-semaphore-01286]]
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
* [[VUID-vkAcquireNextImageKHR-fence-01287]]
@ -687,8 +708,17 @@ dlink:VK_NULL_HANDLE.
An application must: wait until either the pname:semaphore or pname:fence is
signaled before using the presentable image.
[NOTE]
.Note
====
Use of a non-zero pname:timeout is independent from the need for the
application to synchronize access to the acquired image through use of
pname:semaphore and/or pname:fence.
====
pname:semaphore and pname:fence may: already be signaled when
fname:vkAcquireNextImageKHR returns, if the image is being acquired for the
flink:vkAcquireNextImageKHR returns, if the image is being acquired for the
first time, or if the presentable image is immediately ready for use.
A successful call to fname:vkAcquireNextImageKHR counts as a signal
@ -763,9 +793,9 @@ pname:timeout provided:
This may: happen, for example, if the platform surface has been resized but
the platform is able to scale the presented images to the new size to
produce valid surface updates.
It is up to applications to decide whether they prefer to continue using the
current swapchain indefinitely or temporarily in this state, or to re-create
the swapchain to better match the platform surface properties.
It is up to the application to decide whether it prefers to continue using
the current swapchain indefinitely or temporarily in this state, or to
re-create the swapchain to better match the platform surface properties.
====
* ename:VK_ERROR_OUT_OF_DATE_KHR is returned if the surface has changed in
@ -836,7 +866,8 @@ include::../../api/structs/VkAcquireNextImageInfoKHX.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:swapchain is the swapchain from which an image is being acquired.
* pname:swapchain is a non-retired swapchain from which an image is
acquired.
* pname:timeout indicates how long the function waits, in nanoseconds, if
no image is available.
* pname:semaphore is code:VK_NULL_HANDLE or a semaphore to signal.
@ -863,6 +894,8 @@ succeeds, which the other physical device(s) can: wait upon.
.Valid Usage
****
* [[VUID-VkAcquireNextImageInfoKHX-swapchain-01675]]
pname:swapchain must: not be in the retired state
* [[VUID-VkAcquireNextImageInfoKHX-semaphore-01288]]
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
* [[VUID-VkAcquireNextImageInfoKHX-fence-01289]]
@ -897,9 +930,9 @@ include::../../api/protos/vkQueuePresentKHR.txt[]
.Valid Usage
****
* [[VUID-vkQueuePresentKHR-pSwapchains-01292]]
Any given element of pname:pSwapchains member of pname:pPresentInfo
must: be a swapchain that is created for a surface for which
presentation is supported from pname:queue as determined using a call to
Each element of pname:pSwapchains member of pname:pPresentInfo must: be
a swapchain that is created for a surface for which presentation is
supported from pname:queue as determined using a call to
fname:vkGetPhysicalDeviceSurfaceSupportKHR
ifdef::VK_KHR_display_swapchain[]
* [[VUID-vkQueuePresentKHR-pSwapchains-01293]]
@ -966,19 +999,19 @@ include::../../api/structs/VkPresentInfoKHR.txt[]
****
ifndef::VK_KHR_shared_presentable_image[]
* [[VUID-VkPresentInfoKHR-pImageIndices-01296]]
Any given element of pname:pImageIndices must: be the index of a
presentable image acquired from the swapchain specified by the
corresponding element of the pname:pSwapchains array, and the presented
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
layout at the time the operation is executed on a sname:VkDevice
Each element of pname:pImageIndices must: be the index of a presentable
image acquired from the swapchain specified by the corresponding element
of the pname:pSwapchains array, and the presented image subresource
must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout at the time
the operation is executed on a sname:VkDevice
endif::VK_KHR_shared_presentable_image[]
ifdef::VK_KHR_shared_presentable_image[]
* [[VUID-VkPresentInfoKHR-pImageIndices-01430]]
Any given element of pname:pImageIndices must: be the index of a
presentable image acquired from the swapchain specified by the
corresponding element of the pname:pSwapchains array, and the presented
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
or ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout at the time the
Each element of pname:pImageIndices must: be the index of a presentable
image acquired from the swapchain specified by the corresponding element
of the pname:pSwapchains array, and the presented image subresource
must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR or
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout at the time the
operation is executed on a sname:VkDevice
endif::VK_KHR_shared_presentable_image[]
****
@ -1146,6 +1179,14 @@ However, if a mechanism other than Vulkan is used to modify the platform
window associated with the swapchain, the content of all presentable images
in the swapchain becomes undefined.
[NOTE]
.Note
====
The application can: continue to present any acquired images from a retired
swapchain as long as the swapchain has not entered a state that causes
flink:vkQueuePresentKHR to return ename:VK_ERROR_OUT_OF_DATE_KHR.
====
ifdef::VK_EXT_hdr_metadata[]
include::../VK_EXT_hdr_metadata.txt[]
endif::VK_EXT_hdr_metadata[]

View File

@ -61,7 +61,8 @@ endif::VK_KHR_maintenance1[]
pname:image must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdClearColorImage-image-01545]] pname:image must: not use a format listed in
* [[VUID-vkCmdClearColorImage-image-01545]]
pname:image must: not use a format listed in
<<features-formats-requiring-sampler-ycbcr-conversion>>
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdClearColorImage-image-00003]]
@ -238,17 +239,16 @@ attachments and the command parameters.
.Valid Usage
****
* [[VUID-vkCmdClearAttachments-aspectMask-00015]]
If the pname:aspectMask member of any given element of
pname:pAttachments contains ename:VK_IMAGE_ASPECT_COLOR_BIT, the
pname:colorAttachment member of those elements must: refer to a valid
color attachment in the current subpass
If the pname:aspectMask member of any element of pname:pAttachments
contains ename:VK_IMAGE_ASPECT_COLOR_BIT, the pname:colorAttachment
member of that element must: refer to a valid color attachment in the
current subpass
* [[VUID-vkCmdClearAttachments-pRects-00016]]
The rectangular region specified by a given element of pname:pRects
must: be contained within the render area of the current render pass
instance
The rectangular region specified by each element of pname:pRects must:
be contained within the render area of the current render pass instance
* [[VUID-vkCmdClearAttachments-pRects-00017]]
The layers specified by a given element of pname:pRects must: be
contained within every attachment that pname:pAttachments refers to
The layers specified by each element of pname:pRects must: be contained
within every attachment that pname:pAttachments refers to
ifdef::VK_KHX_multiview[]
* [[VUID-vkCmdClearAttachments-baseArrayLayer-00018]]
If the render pass instance this is recorded in uses multiview, then
@ -522,7 +522,7 @@ additional storage and may incur an additional allocation), and then copy
the data from the command buffer into pname:dstBuffer when the command is
executed on a device.
The additional cost of this functionality compared to <<<<copies-buffers,
The additional cost of this functionality compared to <<copies-buffers,
buffer to buffer copies>> means it is only recommended for very small
amounts of data, and is why it is limited to only 65536 bytes.

View File

@ -864,9 +864,9 @@ See <<devsandqueues-lost-device,Lost Device>>.
<<synchronization-pipeline-stages-supported, table of supported pipeline
stages>>.
* [[VUID-vkQueueSubmit-pSignalSemaphores-00067]]
Any given element of the pname:pSignalSemaphores member of any element
of pname:pSubmits must: be unsignaled when the semaphore signal
operation it defines is executed on the device
Each element of the pname:pSignalSemaphores member of any element of
pname:pSubmits must: be unsignaled when the semaphore signal operation
it defines is executed on the device
* [[VUID-vkQueueSubmit-pWaitSemaphores-00068]]
When a semaphore unsignal operation defined by any element of the
pname:pWaitSemaphores member of any element of pname:pSubmits executes
@ -877,27 +877,27 @@ See <<devsandqueues-lost-device,Lost Device>>.
<<synchronization-semaphores-signaling, semaphore signal operations>>
previously submitted for execution.
* [[VUID-vkQueueSubmit-pCommandBuffers-00070]]
Any given element of the pname:pCommandBuffers member of any element of
Each element of the pname:pCommandBuffers member of each element of
pname:pSubmits must: be in the <<commandbuffers-lifecycle, pending or
executable state>>.
* [[VUID-vkQueueSubmit-pCommandBuffers-00071]]
If any given element of the pname:pCommandBuffers member of any element
of pname:pSubmits was not recorded with the
If any element of the pname:pCommandBuffers member of any element of
pname:pSubmits was not recorded with the
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
the <<commandbuffers-lifecycle, pending state>>.
* [[VUID-vkQueueSubmit-pCommandBuffers-00072]]
Any <<commandbuffers-secondary, secondary command buffers recorded>>
into any given element of the pname:pCommandBuffers member of any
element of pname:pSubmits must: be in the <<commandbuffers-lifecycle,
pending or executable state>>.
into any element of the pname:pCommandBuffers member of any element of
pname:pSubmits must: be in the <<commandbuffers-lifecycle, pending or
executable state>>.
* [[VUID-vkQueueSubmit-pCommandBuffers-00073]]
If any <<commandbuffers-secondary, secondary command buffers recorded>>
into any given element of the pname:pCommandBuffers member of any
element of pname:pSubmits was not recorded with the
into any element of the pname:pCommandBuffers member of any element of
pname:pSubmits was not recorded with the
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
the <<commandbuffers-lifecycle, pending state>>.
* [[VUID-vkQueueSubmit-pCommandBuffers-00074]]
Any given element of the pname:pCommandBuffers member of any element of
Each element of the pname:pCommandBuffers member of each element of
pname:pSubmits must: have been allocated from a sname:VkCommandPool that
was created for the same queue family pname:queue belongs to.
****
@ -947,20 +947,19 @@ otherwise execute out of order.
.Valid Usage
****
* [[VUID-VkSubmitInfo-pCommandBuffers-00075]]
Any given element of pname:pCommandBuffers must: not have been allocated
with ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
Each element of pname:pCommandBuffers must: not have been allocated with
ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00076]]
If the <<features-features-geometryShader,geometry shaders>> feature is
not enabled, any given element of pname:pWaitDstStageMask must: not
contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
not enabled, each element of pname:pWaitDstStageMask must: not contain
ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00077]]
If the <<features-features-tessellationShader,tessellation shaders>>
feature is not enabled, any given element of pname:pWaitDstStageMask
must: not contain
ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
feature is not enabled, each element of pname:pWaitDstStageMask must:
not contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00078]]
Any given element of pname:pWaitDstStageMask must: not include
Each element of pname:pWaitDstStageMask must: not include
ename:VK_PIPELINE_STAGE_HOST_BIT.
****
@ -1197,10 +1196,10 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
pname:commandBuffer must: have been allocated with a pname:level of
ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00088]]
Any given element of pname:pCommandBuffers must: have been allocated
with a pname:level of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
Each element of pname:pCommandBuffers must: have been allocated with a
pname:level of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00089]]
Any given element of pname:pCommandBuffers must: be in the
Each element of pname:pCommandBuffers must: be in the
<<commandbuffers-lifecycle, pending or executable state>>.
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00090]]
If any element of pname:pCommandBuffers was not recorded with the
@ -1208,21 +1207,21 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
recorded into any other primary command buffer, that primary command
buffer must: not be in the <<commandbuffers-lifecycle, pending state>>
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00091]]
If any given element of pname:pCommandBuffers was not recorded with the
If any element of pname:pCommandBuffers was not recorded with the
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not be
in the <<commandbuffers-lifecycle, pending state>>.
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00092]]
If any given element of pname:pCommandBuffers was not recorded with the
If any element of pname:pCommandBuffers was not recorded with the
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not
have already been recorded to pname:commandBuffer.
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00093]]
If any given element of pname:pCommandBuffers was not recorded with the
If any element of pname:pCommandBuffers was not recorded with the
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not
appear more than once in pname:pCommandBuffers.
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00094]]
Any given element of pname:pCommandBuffers must: have been allocated
from a sname:VkCommandPool that was created for the same queue family as
the sname:VkCommandPool from which pname:commandBuffer was allocated
Each element of pname:pCommandBuffers must: have been allocated from a
sname:VkCommandPool that was created for the same queue family as the
sname:VkCommandPool from which pname:commandBuffer was allocated
* [[VUID-vkCmdExecuteCommands-contents-00095]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance, that render pass instance must: have been begun with the
@ -1230,14 +1229,13 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00096]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance, any given element of pname:pCommandBuffers must: have been
recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
instance, each element of pname:pCommandBuffers must: have been recorded
with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00097]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance, any given element of pname:pCommandBuffers must: have been
recorded with sname:VkCommandBufferInheritanceInfo::pname:subpass set to
the index of the subpass which the given command buffer will be executed
in
instance, each element of pname:pCommandBuffers must: have been recorded
with sname:VkCommandBufferInheritanceInfo::pname:subpass set to the
index of the subpass which the given command buffer will be executed in
* [[VUID-vkCmdExecuteCommands-pInheritanceInfo-00098]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance, the render passes specified in the
@ -1247,13 +1245,13 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
<<renderpass-compatibility,compatible>> with the current render pass.
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00099]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance, and any given element of pname:pCommandBuffers was recorded
with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal
to dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the
instance, and any element of pname:pCommandBuffers was recorded with
sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to
dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the
sname:VkFramebuffer used in the current render pass instance
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00100]]
If fname:vkCmdExecuteCommands is not being called within a render pass
instance, any given element of pname:pCommandBuffers must: not have been
instance, each element of pname:pCommandBuffers must: not have been
recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
* [[VUID-vkCmdExecuteCommands-commandBuffer-00101]]
If the <<features-features-inheritedQueries,inherited queries>> feature
@ -1278,9 +1276,8 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics having
all bits set that are set in the sname:VkQueryPool the query uses
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00105]]
Any given element of pname:pCommandBuffers must: not begin any query
types that are <<queries-operation-active,active>> in
pname:commandBuffer
Each element of pname:pCommandBuffers must: not begin any query types
that are <<queries-operation-active,active>> in pname:commandBuffer
****
include::../validity/protos/vkCmdExecuteCommands.txt[]

View File

@ -100,19 +100,19 @@ memory.
.Valid Usage
****
* [[VUID-vkCmdCopyBuffer-size-00112]]
The pname:size member of a given element of pname:pRegions must: be
greater than `0`
The pname:size member of each element of pname:pRegions must: be greater
than `0`
* [[VUID-vkCmdCopyBuffer-srcOffset-00113]]
The pname:srcOffset member of a given element of pname:pRegions must: be
The pname:srcOffset member of each element of pname:pRegions must: be
less than the size of pname:srcBuffer
* [[VUID-vkCmdCopyBuffer-dstOffset-00114]]
The pname:dstOffset member of a given element of pname:pRegions must: be
The pname:dstOffset member of each element of pname:pRegions must: be
less than the size of pname:dstBuffer
* [[VUID-vkCmdCopyBuffer-size-00115]]
The pname:size member of a given element of pname:pRegions must: be less
The pname:size member of each element of pname:pRegions must: be less
than or equal to the size of pname:srcBuffer minus pname:srcOffset
* [[VUID-vkCmdCopyBuffer-size-00116]]
The pname:size member of a given element of pname:pRegions must: be less
The pname:size member of each element of pname:pRegions must: be less
than or equal to the size of pname:dstBuffer minus pname:dstOffset
* [[VUID-vkCmdCopyBuffer-pRegions-00117]]
The union of the source regions, and the union of the destination
@ -304,8 +304,8 @@ images, but both images must: have the same number of samples.
.Valid Usage
****
* [[VUID-vkCmdCopyImage-pRegions-00122]]
The source region specified by a given element of pname:pRegions must:
be a region that is contained within pname:srcImage
The source region specified by each element of pname:pRegions must: be a
region that is contained within pname:srcImage
ifdef::VK_KHR_sampler_ycbcr_conversion[]
if the pname:srcImage's elink:VkFormat is not a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
@ -313,8 +313,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
copied if the pname:srcImage's elink:VkFormat is a multi-planar format
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-pRegions-00123]]
The destination region specified by a given element of pname:pRegions
must: be a region that is contained within pname:dstImage
The destination region specified by each element of pname:pRegions must:
be a region that is contained within pname:dstImage
ifdef::VK_KHR_sampler_ycbcr_conversion[]
if the pname:dstImage's elink:VkFormat is not a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
@ -344,7 +344,8 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
contiguously to a single sname:VkDeviceMemory object
endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-srcImage-01546]] If pname:srcImage is non-sparse then the image or _disjoint_ plane to be
* [[VUID-vkCmdCopyImage-srcImage-01546]]
If pname:srcImage is non-sparse then the image or _disjoint_ plane to be
copied must: be bound completely and contiguously to a single
sname:VkDeviceMemory object
endif::VK_KHR_sampler_ycbcr_conversion[]
@ -382,7 +383,8 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
contiguously to a single sname:VkDeviceMemory object
endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-dstImage-01547]] If pname:dstImage is non-sparse then the image or _disjoint_ plane that
* [[VUID-vkCmdCopyImage-dstImage-01547]]
If pname:dstImage is non-sparse then the image or _disjoint_ plane that
is the destination of the copy must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
endif::VK_KHR_sampler_ycbcr_conversion[]
@ -408,18 +410,21 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
compatible, as defined <<copies-images-format-compatibility, below>>
endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-srcImage-01548]] If the elink:VkFormat of each of pname:srcImage and pname:dstImage is
* [[VUID-vkCmdCopyImage-srcImage-01548]]
If the elink:VkFormat of each of pname:srcImage and pname:dstImage is
not a
<<features-formats-requiring-sampler-ycbcr-conversion,_multi-planar
format_>>, the elink:VkFormat of each of pname:srcImage and
pname:dstImage must: be compatible, as defined
<<copies-images-format-compatibility, below>>
* [[VUID-vkCmdCopyImage-None-01549]] In a copy to or from a plane of a
* [[VUID-vkCmdCopyImage-None-01549]]
In a copy to or from a plane of a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
image>>, the elink:VkFormat of the image and plane must: be compatible
according to <<features-formats-compatible-planes,the description of
compatible planes>> for the plane being copied
* [[VUID-vkCmdCopyImage-aspectMask-01550]] When a copy is performed to or from an image with a
* [[VUID-vkCmdCopyImage-aspectMask-01550]]
When a copy is performed to or from an image with a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
format>>, the pname:aspectMask of the pname:srcSubresource and/or
pname:dstSubresource that refers to the multi-planar image must: be
@ -491,39 +496,46 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
pname:dstSubresource must: match
endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageCopy-srcImage-01551]] If neither the calling command's pname:srcImage nor the calling
* [[VUID-VkImageCopy-srcImage-01551]]
If neither the calling command's pname:srcImage nor the calling
command's pname:dstImage has a
<<features-formats-requiring-sampler-ycbcr-conversion, multi-planar
image format>> then the pname:aspectMask member of pname:srcSubresource
and pname:dstSubresource must: match
* [[VUID-VkImageCopy-srcImage-01552]] If the calling command's pname:srcImage has a elink:VkFormat with
* [[VUID-VkImageCopy-srcImage-01552]]
If the calling command's pname:srcImage has a elink:VkFormat with
<<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
the pname:srcSubresource pname:aspectMask must: be
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
* [[VUID-VkImageCopy-srcImage-01553]] If the calling command's pname:srcImage has a elink:VkFormat with
* [[VUID-VkImageCopy-srcImage-01553]]
If the calling command's pname:srcImage has a elink:VkFormat with
<<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
then the pname:srcSubresource pname:aspectMask must: be
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
* [[VUID-VkImageCopy-dstImage-01554]] If the calling command's pname:dstImage has a elink:VkFormat with
* [[VUID-VkImageCopy-dstImage-01554]]
If the calling command's pname:dstImage has a elink:VkFormat with
<<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
the pname:dstSubresource pname:aspectMask must: be
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
* [[VUID-VkImageCopy-dstImage-01555]] If the calling command's pname:dstImage has a elink:VkFormat with
* [[VUID-VkImageCopy-dstImage-01555]]
If the calling command's pname:dstImage has a elink:VkFormat with
<<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
then the pname:dstSubresource pname:aspectMask must: be
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
* [[VUID-VkImageCopy-srcImage-01556]] If the calling command's pname:srcImage has a
* [[VUID-VkImageCopy-srcImage-01556]]
If the calling command's pname:srcImage has a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
format>> and the pname:dstImage does not have a multi-planar image
format, the pname:dstSubresource pname:aspectMask must: be
ename:VK_IMAGE_ASPECT_COLOR_BIT
* [[VUID-VkImageCopy-dstImage-01557]] If the calling command's pname:dstImage has a
* [[VUID-VkImageCopy-dstImage-01557]]
If the calling command's pname:dstImage has a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
format>> and the pname:srcImage does not have a multi-planar image
format, the pname:srcSubresource pname:aspectMask must: be
@ -760,11 +772,11 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
.Valid Usage
****
* [[VUID-vkCmdCopyBufferToImage-pRegions-00171]]
The buffer region specified by a given element of pname:pRegions must:
be a region that is contained within pname:srcBuffer
The buffer region specified by each element of pname:pRegions must: be a
region that is contained within pname:srcBuffer
* [[VUID-vkCmdCopyBufferToImage-pRegions-00172]]
The image region specified by a given element of pname:pRegions must: be
a region that is contained within pname:dstImage
The image region specified by each element of pname:pRegions must: be a
region that is contained within pname:dstImage
ifdef::VK_KHR_sampler_ycbcr_conversion[]
if the pname:dstImage's elink:VkFormat is not a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
@ -863,8 +875,8 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
.Valid Usage
****
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00182]]
The image region specified by a given element of pname:pRegions must: be
a region that is contained within pname:srcImage
The image region specified by each element of pname:pRegions must: be a
region that is contained within pname:srcImage
ifdef::VK_KHR_sampler_ycbcr_conversion[]
if the pname:srcImage's elink:VkFormat is not a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
@ -872,8 +884,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
copied if the pname:srcImage's elink:VkFormat is a multi-planar format
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00183]]
The buffer region specified by a given element of pname:pRegions must:
be a region that is contained within pname:dstBuffer
The buffer region specified by each element of pname:pRegions must: be a
region that is contained within pname:dstBuffer
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00184]]
The union of all source regions, and the union of all destination
regions, specified by the elements of pname:pRegions, must: not overlap
@ -991,12 +1003,14 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
format's element size
endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBufferImageCopy-bufferOffset-01558]] If the calling command's sname:VkImage parameter's format is not a
* [[VUID-VkBufferImageCopy-bufferOffset-01558]]
If the calling command's sname:VkImage parameter's format is not a
depth/stencil format or a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
format>>,cthen pname:bufferOffset must: be a multiple of the format's
element size
* [[VUID-VkBufferImageCopy-bufferOffset-01559]] If the calling command's sname:VkImage parameter's format is a
* [[VUID-VkBufferImageCopy-bufferOffset-01559]]
If the calling command's sname:VkImage parameter's format is a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
format>>, then pname:bufferOffset must: be a multiple of the element
size of the compatible format for the format and the pname:aspectMask of
@ -1109,7 +1123,8 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
The pname:aspectMask member of pname:imageSubresource must: specify
aspects present in the calling command's sname:VkImage parameter
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBufferImageCopy-aspectMask-01560]] If the calling command's sname:VkImage parameter's format is a
* [[VUID-VkBufferImageCopy-aspectMask-01560]]
If the calling command's sname:VkImage parameter's format is a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
format>>, then the pname:aspectMask member of pname:imageSubresource
must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
@ -1326,11 +1341,11 @@ representable range of the destination format, then casting the value.
.Valid Usage
****
* [[VUID-vkCmdBlitImage-pRegions-00215]]
The source region specified by a given element of pname:pRegions must:
be a region that is contained within pname:srcImage
The source region specified by each element of pname:pRegions must: be a
region that is contained within pname:srcImage
* [[VUID-vkCmdBlitImage-pRegions-00216]]
The destination region specified by a given element of pname:pRegions
must: be a region that is contained within pname:dstImage
The destination region specified by each element of pname:pRegions must:
be a region that is contained within pname:dstImage
* [[VUID-vkCmdBlitImage-pRegions-00217]]
The union of all destination regions, specified by the elements of
pname:pRegions, must: not overlap in memory with any texel that may: be
@ -1343,7 +1358,8 @@ representable range of the destination format, then casting the value.
optimally tiled images) - as returned by
fname:vkGetPhysicalDeviceFormatProperties
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdBlitImage-srcImage-01561]] pname:srcImage must: not use a format listed in
* [[VUID-vkCmdBlitImage-srcImage-01561]]
pname:srcImage must: not use a format listed in
<<features-formats-requiring-sampler-ycbcr-conversion>>
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdBlitImage-srcImage-00219]]
@ -1375,7 +1391,8 @@ endif::VK_KHR_shared_presentable_image[]
optimally tiled images) - as returned by
fname:vkGetPhysicalDeviceFormatProperties
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdBlitImage-dstImage-01562]] pname:dstImage must: not use a format listed in
* [[VUID-vkCmdBlitImage-dstImage-01562]]
pname:dstImage must: not use a format listed in
<<features-formats-requiring-sampler-ycbcr-conversion>>
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdBlitImage-dstImage-00224]]
@ -1575,11 +1592,11 @@ pname:layerCount layers are resolved to the destination image.
.Valid Usage
****
* [[VUID-vkCmdResolveImage-pRegions-00253]]
The source region specified by a given element of pname:pRegions must:
be a region that is contained within pname:srcImage
The source region specified by each element of pname:pRegions must: be a
region that is contained within pname:srcImage
* [[VUID-vkCmdResolveImage-pRegions-00254]]
The destination region specified by a given element of pname:pRegions
must: be a region that is contained within pname:dstImage
The destination region specified by each element of pname:pRegions must:
be a region that is contained within pname:dstImage
* [[VUID-vkCmdResolveImage-pRegions-00255]]
The union of all source regions, and the union of all destination
regions, specified by the elements of pname:pRegions, must: not overlap

View File

@ -1563,23 +1563,22 @@ include::../api/structs/VkDescriptorSetAllocateInfo.txt[]
* pname:pSetLayouts is an array of descriptor set layouts, with each
member specifying how the corresponding descriptor set is allocated.
ifndef::VK_KHR_maintenance1[]
.Valid Usage
****
ifndef::VK_KHR_maintenance1[]
* [[VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306]]
pname:descriptorSetCount must: not be greater than the number of sets
that are currently available for allocation in pname:descriptorPool
* [[VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307]]
pname:descriptorPool must: have enough free descriptor capacity
remaining to allocate the descriptor sets of the specified layouts
endif::VK_KHR_maintenance1[]
ifdef::VK_KHR_push_descriptor[]
* [[VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308]]
Any given element of pname:pSetLayouts must: not have been created with
Each element of pname:pSetLayouts must: not have been created with
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set
endif::VK_KHR_push_descriptor[]
****
endif::VK_KHR_maintenance1[]
include::../validity/structs/VkDescriptorSetAllocateInfo.txt[]
--
@ -1686,17 +1685,17 @@ Each element in the pname:pDescriptorCopies array is a
slink:VkCopyDescriptorSet structure describing an operation copying
descriptors between sets.
If the pname:dstSet member of any given element of pname:pDescriptorWrites
or pname:pDescriptorCopies is bound, accessed, or modified by any command
that was recorded to a command buffer which is currently in the
If the pname:dstSet member of any element of pname:pDescriptorWrites or
pname:pDescriptorCopies is bound, accessed, or modified by any command that
was recorded to a command buffer which is currently in the
<<commandbuffers-lifecycle, recording or executable state>>, that command
buffer becomes <<commandbuffers-lifecycle, invalid>>.
.Valid Usage
****
* [[VUID-vkUpdateDescriptorSets-dstSet-00314]]
The pname:dstSet member of any given element of pname:pDescriptorWrites
or pname:pDescriptorCopies must: not be used by any command that was
The pname:dstSet member of each element of pname:pDescriptorWrites or
pname:pDescriptorCopies must: not be used by any command that was
recorded to a command buffer which is in the <<commandbuffers-lifecycle,
pending state>>.
****
@ -1800,16 +1799,15 @@ bindings as needed to update all pname:descriptorCount descriptors.
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and pname:dstSet was
not allocated with a layout that included immutable samplers for
pname:dstBinding with pname:descriptorType, the pname:sampler member of
any given element of pname:pImageInfo must: be a valid sname:VkSampler
object
each element of pname:pImageInfo must: be a valid sname:VkSampler object
* [[VUID-VkWriteDescriptorSet-descriptorType-00326]]
If pname:descriptorType is
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView and
pname:imageLayout members of any given element of pname:pImageInfo must:
be a valid sname:VkImageView and elink:VkImageLayout, respectively
pname:imageLayout members of each element of pname:pImageInfo must: be a
valid sname:VkImageView and elink:VkImageLayout, respectively
* [[VUID-VkWriteDescriptorSet-descriptorType-01402]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, for
each descriptor that will be accessed via load or store operations the
@ -1818,79 +1816,78 @@ bindings as needed to update all pname:descriptorCount descriptors.
* [[VUID-VkWriteDescriptorSet-descriptorType-00327]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:offset member
of any given element of pname:pBufferInfo must: be a multiple of
of each element of pname:pBufferInfo must: be a multiple of
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
* [[VUID-VkWriteDescriptorSet-descriptorType-00328]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:offset member
of any given element of pname:pBufferInfo must: be a multiple of
of each element of pname:pBufferInfo must: be a multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* [[VUID-VkWriteDescriptorSet-descriptorType-00329]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:buffer member
of any given element of pname:pBufferInfo that is non-sparse must: be
bound completely and contiguously to a single sname:VkDeviceMemory
object
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, and the pname:buffer
member of any element of pname:pBufferInfo is the handle of a non-sparse
buffer, then that buffer must: be bound completely and contiguously to a
single sname:VkDeviceMemory object
* [[VUID-VkWriteDescriptorSet-descriptorType-00330]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:buffer member
of any given element of pname:pBufferInfo must: have been created with
of each element of pname:pBufferInfo must: have been created with
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT set
* [[VUID-VkWriteDescriptorSet-descriptorType-00331]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:buffer member
of any given element of pname:pBufferInfo must: have been created with
of each element of pname:pBufferInfo must: have been created with
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT set
* [[VUID-VkWriteDescriptorSet-descriptorType-00332]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:range member
of any given element of pname:pBufferInfo, or the effective range if
of each element of pname:pBufferInfo, or the effective range if
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxUniformBufferRange
* [[VUID-VkWriteDescriptorSet-descriptorType-00333]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:range member
of any given element of pname:pBufferInfo, or the effective range if
of each element of pname:pBufferInfo, or the effective range if
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxStorageBufferRange
* [[VUID-VkWriteDescriptorSet-descriptorType-00334]]
If pname:descriptorType is
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, the sname:VkBuffer that
any given element of pname:pTexelBufferView was created from must: have
been created with ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT set
each element of pname:pTexelBufferView was created from must: have been
created with ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT set
* [[VUID-VkWriteDescriptorSet-descriptorType-00335]]
If pname:descriptorType is
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the sname:VkBuffer that
any given element of pname:pTexelBufferView was created from must: have
been created with ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set
each element of pname:pTexelBufferView was created from must: have been
created with ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set
* [[VUID-VkWriteDescriptorSet-descriptorType-00336]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE or
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView member of
any given element of pname:pImageInfo must: have been created with the
each element of pname:pImageInfo must: have been created with the
identity swizzle
* [[VUID-VkWriteDescriptorSet-descriptorType-00337]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageView
member of any given element of pname:pImageInfo must: have been created
with ename:VK_IMAGE_USAGE_SAMPLED_BIT set
member of each element of pname:pImageInfo must: have been created with
ename:VK_IMAGE_USAGE_SAMPLED_BIT set
* [[VUID-VkWriteDescriptorSet-descriptorType-01403]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageLayout
member of any given element of pname:pImageInfo must: be
member of each element of pname:pImageInfo must: be
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or
ename:VK_IMAGE_LAYOUT_GENERAL
* [[VUID-VkWriteDescriptorSet-descriptorType-00338]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
the pname:imageView member of any given element of pname:pImageInfo
must: have been created with ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
set
the pname:imageView member of each element of pname:pImageInfo must:
have been created with ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set
* [[VUID-VkWriteDescriptorSet-descriptorType-00339]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the
pname:imageView member of any given element of pname:pImageInfo must:
have been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
pname:imageView member of each element of pname:pImageInfo must: have
been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
****
include::../validity/structs/VkWriteDescriptorSet.txt[]
@ -2013,7 +2010,8 @@ endif::VK_KHR_maintenance1[]
subresource accessible from pname:imageView at the time this descriptor
is accessed
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkDescriptorImageInfo-sampler-01563]] If pname:sampler is used and enables <<samplers-YCbCr-conversion,sampler
* [[VUID-VkDescriptorImageInfo-sampler-01563]]
If pname:sampler is used and enables <<samplers-YCbCr-conversion,sampler
Y'C~B~C~R~ conversion>>:
** The pname:format of the pname:imageView must: be the same as the
elink:VkFormat of the image
@ -2032,7 +2030,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
which is an _identically defined object_ to the pname:conversion of
the sname:VkSamplerYcbcrConversionInfoKHR which is in the pname:pNext
chain of the pname:sampler
* [[VUID-VkDescriptorImageInfo-sampler-01564]] If pname:sampler is used and does not enable
* [[VUID-VkDescriptorImageInfo-sampler-01564]]
If pname:sampler is used and does not enable
<<samplers-YCbCr-conversion, sampler Y'C~B~C~R~ conversion>> and the
elink:VkFormat of the image is a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
@ -2442,7 +2441,7 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
};
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
myResult = vkCreatePipelineLayout(
myResult = vkCreateDescriptorUpdateTemplateKHR(
myDevice,
&createInfo,
NULL,
@ -2548,10 +2547,10 @@ descriptor set.
.Valid Usage
****
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358]]
Any given element of pname:pDescriptorSets must: have been allocated
with a sname:VkDescriptorSetLayout that matches (is the same as, or
identically defined as) the sname:VkDescriptorSetLayout at set _n_ in
pname:layout, where _n_ is the sum of pname:firstSet and the index into
Each element of pname:pDescriptorSets must: have been allocated with a
sname:VkDescriptorSetLayout that matches (is the same as, or identically
defined as) the sname:VkDescriptorSetLayout at set _n_ in pname:layout,
where _n_ is the sum of pname:firstSet and the index into
pname:pDescriptorSets
* [[VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359]]
pname:dynamicOffsetCount must: be equal to the total number of dynamic
@ -2564,7 +2563,7 @@ descriptor set.
pname:pipelineBindPoint must: be supported by the pname:commandBuffer's
parent sname:VkCommandPool's queue family
* [[VUID-vkCmdBindDescriptorSets-pDynamicOffsets-00362]]
Any given element of pname:pDynamicOffsets must: satisfy the required
Each element of pname:pDynamicOffsets must: satisfy the required
alignment for the corresponding descriptor binding's descriptor type
****
@ -2749,7 +2748,7 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
};
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
myResult = vkCreatePipelineLayout(
myResult = vkCreateDescriptorUpdateTemplateKHR(
myDevice,
&createInfo,
NULL,

View File

@ -714,7 +714,7 @@ include::../api/structs/VkDeviceCreateInfo.txt[]
.Valid Usage
****
* [[VUID-VkDeviceCreateInfo-queueFamilyIndex-00372]]
The pname:queueFamilyIndex member of any given element of
The pname:queueFamilyIndex member of each element of
pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos
ifdef::VK_KHR_get_physical_device_properties2[]
* [[VUID-VkDeviceCreateInfo-pNext-00373]]

View File

@ -873,6 +873,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
* [[VUID-vkCmdDrawIndirect-buffer-00474]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-vkCmdDrawIndirect-buffer-01660]]
pname:buffer must: have been created with the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-vkCmdDrawIndirect-offset-00475]]
pname:offset must: be a multiple of `4`
* [[VUID-vkCmdDrawIndirect-drawCount-00476]]
@ -1091,6 +1094,18 @@ located at pname:countBufferOffset and use this as the draw count.
.Valid Usage
****
* [[VUID-vkCmdDrawIndirectCountAMD-buffer-01661]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-vkCmdDrawIndirectCountAMD-buffer-01662]]
pname:buffer must: have been created with the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-vkCmdDrawIndirectCountAMD-countBuffer-01663]]
If pname:countBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-vkCmdDrawIndirectCountAMD-countBuffer-01664]]
pname:countBuffer must: have been created with the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-vkCmdDrawIndirectCountAMD-offset-00502]]
pname:offset must: be a multiple of `4`
* [[VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503]]
@ -1266,6 +1281,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
* [[VUID-vkCmdDrawIndexedIndirect-buffer-00526]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-vkCmdDrawIndexedIndirect-buffer-01665]]
pname:buffer must: have been created with the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-vkCmdDrawIndexedIndirect-offset-00527]]
pname:offset must: be a multiple of `4`
* [[VUID-vkCmdDrawIndexedIndirect-drawCount-00528]]
@ -1493,6 +1511,18 @@ located at pname:countBufferOffset and use this as the draw count.
.Valid Usage
****
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01666]]
If pname:buffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01667]]
pname:buffer must: have been created with the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01668]]
If pname:countBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01669]]
pname:countBuffer must: have been created with the
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555]]
pname:offset must: be a multiple of `4`
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556]]

View File

@ -404,15 +404,15 @@ G, and B destination color values (after conversion from fixed-point to
floating-point) are considered to be encoded for the sRGB color space and
hence are linearized prior to their use in blending.
Each R, G, and B component is converted from nonlinear to linear as
described in the "`sRGB EOTF`" section of the
<<data-format,Khronos Data Format Specification>>.
described in the "`sRGB EOTF`" section of the <<data-format,Khronos Data
Format Specification>>.
If the format is not sRGB, no linearization is performed.
If the numeric format of a framebuffer attachment uses sRGB encoding, then
the final R, G and B values are converted into the nonlinear sRGB
representation before being written to the framebuffer attachment as
described in the "`sRGB EOTF^&#160;-1^`" section of the Khronos Data
Format Specification.
described in the "`sRGB EOTF^&#160;-1^`" section of the Khronos Data Format
Specification.
If the framebuffer color attachment numeric format is not sRGB encoded then
the resulting [eq]#c~s~# values for R, G and B are unmodified.

View File

@ -436,8 +436,8 @@ endif::VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilitie
[[fundamentals-abi]]
== Application Binary Interface
The mechanism by which Vulkan is made available to applications is platform- or
implementation- defined.
The mechanism by which Vulkan is made available to applications is platform-
or implementation- defined.
On many platforms the C interface described in this Specification is
provided by a shared library.
Since shared libraries can be changed independently of the applications that
@ -446,23 +446,23 @@ Specification places some requirements on them.
Shared library implementations must: use the default Application Binary
Interface (ABI) of the standard C compiler for the platform, or provide
customized API headers that cause application code to use the implementation's
non-default ABI.
An ABI in this context means the the size, alignment, and
layout of C data types; the procedure calling convention; and the naming
convention for shared library symbols corresponding to C functions.
customized API headers that cause application code to use the
implementation's non-default ABI.
An ABI in this context means the the size, alignment, and layout of C data
types; the procedure calling convention; and the naming convention for
shared library symbols corresponding to C functions.
Customizing the calling convention for a platform is usually accomplished by
defining
<<boilerplate-platform-specific-calling-conventions,calling convention macros>>
appropriately in +vk_platform.h+.
defining <<boilerplate-platform-specific-calling-conventions,calling
convention macros>> appropriately in +vk_platform.h+.
On platforms where Vulkan is provided as a shared library, library symbols
beginning with 'vk' and followed by a digit or uppercase letter are reserved
for use by the implementation.
Applications which use Vulkan must: not provide definitions of these symbols.
This allows the Vulkan shared library to be updated with additional symbols for
new API versions or extensions without causing symbol conflicts with existing
applications.
Applications which use Vulkan must: not provide definitions of these
symbols.
This allows the Vulkan shared library to be updated with additional symbols
for new API versions or extensions without causing symbol conflicts with
existing applications.
Shared library implementations should: provide library symbols for commands
in the highest version of this Specification they support, and for
@ -475,11 +475,12 @@ extensions.
====
These requirements and recommendations are intended to allow implementors to
take advantage of platform-specific conventions for SDKs, ABIs, library
versioning mechanisms, etc. while still minimizing the code changes necessary
to port applications or libraries between platforms.
Platform vendors, or providers of the _de facto_ standard Vulkan shared library
for a platform, are encouraged to document what symbols the shared library
provides and how it will be versioned when new symbols are added.
versioning mechanisms, etc.
while still minimizing the code changes necessary to port applications or
libraries between platforms.
Platform vendors, or providers of the _de facto_ standard Vulkan shared
library for a platform, are encouraged to document what symbols the shared
library provides and how it will be versioned when new symbols are added.
====

View File

@ -301,7 +301,7 @@ include::../api/structs/VkPipelineVertexInputStateCreateInfo.txt[]
pname:vertexAttributeDescriptionCount must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributes
* [[VUID-VkPipelineVertexInputStateCreateInfo-binding-00615]]
For every pname:binding specified by any given element of
For every pname:binding specified by each element of
pname:pVertexAttributeDescriptions, a
sname:VkVertexInputBindingDescription must: exist in
pname:pVertexBindingDescriptions with the same value of pname:binding

View File

@ -1738,7 +1738,7 @@ to maintaining memory access ordering.
.Valid Usage
****
* [[VUID-vkMapMemory-memory-00678]]
pname:memory must: not currently be mapped
pname:memory must: not be currently mapped
* [[VUID-vkMapMemory-offset-00679]]
pname:offset must: be less than the size of pname:memory
* [[VUID-vkMapMemory-size-00680]]
@ -1865,7 +1865,7 @@ include::../api/structs/VkMappedMemoryRange.txt[]
.Valid Usage
****
* [[VUID-VkMappedMemoryRange-memory-00684]]
pname:memory must: currently be mapped
pname:memory must: be currently mapped
* [[VUID-VkMappedMemoryRange-size-00685]]
If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:offset and
pname:size must: specify a range contained within the currently mapped
@ -1906,7 +1906,7 @@ include::../api/protos/vkUnmapMemory.txt[]
.Valid Usage
****
* [[VUID-vkUnmapMemory-memory-00689]]
pname:memory must: currently be mapped
pname:memory must: be currently mapped
****
include::../validity/protos/vkUnmapMemory.txt[]

View File

@ -141,15 +141,15 @@ endif::editing-notes[]
.Valid Usage
****
* [[VUID-vkCreateComputePipelines-flags-00695]]
If the pname:flags member of any given element of pname:pCreateInfos
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
If the pname:flags member of any element of pname:pCreateInfos contains
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
pname:basePipelineIndex member of that same element is not `-1`,
pname:basePipelineIndex must: be less than the index into
pname:pCreateInfos that corresponds to that element
* [[VUID-vkCreateComputePipelines-flags-00696]]
If the pname:flags member of any given element of pname:pCreateInfos
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base
pipeline must: have been created with the
If the pname:flags member of any element of pname:pCreateInfos contains
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline
must: have been created with the
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
****
@ -388,15 +388,15 @@ pipeline layout.
.Valid Usage
****
* [[VUID-vkCreateGraphicsPipelines-flags-00720]]
If the pname:flags member of any given element of pname:pCreateInfos
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
If the pname:flags member of any element of pname:pCreateInfos contains
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
pname:basePipelineIndex member of that same element is not `-1`,
pname:basePipelineIndex must: be less than the index into
pname:pCreateInfos that corresponds to that element
* [[VUID-vkCreateGraphicsPipelines-flags-00721]]
If the pname:flags member of any given element of pname:pCreateInfos
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base
pipeline must: have been created with the
If the pname:flags member of any element of pname:pCreateInfos contains
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline
must: have been created with the
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
****
@ -508,8 +508,8 @@ endif::VK_NV_glsl_shader[]
The pname:stage member of one element of pname:pStages must: be
ename:VK_SHADER_STAGE_VERTEX_BIT
* [[VUID-VkGraphicsPipelineCreateInfo-stage-00728]]
The pname:stage member of any given element of pname:pStages must: not
be ename:VK_SHADER_STAGE_COMPUTE_BIT
The pname:stage member of each element of pname:pStages must: not be
ename:VK_SHADER_STAGE_COMPUTE_BIT
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00729]]
If pname:pStages includes a tessellation control shader stage, it must:
include a tessellation evaluation shader stage
@ -755,7 +755,8 @@ ifdef::VK_KHX_device_group[]
ename:VK_PIPELINE_CREATE_DISPATCH_BASE_KHX flag.
endif::VK_KHX_device_group[]
ifdef::VK_KHR_maintenance2[]
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-01565]] If pname:pStages includes a fragment shader stage and an input
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-01565]]
If pname:pStages includes a fragment shader stage and an input
attachment was referenced by the
slink:VkRenderPassInputAttachmentAspectCreateInfoKHR at renderpass
create time, its shader code must: not read from any aspect that was not
@ -1375,10 +1376,10 @@ slink:VkSpecializationMapEntry.
.Valid Usage
****
* [[VUID-VkSpecializationInfo-offset-00773]]
The pname:offset member of any given element of pname:pMapEntries must:
be less than pname:dataSize
The pname:offset member of each element of pname:pMapEntries must: be
less than pname:dataSize
* [[VUID-VkSpecializationInfo-pMapEntries-00774]]
For any given element of pname:pMapEntries, pname:size must: be less
The pname:size member of each element of pname:pMapEntries must: be less
than or equal to pname:dataSize minus pname:offset
* [[VUID-VkSpecializationInfo-mapEntryCount-00775]]
If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer

View File

@ -169,7 +169,7 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
pname:pInputAttachments, pname:pColorAttachments,
pname:pResolveAttachments or pname:pDepthStencilAttachment, or the
attachment indexed by any element of pname:pPreserveAttachments in any
given element of pname:pSubpasses is bound to a range of a
element of pname:pSubpasses is bound to a range of a
sname:VkDeviceMemory object that overlaps with any other attachment in
any subpass (including the same subpass), the
sname:VkAttachmentDescription structures describing them must: include
@ -178,13 +178,12 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
If the pname:attachment member of any element of
pname:pInputAttachments, pname:pColorAttachments,
pname:pResolveAttachments or pname:pDepthStencilAttachment, or any
element of pname:pPreserveAttachments in any given element of
pname:pSubpasses is not ename:VK_ATTACHMENT_UNUSED, it must: be less
than pname:attachmentCount
element of pname:pPreserveAttachments in any element of pname:pSubpasses
is not ename:VK_ATTACHMENT_UNUSED, it must: be less than
pname:attachmentCount
* [[VUID-VkRenderPassCreateInfo-pPreserveAttachments-00835]]
The value of any element of the pname:pPreserveAttachments member in any
given element of pname:pSubpasses must: not be
ename:VK_ATTACHMENT_UNUSED
The value of each element of the pname:pPreserveAttachments member in
each element of pname:pSubpasses must: not be ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkRenderPassCreateInfo-pAttachments-00836]]
For any member of pname:pAttachments with a pname:loadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
@ -192,11 +191,13 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
ifdef::VK_KHR_maintenance2[]
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]] For any member of pname:pAttachments with a pname:loadOp equal to
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]]
For any member of pname:pAttachments with a pname:loadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR.
* [[VUID-VkRenderPassCreateInfo-pAttachments-01567]] For any member of pname:pAttachments with a pname:stencilLoadOp equal to
* [[VUID-VkRenderPassCreateInfo-pAttachments-01567]]
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR.
@ -531,10 +532,13 @@ include::../api/structs/VkInputAttachmentAspectReferenceKHR.txt[]
.Valid Usage
****
* [[VUID-VkInputAttachmentAspectReferenceKHR-pCreateInfo-01568]] There must: be an input attachment at
* [[VUID-VkInputAttachmentAspectReferenceKHR-pCreateInfo-01568]]
There must: be an input attachment at
pname:pCreateInfo::pname:pSubpasses[pname:subpass].pname:pInputAttachments[pname:inputAttachment].
* [[VUID-VkInputAttachmentAspectReferenceKHR-None-01569]] The specified input attachment must: have more than one aspect mask.
* [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-01570]] pname:aspectMask must: be a subset of the aspect masks in the specified
* [[VUID-VkInputAttachmentAspectReferenceKHR-None-01569]]
The specified input attachment must: have more than one aspect mask.
* [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-01570]]
pname:aspectMask must: be a subset of the aspect masks in the specified
input attachment.
****
@ -795,10 +799,10 @@ attachment.
element of pname:pColorAttachments must: be anything other than
ename:VK_SAMPLE_COUNT_1_BIT
* [[VUID-VkSubpassDescription-pResolveAttachments-00849]]
Any given element of pname:pResolveAttachments must: have a sample count
of ename:VK_SAMPLE_COUNT_1_BIT
Each element of pname:pResolveAttachments must: have a sample count of
ename:VK_SAMPLE_COUNT_1_BIT
* [[VUID-VkSubpassDescription-pResolveAttachments-00850]]
Any given element of pname:pResolveAttachments must: have the same
Each element of pname:pResolveAttachments must: have the same
elink:VkFormat as its corresponding color attachment
* [[VUID-VkSubpassDescription-pColorAttachments-01417]]
All attachments in pname:pColorAttachments that are not
@ -823,11 +827,11 @@ endif::VK_AMD_mixed_attachment_samples[]
pipelines bound during the subpass must: not access those input
attachments from the fragment shader
* [[VUID-VkSubpassDescription-attachment-00853]]
The pname:attachment member of any element of pname:pPreserveAttachments
must: not be ename:VK_ATTACHMENT_UNUSED
The pname:attachment member of each element of
pname:pPreserveAttachments must: not be ename:VK_ATTACHMENT_UNUSED
* [[VUID-VkSubpassDescription-pPreserveAttachments-00854]]
Any given element of pname:pPreserveAttachments must: not also be an
element of any other member of the subpass description
Each element of pname:pPreserveAttachments must: not also be an element
of any other member of the subpass description
* [[VUID-VkSubpassDescription-layout-00855]]
If any attachment is used as both an input attachment and a color or
depth/stencil attachment, then each use must: use the same pname:layout
@ -1504,35 +1508,33 @@ slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
pname:attachmentCount must: be equal to the attachment count specified
in pname:renderPass
* [[VUID-VkFramebufferCreateInfo-pAttachments-00877]]
Any given element of pname:pAttachments that is used as a color
attachment or resolve attachment by pname:renderPass must: have been
created with a pname:usage value including
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
Each element of pname:pAttachments that is used as a color attachment or
resolve attachment by pname:renderPass must: have been created with a
pname:usage value including ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* [[VUID-VkFramebufferCreateInfo-pAttachments-00878]]
Any given element of pname:pAttachments that is used as a depth/stencil
Each element of pname:pAttachments that is used as a depth/stencil
attachment by pname:renderPass must: have been created with a
pname:usage value including
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* [[VUID-VkFramebufferCreateInfo-pAttachments-00879]]
Any given element of pname:pAttachments that is used as an input
attachment by pname:renderPass must: have been created with a
pname:usage value including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
Each element of pname:pAttachments that is used as an input attachment
by pname:renderPass must: have been created with a pname:usage value
including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
* [[VUID-VkFramebufferCreateInfo-pAttachments-00880]]
Any given element of pname:pAttachments must: have been created with an
Each element of pname:pAttachments must: have been created with an
elink:VkFormat value that matches the elink:VkFormat specified by the
corresponding sname:VkAttachmentDescription in pname:renderPass
* [[VUID-VkFramebufferCreateInfo-pAttachments-00881]]
Any given element of pname:pAttachments must: have been created with a
Each element of pname:pAttachments must: have been created with a
pname:samples value that matches the pname:samples value specified by
the corresponding sname:VkAttachmentDescription in pname:renderPass
* [[VUID-VkFramebufferCreateInfo-pAttachments-00882]]
Any given element of pname:pAttachments must: have dimensions at least
as large as the corresponding framebuffer dimension
Each element of pname:pAttachments must: have dimensions at least as
large as the corresponding framebuffer dimension
* [[VUID-VkFramebufferCreateInfo-pAttachments-00883]]
Any given element of pname:pAttachments must: only specify a single mip
level
Each element of pname:pAttachments must: only specify a single mip level
* [[VUID-VkFramebufferCreateInfo-pAttachments-00884]]
Any given element of pname:pAttachments must: have been created with the
Each element of pname:pAttachments must: have been created with the
identity swizzle
* [[VUID-VkFramebufferCreateInfo-width-00885]]
pname:width must: be greater than `0`.
@ -1551,8 +1553,8 @@ slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
sname:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
ifdef::VK_KHR_maintenance1[]
* [[VUID-VkFramebufferCreateInfo-pAttachments-00891]]
Any given element of pname:pAttachments that is a 2D or 2D array image
view taken from a 3D image must: not be a depth/stencil format
Each element of pname:pAttachments that is a 2D or 2D array image view
taken from a 3D image must: not be a depth/stencil format
endif::VK_KHR_maintenance1[]
****

View File

@ -145,7 +145,8 @@ ifdef::VK_KHR_external_memory[]
slink:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes
endif::VK_KHR_external_memory[]
ifdef::VK_NV_dedicated_allocation[]
* [[VUID-VkBufferCreateInfo-pNext-01571]] If the pname:pNext chain contains an instance of
* [[VUID-VkBufferCreateInfo-pNext-01571]]
If the pname:pNext chain contains an instance of
slink:VkDedicatedAllocationBufferCreateInfoNV, and the
pname:dedicatedAllocation member of the chained structure is
ename:VK_TRUE, then pname:flags must: not include
@ -909,13 +910,15 @@ ifdef::VK_KHX_device_group[]
be ename:VK_IMAGE_TILING_OPTIMAL
endif::VK_KHX_device_group[]
ifdef::VK_KHR_maintenance2[]
* [[VUID-VkImageCreateInfo-flags-01572]] If pname:flags contains
* [[VUID-VkImageCreateInfo-flags-01572]]
If pname:flags contains
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
pname:format must: be a <<appendix-compressedtex-bc,block-compressed
image format>>, an <<appendix-compressedtex-etc2, ETC compressed image
format>>, or an <<appendix-compressedtex-astc, ASTC compressed image
format>>.
* [[VUID-VkImageCreateInfo-flags-01573]] If pname:flags contains
* [[VUID-VkImageCreateInfo-flags-01573]]
If pname:flags contains
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
pname:flags must: also contain ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT.
endif::VK_KHR_maintenance2[]
@ -932,25 +935,29 @@ ifdef::VK_NV_external_memory[slink:VkExternalMemoryImageCreateInfoNV]
must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
endif::VK_KHR_external_memory,VK_NV_external_memory[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageCreateInfo-format-01574]] If the image pname:format is one of those listed in
* [[VUID-VkImageCreateInfo-format-01574]]
If the image pname:format is one of those listed in
<<features-formats-requiring-sampler-ycbcr-conversion>>:
** pname:mipLevels must: be 1
** pname:samples must be ename:VK_SAMPLE_COUNT_1_BIT
** pname:imageType must: be ename:VK_IMAGE_TYPE_2D
** pname:arrayLayers must: be 1
* [[VUID-VkImageCreateInfo-tiling-01575]] If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, pname:format is a
* [[VUID-VkImageCreateInfo-tiling-01575]]
If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, pname:format is a
_multi-planar_ format, and
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
pname:flags must: not contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
* [[VUID-VkImageCreateInfo-tiling-01576]] If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, pname:format is a
* [[VUID-VkImageCreateInfo-tiling-01576]]
If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, pname:format is a
_multi-planar_ format, and
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
fname:vkGetPhysicalDeviceFormatProperties with the same value of
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
pname:flags must: not contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
* [[VUID-VkImageCreateInfo-format-01577]] If pname:format is not a _multi-planar_ format, and pname:flags does not
* [[VUID-VkImageCreateInfo-format-01577]]
If pname:format is not a _multi-planar_ format, and pname:flags does not
include ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR, pname:flags must: not
contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
endif::VK_KHR_sampler_ycbcr_conversion[]
@ -1111,14 +1118,17 @@ were not included in the pname:pNext list of slink:VkImageCreateInfo.
.Valid Usage
****
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578]] If pname:viewFormatCount is not `0`, all of the formats in the
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578]]
If pname:viewFormatCount is not `0`, all of the formats in the
pname:pViewFormats array must: be compatible with the format specified
in the pname:format field of sname:VkImageCreateInfo, as described in
the <<resources-image-views-compatibility,compatibility table>>.
* [[VUID-VkImageFormatListCreateInfoKHR-flags-01579]] If sname:VkImageCreateInfo::pname:flags does not contain
* [[VUID-VkImageFormatListCreateInfoKHR-flags-01579]]
If sname:VkImageCreateInfo::pname:flags does not contain
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, pname:viewFormatCount must: be
`0` or `1`.
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580]] If pname:viewFormatCount is not `0`,
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580]]
If pname:viewFormatCount is not `0`,
sname:VkImageCreateInfo::pname:format must: be in pname:pViewFormats.
****
@ -1334,12 +1344,14 @@ image.
The pname:aspectMask member of pname:pSubresource must: only have a
single bit set
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkGetImageSubresourceLayout-format-01581]] If the pname:format of pname:image is a
* [[VUID-vkGetImageSubresourceLayout-format-01581]]
If the pname:format of pname:image is a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
format>> with two planes, the pname:aspectMask member of
pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
* [[VUID-vkGetImageSubresourceLayout-format-01582]] If the pname:format of pname:image is a
* [[VUID-vkGetImageSubresourceLayout-format-01582]]
If the pname:format of pname:image is a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
format>> with three planes, the pname:aspectMask member of
pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
@ -1865,9 +1877,8 @@ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR, pname:format must: be
<<features-formats-compatible-planes,compatible>> with the corresponding
plane of the image, as defined in, and the sampler to be used with the image
view must: not enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
conversion>>.
plane of the image, and the sampler to be used with the image view must: not
enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>.
The pname:width and pname:height of the single-plane image view must: be
derived from the multi-planar image's dimensions in the manner listed for
<<features-formats-compatible-planes,plane compatibility>> for the plane.
@ -2211,18 +2222,21 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
pname:image, as defined in
<<features-formats-compatibility-classes,Format Compatibility Classes>>
ifdef::VK_KHR_maintenance2[]
* [[VUID-VkImageViewCreateInfo-image-01583]] If pname:image was created with the
* [[VUID-VkImageViewCreateInfo-image-01583]]
If pname:image was created with the
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag,
pname:format must: be compatible with, or must: be an uncompressed
format that is size-compatible with, the pname:format used to create
pname:image.
* [[VUID-VkImageViewCreateInfo-image-01584]] If pname:image was created with the
* [[VUID-VkImageViewCreateInfo-image-01584]]
If pname:image was created with the
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag, the
pname:levelCount and pname:layerCount members of pname:subresourceRange
must: both be `1`.
endif::VK_KHR_maintenance2[]
ifdef::VK_KHR_image_format_list[]
* [[VUID-VkImageViewCreateInfo-pNext-01585]] If a sname:VkImageFormatListCreateInfoKHR structure was included in the
* [[VUID-VkImageViewCreateInfo-pNext-01585]]
If a sname:VkImageFormatListCreateInfoKHR structure was included in the
pname:pNext chain of the sname:VkImageCreateInfo struct used when
creating pname:image and the pname:viewFormatCount field of
sname:VkImageFormatListCreateInfoKHR is not zero then pname:format must:
@ -2230,7 +2244,8 @@ ifdef::VK_KHR_image_format_list[]
sname:VkImageFormatListCreateInfoKHR::pname:pViewFormats.
endif::VK_KHR_image_format_list[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageViewCreateInfo-image-01586]] If pname:image was created with the
* [[VUID-VkImageViewCreateInfo-image-01586]]
If pname:image was created with the
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, if the pname:format of
the pname:image is a
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
@ -2293,7 +2308,8 @@ determining the valid usage conditions of slink:VkImageViewCreateInfo.
.Valid Usage
****
* [[VUID-VkImageViewUsageCreateInfoKHR-usage-01587]] pname:usage must: not include any set bits that were not set in the
* [[VUID-VkImageViewUsageCreateInfoKHR-usage-01587]]
pname:usage must: not include any set bits that were not set in the
pname:usage member of the slink:VkImageCreateInfo structure used to
create the image this image view is created from.
****
@ -2391,20 +2407,30 @@ framebuffer attachments, and any sname:VkImageView used with a combined
image sampler that enables <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
conversion>>.
If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled in
the sampler, the pname:aspectMask used by a sname:VkImageView must: be
When creating a sname:VkImageView, if <<samplers-YCbCr-conversion,sampler
Y'C~B~C~R~ conversion>> is enabled in the sampler, the pname:aspectMask of a
pname:subresourceRange used by the sname:VkImageView must: be
ename:VK_IMAGE_ASPECT_COLOR_BIT.
If sampler Y'C~B~C~R~ conversion is not enabled in the sampler and the
format is
When creating a sname:VkImageView, if sampler Y'C~B~C~R~ conversion is not
enabled in the sampler and the image pname:format is
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>, the
image must: have been created with ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
and the pname:aspectMask of the sname:VkImageView's
sname:VkImageSubresourceRange must: be
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
or ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
and the pname:aspectMask of the sname:VkImageView's pname:subresourceRange
must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR or
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
endif::VK_KHR_sampler_ycbcr_conversion[]
.Valid Usage
****
* [[VUID-VkImageSubresourceRange-aspectMask-01670]]
If pname:aspectMask includes ename:VK_IMAGE_ASPECT_COLOR_BIT, then it
must: not include any of ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
****
include::../validity/structs/VkImageSubresourceRange.txt[]
--
@ -2437,7 +2463,7 @@ include::../api/structs/VkComponentMapping.txt[]
placed in the G component of the output vector.
* pname:b is a elink:VkComponentSwizzle specifying the component value
placed in the B component of the output vector.
* pname:A is a elink:VkComponentSwizzle specifying the component value
* pname:a is a elink:VkComponentSwizzle specifying the component value
placed in the A component of the output vector.
include::../validity/structs/VkComponentMapping.txt[]
@ -2800,23 +2826,28 @@ include::../api/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:image is the image to query.
ifdef::VK_KHR_sampler_ycbcr_conversion[]
.Valid Usage
****
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01589]] If pname:image was created with a _multi-planar_ format and the
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01589]]
If pname:image was created with a _multi-planar_ format and the
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: be a
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
the slink:VkImageMemoryRequirementsInfo2KHR structure
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01590]] If pname:image was not created with the
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01590]]
If pname:image was not created with the
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: not be a
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
the slink:VkImageMemoryRequirementsInfo2KHR structure
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01591]] If pname:image was created with a single-plane format, there must: not
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01591]]
If pname:image was created with a single-plane format, there must: not
be a slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext
chain of the slink:VkImageMemoryRequirementsInfo2KHR structure
endif::VK_KHR_sampler_ycbcr_conversion[]
****
endif::VK_KHR_sampler_ycbcr_conversion[]
include::../validity/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
--
@ -2839,7 +2870,8 @@ include::../api/structs/VkImagePlaneMemoryRequirementsInfoKHR.txt[]
.Valid Usage
****
* [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-01592]] pname:planeAspect must: be an aspect that exists in the format; that is,
* [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-01592]]
pname:planeAspect must: be an aspect that exists in the format; that is,
for a two-plane image pname:planeAspect must: be
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and for a three-plane image
@ -3123,36 +3155,46 @@ include::../api/structs/VkBindBufferMemoryInfoKHR.txt[]
.Valid Usage
****
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01593]] pname:buffer must: not already be backed by a memory object
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01594]] pname:buffer must: not have been created with any sparse memory binding
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01593]]
pname:buffer must: not already be backed by a memory object
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01594]]
pname:buffer must: not have been created with any sparse memory binding
flags
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01595]] pname:memoryOffset must: be less than the size of pname:memory
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01596]] If pname:buffer was created with the
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01595]]
pname:memoryOffset must: be less than the size of pname:memory
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01596]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must:
be a multiple of
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01597]] If pname:buffer was created with the
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01597]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a
multiple of
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01598]] If pname:buffer was created with the
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01598]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a
multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* [[VUID-VkBindBufferMemoryInfoKHR-memory-01599]] pname:memory must: have been allocated using one of the memory types
* [[VUID-VkBindBufferMemoryInfoKHR-memory-01599]]
pname:memory must: have been allocated using one of the memory types
allowed in the pname:memoryTypeBits member of the
sname:VkMemoryRequirements structure returned from a call to
fname:vkGetBufferMemoryRequirements with pname:buffer
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01600]] pname:memoryOffset must: be an integer multiple of the pname:alignment
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01600]]
pname:memoryOffset must: be an integer multiple of the pname:alignment
member of the sname:VkMemoryRequirements structure returned from a call
to fname:vkGetBufferMemoryRequirements with pname:buffer
* [[VUID-VkBindBufferMemoryInfoKHR-size-01601]] The pname:size member of the sname:VkMemoryRequirements structure
* [[VUID-VkBindBufferMemoryInfoKHR-size-01601]]
The pname:size member of the sname:VkMemoryRequirements structure
returned from a call to fname:vkGetBufferMemoryRequirements with
pname:buffer must: be less than or equal to the size of pname:memory
minus pname:memoryOffset
ifdef::VK_KHR_dedicated_allocation[]
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01602]] If pname:buffer requires a dedicated allocation(as reported by
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01602]]
If pname:buffer requires a dedicated allocation(as reported by
flink:vkGetBufferMemoryRequirements2KHR in
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
pname:image), pname:memory must: have been created with
@ -3160,20 +3202,23 @@ ifdef::VK_KHR_dedicated_allocation[]
pname:buffer and pname:memoryOffset must: be zero
endif::VK_KHR_dedicated_allocation[]
ifdef::VK_NV_dedicated_allocation[]
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01603]] If pname:buffer was created with
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01603]]
If pname:buffer was created with
slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
equal to ename:VK_TRUE, pname:memory must: have been created with
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:buffer equal to
pname:buffer and pname:memoryOffset must: be zero
ifndef::VK_KHR_dedicated_allocation[]
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01604]] If pname:buffer was not created with
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01604]]
If pname:buffer was not created with
slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
equal to ename:VK_TRUE, pname:memory must: not have been allocated
dedicated for a specific buffer or image
endif::VK_KHR_dedicated_allocation[]
endif::VK_NV_dedicated_allocation[]
ifdef::VK_KHX_device_group[]
* [[VUID-VkBindBufferMemoryInfoKHR-pNext-01605]] If the pname:pNext chain includes
* [[VUID-VkBindBufferMemoryInfoKHR-pNext-01605]]
If the pname:pNext chain includes
slink:VkBindBufferMemoryDeviceGroupInfoKHX, all instances of
pname:memory specified by
slink:VkBindBufferMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
@ -3223,9 +3268,11 @@ In other words, by default each physical device attaches to instance zero.
.Valid Usage
****
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-deviceIndexCount-01606]] pname:deviceIndexCount must: either be zero or equal to the number of
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-deviceIndexCount-01606]]
pname:deviceIndexCount must: either be zero or equal to the number of
physical devices in the logical device
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-pDeviceIndices-01607]] All elements of pname:pDeviceIndices must: be valid device indices
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-pDeviceIndices-01607]]
All elements of pname:pDeviceIndices must: be valid device indices
****
include::../validity/structs/VkBindBufferMemoryDeviceGroupInfoKHX.txt[]
@ -3268,7 +3315,8 @@ endif::VK_KHR_bind_memory2[]
.Valid Usage
****
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkBindImageMemory-image-01608]] pname:image must: not have been created with the
* [[VUID-vkBindImageMemory-image-01608]]
pname:image must: not have been created with the
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR set.
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkBindImageMemory-image-01044]]
@ -3371,45 +3419,56 @@ include::../api/structs/VkBindImageMemoryInfoKHR.txt[]
.Valid Usage
****
* [[VUID-VkBindImageMemoryInfoKHR-image-01609]] pname:image must: not already be backed by a memory object
* [[VUID-VkBindImageMemoryInfoKHR-image-01610]] pname:image must: not have been created with any sparse memory binding
* [[VUID-VkBindImageMemoryInfoKHR-image-01609]]
pname:image must: not already be backed by a memory object
* [[VUID-VkBindImageMemoryInfoKHR-image-01610]]
pname:image must: not have been created with any sparse memory binding
flags
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01611]] pname:memoryOffset must: be less than the size of pname:memory
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01611]]
pname:memoryOffset must: be less than the size of pname:memory
ifndef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBindImageMemoryInfoKHR-memory-01612]] pname:memory must: have been allocated using one of the memory types
* [[VUID-VkBindImageMemoryInfoKHR-memory-01612]]
pname:memory must: have been allocated using one of the memory types
allowed in the pname:memoryTypeBits member of the
slink:VkMemoryRequirements structure returned from a call to
flink:vkGetImageMemoryRequirements with pname:image
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01613]] pname:memoryOffset must: be an integer multiple of the pname:alignment
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01613]]
pname:memoryOffset must: be an integer multiple of the pname:alignment
member of the slink:VkMemoryRequirements structure returned from a call
to flink:vkGetImageMemoryRequirements with pname:image
* [[VUID-VkBindImageMemoryInfoKHR-memory-01614]] The difference of the size of pname:memory and pname:memoryOffset must:
* [[VUID-VkBindImageMemoryInfoKHR-memory-01614]]
The difference of the size of pname:memory and pname:memoryOffset must:
be greater than or equal to the pname:size member of the
slink:VkMemoryRequirements structure returned from a call to
flink:vkGetImageMemoryRequirements with the same pname:image
endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01615]] If the pname:pNext chain does not include an instance of the
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01615]]
If the pname:pNext chain does not include an instance of the
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
been allocated using one of the memory types allowed in the
pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
returned from a call to flink:vkGetImageMemoryRequirements2KHR with
pname:image
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01616]] If the pname:pNext chain does not include an instance of the
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01616]]
If the pname:pNext chain does not include an instance of the
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
be an integer multiple of the pname:alignment member of the
slink:VkMemoryRequirements structure returned from a call to
flink:vkGetImageMemoryRequirements2KHR with pname:image
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01617]] If the pname:pNext chain does not include an instance of the
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01617]]
If the pname:pNext chain does not include an instance of the
slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
size of pname:memory and pname:memoryOffset must: be greater than or
equal to the pname:size member of the slink:VkMemoryRequirements
structure returned from a call to flink:vkGetImageMemoryRequirements2KHR
with the same pname:image
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01618]] If the pname:pNext chain includes an instance of the
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01618]]
If the pname:pNext chain includes an instance of the
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:image must: have
been created with the ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR bit set.
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01619]] If the pname:pNext chain includes an instance of the
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01619]]
If the pname:pNext chain includes an instance of the
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
been allocated using one of the memory types allowed in the
pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
@ -3417,7 +3476,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
pname:image and the correct pname:planeAspect for this plane in the
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01620]] If the pname:pNext chain includes an instance of the
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01620]]
If the pname:pNext chain includes an instance of the
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
be an integer multiple of the pname:alignment member of the
slink:VkMemoryRequirements structure returned from a call to
@ -3425,7 +3485,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
pname:planeAspect for this plane in the
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01621]] If the pname:pNext chain includes an instance of the
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01621]]
If the pname:pNext chain includes an instance of the
slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
size of pname:memory and pname:memoryOffset must: be greater than or
equal to the pname:size member of the slink:VkMemoryRequirements
@ -3436,7 +3497,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
chain
endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_KHR_dedicated_allocation[]
* [[VUID-VkBindImageMemoryInfoKHR-image-01622]] If pname:image requires a dedicated allocation (as reported by
* [[VUID-VkBindImageMemoryInfoKHR-image-01622]]
If pname:image requires a dedicated allocation (as reported by
flink:vkGetImageMemoryRequirements2KHR in
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
pname:image), pname:memory must: have been created with
@ -3444,49 +3506,59 @@ ifdef::VK_KHR_dedicated_allocation[]
and pname:memoryOffset must: be zero
endif::VK_KHR_dedicated_allocation[]
ifdef::VK_NV_dedicated_allocation[]
* [[VUID-VkBindImageMemoryInfoKHR-image-01623]] If pname:image was created with
* [[VUID-VkBindImageMemoryInfoKHR-image-01623]]
If pname:image was created with
slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
equal to ename:VK_TRUE, pname:memory must: have been created with
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:image equal to
pname:image and pname:memoryOffset must: be zero
ifndef::VK_KHR_dedicated_allocation[]
* [[VUID-VkBindImageMemoryInfoKHR-image-01624]] If pname:image was not created with
* [[VUID-VkBindImageMemoryInfoKHR-image-01624]]
If pname:image was not created with
slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
equal to ename:VK_TRUE, pname:memory must: not have been allocated
dedicated for a specific buffer or image
endif::VK_KHR_dedicated_allocation[]
endif::VK_NV_dedicated_allocation[]
ifndef::VK_KHX_device_group[]
* [[VUID-VkBindImageMemoryInfoKHR-memory-01625]] pname:memory must: be a valid dname:VkDeviceMemory handle
* [[VUID-VkBindImageMemoryInfoKHR-memory-01625]]
pname:memory must: be a valid dname:VkDeviceMemory handle
endif::VK_KHX_device_group[]
ifdef::VK_KHX_device_group[]
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01626]] If the pname:pNext chain includes
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01626]]
If the pname:pNext chain includes
slink:VkBindImageMemoryDeviceGroupInfoKHX, all instances of pname:memory
specified by
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
have been allocated
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01627]] If the pname:pNext chain includes
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01627]]
If the pname:pNext chain includes
slink:VkBindImageMemoryDeviceGroupInfoKHX, and
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:SFRRectCount is not
zero, then pname:image must: have been created with the
ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX bit set
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01628]] If the pname:pNext chain includes
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01628]]
If the pname:pNext chain includes
slink:VkBindImageMemoryDeviceGroupInfoKHX, all elements of
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects must: be
valid rectangles contained within the dimensions of pname:image
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01629]] If the pname:pNext chain includes
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01629]]
If the pname:pNext chain includes
slink:VkBindImageMemoryDeviceGroupInfoKHX, the union of the areas of all
elements of slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects
that correspond to the same instance of pname: image must: cover the
entire image.
* [[VUID-VkBindImageMemoryInfoKHR-image-01630]] If pname:image was created with a valid swapchain handle in
* [[VUID-VkBindImageMemoryInfoKHR-image-01630]]
If pname:image was created with a valid swapchain handle in
slink:VkImageSwapchainCreateInfoKHX::pname:swapchain, then the
pname:pNext chain must: include a valid instance of
slink:VkBindImageMemorySwapchainInfoKHX
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01631]] If the pname:pNext chain includes an instance of
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01631]]
If the pname:pNext chain includes an instance of
slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be
dlink:VK_NULL_HANDLE
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01632]] If the pname:pNext chain does not include an instance of
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01632]]
If the pname:pNext chain does not include an instance of
slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be a valid
dname:VkDeviceMemory handle
endif::VK_KHX_device_group[]
@ -3552,28 +3624,37 @@ In other words, by default each physical device attaches to instance zero.
.Valid Usage
****
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01633]] At least one of pname:deviceIndexCount and pname:SFRRectCount must: be
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01633]]
At least one of pname:deviceIndexCount and pname:SFRRectCount must: be
zero.
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01634]] pname:deviceIndexCount must: either be zero or equal to the number of
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01634]]
pname:deviceIndexCount must: either be zero or equal to the number of
physical devices in the logical device
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pDeviceIndices-01635]] All elements of pname:pDeviceIndices must: be valid device indices.
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-SFRRectCount-01636]] pname:SFRRectCount must: either be zero or equal to the number of
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pDeviceIndices-01635]]
All elements of pname:pDeviceIndices must: be valid device indices.
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-SFRRectCount-01636]]
pname:SFRRectCount must: either be zero or equal to the number of
physical devices in the logical device squared
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pSFRRects-01637]] Elements of pname:pSFRRects that correspond to the same instance of an
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pSFRRects-01637]]
Elements of pname:pSFRRects that correspond to the same instance of an
image must: not overlap.
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01638]] The pname:offset.x member of any element of pname:pSFRRects must: be a
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01638]]
The pname:offset.x member of any element of pname:pSFRRects must: be a
multiple of the sparse image block width
(sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of
all non-metadata aspects of the image
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01639]] The pname:offset.y member of any element of pname:pSFRRects must: be a
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01639]]
The pname:offset.y member of any element of pname:pSFRRects must: be a
multiple of the sparse image block height
(sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of
all non-metadata aspects of the image
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01640]] The pname:extent.width member of any element of pname:pSFRRects must:
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01640]]
The pname:extent.width member of any element of pname:pSFRRects must:
either be a multiple of the sparse image block width of all non-metadata
aspects of the image, or else pname:extent.width + pname:offset.x must:
equal the width of the image subresource
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01641]] The pname:extent.height member of any element of pname:pSFRRects must:
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01641]]
The pname:extent.height member of any element of pname:pSFRRects must:
either be a multiple of the sparse image block height of all
non-metadata aspects of the image, or else pname:extent.height +
pname:offset.y must: equal the width of the image subresource
@ -3601,14 +3682,16 @@ include::../api/structs/VkBindImagePlaneMemoryInfoKHR.txt[]
.Valid Usage
****
* [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-01642]] pname:planeAspect must: be a single valid plane aspect for the image
* [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-01642]]
pname:planeAspect must: be a single valid plane aspect for the image
format (that is, pname:planeAspect must: be
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for "`etext:_2PLANE`" formats and
pname:planeAspect must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for "`etext:_3PLANE`" formats)
* [[VUID-VkBindImagePlaneMemoryInfoKHR-None-01643]] A single call to flink:vkBindImageMemory2KHR must: bind all or none of
* [[VUID-VkBindImagePlaneMemoryInfoKHR-None-01643]]
A single call to flink:vkBindImageMemory2KHR must: bind all or none of
the planes of an image (i.e. bindings to all planes of an image must: be
made in a single flink:vkBindImageMemory2KHR call), as separate bindings
****
@ -3644,7 +3727,8 @@ pname:pSFRRects members of slink:VkBindImageMemoryDeviceGroupInfoKHX.
.Valid Usage
****
* [[VUID-VkBindImageMemorySwapchainInfoKHX-imageIndex-01644]] pname:imageIndex must: be less than the number of images in
* [[VUID-VkBindImageMemorySwapchainInfoKHX-imageIndex-01644]]
pname:imageIndex must: be less than the number of images in
pname:swapchain
****

View File

@ -168,7 +168,8 @@ pname:maxSamplerAllocationCount limit.
between `1.0` and
sname:VkPhysicalDeviceLimits::pname:maxSamplerAnisotropy, inclusive
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkSamplerCreateInfo-minFilter-01645]] If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
* [[VUID-VkSamplerCreateInfo-minFilter-01645]]
If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
enabled and
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
is not set for the format, pname:minFilter and pname:magFilter must: be
@ -199,13 +200,15 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
are ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, pname:borderColor
must: be a valid elink:VkBorderColor value
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkSamplerCreateInfo-addressModeU-01646]] If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
* [[VUID-VkSamplerCreateInfo-addressModeU-01646]]
If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
enabled, pname:addressModeU, pname:addressModeV, and pname:addressModeW
must: be ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
pname:anisotropyEnable must: be ename:VK_FALSE, and
pname:unnormalizedCoordinates must: be ename:VK_FALSE
ifdef::VK_EXT_sampler_filter_minmax[]
* [[VUID-VkSamplerCreateInfo-None-01647]] The sampler reduction mode must: be set to
* [[VUID-VkSamplerCreateInfo-None-01647]]
The sampler reduction mode must: be set to
ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT if
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled
endif::VK_EXT_sampler_filter_minmax[]
@ -468,7 +471,8 @@ Operations>> chapter.
.Valid Usage
****
* [[VUID-vkCreateSamplerYcbcrConversionKHR-None-01648]] The <<features-features-sampler-YCbCr-conversion, sampler Y'C~B~C~R~
* [[VUID-vkCreateSamplerYcbcrConversionKHR-None-01648]]
The <<features-features-sampler-YCbCr-conversion, sampler Y'C~B~C~R~
conversion feature>> must: be enabled
****
@ -517,21 +521,27 @@ the default mode of operation.
.Valid Usage
****
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01649]] pname:format must: not be ename:VK_FORMAT_UNDEFINED
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01650]] pname:format must: support
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01649]]
pname:format must: not be ename:VK_FORMAT_UNDEFINED
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01650]]
pname:format must: support
ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR or
ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01651]] If the format does not support
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01651]]
If the format does not support
ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,
pname:xChromaOffset and pname:yChromaOffset must: not be
ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01652]] If the format does not support
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01652]]
If the format does not support
ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
pname:xChromaOffset and pname:yChromaOffset must: not be
ename:VK_CHROMA_LOCATION_MIDPOINT_KHR
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01653]] pname:format must: represent unsigned normalized values (i.e. the format
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01653]]
pname:format must: represent unsigned normalized values (i.e. the format
must be a etext:UNORM format)
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-None-01654]] If the format has a _422 or _420 suffix:
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-None-01654]]
If the format has a _422 or _420 suffix:
** pname:components.g must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY
** pname:components.a must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY,
ename:VK_COMPONENT_SWIZZLE_ONE, or ename:VK_COMPONENT_SWIZZLE_ZERO
@ -542,7 +552,8 @@ the default mode of operation.
** If either pname:components.r or pname:components.b is
ename:VK_COMPONENT_SWIZZLE_IDENTITY, both values must: be
ename:VK_COMPONENT_SWIZZLE_IDENTITY
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-ycbcrModel-01655]] If pname:ycbcrModel is not
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-ycbcrModel-01655]]
If pname:ycbcrModel is not
ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, then
pname:components.r, pname:components.g, and pname:components.b must:
correspond to channels of the pname:format; that is, pname:components.r,
@ -550,10 +561,12 @@ the default mode of operation.
ename:VK_COMPONENT_SWIZZLE_ZERO or ename:VK_COMPONENT_SWIZZLE_ONE, and
must: not correspond to a channel which contains zero or one as a
consequence of <<textures-conversion-to-rgba,conversion to RGBA>>
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-forceExplicitReconstruction-01656]] If the format does not support
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-forceExplicitReconstruction-01656]]
If the format does not support
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
pname:forceExplicitReconstruction must: be FALSE
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-chromaFilter-01657]] If the format does not support
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-chromaFilter-01657]]
If the format does not support
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
pname:chromaFilter must: be ename:VK_FILTER_NEAREST
****

View File

@ -1326,10 +1326,10 @@ include::../api/structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
.Valid Usage
****
* [[VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103]]
For any given element of pname:pBinds, if the pname:flags member of that
element contains ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding
range defined must: be within the mip tail region of the metadata aspect
of pname:image
If the pname:flags member of any element of pname:pBinds contains
ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range defined
must: be within the mip tail region of the metadata aspect of
pname:image
****
include::../validity/structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
@ -1509,9 +1509,9 @@ Additional information about fence and semaphore operation is described in
associated with any other queue command that has not yet completed
execution on that queue
* [[VUID-vkQueueBindSparse-pSignalSemaphores-01115]]
Any given element of the pname:pSignalSemaphores member of any element
of pname:pBindInfo must: be unsignaled when the semaphore signal
operation it defines is executed on the device
Each element of the pname:pSignalSemaphores member of each element of
pname:pBindInfo must: be unsignaled when the semaphore signal operation
it defines is executed on the device
* [[VUID-vkQueueBindSparse-pWaitSemaphores-01116]]
When a semaphore unsignal operation defined by any element of the
pname:pWaitSemaphores member of any element of pname:pBindInfo executes

View File

@ -1318,9 +1318,8 @@ that fence.
.Valid Usage
****
* [[VUID-vkResetFences-pFences-01123]]
Any given element of pname:pFences must: not currently be associated
with any queue command that has not yet completed execution on that
queue
Each element of pname:pFences must: not be currently associated with any
queue command that has not yet completed execution on that queue
****
include::../validity/protos/vkResetFences.txt[]
@ -1513,6 +1512,53 @@ the permanence and transference of each handle type.
====
endif::VK_KHR_external_fence_win32,VK_KHR_external_fence_fd[]
<<fundamentals-threadingbehavior,External synchronization>> allows
implementations to modify an object's internal state, i.e. payload, without
internal synchronization.
However, for fences sharing a payload across processes, satisfying the
external synchronization requirements of fname:VkFence parameters as if all
fences in the set were the same object is sometimes infeasible.
Satisfying valid usage constraints on the state of a fence would similarly
require impractical coordination or levels of trust between processes.
Therefore, these constraints only apply to a specific fence handle, not to
its payload.
For distinct fence objects which share a payload:
* If multiple commands which queue a signal operation, or which unsignal a
fence, are called concurrently, behavior will be as if the commands were
called in an arbitrary sequential order.
* If a queue submission command is called with a fence that is sharing a
payload, and the payload is already associated with another queue command
that has not yet completed execution, either one or both of the commands
will cause the fence to become signaled when they complete execution.
* If a fence payload is reset while it is associated with a queue command
that has not yet completed execution, the payload will become unsignaled,
but may: become signaled again when the command completes execution.
* In the preceding cases, any of the devices associated with the fences
sharing the payload may: be lost, or any of the queue submission or fence
reset commands may: return ename:VK_ERROR_INITIALIZATION_FAILED.
Other than these non-deterministic results, behavior is well defined.
In particular:
* The implementation must: not crash or enter an internally inconsistent
state where future valid Vulkan commands might cause undefined results,
* Timeouts on future wait commands on fences sharing the payload must: be
effective.
[NOTE]
.Note
====
These rules allow processes to synchronize access to shared memory without
trusting each other.
However, such processes must still be cautious not to use the shared fence
for more than synchronizing access to the shared memory.
For example, a process should not use a fence with shared payload to tell
when commands it submitted to a queue have completed and objects used by
those commands may be destroyed, since the other process can accidentally or
maliciously cause the fence to signal before the commands actually complete.
====
When a fence is using an imported payload, its
slink:VkExportFenceCreateInfoKHR::pname:handleTypes value is that specified
when creating the fence from which the payload was exported, rather than
@ -1596,7 +1642,7 @@ include::../api/structs/VkImportFenceWin32HandleInfoKHR.txt[]
The handle types supported by pname:handleType are:
[[synchronization-handletypes-win32]]
[[synchronization-fence-handletypes-win32]]
.Handle Types Supported by VkImportFenceWin32HandleInfoKHR
[width="80%",options="header"]
|====
@ -1687,7 +1733,7 @@ include::../api/structs/VkImportFenceFdInfoKHR.txt[]
The handle types supported by pname:handleType are:
[[synchronization-handletypes-fd]]
[[synchronization-fence-handletypes-fd]]
.Handle Types Supported by VkImportFenceFdInfoKHR
[width="80%",options="header"]
|====
@ -2269,29 +2315,6 @@ unsignal operation>> is submitted to a queue:
ifdef::VK_KHR_external_semaphore[]
Generally, the implementation behavior will be undefined when applications
fail to ensure these requirements are met.
However, to avoid requiring Vulkan instances that import semaphore payloads
to trust the source of that payload, the side effects of violating the
requirements are better defined in certain cases.
When the semaphore that violates the requirements is using an imported
payload at the time of the violation, the implementation must: ensure side
effects are limited to one or more of the following:
* Returning the error code ename:VK_ERROR_INITIALIZATION_FAILED from the
command which resulted in the violation.
* Allowing the logical device on which the violation occured to enter an
undefined state immediately or in the future and returning the error
code ename:VK_ERROR_DEVICE_LOST from any subsequent command, including
the one causing the violation, after the device enters such a state.
* Continuing execution of the violating command or operation as if the
semaphore wait completed successfully after an implementation-dependent
timeout.
In this case, the state of the semaphore becomes undefined.
The semaphore must: be destroyed or have its state replaced by an import
operation to again meet valid usage requirements.
[[synchronization-semaphores-importing]]
=== Importing Semaphore Payloads
@ -2362,6 +2385,48 @@ the permanence and transference of each handle type.
====
endif::VK_KHR_external_semaphore_win32,VK_KHR_external_semaphore_fd[]
<<fundamentals-threadingbehavior,External synchronization>> allows
implementations to modify an object's internal state, i.e. payload, without
internal synchronization.
However, for semaphores sharing a payload across processes, satisfying the
external synchronization requirements of fname:VkSemaphore parameters as if
all semaphores in the set were the same object is sometimes infeasible.
Satisfying the <<synchronization-semaphores-waiting-state,wait operation
state requirements>> would similarly require impractical coordination or
levels of trust between processes.
Therefore, these constraints only apply to a specific semaphore handle, not
to its payload.
For distinct semaphore objects which share a payload:
* If the semaphores are passed to multiple queue submission commands
concurrently, behavior will be as if the commands were called in an
arbitrary sequential order.
* If the <<synchronization-semaphores-waiting-state,wait operation state
requirements>> are violated for the payload by a queue submission command,
or if a signal operation is queued for a payload that is already signaled or
has a pending signal operation, the command may: return
ename:VK_ERROR_INITIALIZATION_FAILED, the queue's device may: be lost
immediately or later, or the wait operation or future wait operations on the
payload may: complete immediately when executed or when any one of the queue
signal operations completes.
However, a wait operation on a semaphore sharing the payload must: not
continue to wait after the last signal operation queued for the payload
completes.
[NOTE]
.Note
====
These rules allow processes to synchronize access to shared memory without
trusting each other.
However, such processes must still be cautious not to use the shared
semaphore for more than synchronizing access to the shared memory.
For example, a process should not use a shared semaphore as part of a
execution dependency chain that, when complete, leads to objects being
destroyed, if it does not trust other processes sharing the semaphore
payload.
====
When a semaphore is using an imported payload, its
slink:VkExportSemaphoreCreateInfoKHR::pname:handleTypes value is that
specified when creating the semaphore from which the payload was exported,
@ -2618,6 +2683,8 @@ endif::VK_KHR_external_semaphore[]
Events are a synchronization primitive that can: be used to insert a
fine-grained dependency between commands submitted to the same queue, or
between the host and a queue.
Events must: not be used to insert a dependency between commands submitted
to different queues.
Events have two states - signaled and unsignaled.
An application can: signal an event, or unsignal it, on either the host or
the device.
@ -2928,7 +2995,10 @@ include::../api/protos/vkCmdWaitEvents.txt[]
slink:VkImageMemoryBarrier structures.
When fname:vkCmdWaitEvents is submitted to a queue, it defines a memory
dependency between prior event signal operations, and subsequent commands.
dependency between prior event signal operations on the same queue or the
host, and subsequent commands.
fname:vkCmdWaitEvents must: not be used to wait on event signal operations
occuring on other queues.
The first synchronization scope only includes event signal operations that
operate on members of pname:pEvents, and the operations that happened-before
@ -3031,15 +3101,15 @@ semaphore).
<<synchronization-pipeline-stages-supported, table of supported pipeline
stages>>.
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01165]]
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
or pname:pImageMemoryBarriers must: not have any access flag included in
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers or
pname:pImageMemoryBarriers must: not have any access flag included in
its pname:srcAccessMask member if that bit is not supported by any of
the pipeline stages in pname:srcStageMask, as specified in the
<<synchronization-access-types-supported, table of supported access
types>>.
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01166]]
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
or pname:pImageMemoryBarriers must: not have any access flag included in
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers or
pname:pImageMemoryBarriers must: not have any access flag included in
its pname:dstAccessMask member if that bit is not supported by any of
the pipeline stages in pname:dstStageMask, as specified in the
<<synchronization-access-types-supported, table of supported access
@ -3233,15 +3303,15 @@ framebuffer-space>> pipeline stages is
<<synchronization-pipeline-stages-supported, table of supported pipeline
stages>>.
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184]]
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
or pname:pImageMemoryBarriers must: not have any access flag included in
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers and
pname:pImageMemoryBarriers must: not have any access flag included in
its pname:srcAccessMask member if that bit is not supported by any of
the pipeline stages in pname:srcStageMask, as specified in the
<<synchronization-access-types-supported, table of supported access
types>>.
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185]]
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
or pname:pImageMemoryBarriers must: not have any access flag included in
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers and
pname:pImageMemoryBarriers must: not have any access flag included in
its pname:dstAccessMask member if that bit is not supported by any of
the pipeline stages in pname:dstStageMask, as specified in the
<<synchronization-access-types-supported, table of supported access
@ -3609,6 +3679,17 @@ would equal ename:VK_IMAGE_LAYOUT_UNDEFINED.
endif::VK_EXT_sample_locations[]
ifdef::VK_KHR_sampler_ycbcr_conversion[]
If pname:image has a multi-planar format and the image is _disjoint_, then
including ename:VK_IMAGE_ASPECT_COLOR_BIT in the pname:aspectMask member of
pname:subresourceRange is equivalent to including
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and (for three-plane formats only)
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
endif::VK_KHR_sampler_ycbcr_conversion[]
.Valid Usage
****
* [[VUID-VkImageMemoryBarrier-oldLayout-01197]]
@ -3692,9 +3773,26 @@ endif::VK_KHR_external_memory[]
pname:image was created
* [[VUID-VkImageMemoryBarrier-image-01207]]
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
components, then the pname:aspectMask member of pname:subresourceRange
must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and
ename:VK_IMAGE_ASPECT_STENCIL_BIT
ifdef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageMemoryBarrier-image-01671]]
If pname:image has a single-plane color format or is not _disjoint_,
then the pname:aspectMask member of pname:subresourceRange must: be
ename:VK_IMAGE_ASPECT_COLOR_BIT
* [[VUID-VkImageMemoryBarrier-image-01672]]
If pname:image has a multi-planar format and the image is _disjoint_,
then the pname:aspectMask member of pname:subresourceRange must: include
either at least one of ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR; or must: include
ename:VK_IMAGE_ASPECT_COLOR_BIT
* [[VUID-VkImageMemoryBarrier-image-01673]]
If pname:image has a multi-planar format with only two planes, then the
pname:aspectMask member of pname:subresourceRange must: not include
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageMemoryBarrier-oldLayout-01208]]
If either pname:oldLayout or pname:newLayout is
ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must:
@ -3710,11 +3808,13 @@ endif::VK_KHR_external_memory[]
must: have been created with
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
ifdef::VK_KHR_maintenance2[]
* [[VUID-VkImageMemoryBarrier-oldLayout-01658]] If either pname:oldLayout or pname:newLayout is
* [[VUID-VkImageMemoryBarrier-oldLayout-01658]]
If either pname:oldLayout or pname:newLayout is
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
then pname:image must: have been created with
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
* [[VUID-VkImageMemoryBarrier-oldLayout-01659]] If either pname:oldLayout or pname:newLayout is
* [[VUID-VkImageMemoryBarrier-oldLayout-01659]]
If either pname:oldLayout or pname:newLayout is
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
then pname:image must: have been created with
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set

View File

@ -320,6 +320,7 @@ They include the following steps, which are performed in the listed order:
** <<textures-operation-validation,Instruction/Sampler/Image validation>>
** <<textures-integer-coordinate-validation,Coordinate validation>>
** <<textures-sparse-validation,Sparse validation>>
** <<textures-layout-validation,Layout validation>>
* <<textures-format-conversion,Format conversion>>
* <<textures-texel-replacement,Texel replacement>>
* <<textures-depth-compare-operation,Depth comparison>>
@ -534,6 +535,17 @@ If the texel reads from an unbound region of a sparse image, the texel is a
_sparse unbound texel_, and processing continues with
<<textures-texel-replacement,texel replacement>>.
ifdef::VK_KHR_sampler_ycbcr_conversion[]
[[textures-layout-validation]]
==== Layout Validation
If all planes of a _disjoint_ _multi-planar_ image are not in the same
<<resources-image-layouts,image layout>> when the image is sampled with
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>, the result of
texel reads is undefined.
endif::VK_KHR_sampler_ycbcr_conversion[]
[[textures-format-conversion]]
=== Format Conversion
@ -561,8 +573,8 @@ Signed integer components smaller than 32 bits are sign-extended.
If the image format is sRGB, the color components are first converted as if
they are UNORM, and then sRGB to linear conversion is applied to the R, G,
and B components as described in the "`sRGB EOTF`" section of
the <<data-format,Khronos Data Format Specification>>.
and B components as described in the "`sRGB EOTF`" section of the
<<data-format,Khronos Data Format Specification>>.
The A component, if present, is unchanged.
If the image view format is block-compressed, then the texel value is first
@ -2177,25 +2189,6 @@ values with non-zero weights.
endif::VK_EXT_sampler_filter_minmax[]
ifdef::editing-notes[]
[NOTE]
.editing-note
==================
(Bill) EXT_texture_filter_anisotropic has not been updated since 2000,
except for ES extension number (2007) and a minor speeling (sic) correction
(2014), neither of which are functional changes.
It is showing its age.
In particular, there is an open issue about 3D textures.
There are no interactions with ARB_texture_cube_map (approved 1999, promoted
to core OpenGL 1.3 in 2001), let alone interactions with
ARB_seamless_cube_map (approved and promoted to core OpenGL 3.2 in 2009).
There are no interactions with texture offsets or texture gather.
==================
endif::editing-notes[]
[[textures-instructions]]
== Image Operation Steps

View File

@ -37,6 +37,7 @@
# For error and file-loading interfaces only
from reflib import *
from reflow_count import startVUID
import argparse, copy, os, pdb, re, string, sys
@ -588,6 +589,21 @@ def reflowFile(filename, args):
logWarn('Updated nextvu to', state.nextvu, 'after file', filename)
args.nextvu = state.nextvu
def reflowAllAdocFiles(folder_to_reflow, args):
for root, subdirs, files in os.walk(folder_to_reflow):
for file in files:
if file.endswith(".txt"):
file_path = os.path.join(root, file)
reflowFile(file_path, args)
for subdir in subdirs:
sub_folder = os.path.join(root, subdir)
print('Sub-folder = %s' % sub_folder)
if not (subdir.lower() == "scripts") and not (subdir.lower() == "style"):
print(' Parsing = %s' % sub_folder)
reflowAllAdocFiles(sub_folder, args)
else:
print(' Skipping = %s' % sub_folder)
# Patterns used to recognize interesting lines in an asciidoc source file.
# These patterns are only compiled once.
@ -597,8 +613,6 @@ def reflowFile(filename, args):
global vuPat
vuPat = re.compile('^(?P<head> [*]+)( *)(?P<tail>.*)', re.DOTALL)
# The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 1660
if __name__ == '__main__':
parser = argparse.ArgumentParser()
@ -643,10 +657,23 @@ if __name__ == '__main__':
if args.nextvu != None:
logWarn('Tagging untagged Valid Usage statements starting at', args.nextvu)
for file in args.files:
reflowFile(file, args)
# If no files are specified, reflow the entire specification chapters folder
if len(args.files) == 0:
folder_to_reflow = os.getcwd()
folder_to_reflow += '/doc/specs/vulkan'
reflowAllAdocFiles(folder_to_reflow, args)
else:
for file in args.files:
reflowFile(file, args)
if args.nextvu != None and args.nextvu != startVUID:
logWarn('You must now edit the value of reflow.py:startVUID to',
args.nextvu,
'so that future runs will not overwrite existing VUID tags')
try:
reflow_count_file_path = os.path.dirname(os.path.realpath(__file__))
reflow_count_file_path += '/reflow_count.py'
reflow_count_file = open(reflow_count_file_path, 'w', encoding='utf8')
print('# The value to start tagging VU statements at, unless overridden by -nextvu\n', file=reflow_count_file, end='')
count_string = 'startVUID = %d\n' % args.nextvu
print(count_string, file=reflow_count_file, end='')
reflow_count_file.close()
except:
logWarn('Cannot open output count file reflow_count.py', ':', sys.exc_info()[0])

View File

@ -0,0 +1,2 @@
# The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 1676

View File

@ -99,6 +99,39 @@ except for noted exceptions in the table below.
|====
[[writing-arrays]]
=== Describing Properties of Array Elements
Many Vulkan parameters are arrays, or pointers to arrays.
When describing array elements, use the terminology "`each element`" when
the description applies uniformly and independently to every element of the
array.
For example:
[source,asciidoc]
.Example Markup
----
* Each element of the pname:pCommandBuffers member of each element of
pname:pSubmits must: be in the <<commandbuffers-lifecycle, pending or
executable state>>.
----
Use the terminology "`any element`" when the description is of zero or more
elements of the array sharing a property.
For example:
[source,asciidoc]
.Example Markup
----
* If any element of the pname:pCommandBuffers member of any element
of pname:pSubmits was not recorded with the
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
the <<commandbuffers-lifecycle, pending state>>.
----
Never use the redundant terminology "`any *given* element`".
[[writing-compound-words]]
=== Compound Words and Preferred Orthography

View File

@ -157,6 +157,8 @@ include::style/vuid.txt[]
= Revision History
* 2017-09-10 - Add descriptions of <<writing-arrays, how to use `each` and
`any`>> to refer to properties of elments of arrays (internal issue 884).
* 2017-09-10 - Add <<extensions-interactions-parent, Valid Usage and
Extension pname:pNext Chains>> language specifying where to describe
interactions of structures in a pname:pNext chain (internal issue 715).

View File

@ -1020,6 +1020,57 @@ VkResult vkBindImageMemory2KHR(
}
#endif /* VK_KHR_bind_memory2 */
#ifdef VK_ANDROID_native_buffer
static PFN_vkGetSwapchainGrallocUsageANDROID pfn_vkGetSwapchainGrallocUsageANDROID;
VkResult vkGetSwapchainGrallocUsageANDROID(
VkDevice device,
VkFormat format,
VkImageUsageFlags imageUsage,
int* grallocUsage)
{
return pfn_vkGetSwapchainGrallocUsageANDROID(
device,
format,
imageUsage,
grallocUsage
);
}
static PFN_vkAcquireImageANDROID pfn_vkAcquireImageANDROID;
VkResult vkAcquireImageANDROID(
VkDevice device,
VkImage image,
int nativeFenceFd,
VkSemaphore semaphore,
VkFence fence)
{
return pfn_vkAcquireImageANDROID(
device,
image,
nativeFenceFd,
semaphore,
fence
);
}
static PFN_vkQueueSignalReleaseImageANDROID pfn_vkQueueSignalReleaseImageANDROID;
VkResult vkQueueSignalReleaseImageANDROID(
VkQueue queue,
uint32_t waitSemaphoreCount,
const VkSemaphore* pWaitSemaphores,
VkImage image,
int* pNativeFenceFd)
{
return pfn_vkQueueSignalReleaseImageANDROID(
queue,
waitSemaphoreCount,
pWaitSemaphores,
image,
pNativeFenceFd
);
}
#endif /* VK_ANDROID_native_buffer */
#ifdef VK_EXT_debug_report
static PFN_vkCreateDebugReportCallbackEXT pfn_vkCreateDebugReportCallbackEXT;
VkResult vkCreateDebugReportCallbackEXT(
@ -1951,6 +2002,11 @@ void vkExtInitInstance(VkInstance instance)
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindBufferMemory2KHR");
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindImageMemory2KHR");
#endif /* VK_KHR_bind_memory2 */
#ifdef VK_ANDROID_native_buffer
pfn_vkGetSwapchainGrallocUsageANDROID = (PFN_vkGetSwapchainGrallocUsageANDROID)vkGetInstanceProcAddr(instance, "vkGetSwapchainGrallocUsageANDROID");
pfn_vkAcquireImageANDROID = (PFN_vkAcquireImageANDROID)vkGetInstanceProcAddr(instance, "vkAcquireImageANDROID");
pfn_vkQueueSignalReleaseImageANDROID = (PFN_vkQueueSignalReleaseImageANDROID)vkGetInstanceProcAddr(instance, "vkQueueSignalReleaseImageANDROID");
#endif /* VK_ANDROID_native_buffer */
#ifdef VK_EXT_debug_report
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT");
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT");
@ -2199,6 +2255,11 @@ void vkExtInitDevice(VkDevice device)
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetDeviceProcAddr(device, "vkBindBufferMemory2KHR");
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetDeviceProcAddr(device, "vkBindImageMemory2KHR");
#endif /* VK_KHR_bind_memory2 */
#ifdef VK_ANDROID_native_buffer
pfn_vkGetSwapchainGrallocUsageANDROID = (PFN_vkGetSwapchainGrallocUsageANDROID)vkGetDeviceProcAddr(device, "vkGetSwapchainGrallocUsageANDROID");
pfn_vkAcquireImageANDROID = (PFN_vkAcquireImageANDROID)vkGetDeviceProcAddr(device, "vkAcquireImageANDROID");
pfn_vkQueueSignalReleaseImageANDROID = (PFN_vkQueueSignalReleaseImageANDROID)vkGetDeviceProcAddr(device, "vkQueueSignalReleaseImageANDROID");
#endif /* VK_ANDROID_native_buffer */
#ifdef VK_EXT_debug_report
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkCreateDebugReportCallbackEXT");
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkDestroyDebugReportCallbackEXT");

View File

@ -393,13 +393,19 @@ Extension = element extension {
ProfileName ? ,
ExtensionName ? ,
Comment ? ,
InterfaceElement *
(
InterfaceElement |
element comment { text }
) *
} |
element remove {
attribute api { text } ? ,
ProfileName ? ,
Comment ? ,
InterfaceElement *
(
InterfaceElement |
element comment { text }
) *
}
) *
}

View File

@ -107,7 +107,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 61</type>
#define <name>VK_HEADER_VERSION</name> 62</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -493,10 +493,6 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member><type>VkOffset2D</type> <name>offset</name></member>
<member><type>VkExtent2D</type> <name>extent</name></member>
</type>
<type category="struct" name="VkRect3D">
<member><type>VkOffset3D</type> <name>offset</name></member>
<member><type>VkExtent3D</type> <name>extent</name></member>
</type>
<type category="struct" name="VkClearRect">
<member><type>VkRect2D</type> <name>rect</name></member>
<member><type>uint32_t</type> <name>baseArrayLayer</name></member>
@ -2543,7 +2539,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member optional="true"><type>uint32_t</type> <name>attachmentInitialSampleLocationsCount</name></member>
<member len="attachmentInitialSampleLocationsCount">const <type>VkAttachmentSampleLocationsEXT</type>* <name>pAttachmentInitialSampleLocations</name></member>
<member optional="true"><type>uint32_t</type> <name>postSubpassSampleLocationsCount</name></member>
<member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pSubpassSampleLocations</name></member>
<member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pPostSubpassSampleLocations</name></member>
</type>
<type category="struct" name="VkPipelineSampleLocationsStateCreateInfoEXT" structextends="VkPipelineMultisampleStateCreateInfo">
<member values="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
@ -2619,6 +2615,14 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
<member><type>VkValidationCacheEXT</type> <name>validationCache</name></member> <!-- Validation cache handle -->
</type>
<type category="struct" name="VkNativeBufferANDROID">
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member>
<member>const <type>void</type>* <name>handle</name></member>
<member><type>int</type> <name>stride</name></member>
<member><type>int</type> <name>format</name></member>
<member><type>int</type> <name>usage</name></member>
</type>
</types>
<comment>Vulkan enumerant (token) definitions</comment>
@ -5337,7 +5341,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<param optional="true" externsync="true"><type>VkSamplerYcbcrConversionKHR</type> <name>ycbcrConversion</name></param>
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
</command>
<command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
<proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param>const <type>VkValidationCacheCreateInfoEXT</type>* <name>pCreateInfo</name></param>
@ -5364,6 +5368,29 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<param><type>uint32_t</type> <name>srcCacheCount</name></param>
<param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsageANDROID</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkFormat</type> <name>format</name></param>
<param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
<param><type>int</type>* <name>grallocUsage</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkAcquireImageANDROID</name></proto>
<param><type>VkDevice</type> <name>device</name></param>
<param><type>VkImage</type> <name>image</name></param>
<param><type>int</type> <name>nativeFenceFd</name></param>
<param><type>VkSemaphore</type> <name>semaphore</name></param>
<param><type>VkFence</type> <name>fence</name></param>
</command>
<command>
<proto><type>VkResult</type> <name>vkQueueSignalReleaseImageANDROID</name></proto>
<param><type>VkQueue</type> <name>queue</name></param>
<param><type>uint32_t</type> <name>waitSemaphoreCount</name></param>
<param>const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></param>
<param><type>VkImage</type> <name>image</name></param>
<param><type>int</type>* <name>pNativeFenceFd</name></param>
</command>
</commands>
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
@ -5727,9 +5754,14 @@ private version is maintained in the 1.0 branch of the member gitlab server.
</extension>
<extension name="VK_ANDROID_native_buffer" number="11" supported="disabled">
<require>
<enum value="4" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
<enum value="5" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
<enum value="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/>
<enum value="&quot;VK_ANDROID_native_buffer&quot;" name="VK_ANDROID_NATIVE_BUFFER_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"/>
<type name="VkNativeBufferANDROID"/>
<command name="vkGetSwapchainGrallocUsageANDROID"/>
<command name="vkAcquireImageANDROID"/>
<command name="vkQueueSignalReleaseImageANDROID"/>
</require>
</extension>
<extension name="VK_EXT_debug_report" number="12" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
@ -5981,10 +6013,10 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_AMD_extension_46&quot;" name="VK_AMD_EXTENSION_46_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_47" number="47" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
<extension name="VK_AMD_shader_image_load_store_lod" number="47" author="AMD" contact="Dominik Witczak @dominikwitczak_amd" supported="vulkan" type="device">
<require>
<enum value="0" name="VK_AMD_EXTENSION_47_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_47&quot;" name="VK_AMD_EXTENSION_47_EXTENSION_NAME"/>
<enum value="1" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_shader_image_load_store_lod&quot;" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NVX_extension_48" number="48" author="NVX" contact="James Jones @cubanismo" supported="disabled">
@ -7153,69 +7185,69 @@ private version is maintained in the 1.0 branch of the member gitlab server.
</extension>
<extension name="VK_KHR_sampler_ycbcr_conversion" number="157" type="device" requires="VK_KHR_maintenance1,VK_KHR_bind_memory2,VK_KHR_get_memory_requirements2,VK_KHR_get_physical_device_properties2" author="KHR" contact="Andrew Garrard @fluppeteer" supported="vulkan">
<require>
<enum value="1" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_sampler_ycbcr_conversion&quot;" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"/>
<enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"/>
<enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"/>
<enum offset="0" extends="VkFormat" name="VK_FORMAT_G8B8G8R8_422_UNORM_KHR"/>
<enum offset="1" extends="VkFormat" name="VK_FORMAT_B8G8R8G8_422_UNORM_KHR"/>
<enum offset="2" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR"/>
<enum offset="3" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR"/>
<enum offset="4" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR"/>
<enum offset="5" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR"/>
<enum offset="6" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR"/>
<enum offset="7" extends="VkFormat" name="VK_FORMAT_R10X6_UNORM_PACK16_KHR"/>
<enum offset="8" extends="VkFormat" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR"/>
<enum offset="9" extends="VkFormat" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR"/>
<enum offset="10" extends="VkFormat" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR"/>
<enum offset="11" extends="VkFormat" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR"/>
<enum offset="12" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="13" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="14" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="15" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="16" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR"/>
<enum offset="17" extends="VkFormat" name="VK_FORMAT_R12X4_UNORM_PACK16_KHR"/>
<enum offset="18" extends="VkFormat" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR"/>
<enum offset="19" extends="VkFormat" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR"/>
<enum offset="20" extends="VkFormat" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR"/>
<enum offset="21" extends="VkFormat" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR"/>
<enum offset="22" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="23" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="24" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="25" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="26" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR"/>
<enum offset="27" extends="VkFormat" name="VK_FORMAT_G16B16G16R16_422_UNORM_KHR"/>
<enum offset="28" extends="VkFormat" name="VK_FORMAT_B16G16R16G16_422_UNORM_KHR"/>
<enum offset="29" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR"/>
<enum offset="30" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR"/>
<enum offset="31" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR"/>
<enum offset="32" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR"/>
<enum offset="33" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR"/>
<enum bitpos="4" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"/>
<enum bitpos="5" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"/>
<enum bitpos="6" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"/>
<enum bitpos="9" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT_KHR"/>
<enum bitpos="17" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" comment="Format can have midpoint rather than cosited chroma samples"/>
<enum bitpos="18" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" comment="Format can be used with linear filtering whilst color conversion is enabled"/>
<enum bitpos="19" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" comment="Format can have different chroma, min and mag filters"/>
<enum bitpos="20" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"/>
<enum bitpos="21" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"/>
<enum bitpos="22" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT_KHR" comment="Format supports disjoint planes"/>
<enum bitpos="23" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR" comment="Format can have cosited rather than midpoint chroma samples"/>
<type name="VkSamplerYcbcrConversionCreateInfoKHR"/>
<type name="VkSamplerYcbcrConversionInfoKHR"/>
<type name="VkBindImagePlaneMemoryInfoKHR"/>
<type name="VkImagePlaneMemoryRequirementsInfoKHR"/>
<type name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"/>
<type name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"/>
<command name="vkCreateSamplerYcbcrConversionKHR"/>
<command name="vkDestroySamplerYcbcrConversionKHR"/>
<enum value="1" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_sampler_ycbcr_conversion&quot;" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"/>
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"/>
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"/>
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"/>
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"/>
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"/>
<enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"/>
<enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"/>
<enum offset="0" extends="VkFormat" name="VK_FORMAT_G8B8G8R8_422_UNORM_KHR"/>
<enum offset="1" extends="VkFormat" name="VK_FORMAT_B8G8R8G8_422_UNORM_KHR"/>
<enum offset="2" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR"/>
<enum offset="3" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR"/>
<enum offset="4" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR"/>
<enum offset="5" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR"/>
<enum offset="6" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR"/>
<enum offset="7" extends="VkFormat" name="VK_FORMAT_R10X6_UNORM_PACK16_KHR"/>
<enum offset="8" extends="VkFormat" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR"/>
<enum offset="9" extends="VkFormat" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR"/>
<enum offset="10" extends="VkFormat" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR"/>
<enum offset="11" extends="VkFormat" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR"/>
<enum offset="12" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="13" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="14" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="15" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="16" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR"/>
<enum offset="17" extends="VkFormat" name="VK_FORMAT_R12X4_UNORM_PACK16_KHR"/>
<enum offset="18" extends="VkFormat" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR"/>
<enum offset="19" extends="VkFormat" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR"/>
<enum offset="20" extends="VkFormat" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR"/>
<enum offset="21" extends="VkFormat" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR"/>
<enum offset="22" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="23" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR"/>
<enum offset="24" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="25" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR"/>
<enum offset="26" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR"/>
<enum offset="27" extends="VkFormat" name="VK_FORMAT_G16B16G16R16_422_UNORM_KHR"/>
<enum offset="28" extends="VkFormat" name="VK_FORMAT_B16G16R16G16_422_UNORM_KHR"/>
<enum offset="29" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR"/>
<enum offset="30" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR"/>
<enum offset="31" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR"/>
<enum offset="32" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR"/>
<enum offset="33" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR"/>
<enum bitpos="4" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"/>
<enum bitpos="5" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"/>
<enum bitpos="6" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"/>
<enum bitpos="9" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT_KHR"/>
<enum bitpos="17" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" comment="Format can have midpoint rather than cosited chroma samples"/>
<enum bitpos="18" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" comment="Format can be used with linear filtering whilst color conversion is enabled"/>
<enum bitpos="19" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" comment="Format can have different chroma, min and mag filters"/>
<enum bitpos="20" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"/>
<enum bitpos="21" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"/>
<enum bitpos="22" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT_KHR" comment="Format supports disjoint planes"/>
<enum bitpos="23" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR" comment="Format can have cosited rather than midpoint chroma samples"/>
<type name="VkSamplerYcbcrConversionCreateInfoKHR"/>
<type name="VkSamplerYcbcrConversionInfoKHR"/>
<type name="VkBindImagePlaneMemoryInfoKHR"/>
<type name="VkImagePlaneMemoryRequirementsInfoKHR"/>
<type name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"/>
<type name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"/>
<command name="vkCreateSamplerYcbcrConversionKHR"/>
<command name="vkDestroySamplerYcbcrConversionKHR"/>
</require>
</extension>
<extension name="VK_KHR_bind_memory2" number="158" type="device" author="KHR" contact="Tobias Hector @tobias" supported="vulkan">
@ -7315,5 +7347,53 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_EXT_extension_170&quot;" name="VK_EXT_EXTENSION_170_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_QCOM_extension_171" number="171" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_171_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_171&quot;" name="VK_QCOM_extension_171_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_QCOM_extension_172" number="172" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_172_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_172&quot;" name="VK_QCOM_extension_172_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_173_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_173&quot;" name="VK_QCOM_extension_173_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_QCOM_extension_174" number="174" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_174_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_174&quot;" name="VK_QCOM_extension_174_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_175" number="175" author="EXT" contact="Andres Rodriguez @lostgoat" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_175_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_175&quot;" name="VK_KHR_EXTENSION_175_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_176" number="176" author="EXT" contact="Neil Henning @neil_henning" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_176_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_176&quot;" name="VK_KHR_EXTENSION_176_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_177" number="177" author="EXT" contact="Neil Henning @neil_henning" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_177_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_177&quot;" name="VK_KHR_EXTENSION_177_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_EXT_extension_178" number="178" author="EXT" contact="Alexander Galazin @debater" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_178_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_178&quot;" name="VK_KHR_EXTENSION_178_EXTENSION_NAME"/>
</require>
</extension>
</extensions>
</registry>

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 61
#define VK_HEADER_VERSION 62
#define VK_NULL_HANDLE 0
@ -5486,6 +5486,11 @@ typedef struct VkTextureLODGatherFormatPropertiesAMD {
#define VK_AMD_shader_image_load_store_lod 1
#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
#define VK_KHX_multiview 1
#define VK_KHX_MULTIVIEW_SPEC_VERSION 1
#define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
@ -6647,7 +6652,7 @@ typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
uint32_t attachmentInitialSampleLocationsCount;
const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
uint32_t postSubpassSampleLocationsCount;
const VkSubpassSampleLocationsEXT* pSubpassSampleLocations;
const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;
} VkRenderPassSampleLocationsBeginInfoEXT;
typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {

6
update_valid_usage_ids.sh Executable file
View File

@ -0,0 +1,6 @@
# This script updates the valid usage IDs in the specification
# AsciiDoctor files. If a valid usage entry already contains
# an ID, it skips that entry. If it does not contain an ID,
# it will generate a new one.
./doc/specs/vulkan/reflow.py -overwrite -noflow -tagvu