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:
parent
d893b6a79a
commit
6012d138c7
|
@ -40,6 +40,7 @@ __pycache__
|
||||||
doc/specs/vulkan/api
|
doc/specs/vulkan/api
|
||||||
doc/specs/vulkan/hostsynctable
|
doc/specs/vulkan/hostsynctable
|
||||||
doc/specs/vulkan/validity
|
doc/specs/vulkan/validity
|
||||||
|
doc/specs/vulkan/appendices/meta
|
||||||
|
|
||||||
# Files generated by extraction from spec source
|
# Files generated by extraction from spec source
|
||||||
doc/specs/vulkan/man/PFN*.txt
|
doc/specs/vulkan/man/PFN*.txt
|
||||||
|
|
|
@ -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:
|
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.
|
* Bump API patch number and header version number to 61 for this update.
|
||||||
|
|
|
@ -87,25 +87,19 @@ VERBOSE =
|
||||||
# $(EXTENSIONS))
|
# $(EXTENSIONS))
|
||||||
# ADOCOPTS options for asciidoc->HTML5 output
|
# ADOCOPTS options for asciidoc->HTML5 output
|
||||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
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
|
# Spell out RFC2822 format as not all date commands support -R
|
||||||
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
|
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
|
||||||
|
|
||||||
# Generate Asciidoc attributes for spec remark
|
# 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
|
# Could use `git log -1 --format="%cd"` to get branch commit date
|
||||||
# This used to be a dependency in the spec html/pdf targets,
|
# This used to be a dependency in the spec html/pdf targets,
|
||||||
# but that's likely to lead to merge conflicts. Just regenerate
|
# but that's likely to lead to merge conflicts. Just regenerate
|
||||||
# when pushing a new spec for review to the sandbox.
|
# when pushing a new spec for review to the sandbox.
|
||||||
# The dependency on HEAD is per the suggestion in
|
# The dependency on HEAD is per the suggestion in
|
||||||
# http://neugierig.org/software/blog/2014/11/binary-revisions.html
|
# 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"`)
|
commit: $(shell echo `git log -1 --format="%H"`)
|
||||||
endif
|
|
||||||
|
|
||||||
ATTRIBOPTS = -a revnumber="$(SPECREVISION)" \
|
ATTRIBOPTS = -a revnumber="$(SPECREVISION)" \
|
||||||
-a revdate="$(SPECDATE)" \
|
-a revdate="$(SPECDATE)" \
|
||||||
|
|
|
@ -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
|
|
@ -375,6 +375,10 @@ ifdef::VK_AMD_shader_fragment_mask[]
|
||||||
include::VK_AMD_shader_fragment_mask.txt[]
|
include::VK_AMD_shader_fragment_mask.txt[]
|
||||||
endif::VK_AMD_shader_fragment_mask[]
|
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[]
|
ifdef::VK_AMD_shader_trinary_minmax[]
|
||||||
include::VK_AMD_shader_trinary_minmax.txt[]
|
include::VK_AMD_shader_trinary_minmax.txt[]
|
||||||
endif::VK_AMD_shader_trinary_minmax[]
|
endif::VK_AMD_shader_trinary_minmax[]
|
||||||
|
|
|
@ -977,6 +977,13 @@ Resolve Attachment::
|
||||||
multisample resolve operation from the corresponding color attachment at
|
multisample resolve operation from the corresponding color attachment at
|
||||||
the end of the subpass.
|
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::
|
Sampled Image::
|
||||||
A descriptor type that represents an image view, and supports filtered
|
A descriptor type that represents an image view, and supports filtered
|
||||||
(sampled) and unfiltered read-only acccess in a shader.
|
(sampled) and unfiltered read-only acccess in a shader.
|
||||||
|
|
|
@ -106,6 +106,10 @@ ifdef::VK_KHX_device_group[]
|
||||||
[[spirvenv-capabilities-table-devicegroup]]
|
[[spirvenv-capabilities-table-devicegroup]]
|
||||||
| code:DeviceGroup | <<VK_KHX_device_group,VK_KHX_device_group>>
|
| code:DeviceGroup | <<VK_KHX_device_group,VK_KHX_device_group>>
|
||||||
endif::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[]
|
ifdef::VK_AMD_texture_gather_bias_lod[]
|
||||||
[[spirvenv-capabilities-table-imagegatherbiaslodamd]]
|
[[spirvenv-capabilities-table-imagegatherbiaslodamd]]
|
||||||
| code:ImageGatherBiasLodAMD | <<VK_AMD_texture_gather_bias_lod,VK_AMD_texture_gather_bias_lod>>
|
| 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.
|
uses the +SPV_AMD_shader_ballot+ SPIR-V extension.
|
||||||
endif::VK_AMD_shader_ballot[]
|
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[]
|
ifdef::VK_AMD_shader_trinary_minmax[]
|
||||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||||
uses the +SPV_AMD_shader_trinary_minmax+ SPIR-V extension.
|
uses the +SPV_AMD_shader_trinary_minmax+ SPIR-V extension.
|
||||||
|
|
|
@ -8,7 +8,7 @@ as well as weights [eq]#{alpha}# and [eq]#{beta}#.
|
||||||
++++++++++++++++++++++++
|
++++++++++++++++++++++++
|
||||||
\begin{aligned}
|
\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]
|
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]
|
\alpha & = \mathbin{frac} \left ( u - \frac{1}{2} \right ) \\[1em]
|
||||||
\beta & = \mathbin{frac} \left ( v - \frac{1}{2} \right )
|
\beta & = \mathbin{frac} \left ( v - \frac{1}{2} \right )
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
If a swapchain associated with a display surface is destroyed and there are
|
When a swapchain associated with a display surface is destroyed, if the
|
||||||
no valid descendants of that swapchain, the implementation must: either
|
image most recently presented to the display surface is from the swapchain
|
||||||
revert any display resources modified by presenting images with the
|
being destroyed, then either any display resources modified by presenting
|
||||||
swapchain to their state prior to the first present performed with the
|
images from any swapchain associated with the display surface must: be
|
||||||
swapchain and its ancestors, or leave such resources in their current state.
|
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.
|
||||||
|
|
|
@ -111,7 +111,8 @@ include::../../api/structs/VkSwapchainCreateInfoKHR.txt[]
|
||||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||||
* pname:flags is a bitmask of elink:VkSwapchainCreateFlagBitsKHR
|
* pname:flags is a bitmask of elink:VkSwapchainCreateFlagBitsKHR
|
||||||
indicating parameters of swapchain creation.
|
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
|
* pname:minImageCount is the minimum number of presentable images that the
|
||||||
application needs.
|
application needs.
|
||||||
The platform will either create the swapchain with at least that many
|
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.
|
effects that require them to run for all pixels in the presentable image.
|
||||||
====
|
====
|
||||||
|
|
||||||
* pname:oldSwapchain, if not dlink:VK_NULL_HANDLE, specifies the swapchain
|
* pname:oldSwapchain, if not dlink:VK_NULL_HANDLE, specifies an existing
|
||||||
that will be replaced by the new swapchain being created.
|
non-retired swapchain that is associated with surface.
|
||||||
The new swapchain will be a descendant of pname:oldSwapchain.
|
|
||||||
Further, any descendants of the new swapchain will also be descendants
|
|
||||||
of pname:oldSwapchain.
|
|
||||||
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
|
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
|
||||||
is not dlink:VK_NULL_HANDLE, any images not acquired by the application
|
is not dlink:VK_NULL_HANDLE, pname:oldSwapchain is retired, even if
|
||||||
may: be freed by the implementation, which may: occur even if creation
|
creation of the new swapchain fails.
|
||||||
of the new swapchain fails.
|
The new swapchain is created in the non-retired state whether or not
|
||||||
The application must: destroy the old swapchain to free all memory
|
pname:oldSwapchain is dlink:VK_NULL_HANDLE.
|
||||||
associated with the old swapchain.
|
|
||||||
The application must: wait for the completion of any outstanding
|
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
|
||||||
rendering to images it currently has acquired at the time the swapchain
|
is not dlink:VK_NULL_HANDLE, any images from pname:oldSwapchain that are
|
||||||
is destroyed.
|
not acquired by the application may: be freed by the implementation,
|
||||||
The application can: continue to present any images it acquired and has
|
which may: occur even if creation of the new swapchain fails.
|
||||||
not yet presented using the old swapchain, as long as it has not entered
|
The application must: destroy sname:oldSwapchain to free all memory
|
||||||
a state that causes it to return ename:VK_ERROR_OUT_OF_DATE_KHR.
|
associated with sname:oldSwapchain.
|
||||||
However, the application cannot: acquire any more images from the old
|
[NOTE]
|
||||||
swapchain regardless of whether or not creation of the new swapchain
|
.Note
|
||||||
succeeds.
|
====
|
||||||
|
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[]
|
ifdef::VK_KHR_shared_presentable_image[]
|
||||||
The application can: continue to use a shared presentable image obtained
|
The application can: continue to use a shared presentable image obtained
|
||||||
from pname:oldSwapchain until a presentable image is acquired from the
|
from pname:oldSwapchain until a presentable image is acquired from the new
|
||||||
new swapchain, as long as it has not entered a state that causes it to
|
swapchain, as long as it has not entered a state that causes it to return
|
||||||
return ename:VK_ERROR_OUT_OF_DATE_KHR.
|
ename:VK_ERROR_OUT_OF_DATE_KHR.
|
||||||
endif::VK_KHR_shared_presentable_image[]
|
endif::VK_KHR_shared_presentable_image[]
|
||||||
|
====
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
@ -308,6 +320,9 @@ ifdef::VK_KHX_device_group[]
|
||||||
to 1, pname:flags must: not contain
|
to 1, pname:flags must: not contain
|
||||||
ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
|
ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
|
||||||
endif::VK_KHX_device_group[]
|
endif::VK_KHX_device_group[]
|
||||||
|
* [[VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01674]]
|
||||||
|
pname:oldSwapchain must: not be in the retired state
|
||||||
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../../validity/structs/VkSwapchainCreateInfoKHR.txt[]
|
include::../../validity/structs/VkSwapchainCreateInfoKHR.txt[]
|
||||||
|
@ -393,12 +408,17 @@ endif::VK_KHX_device_group[]
|
||||||
| pname:initialLayout | ename:VK_IMAGE_LAYOUT_UNDEFINED
|
| pname:initialLayout | ename:VK_IMAGE_LAYOUT_UNDEFINED
|
||||||
|====
|
|====
|
||||||
|
|
||||||
The sname:VkSurfaceKHR associated with a swapchain must: not be destroyed
|
The pname:surface must: not be destroyed until after the swapchain is
|
||||||
until after the swapchain is destroyed.
|
destroyed.
|
||||||
|
|
||||||
The native window referred to by pname:surface must: not already be
|
If pname:oldSwapchain is not VK_NULL_HANDLE then pname:surface must: be
|
||||||
associated with a swapchain other than pname:oldSwapchain, or with a
|
associated with pname:oldSwapchain.
|
||||||
non-Vulkan graphics API surface.
|
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
|
Like core functions, several WSI functions, including
|
||||||
fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical
|
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
|
swapchain object when there is no more specific allocator available (see
|
||||||
<<memory-allocation,Memory Allocation>>).
|
<<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
|
pname:swapchain and all associated sname:VkImage handles are destroyed, and
|
||||||
must: not be acquired or used any more by the application.
|
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
|
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,
|
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,
|
the memory for that image may: not be freed until the window is destroyed,
|
||||||
or another swapchain is created for the window.
|
or another swapchain is created for the window.
|
||||||
|
@ -549,7 +571,8 @@ that image, call:
|
||||||
include::../../api/protos/vkAcquireNextImageKHR.txt[]
|
include::../../api/protos/vkAcquireNextImageKHR.txt[]
|
||||||
|
|
||||||
* pname:device is the device associated with pname:swapchain.
|
* 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
|
* pname:timeout indicates how long the function waits, in nanoseconds, if
|
||||||
no image is available.
|
no image is available.
|
||||||
* pname:semaphore is dlink:VK_NULL_HANDLE or a semaphore to signal.
|
* pname:semaphore is dlink:VK_NULL_HANDLE or a semaphore to signal.
|
||||||
|
@ -561,9 +584,7 @@ include::../../api/protos/vkAcquireNextImageKHR.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkAcquireNextImageKHR-swapchain-01285]]
|
* [[VUID-vkAcquireNextImageKHR-swapchain-01285]]
|
||||||
pname:swapchain must: not have been replaced by being passed as the
|
pname:swapchain must: not be in the retired state
|
||||||
sname:VkSwapchainCreateInfoKHR::pname:oldSwapchain value to
|
|
||||||
fname:vkCreateSwapchainKHR
|
|
||||||
* [[VUID-vkAcquireNextImageKHR-semaphore-01286]]
|
* [[VUID-vkAcquireNextImageKHR-semaphore-01286]]
|
||||||
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
|
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
|
||||||
* [[VUID-vkAcquireNextImageKHR-fence-01287]]
|
* [[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
|
An application must: wait until either the pname:semaphore or pname:fence is
|
||||||
signaled before using the presentable image.
|
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
|
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.
|
first time, or if the presentable image is immediately ready for use.
|
||||||
|
|
||||||
A successful call to fname:vkAcquireNextImageKHR counts as a signal
|
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
|
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
|
the platform is able to scale the presented images to the new size to
|
||||||
produce valid surface updates.
|
produce valid surface updates.
|
||||||
It is up to applications to decide whether they prefer to continue using the
|
It is up to the application to decide whether it prefers to continue using
|
||||||
current swapchain indefinitely or temporarily in this state, or to re-create
|
the current swapchain indefinitely or temporarily in this state, or to
|
||||||
the swapchain to better match the platform surface properties.
|
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
|
* 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:sType is the type of this structure.
|
||||||
* pname:pNext is `NULL` or a pointer to an extension-specific 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
|
* pname:timeout indicates how long the function waits, in nanoseconds, if
|
||||||
no image is available.
|
no image is available.
|
||||||
* pname:semaphore is code:VK_NULL_HANDLE or a semaphore to signal.
|
* 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
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
* [[VUID-VkAcquireNextImageInfoKHX-swapchain-01675]]
|
||||||
|
pname:swapchain must: not be in the retired state
|
||||||
* [[VUID-VkAcquireNextImageInfoKHX-semaphore-01288]]
|
* [[VUID-VkAcquireNextImageInfoKHX-semaphore-01288]]
|
||||||
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
|
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
|
||||||
* [[VUID-VkAcquireNextImageInfoKHX-fence-01289]]
|
* [[VUID-VkAcquireNextImageInfoKHX-fence-01289]]
|
||||||
|
@ -897,9 +930,9 @@ include::../../api/protos/vkQueuePresentKHR.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkQueuePresentKHR-pSwapchains-01292]]
|
* [[VUID-vkQueuePresentKHR-pSwapchains-01292]]
|
||||||
Any given element of pname:pSwapchains member of pname:pPresentInfo
|
Each element of pname:pSwapchains member of pname:pPresentInfo must: be
|
||||||
must: be a swapchain that is created for a surface for which
|
a swapchain that is created for a surface for which presentation is
|
||||||
presentation is supported from pname:queue as determined using a call to
|
supported from pname:queue as determined using a call to
|
||||||
fname:vkGetPhysicalDeviceSurfaceSupportKHR
|
fname:vkGetPhysicalDeviceSurfaceSupportKHR
|
||||||
ifdef::VK_KHR_display_swapchain[]
|
ifdef::VK_KHR_display_swapchain[]
|
||||||
* [[VUID-vkQueuePresentKHR-pSwapchains-01293]]
|
* [[VUID-vkQueuePresentKHR-pSwapchains-01293]]
|
||||||
|
@ -966,19 +999,19 @@ include::../../api/structs/VkPresentInfoKHR.txt[]
|
||||||
****
|
****
|
||||||
ifndef::VK_KHR_shared_presentable_image[]
|
ifndef::VK_KHR_shared_presentable_image[]
|
||||||
* [[VUID-VkPresentInfoKHR-pImageIndices-01296]]
|
* [[VUID-VkPresentInfoKHR-pImageIndices-01296]]
|
||||||
Any given element of pname:pImageIndices must: be the index of a
|
Each element of pname:pImageIndices must: be the index of a presentable
|
||||||
presentable image acquired from the swapchain specified by the
|
image acquired from the swapchain specified by the corresponding element
|
||||||
corresponding element of the pname:pSwapchains array, and the presented
|
of the pname:pSwapchains array, and the presented image subresource
|
||||||
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
|
must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout at the time
|
||||||
layout at the time the operation is executed on a sname:VkDevice
|
the operation is executed on a sname:VkDevice
|
||||||
endif::VK_KHR_shared_presentable_image[]
|
endif::VK_KHR_shared_presentable_image[]
|
||||||
ifdef::VK_KHR_shared_presentable_image[]
|
ifdef::VK_KHR_shared_presentable_image[]
|
||||||
* [[VUID-VkPresentInfoKHR-pImageIndices-01430]]
|
* [[VUID-VkPresentInfoKHR-pImageIndices-01430]]
|
||||||
Any given element of pname:pImageIndices must: be the index of a
|
Each element of pname:pImageIndices must: be the index of a presentable
|
||||||
presentable image acquired from the swapchain specified by the
|
image acquired from the swapchain specified by the corresponding element
|
||||||
corresponding element of the pname:pSwapchains array, and the presented
|
of the pname:pSwapchains array, and the presented image subresource
|
||||||
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
|
must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR or
|
||||||
or ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout at the time the
|
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout at the time the
|
||||||
operation is executed on a sname:VkDevice
|
operation is executed on a sname:VkDevice
|
||||||
endif::VK_KHR_shared_presentable_image[]
|
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
|
window associated with the swapchain, the content of all presentable images
|
||||||
in the swapchain becomes undefined.
|
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[]
|
ifdef::VK_EXT_hdr_metadata[]
|
||||||
include::../VK_EXT_hdr_metadata.txt[]
|
include::../VK_EXT_hdr_metadata.txt[]
|
||||||
endif::VK_EXT_hdr_metadata[]
|
endif::VK_EXT_hdr_metadata[]
|
||||||
|
|
|
@ -61,7 +61,8 @@ endif::VK_KHR_maintenance1[]
|
||||||
pname:image must: have been created with
|
pname:image must: have been created with
|
||||||
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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>>
|
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-vkCmdClearColorImage-image-00003]]
|
* [[VUID-vkCmdClearColorImage-image-00003]]
|
||||||
|
@ -238,17 +239,16 @@ attachments and the command parameters.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdClearAttachments-aspectMask-00015]]
|
* [[VUID-vkCmdClearAttachments-aspectMask-00015]]
|
||||||
If the pname:aspectMask member of any given element of
|
If the pname:aspectMask member of any element of pname:pAttachments
|
||||||
pname:pAttachments contains ename:VK_IMAGE_ASPECT_COLOR_BIT, the
|
contains ename:VK_IMAGE_ASPECT_COLOR_BIT, the pname:colorAttachment
|
||||||
pname:colorAttachment member of those elements must: refer to a valid
|
member of that element must: refer to a valid color attachment in the
|
||||||
color attachment in the current subpass
|
current subpass
|
||||||
* [[VUID-vkCmdClearAttachments-pRects-00016]]
|
* [[VUID-vkCmdClearAttachments-pRects-00016]]
|
||||||
The rectangular region specified by a given element of pname:pRects
|
The rectangular region specified by each element of pname:pRects must:
|
||||||
must: be contained within the render area of the current render pass
|
be contained within the render area of the current render pass instance
|
||||||
instance
|
|
||||||
* [[VUID-vkCmdClearAttachments-pRects-00017]]
|
* [[VUID-vkCmdClearAttachments-pRects-00017]]
|
||||||
The layers specified by a given element of pname:pRects must: be
|
The layers specified by each element of pname:pRects must: be contained
|
||||||
contained within every attachment that pname:pAttachments refers to
|
within every attachment that pname:pAttachments refers to
|
||||||
ifdef::VK_KHX_multiview[]
|
ifdef::VK_KHX_multiview[]
|
||||||
* [[VUID-vkCmdClearAttachments-baseArrayLayer-00018]]
|
* [[VUID-vkCmdClearAttachments-baseArrayLayer-00018]]
|
||||||
If the render pass instance this is recorded in uses multiview, then
|
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
|
the data from the command buffer into pname:dstBuffer when the command is
|
||||||
executed on a device.
|
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
|
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.
|
amounts of data, and is why it is limited to only 65536 bytes.
|
||||||
|
|
||||||
|
|
|
@ -864,9 +864,9 @@ See <<devsandqueues-lost-device,Lost Device>>.
|
||||||
<<synchronization-pipeline-stages-supported, table of supported pipeline
|
<<synchronization-pipeline-stages-supported, table of supported pipeline
|
||||||
stages>>.
|
stages>>.
|
||||||
* [[VUID-vkQueueSubmit-pSignalSemaphores-00067]]
|
* [[VUID-vkQueueSubmit-pSignalSemaphores-00067]]
|
||||||
Any given element of the pname:pSignalSemaphores member of any element
|
Each element of the pname:pSignalSemaphores member of any element of
|
||||||
of pname:pSubmits must: be unsignaled when the semaphore signal
|
pname:pSubmits must: be unsignaled when the semaphore signal operation
|
||||||
operation it defines is executed on the device
|
it defines is executed on the device
|
||||||
* [[VUID-vkQueueSubmit-pWaitSemaphores-00068]]
|
* [[VUID-vkQueueSubmit-pWaitSemaphores-00068]]
|
||||||
When a semaphore unsignal operation defined by any element of the
|
When a semaphore unsignal operation defined by any element of the
|
||||||
pname:pWaitSemaphores member of any element of pname:pSubmits executes
|
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>>
|
<<synchronization-semaphores-signaling, semaphore signal operations>>
|
||||||
previously submitted for execution.
|
previously submitted for execution.
|
||||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00070]]
|
* [[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
|
pname:pSubmits must: be in the <<commandbuffers-lifecycle, pending or
|
||||||
executable state>>.
|
executable state>>.
|
||||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00071]]
|
* [[VUID-vkQueueSubmit-pCommandBuffers-00071]]
|
||||||
If any given element of the pname:pCommandBuffers member of any element
|
If any element of the pname:pCommandBuffers member of any element of
|
||||||
of pname:pSubmits was not recorded with the
|
pname:pSubmits was not recorded with the
|
||||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
|
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
|
||||||
the <<commandbuffers-lifecycle, pending state>>.
|
the <<commandbuffers-lifecycle, pending state>>.
|
||||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00072]]
|
* [[VUID-vkQueueSubmit-pCommandBuffers-00072]]
|
||||||
Any <<commandbuffers-secondary, secondary command buffers recorded>>
|
Any <<commandbuffers-secondary, secondary command buffers recorded>>
|
||||||
into any given element of the pname:pCommandBuffers member of any
|
into any element of the pname:pCommandBuffers member of any element of
|
||||||
element of pname:pSubmits must: be in the <<commandbuffers-lifecycle,
|
pname:pSubmits must: be in the <<commandbuffers-lifecycle, pending or
|
||||||
pending or executable state>>.
|
executable state>>.
|
||||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00073]]
|
* [[VUID-vkQueueSubmit-pCommandBuffers-00073]]
|
||||||
If any <<commandbuffers-secondary, secondary command buffers recorded>>
|
If any <<commandbuffers-secondary, secondary command buffers recorded>>
|
||||||
into any given element of the pname:pCommandBuffers member of any
|
into any element of the pname:pCommandBuffers member of any element of
|
||||||
element of pname:pSubmits was not recorded with the
|
pname:pSubmits was not recorded with the
|
||||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
|
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
|
||||||
the <<commandbuffers-lifecycle, pending state>>.
|
the <<commandbuffers-lifecycle, pending state>>.
|
||||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00074]]
|
* [[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
|
pname:pSubmits must: have been allocated from a sname:VkCommandPool that
|
||||||
was created for the same queue family pname:queue belongs to.
|
was created for the same queue family pname:queue belongs to.
|
||||||
****
|
****
|
||||||
|
@ -947,20 +947,19 @@ otherwise execute out of order.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkSubmitInfo-pCommandBuffers-00075]]
|
* [[VUID-VkSubmitInfo-pCommandBuffers-00075]]
|
||||||
Any given element of pname:pCommandBuffers must: not have been allocated
|
Each element of pname:pCommandBuffers must: not have been allocated with
|
||||||
with ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
||||||
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00076]]
|
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00076]]
|
||||||
If the <<features-features-geometryShader,geometry shaders>> feature is
|
If the <<features-features-geometryShader,geometry shaders>> feature is
|
||||||
not enabled, any given element of pname:pWaitDstStageMask must: not
|
not enabled, each element of pname:pWaitDstStageMask must: not contain
|
||||||
contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
||||||
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00077]]
|
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00077]]
|
||||||
If the <<features-features-tessellationShader,tessellation shaders>>
|
If the <<features-features-tessellationShader,tessellation shaders>>
|
||||||
feature is not enabled, any given element of pname:pWaitDstStageMask
|
feature is not enabled, each element of pname:pWaitDstStageMask must:
|
||||||
must: not contain
|
not contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
|
||||||
ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
|
|
||||||
ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
||||||
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00078]]
|
* [[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.
|
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
|
pname:commandBuffer must: have been allocated with a pname:level of
|
||||||
ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY
|
ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00088]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00088]]
|
||||||
Any given element of pname:pCommandBuffers must: have been allocated
|
Each element of pname:pCommandBuffers must: have been allocated with a
|
||||||
with a pname:level of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
pname:level of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00089]]
|
* [[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>>.
|
<<commandbuffers-lifecycle, pending or executable state>>.
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00090]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00090]]
|
||||||
If any element of pname:pCommandBuffers was not recorded with the
|
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
|
recorded into any other primary command buffer, that primary command
|
||||||
buffer must: not be in the <<commandbuffers-lifecycle, pending state>>
|
buffer must: not be in the <<commandbuffers-lifecycle, pending state>>
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00091]]
|
* [[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
|
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not be
|
||||||
in the <<commandbuffers-lifecycle, pending state>>.
|
in the <<commandbuffers-lifecycle, pending state>>.
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00092]]
|
* [[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
|
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not
|
||||||
have already been recorded to pname:commandBuffer.
|
have already been recorded to pname:commandBuffer.
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00093]]
|
* [[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
|
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not
|
||||||
appear more than once in pname:pCommandBuffers.
|
appear more than once in pname:pCommandBuffers.
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00094]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00094]]
|
||||||
Any given element of pname:pCommandBuffers must: have been allocated
|
Each element of pname:pCommandBuffers must: have been allocated from a
|
||||||
from a sname:VkCommandPool that was created for the same queue family as
|
sname:VkCommandPool that was created for the same queue family as the
|
||||||
the sname:VkCommandPool from which pname:commandBuffer was allocated
|
sname:VkCommandPool from which pname:commandBuffer was allocated
|
||||||
* [[VUID-vkCmdExecuteCommands-contents-00095]]
|
* [[VUID-vkCmdExecuteCommands-contents-00095]]
|
||||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||||
instance, that render pass instance must: have been begun with the
|
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
|
ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00096]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00096]]
|
||||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||||
instance, any given element of pname:pCommandBuffers must: have been
|
instance, each element of pname:pCommandBuffers must: have been recorded
|
||||||
recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
|
with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00097]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00097]]
|
||||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||||
instance, any given element of pname:pCommandBuffers must: have been
|
instance, each element of pname:pCommandBuffers must: have been recorded
|
||||||
recorded with sname:VkCommandBufferInheritanceInfo::pname:subpass set to
|
with sname:VkCommandBufferInheritanceInfo::pname:subpass set to the
|
||||||
the index of the subpass which the given command buffer will be executed
|
index of the subpass which the given command buffer will be executed in
|
||||||
in
|
|
||||||
* [[VUID-vkCmdExecuteCommands-pInheritanceInfo-00098]]
|
* [[VUID-vkCmdExecuteCommands-pInheritanceInfo-00098]]
|
||||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||||
instance, the render passes specified in the
|
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.
|
<<renderpass-compatibility,compatible>> with the current render pass.
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00099]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00099]]
|
||||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||||
instance, and any given element of pname:pCommandBuffers was recorded
|
instance, and any element of pname:pCommandBuffers was recorded with
|
||||||
with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal
|
sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to
|
||||||
to dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the
|
dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the
|
||||||
sname:VkFramebuffer used in the current render pass instance
|
sname:VkFramebuffer used in the current render pass instance
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00100]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00100]]
|
||||||
If fname:vkCmdExecuteCommands is not being called within a render pass
|
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
|
recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
|
||||||
* [[VUID-vkCmdExecuteCommands-commandBuffer-00101]]
|
* [[VUID-vkCmdExecuteCommands-commandBuffer-00101]]
|
||||||
If the <<features-features-inheritedQueries,inherited queries>> feature
|
If the <<features-features-inheritedQueries,inherited queries>> feature
|
||||||
|
@ -1278,9 +1276,8 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
||||||
sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics having
|
sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics having
|
||||||
all bits set that are set in the sname:VkQueryPool the query uses
|
all bits set that are set in the sname:VkQueryPool the query uses
|
||||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00105]]
|
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00105]]
|
||||||
Any given element of pname:pCommandBuffers must: not begin any query
|
Each element of pname:pCommandBuffers must: not begin any query types
|
||||||
types that are <<queries-operation-active,active>> in
|
that are <<queries-operation-active,active>> in pname:commandBuffer
|
||||||
pname:commandBuffer
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkCmdExecuteCommands.txt[]
|
include::../validity/protos/vkCmdExecuteCommands.txt[]
|
||||||
|
|
|
@ -100,19 +100,19 @@ memory.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdCopyBuffer-size-00112]]
|
* [[VUID-vkCmdCopyBuffer-size-00112]]
|
||||||
The pname:size member of a given element of pname:pRegions must: be
|
The pname:size member of each element of pname:pRegions must: be greater
|
||||||
greater than `0`
|
than `0`
|
||||||
* [[VUID-vkCmdCopyBuffer-srcOffset-00113]]
|
* [[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
|
less than the size of pname:srcBuffer
|
||||||
* [[VUID-vkCmdCopyBuffer-dstOffset-00114]]
|
* [[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
|
less than the size of pname:dstBuffer
|
||||||
* [[VUID-vkCmdCopyBuffer-size-00115]]
|
* [[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
|
than or equal to the size of pname:srcBuffer minus pname:srcOffset
|
||||||
* [[VUID-vkCmdCopyBuffer-size-00116]]
|
* [[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
|
than or equal to the size of pname:dstBuffer minus pname:dstOffset
|
||||||
* [[VUID-vkCmdCopyBuffer-pRegions-00117]]
|
* [[VUID-vkCmdCopyBuffer-pRegions-00117]]
|
||||||
The union of the source regions, and the union of the destination
|
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
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdCopyImage-pRegions-00122]]
|
* [[VUID-vkCmdCopyImage-pRegions-00122]]
|
||||||
The source region specified by a given element of pname:pRegions must:
|
The source region specified by each element of pname:pRegions must: be a
|
||||||
be a region that is contained within pname:srcImage
|
region that is contained within pname:srcImage
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
if the pname:srcImage's elink:VkFormat is not a
|
if the pname:srcImage's elink:VkFormat is not a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
<<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
|
copied if the pname:srcImage's elink:VkFormat is a multi-planar format
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-vkCmdCopyImage-pRegions-00123]]
|
* [[VUID-vkCmdCopyImage-pRegions-00123]]
|
||||||
The destination region specified by a given element of pname:pRegions
|
The destination region specified by each element of pname:pRegions must:
|
||||||
must: be a region that is contained within pname:dstImage
|
be a region that is contained within pname:dstImage
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
if the pname:dstImage's elink:VkFormat is not a
|
if the pname:dstImage's elink:VkFormat is not a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
<<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
|
contiguously to a single sname:VkDeviceMemory object
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::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
|
copied must: be bound completely and contiguously to a single
|
||||||
sname:VkDeviceMemory object
|
sname:VkDeviceMemory object
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
@ -382,7 +383,8 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
contiguously to a single sname:VkDeviceMemory object
|
contiguously to a single sname:VkDeviceMemory object
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::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
|
is the destination of the copy must: be bound completely and
|
||||||
contiguously to a single sname:VkDeviceMemory object
|
contiguously to a single sname:VkDeviceMemory object
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
@ -408,18 +410,21 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
compatible, as defined <<copies-images-format-compatibility, below>>
|
compatible, as defined <<copies-images-format-compatibility, below>>
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::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
|
not a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,_multi-planar
|
<<features-formats-requiring-sampler-ycbcr-conversion,_multi-planar
|
||||||
format_>>, the elink:VkFormat of each of pname:srcImage and
|
format_>>, the elink:VkFormat of each of pname:srcImage and
|
||||||
pname:dstImage must: be compatible, as defined
|
pname:dstImage must: be compatible, as defined
|
||||||
<<copies-images-format-compatibility, below>>
|
<<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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
image>>, the elink:VkFormat of the image and plane must: be compatible
|
image>>, the elink:VkFormat of the image and plane must: be compatible
|
||||||
according to <<features-formats-compatible-planes,the description of
|
according to <<features-formats-compatible-planes,the description of
|
||||||
compatible planes>> for the plane being copied
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
format>>, the pname:aspectMask of the pname:srcSubresource and/or
|
format>>, the pname:aspectMask of the pname:srcSubresource and/or
|
||||||
pname:dstSubresource that refers to the multi-planar image must: be
|
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
|
pname:dstSubresource must: match
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::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
|
command's pname:dstImage has a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion, multi-planar
|
<<features-formats-requiring-sampler-ycbcr-conversion, multi-planar
|
||||||
image format>> then the pname:aspectMask member of pname:srcSubresource
|
image format>> then the pname:aspectMask member of pname:srcSubresource
|
||||||
and pname:dstSubresource must: match
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
|
||||||
the pname:srcSubresource pname:aspectMask must: be
|
the pname:srcSubresource pname:aspectMask must: be
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
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>>
|
<<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
|
||||||
then the pname:srcSubresource pname:aspectMask must: be
|
then the pname:srcSubresource pname:aspectMask must: be
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
|
||||||
the pname:dstSubresource pname:aspectMask must: be
|
the pname:dstSubresource pname:aspectMask must: be
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
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>>
|
<<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
|
||||||
then the pname:dstSubresource pname:aspectMask must: be
|
then the pname:dstSubresource pname:aspectMask must: be
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
|
||||||
format>> and the pname:dstImage does not have a multi-planar image
|
format>> and the pname:dstImage does not have a multi-planar image
|
||||||
format, the pname:dstSubresource pname:aspectMask must: be
|
format, the pname:dstSubresource pname:aspectMask must: be
|
||||||
ename:VK_IMAGE_ASPECT_COLOR_BIT
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
|
||||||
format>> and the pname:srcImage does not have a multi-planar image
|
format>> and the pname:srcImage does not have a multi-planar image
|
||||||
format, the pname:srcSubresource pname:aspectMask must: be
|
format, the pname:srcSubresource pname:aspectMask must: be
|
||||||
|
@ -760,11 +772,11 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdCopyBufferToImage-pRegions-00171]]
|
* [[VUID-vkCmdCopyBufferToImage-pRegions-00171]]
|
||||||
The buffer region specified by a given element of pname:pRegions must:
|
The buffer region specified by each element of pname:pRegions must: be a
|
||||||
be a region that is contained within pname:srcBuffer
|
region that is contained within pname:srcBuffer
|
||||||
* [[VUID-vkCmdCopyBufferToImage-pRegions-00172]]
|
* [[VUID-vkCmdCopyBufferToImage-pRegions-00172]]
|
||||||
The image region specified by a given element of pname:pRegions must: be
|
The image region specified by each element of pname:pRegions must: be a
|
||||||
a region that is contained within pname:dstImage
|
region that is contained within pname:dstImage
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
if the pname:dstImage's elink:VkFormat is not a
|
if the pname:dstImage's elink:VkFormat is not a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
|
@ -863,8 +875,8 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00182]]
|
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00182]]
|
||||||
The image region specified by a given element of pname:pRegions must: be
|
The image region specified by each element of pname:pRegions must: be a
|
||||||
a region that is contained within pname:srcImage
|
region that is contained within pname:srcImage
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
if the pname:srcImage's elink:VkFormat is not a
|
if the pname:srcImage's elink:VkFormat is not a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
<<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
|
copied if the pname:srcImage's elink:VkFormat is a multi-planar format
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00183]]
|
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00183]]
|
||||||
The buffer region specified by a given element of pname:pRegions must:
|
The buffer region specified by each element of pname:pRegions must: be a
|
||||||
be a region that is contained within pname:dstBuffer
|
region that is contained within pname:dstBuffer
|
||||||
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00184]]
|
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00184]]
|
||||||
The union of all source regions, and the union of all destination
|
The union of all source regions, and the union of all destination
|
||||||
regions, specified by the elements of pname:pRegions, must: not overlap
|
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
|
format's element size
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::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
|
depth/stencil format or a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
format>>,cthen pname:bufferOffset must: be a multiple of the format's
|
format>>,cthen pname:bufferOffset must: be a multiple of the format's
|
||||||
element size
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
format>>, then pname:bufferOffset must: be a multiple of the element
|
format>>, then pname:bufferOffset must: be a multiple of the element
|
||||||
size of the compatible format for the format and the pname:aspectMask of
|
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
|
The pname:aspectMask member of pname:imageSubresource must: specify
|
||||||
aspects present in the calling command's sname:VkImage parameter
|
aspects present in the calling command's sname:VkImage parameter
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
format>>, then the pname:aspectMask member of pname:imageSubresource
|
format>>, then the pname:aspectMask member of pname:imageSubresource
|
||||||
must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
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
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdBlitImage-pRegions-00215]]
|
* [[VUID-vkCmdBlitImage-pRegions-00215]]
|
||||||
The source region specified by a given element of pname:pRegions must:
|
The source region specified by each element of pname:pRegions must: be a
|
||||||
be a region that is contained within pname:srcImage
|
region that is contained within pname:srcImage
|
||||||
* [[VUID-vkCmdBlitImage-pRegions-00216]]
|
* [[VUID-vkCmdBlitImage-pRegions-00216]]
|
||||||
The destination region specified by a given element of pname:pRegions
|
The destination region specified by each element of pname:pRegions must:
|
||||||
must: be a region that is contained within pname:dstImage
|
be a region that is contained within pname:dstImage
|
||||||
* [[VUID-vkCmdBlitImage-pRegions-00217]]
|
* [[VUID-vkCmdBlitImage-pRegions-00217]]
|
||||||
The union of all destination regions, specified by the elements of
|
The union of all destination regions, specified by the elements of
|
||||||
pname:pRegions, must: not overlap in memory with any texel that may: be
|
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
|
optimally tiled images) - as returned by
|
||||||
fname:vkGetPhysicalDeviceFormatProperties
|
fname:vkGetPhysicalDeviceFormatProperties
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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>>
|
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-vkCmdBlitImage-srcImage-00219]]
|
* [[VUID-vkCmdBlitImage-srcImage-00219]]
|
||||||
|
@ -1375,7 +1391,8 @@ endif::VK_KHR_shared_presentable_image[]
|
||||||
optimally tiled images) - as returned by
|
optimally tiled images) - as returned by
|
||||||
fname:vkGetPhysicalDeviceFormatProperties
|
fname:vkGetPhysicalDeviceFormatProperties
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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>>
|
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-vkCmdBlitImage-dstImage-00224]]
|
* [[VUID-vkCmdBlitImage-dstImage-00224]]
|
||||||
|
@ -1575,11 +1592,11 @@ pname:layerCount layers are resolved to the destination image.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdResolveImage-pRegions-00253]]
|
* [[VUID-vkCmdResolveImage-pRegions-00253]]
|
||||||
The source region specified by a given element of pname:pRegions must:
|
The source region specified by each element of pname:pRegions must: be a
|
||||||
be a region that is contained within pname:srcImage
|
region that is contained within pname:srcImage
|
||||||
* [[VUID-vkCmdResolveImage-pRegions-00254]]
|
* [[VUID-vkCmdResolveImage-pRegions-00254]]
|
||||||
The destination region specified by a given element of pname:pRegions
|
The destination region specified by each element of pname:pRegions must:
|
||||||
must: be a region that is contained within pname:dstImage
|
be a region that is contained within pname:dstImage
|
||||||
* [[VUID-vkCmdResolveImage-pRegions-00255]]
|
* [[VUID-vkCmdResolveImage-pRegions-00255]]
|
||||||
The union of all source regions, and the union of all destination
|
The union of all source regions, and the union of all destination
|
||||||
regions, specified by the elements of pname:pRegions, must: not overlap
|
regions, specified by the elements of pname:pRegions, must: not overlap
|
||||||
|
|
|
@ -1563,23 +1563,22 @@ include::../api/structs/VkDescriptorSetAllocateInfo.txt[]
|
||||||
* pname:pSetLayouts is an array of descriptor set layouts, with each
|
* pname:pSetLayouts is an array of descriptor set layouts, with each
|
||||||
member specifying how the corresponding descriptor set is allocated.
|
member specifying how the corresponding descriptor set is allocated.
|
||||||
|
|
||||||
ifndef::VK_KHR_maintenance1[]
|
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
ifndef::VK_KHR_maintenance1[]
|
||||||
* [[VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306]]
|
* [[VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306]]
|
||||||
pname:descriptorSetCount must: not be greater than the number of sets
|
pname:descriptorSetCount must: not be greater than the number of sets
|
||||||
that are currently available for allocation in pname:descriptorPool
|
that are currently available for allocation in pname:descriptorPool
|
||||||
* [[VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307]]
|
* [[VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307]]
|
||||||
pname:descriptorPool must: have enough free descriptor capacity
|
pname:descriptorPool must: have enough free descriptor capacity
|
||||||
remaining to allocate the descriptor sets of the specified layouts
|
remaining to allocate the descriptor sets of the specified layouts
|
||||||
|
endif::VK_KHR_maintenance1[]
|
||||||
ifdef::VK_KHR_push_descriptor[]
|
ifdef::VK_KHR_push_descriptor[]
|
||||||
* [[VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308]]
|
* [[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
|
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set
|
||||||
endif::VK_KHR_push_descriptor[]
|
endif::VK_KHR_push_descriptor[]
|
||||||
****
|
****
|
||||||
endif::VK_KHR_maintenance1[]
|
|
||||||
|
|
||||||
include::../validity/structs/VkDescriptorSetAllocateInfo.txt[]
|
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
|
slink:VkCopyDescriptorSet structure describing an operation copying
|
||||||
descriptors between sets.
|
descriptors between sets.
|
||||||
|
|
||||||
If the pname:dstSet member of any given element of pname:pDescriptorWrites
|
If the pname:dstSet member of any element of pname:pDescriptorWrites or
|
||||||
or pname:pDescriptorCopies is bound, accessed, or modified by any command
|
pname:pDescriptorCopies is bound, accessed, or modified by any command that
|
||||||
that was recorded to a command buffer which is currently in the
|
was recorded to a command buffer which is currently in the
|
||||||
<<commandbuffers-lifecycle, recording or executable state>>, that command
|
<<commandbuffers-lifecycle, recording or executable state>>, that command
|
||||||
buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkUpdateDescriptorSets-dstSet-00314]]
|
* [[VUID-vkUpdateDescriptorSets-dstSet-00314]]
|
||||||
The pname:dstSet member of any given element of pname:pDescriptorWrites
|
The pname:dstSet member of each element of pname:pDescriptorWrites or
|
||||||
or pname:pDescriptorCopies must: not be used by any command that was
|
pname:pDescriptorCopies must: not be used by any command that was
|
||||||
recorded to a command buffer which is in the <<commandbuffers-lifecycle,
|
recorded to a command buffer which is in the <<commandbuffers-lifecycle,
|
||||||
pending state>>.
|
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
|
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and pname:dstSet was
|
||||||
not allocated with a layout that included immutable samplers for
|
not allocated with a layout that included immutable samplers for
|
||||||
pname:dstBinding with pname:descriptorType, the pname:sampler member of
|
pname:dstBinding with pname:descriptorType, the pname:sampler member of
|
||||||
any given element of pname:pImageInfo must: be a valid sname:VkSampler
|
each element of pname:pImageInfo must: be a valid sname:VkSampler object
|
||||||
object
|
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00326]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00326]]
|
||||||
If pname:descriptorType is
|
If pname:descriptorType is
|
||||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
|
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
||||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView and
|
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView and
|
||||||
pname:imageLayout members of any given element of pname:pImageInfo must:
|
pname:imageLayout members of each element of pname:pImageInfo must: be a
|
||||||
be a valid sname:VkImageView and elink:VkImageLayout, respectively
|
valid sname:VkImageView and elink:VkImageLayout, respectively
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01402]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-01402]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, for
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, for
|
||||||
each descriptor that will be accessed via load or store operations the
|
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]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00327]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:offset member
|
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
|
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00328]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00328]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:offset member
|
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
|
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00329]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00329]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, or
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, or
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:buffer member
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, and the pname:buffer
|
||||||
of any given element of pname:pBufferInfo that is non-sparse must: be
|
member of any element of pname:pBufferInfo is the handle of a non-sparse
|
||||||
bound completely and contiguously to a single sname:VkDeviceMemory
|
buffer, then that buffer must: be bound completely and contiguously to a
|
||||||
object
|
single sname:VkDeviceMemory object
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00330]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00330]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:buffer member
|
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
|
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT set
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00331]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00331]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:buffer member
|
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
|
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT set
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00332]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00332]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:range member
|
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
|
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxUniformBufferRange
|
sname:VkPhysicalDeviceLimits::pname:maxUniformBufferRange
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00333]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00333]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:range member
|
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
|
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxStorageBufferRange
|
sname:VkPhysicalDeviceLimits::pname:maxStorageBufferRange
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00334]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00334]]
|
||||||
If pname:descriptorType is
|
If pname:descriptorType is
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, the sname:VkBuffer that
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, the sname:VkBuffer that
|
||||||
any given element of pname:pTexelBufferView was created from must: have
|
each element of pname:pTexelBufferView was created from must: have been
|
||||||
been created with ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT set
|
created with ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT set
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00335]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00335]]
|
||||||
If pname:descriptorType is
|
If pname:descriptorType is
|
||||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the sname:VkBuffer that
|
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the sname:VkBuffer that
|
||||||
any given element of pname:pTexelBufferView was created from must: have
|
each element of pname:pTexelBufferView was created from must: have been
|
||||||
been created with ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set
|
created with ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00336]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00336]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE or
|
||||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView member of
|
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
|
identity swizzle
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00337]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00337]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
||||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageView
|
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageView
|
||||||
member of any given element of pname:pImageInfo must: have been created
|
member of each element of pname:pImageInfo must: have been created with
|
||||||
with ename:VK_IMAGE_USAGE_SAMPLED_BIT set
|
ename:VK_IMAGE_USAGE_SAMPLED_BIT set
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01403]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-01403]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
||||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageLayout
|
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_SHADER_READ_ONLY_OPTIMAL,
|
||||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or
|
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or
|
||||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00338]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00338]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
|
||||||
the pname:imageView member of any given element of pname:pImageInfo
|
the pname:imageView member of each element of pname:pImageInfo must:
|
||||||
must: have been created with ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
have been created with ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set
|
||||||
set
|
|
||||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00339]]
|
* [[VUID-VkWriteDescriptorSet-descriptorType-00339]]
|
||||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the
|
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the
|
||||||
pname:imageView member of any given element of pname:pImageInfo must:
|
pname:imageView member of each element of pname:pImageInfo must: have
|
||||||
have been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
|
been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkWriteDescriptorSet.txt[]
|
include::../validity/structs/VkWriteDescriptorSet.txt[]
|
||||||
|
@ -2013,7 +2010,8 @@ endif::VK_KHR_maintenance1[]
|
||||||
subresource accessible from pname:imageView at the time this descriptor
|
subresource accessible from pname:imageView at the time this descriptor
|
||||||
is accessed
|
is accessed
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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>>:
|
Y'C~B~C~R~ conversion>>:
|
||||||
** The pname:format of the pname:imageView must: be the same as the
|
** The pname:format of the pname:imageView must: be the same as the
|
||||||
elink:VkFormat of the image
|
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
|
which is an _identically defined object_ to the pname:conversion of
|
||||||
the sname:VkSamplerYcbcrConversionInfoKHR which is in the pname:pNext
|
the sname:VkSamplerYcbcrConversionInfoKHR which is in the pname:pNext
|
||||||
chain of the pname:sampler
|
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
|
<<samplers-YCbCr-conversion, sampler Y'C~B~C~R~ conversion>> and the
|
||||||
elink:VkFormat of the image is a
|
elink:VkFormat of the image is a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
|
@ -2442,7 +2441,7 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
|
||||||
};
|
};
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
|
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
|
||||||
myResult = vkCreatePipelineLayout(
|
myResult = vkCreateDescriptorUpdateTemplateKHR(
|
||||||
myDevice,
|
myDevice,
|
||||||
&createInfo,
|
&createInfo,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -2548,10 +2547,10 @@ descriptor set.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358]]
|
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358]]
|
||||||
Any given element of pname:pDescriptorSets must: have been allocated
|
Each element of pname:pDescriptorSets must: have been allocated with a
|
||||||
with a sname:VkDescriptorSetLayout that matches (is the same as, or
|
sname:VkDescriptorSetLayout that matches (is the same as, or identically
|
||||||
identically defined as) the sname:VkDescriptorSetLayout at set _n_ in
|
defined as) the sname:VkDescriptorSetLayout at set _n_ in pname:layout,
|
||||||
pname:layout, where _n_ is the sum of pname:firstSet and the index into
|
where _n_ is the sum of pname:firstSet and the index into
|
||||||
pname:pDescriptorSets
|
pname:pDescriptorSets
|
||||||
* [[VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359]]
|
* [[VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359]]
|
||||||
pname:dynamicOffsetCount must: be equal to the total number of dynamic
|
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
|
pname:pipelineBindPoint must: be supported by the pname:commandBuffer's
|
||||||
parent sname:VkCommandPool's queue family
|
parent sname:VkCommandPool's queue family
|
||||||
* [[VUID-vkCmdBindDescriptorSets-pDynamicOffsets-00362]]
|
* [[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
|
alignment for the corresponding descriptor binding's descriptor type
|
||||||
****
|
****
|
||||||
|
|
||||||
|
@ -2749,7 +2748,7 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
|
||||||
};
|
};
|
||||||
|
|
||||||
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
|
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
|
||||||
myResult = vkCreatePipelineLayout(
|
myResult = vkCreateDescriptorUpdateTemplateKHR(
|
||||||
myDevice,
|
myDevice,
|
||||||
&createInfo,
|
&createInfo,
|
||||||
NULL,
|
NULL,
|
||||||
|
|
|
@ -714,7 +714,7 @@ include::../api/structs/VkDeviceCreateInfo.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkDeviceCreateInfo-queueFamilyIndex-00372]]
|
* [[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
|
pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos
|
||||||
ifdef::VK_KHR_get_physical_device_properties2[]
|
ifdef::VK_KHR_get_physical_device_properties2[]
|
||||||
* [[VUID-VkDeviceCreateInfo-pNext-00373]]
|
* [[VUID-VkDeviceCreateInfo-pNext-00373]]
|
||||||
|
|
|
@ -873,6 +873,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
||||||
* [[VUID-vkCmdDrawIndirect-buffer-00474]]
|
* [[VUID-vkCmdDrawIndirect-buffer-00474]]
|
||||||
If pname:buffer is non-sparse then it must: be bound completely and
|
If pname:buffer is non-sparse then it must: be bound completely and
|
||||||
contiguously to a single sname:VkDeviceMemory object
|
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]]
|
* [[VUID-vkCmdDrawIndirect-offset-00475]]
|
||||||
pname:offset must: be a multiple of `4`
|
pname:offset must: be a multiple of `4`
|
||||||
* [[VUID-vkCmdDrawIndirect-drawCount-00476]]
|
* [[VUID-vkCmdDrawIndirect-drawCount-00476]]
|
||||||
|
@ -1091,6 +1094,18 @@ located at pname:countBufferOffset and use this as the draw count.
|
||||||
|
|
||||||
.Valid Usage
|
.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]]
|
* [[VUID-vkCmdDrawIndirectCountAMD-offset-00502]]
|
||||||
pname:offset must: be a multiple of `4`
|
pname:offset must: be a multiple of `4`
|
||||||
* [[VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503]]
|
* [[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]]
|
* [[VUID-vkCmdDrawIndexedIndirect-buffer-00526]]
|
||||||
If pname:buffer is non-sparse then it must: be bound completely and
|
If pname:buffer is non-sparse then it must: be bound completely and
|
||||||
contiguously to a single sname:VkDeviceMemory object
|
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]]
|
* [[VUID-vkCmdDrawIndexedIndirect-offset-00527]]
|
||||||
pname:offset must: be a multiple of `4`
|
pname:offset must: be a multiple of `4`
|
||||||
* [[VUID-vkCmdDrawIndexedIndirect-drawCount-00528]]
|
* [[VUID-vkCmdDrawIndexedIndirect-drawCount-00528]]
|
||||||
|
@ -1493,6 +1511,18 @@ located at pname:countBufferOffset and use this as the draw count.
|
||||||
|
|
||||||
.Valid Usage
|
.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]]
|
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555]]
|
||||||
pname:offset must: be a multiple of `4`
|
pname:offset must: be a multiple of `4`
|
||||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556]]
|
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556]]
|
||||||
|
|
|
@ -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
|
floating-point) are considered to be encoded for the sRGB color space and
|
||||||
hence are linearized prior to their use in blending.
|
hence are linearized prior to their use in blending.
|
||||||
Each R, G, and B component is converted from nonlinear to linear as
|
Each R, G, and B component is converted from nonlinear to linear as
|
||||||
described in the "`sRGB EOTF`" section of the
|
described in the "`sRGB EOTF`" section of the <<data-format,Khronos Data
|
||||||
<<data-format,Khronos Data Format Specification>>.
|
Format Specification>>.
|
||||||
If the format is not sRGB, no linearization is performed.
|
If the format is not sRGB, no linearization is performed.
|
||||||
|
|
||||||
If the numeric format of a framebuffer attachment uses sRGB encoding, then
|
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
|
the final R, G and B values are converted into the nonlinear sRGB
|
||||||
representation before being written to the framebuffer attachment as
|
representation before being written to the framebuffer attachment as
|
||||||
described in the "`sRGB EOTF^ -1^`" section of the Khronos Data
|
described in the "`sRGB EOTF^ -1^`" section of the Khronos Data Format
|
||||||
Format Specification.
|
Specification.
|
||||||
|
|
||||||
If the framebuffer color attachment numeric format is not sRGB encoded then
|
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.
|
the resulting [eq]#c~s~# values for R, G and B are unmodified.
|
||||||
|
|
|
@ -436,8 +436,8 @@ endif::VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilitie
|
||||||
[[fundamentals-abi]]
|
[[fundamentals-abi]]
|
||||||
== Application Binary Interface
|
== Application Binary Interface
|
||||||
|
|
||||||
The mechanism by which Vulkan is made available to applications is platform- or
|
The mechanism by which Vulkan is made available to applications is platform-
|
||||||
implementation- defined.
|
or implementation- defined.
|
||||||
On many platforms the C interface described in this Specification is
|
On many platforms the C interface described in this Specification is
|
||||||
provided by a shared library.
|
provided by a shared library.
|
||||||
Since shared libraries can be changed independently of the applications that
|
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
|
Shared library implementations must: use the default Application Binary
|
||||||
Interface (ABI) of the standard C compiler for the platform, or provide
|
Interface (ABI) of the standard C compiler for the platform, or provide
|
||||||
customized API headers that cause application code to use the implementation's
|
customized API headers that cause application code to use the
|
||||||
non-default ABI.
|
implementation's non-default ABI.
|
||||||
An ABI in this context means the the size, alignment, and
|
An ABI in this context means the the size, alignment, and layout of C data
|
||||||
layout of C data types; the procedure calling convention; and the naming
|
types; the procedure calling convention; and the naming convention for
|
||||||
convention for shared library symbols corresponding to C functions.
|
shared library symbols corresponding to C functions.
|
||||||
Customizing the calling convention for a platform is usually accomplished by
|
Customizing the calling convention for a platform is usually accomplished by
|
||||||
defining
|
defining <<boilerplate-platform-specific-calling-conventions,calling
|
||||||
<<boilerplate-platform-specific-calling-conventions,calling convention macros>>
|
convention macros>> appropriately in +vk_platform.h+.
|
||||||
appropriately in +vk_platform.h+.
|
|
||||||
|
|
||||||
On platforms where Vulkan is provided as a shared library, library symbols
|
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
|
beginning with 'vk' and followed by a digit or uppercase letter are reserved
|
||||||
for use by the implementation.
|
for use by the implementation.
|
||||||
Applications which use Vulkan must: not provide definitions of these symbols.
|
Applications which use Vulkan must: not provide definitions of these
|
||||||
This allows the Vulkan shared library to be updated with additional symbols for
|
symbols.
|
||||||
new API versions or extensions without causing symbol conflicts with existing
|
This allows the Vulkan shared library to be updated with additional symbols
|
||||||
applications.
|
for new API versions or extensions without causing symbol conflicts with
|
||||||
|
existing applications.
|
||||||
|
|
||||||
Shared library implementations should: provide library symbols for commands
|
Shared library implementations should: provide library symbols for commands
|
||||||
in the highest version of this Specification they support, and for
|
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
|
These requirements and recommendations are intended to allow implementors to
|
||||||
take advantage of platform-specific conventions for SDKs, ABIs, library
|
take advantage of platform-specific conventions for SDKs, ABIs, library
|
||||||
versioning mechanisms, etc. while still minimizing the code changes necessary
|
versioning mechanisms, etc.
|
||||||
to port applications or libraries between platforms.
|
while still minimizing the code changes necessary to port applications or
|
||||||
Platform vendors, or providers of the _de facto_ standard Vulkan shared library
|
libraries between platforms.
|
||||||
for a platform, are encouraged to document what symbols the shared library
|
Platform vendors, or providers of the _de facto_ standard Vulkan shared
|
||||||
provides and how it will be versioned when new symbols are added.
|
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.
|
||||||
====
|
====
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -301,7 +301,7 @@ include::../api/structs/VkPipelineVertexInputStateCreateInfo.txt[]
|
||||||
pname:vertexAttributeDescriptionCount must: be less than or equal to
|
pname:vertexAttributeDescriptionCount must: be less than or equal to
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributes
|
sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributes
|
||||||
* [[VUID-VkPipelineVertexInputStateCreateInfo-binding-00615]]
|
* [[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
|
pname:pVertexAttributeDescriptions, a
|
||||||
sname:VkVertexInputBindingDescription must: exist in
|
sname:VkVertexInputBindingDescription must: exist in
|
||||||
pname:pVertexBindingDescriptions with the same value of pname:binding
|
pname:pVertexBindingDescriptions with the same value of pname:binding
|
||||||
|
|
|
@ -1738,7 +1738,7 @@ to maintaining memory access ordering.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkMapMemory-memory-00678]]
|
* [[VUID-vkMapMemory-memory-00678]]
|
||||||
pname:memory must: not currently be mapped
|
pname:memory must: not be currently mapped
|
||||||
* [[VUID-vkMapMemory-offset-00679]]
|
* [[VUID-vkMapMemory-offset-00679]]
|
||||||
pname:offset must: be less than the size of pname:memory
|
pname:offset must: be less than the size of pname:memory
|
||||||
* [[VUID-vkMapMemory-size-00680]]
|
* [[VUID-vkMapMemory-size-00680]]
|
||||||
|
@ -1865,7 +1865,7 @@ include::../api/structs/VkMappedMemoryRange.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkMappedMemoryRange-memory-00684]]
|
* [[VUID-VkMappedMemoryRange-memory-00684]]
|
||||||
pname:memory must: currently be mapped
|
pname:memory must: be currently mapped
|
||||||
* [[VUID-VkMappedMemoryRange-size-00685]]
|
* [[VUID-VkMappedMemoryRange-size-00685]]
|
||||||
If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:offset and
|
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
|
pname:size must: specify a range contained within the currently mapped
|
||||||
|
@ -1906,7 +1906,7 @@ include::../api/protos/vkUnmapMemory.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkUnmapMemory-memory-00689]]
|
* [[VUID-vkUnmapMemory-memory-00689]]
|
||||||
pname:memory must: currently be mapped
|
pname:memory must: be currently mapped
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkUnmapMemory.txt[]
|
include::../validity/protos/vkUnmapMemory.txt[]
|
||||||
|
|
|
@ -141,15 +141,15 @@ endif::editing-notes[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCreateComputePipelines-flags-00695]]
|
* [[VUID-vkCreateComputePipelines-flags-00695]]
|
||||||
If the pname:flags member of any given element of pname:pCreateInfos
|
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
||||||
pname:basePipelineIndex member of that same element is not `-1`,
|
pname:basePipelineIndex member of that same element is not `-1`,
|
||||||
pname:basePipelineIndex must: be less than the index into
|
pname:basePipelineIndex must: be less than the index into
|
||||||
pname:pCreateInfos that corresponds to that element
|
pname:pCreateInfos that corresponds to that element
|
||||||
* [[VUID-vkCreateComputePipelines-flags-00696]]
|
* [[VUID-vkCreateComputePipelines-flags-00696]]
|
||||||
If the pname:flags member of any given element of pname:pCreateInfos
|
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base
|
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline
|
||||||
pipeline must: have been created with the
|
must: have been created with the
|
||||||
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
|
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
|
||||||
****
|
****
|
||||||
|
|
||||||
|
@ -388,15 +388,15 @@ pipeline layout.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkCreateGraphicsPipelines-flags-00720]]
|
* [[VUID-vkCreateGraphicsPipelines-flags-00720]]
|
||||||
If the pname:flags member of any given element of pname:pCreateInfos
|
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
||||||
pname:basePipelineIndex member of that same element is not `-1`,
|
pname:basePipelineIndex member of that same element is not `-1`,
|
||||||
pname:basePipelineIndex must: be less than the index into
|
pname:basePipelineIndex must: be less than the index into
|
||||||
pname:pCreateInfos that corresponds to that element
|
pname:pCreateInfos that corresponds to that element
|
||||||
* [[VUID-vkCreateGraphicsPipelines-flags-00721]]
|
* [[VUID-vkCreateGraphicsPipelines-flags-00721]]
|
||||||
If the pname:flags member of any given element of pname:pCreateInfos
|
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base
|
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline
|
||||||
pipeline must: have been created with the
|
must: have been created with the
|
||||||
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
|
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
|
The pname:stage member of one element of pname:pStages must: be
|
||||||
ename:VK_SHADER_STAGE_VERTEX_BIT
|
ename:VK_SHADER_STAGE_VERTEX_BIT
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-stage-00728]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-stage-00728]]
|
||||||
The pname:stage member of any given element of pname:pStages must: not
|
The pname:stage member of each element of pname:pStages must: not be
|
||||||
be ename:VK_SHADER_STAGE_COMPUTE_BIT
|
ename:VK_SHADER_STAGE_COMPUTE_BIT
|
||||||
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00729]]
|
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00729]]
|
||||||
If pname:pStages includes a tessellation control shader stage, it must:
|
If pname:pStages includes a tessellation control shader stage, it must:
|
||||||
include a tessellation evaluation shader stage
|
include a tessellation evaluation shader stage
|
||||||
|
@ -755,7 +755,8 @@ ifdef::VK_KHX_device_group[]
|
||||||
ename:VK_PIPELINE_CREATE_DISPATCH_BASE_KHX flag.
|
ename:VK_PIPELINE_CREATE_DISPATCH_BASE_KHX flag.
|
||||||
endif::VK_KHX_device_group[]
|
endif::VK_KHX_device_group[]
|
||||||
ifdef::VK_KHR_maintenance2[]
|
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
|
attachment was referenced by the
|
||||||
slink:VkRenderPassInputAttachmentAspectCreateInfoKHR at renderpass
|
slink:VkRenderPassInputAttachmentAspectCreateInfoKHR at renderpass
|
||||||
create time, its shader code must: not read from any aspect that was not
|
create time, its shader code must: not read from any aspect that was not
|
||||||
|
@ -1375,10 +1376,10 @@ slink:VkSpecializationMapEntry.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkSpecializationInfo-offset-00773]]
|
* [[VUID-VkSpecializationInfo-offset-00773]]
|
||||||
The pname:offset member of any given element of pname:pMapEntries must:
|
The pname:offset member of each element of pname:pMapEntries must: be
|
||||||
be less than pname:dataSize
|
less than pname:dataSize
|
||||||
* [[VUID-VkSpecializationInfo-pMapEntries-00774]]
|
* [[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
|
than or equal to pname:dataSize minus pname:offset
|
||||||
* [[VUID-VkSpecializationInfo-mapEntryCount-00775]]
|
* [[VUID-VkSpecializationInfo-mapEntryCount-00775]]
|
||||||
If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer
|
If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer
|
||||||
|
|
|
@ -169,7 +169,7 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
|
||||||
pname:pInputAttachments, pname:pColorAttachments,
|
pname:pInputAttachments, pname:pColorAttachments,
|
||||||
pname:pResolveAttachments or pname:pDepthStencilAttachment, or the
|
pname:pResolveAttachments or pname:pDepthStencilAttachment, or the
|
||||||
attachment indexed by any element of pname:pPreserveAttachments in any
|
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
|
sname:VkDeviceMemory object that overlaps with any other attachment in
|
||||||
any subpass (including the same subpass), the
|
any subpass (including the same subpass), the
|
||||||
sname:VkAttachmentDescription structures describing them must: include
|
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
|
If the pname:attachment member of any element of
|
||||||
pname:pInputAttachments, pname:pColorAttachments,
|
pname:pInputAttachments, pname:pColorAttachments,
|
||||||
pname:pResolveAttachments or pname:pDepthStencilAttachment, or any
|
pname:pResolveAttachments or pname:pDepthStencilAttachment, or any
|
||||||
element of pname:pPreserveAttachments in any given element of
|
element of pname:pPreserveAttachments in any element of pname:pSubpasses
|
||||||
pname:pSubpasses is not ename:VK_ATTACHMENT_UNUSED, it must: be less
|
is not ename:VK_ATTACHMENT_UNUSED, it must: be less than
|
||||||
than pname:attachmentCount
|
pname:attachmentCount
|
||||||
* [[VUID-VkRenderPassCreateInfo-pPreserveAttachments-00835]]
|
* [[VUID-VkRenderPassCreateInfo-pPreserveAttachments-00835]]
|
||||||
The value of any element of the pname:pPreserveAttachments member in any
|
The value of each element of the pname:pPreserveAttachments member in
|
||||||
given element of pname:pSubpasses must: not be
|
each element of pname:pSubpasses must: not be ename:VK_ATTACHMENT_UNUSED
|
||||||
ename:VK_ATTACHMENT_UNUSED
|
|
||||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-00836]]
|
* [[VUID-VkRenderPassCreateInfo-pAttachments-00836]]
|
||||||
For any member of pname:pAttachments with a pname:loadOp equal to
|
For any member of pname:pAttachments with a pname:loadOp equal to
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
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_SHADER_READ_ONLY_OPTIMAL or
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
|
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
|
||||||
ifdef::VK_KHR_maintenance2[]
|
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
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR.
|
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
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||||
must: not specify a pname:layout equal to
|
must: not specify a pname:layout equal to
|
||||||
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR.
|
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR.
|
||||||
|
@ -531,10 +532,13 @@ include::../api/structs/VkInputAttachmentAspectReferenceKHR.txt[]
|
||||||
|
|
||||||
.Valid Usage
|
.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].
|
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-None-01569]]
|
||||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-01570]] pname:aspectMask must: be a subset of the aspect masks in the specified
|
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.
|
input attachment.
|
||||||
****
|
****
|
||||||
|
|
||||||
|
@ -795,10 +799,10 @@ attachment.
|
||||||
element of pname:pColorAttachments must: be anything other than
|
element of pname:pColorAttachments must: be anything other than
|
||||||
ename:VK_SAMPLE_COUNT_1_BIT
|
ename:VK_SAMPLE_COUNT_1_BIT
|
||||||
* [[VUID-VkSubpassDescription-pResolveAttachments-00849]]
|
* [[VUID-VkSubpassDescription-pResolveAttachments-00849]]
|
||||||
Any given element of pname:pResolveAttachments must: have a sample count
|
Each element of pname:pResolveAttachments must: have a sample count of
|
||||||
of ename:VK_SAMPLE_COUNT_1_BIT
|
ename:VK_SAMPLE_COUNT_1_BIT
|
||||||
* [[VUID-VkSubpassDescription-pResolveAttachments-00850]]
|
* [[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
|
elink:VkFormat as its corresponding color attachment
|
||||||
* [[VUID-VkSubpassDescription-pColorAttachments-01417]]
|
* [[VUID-VkSubpassDescription-pColorAttachments-01417]]
|
||||||
All attachments in pname:pColorAttachments that are not
|
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
|
pipelines bound during the subpass must: not access those input
|
||||||
attachments from the fragment shader
|
attachments from the fragment shader
|
||||||
* [[VUID-VkSubpassDescription-attachment-00853]]
|
* [[VUID-VkSubpassDescription-attachment-00853]]
|
||||||
The pname:attachment member of any element of pname:pPreserveAttachments
|
The pname:attachment member of each element of
|
||||||
must: not be ename:VK_ATTACHMENT_UNUSED
|
pname:pPreserveAttachments must: not be ename:VK_ATTACHMENT_UNUSED
|
||||||
* [[VUID-VkSubpassDescription-pPreserveAttachments-00854]]
|
* [[VUID-VkSubpassDescription-pPreserveAttachments-00854]]
|
||||||
Any given element of pname:pPreserveAttachments must: not also be an
|
Each element of pname:pPreserveAttachments must: not also be an element
|
||||||
element of any other member of the subpass description
|
of any other member of the subpass description
|
||||||
* [[VUID-VkSubpassDescription-layout-00855]]
|
* [[VUID-VkSubpassDescription-layout-00855]]
|
||||||
If any attachment is used as both an input attachment and a color or
|
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
|
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
|
pname:attachmentCount must: be equal to the attachment count specified
|
||||||
in pname:renderPass
|
in pname:renderPass
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00877]]
|
* [[VUID-VkFramebufferCreateInfo-pAttachments-00877]]
|
||||||
Any given element of pname:pAttachments that is used as a color
|
Each element of pname:pAttachments that is used as a color attachment or
|
||||||
attachment or resolve attachment by pname:renderPass must: have been
|
resolve attachment by pname:renderPass must: have been created with a
|
||||||
created with a pname:usage value including
|
pname:usage value including ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
||||||
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00878]]
|
* [[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
|
attachment by pname:renderPass must: have been created with a
|
||||||
pname:usage value including
|
pname:usage value including
|
||||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00879]]
|
* [[VUID-VkFramebufferCreateInfo-pAttachments-00879]]
|
||||||
Any given element of pname:pAttachments that is used as an input
|
Each element of pname:pAttachments that is used as an input attachment
|
||||||
attachment by pname:renderPass must: have been created with a
|
by pname:renderPass must: have been created with a pname:usage value
|
||||||
pname:usage value including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00880]]
|
* [[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
|
elink:VkFormat value that matches the elink:VkFormat specified by the
|
||||||
corresponding sname:VkAttachmentDescription in pname:renderPass
|
corresponding sname:VkAttachmentDescription in pname:renderPass
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00881]]
|
* [[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
|
pname:samples value that matches the pname:samples value specified by
|
||||||
the corresponding sname:VkAttachmentDescription in pname:renderPass
|
the corresponding sname:VkAttachmentDescription in pname:renderPass
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00882]]
|
* [[VUID-VkFramebufferCreateInfo-pAttachments-00882]]
|
||||||
Any given element of pname:pAttachments must: have dimensions at least
|
Each element of pname:pAttachments must: have dimensions at least as
|
||||||
as large as the corresponding framebuffer dimension
|
large as the corresponding framebuffer dimension
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00883]]
|
* [[VUID-VkFramebufferCreateInfo-pAttachments-00883]]
|
||||||
Any given element of pname:pAttachments must: only specify a single mip
|
Each element of pname:pAttachments must: only specify a single mip level
|
||||||
level
|
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00884]]
|
* [[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
|
identity swizzle
|
||||||
* [[VUID-VkFramebufferCreateInfo-width-00885]]
|
* [[VUID-VkFramebufferCreateInfo-width-00885]]
|
||||||
pname:width must: be greater than `0`.
|
pname:width must: be greater than `0`.
|
||||||
|
@ -1551,8 +1553,8 @@ slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
|
sname:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
|
||||||
ifdef::VK_KHR_maintenance1[]
|
ifdef::VK_KHR_maintenance1[]
|
||||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00891]]
|
* [[VUID-VkFramebufferCreateInfo-pAttachments-00891]]
|
||||||
Any given element of pname:pAttachments that is a 2D or 2D array image
|
Each element of pname:pAttachments that is a 2D or 2D array image view
|
||||||
view taken from a 3D image must: not be a depth/stencil format
|
taken from a 3D image must: not be a depth/stencil format
|
||||||
endif::VK_KHR_maintenance1[]
|
endif::VK_KHR_maintenance1[]
|
||||||
****
|
****
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,8 @@ ifdef::VK_KHR_external_memory[]
|
||||||
slink:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes
|
slink:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes
|
||||||
endif::VK_KHR_external_memory[]
|
endif::VK_KHR_external_memory[]
|
||||||
ifdef::VK_NV_dedicated_allocation[]
|
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
|
slink:VkDedicatedAllocationBufferCreateInfoNV, and the
|
||||||
pname:dedicatedAllocation member of the chained structure is
|
pname:dedicatedAllocation member of the chained structure is
|
||||||
ename:VK_TRUE, then pname:flags must: not include
|
ename:VK_TRUE, then pname:flags must: not include
|
||||||
|
@ -909,13 +910,15 @@ ifdef::VK_KHX_device_group[]
|
||||||
be ename:VK_IMAGE_TILING_OPTIMAL
|
be ename:VK_IMAGE_TILING_OPTIMAL
|
||||||
endif::VK_KHX_device_group[]
|
endif::VK_KHX_device_group[]
|
||||||
ifdef::VK_KHR_maintenance2[]
|
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
|
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
|
||||||
pname:format must: be a <<appendix-compressedtex-bc,block-compressed
|
pname:format must: be a <<appendix-compressedtex-bc,block-compressed
|
||||||
image format>>, an <<appendix-compressedtex-etc2, ETC compressed image
|
image format>>, an <<appendix-compressedtex-etc2, ETC compressed image
|
||||||
format>>, or an <<appendix-compressedtex-astc, ASTC compressed image
|
format>>, or an <<appendix-compressedtex-astc, ASTC compressed image
|
||||||
format>>.
|
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
|
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
|
||||||
pname:flags must: also contain ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT.
|
pname:flags must: also contain ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT.
|
||||||
endif::VK_KHR_maintenance2[]
|
endif::VK_KHR_maintenance2[]
|
||||||
|
@ -932,25 +935,29 @@ ifdef::VK_NV_external_memory[slink:VkExternalMemoryImageCreateInfoNV]
|
||||||
must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
|
must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
|
||||||
endif::VK_KHR_external_memory,VK_NV_external_memory[]
|
endif::VK_KHR_external_memory,VK_NV_external_memory[]
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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>>:
|
<<features-formats-requiring-sampler-ycbcr-conversion>>:
|
||||||
** pname:mipLevels must: be 1
|
** pname:mipLevels must: be 1
|
||||||
** pname:samples must be ename:VK_SAMPLE_COUNT_1_BIT
|
** pname:samples must be ename:VK_SAMPLE_COUNT_1_BIT
|
||||||
** pname:imageType must: be ename:VK_IMAGE_TYPE_2D
|
** pname:imageType must: be ename:VK_IMAGE_TYPE_2D
|
||||||
** pname:arrayLayers must: be 1
|
** 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
|
_multi-planar_ format, and
|
||||||
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
|
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
|
||||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||||
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
|
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
|
||||||
pname:flags must: not contain ename:VK_IMAGE_CREATE_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
|
_multi-planar_ format, and
|
||||||
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
|
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
|
||||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||||
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
|
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
|
||||||
pname:flags must: not contain ename:VK_IMAGE_CREATE_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
|
include ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR, pname:flags must: not
|
||||||
contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
|
contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
@ -1111,14 +1118,17 @@ were not included in the pname:pNext list of slink:VkImageCreateInfo.
|
||||||
|
|
||||||
.Valid Usage
|
.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
|
pname:pViewFormats array must: be compatible with the format specified
|
||||||
in the pname:format field of sname:VkImageCreateInfo, as described in
|
in the pname:format field of sname:VkImageCreateInfo, as described in
|
||||||
the <<resources-image-views-compatibility,compatibility table>>.
|
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
|
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, pname:viewFormatCount must: be
|
||||||
`0` or `1`.
|
`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.
|
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
|
The pname:aspectMask member of pname:pSubresource must: only have a
|
||||||
single bit set
|
single bit set
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
format>> with two planes, the pname:aspectMask member of
|
format>> with two planes, the pname:aspectMask member of
|
||||||
pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
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
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||||
format>> with three planes, the pname:aspectMask member of
|
format>> with three planes, the pname:aspectMask member of
|
||||||
pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
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_1_BIT_KHR, or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR, pname:format must: be
|
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR, pname:format must: be
|
||||||
<<features-formats-compatible-planes,compatible>> with the corresponding
|
<<features-formats-compatible-planes,compatible>> with the corresponding
|
||||||
plane of the image, as defined in, and the sampler to be used with the image
|
plane of the image, and the sampler to be used with the image view must: not
|
||||||
view must: not enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
|
enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>.
|
||||||
conversion>>.
|
|
||||||
The pname:width and pname:height of the single-plane image view must: be
|
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
|
derived from the multi-planar image's dimensions in the manner listed for
|
||||||
<<features-formats-compatible-planes,plane compatibility>> for the plane.
|
<<features-formats-compatible-planes,plane compatibility>> for the plane.
|
||||||
|
@ -2211,18 +2222,21 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
pname:image, as defined in
|
pname:image, as defined in
|
||||||
<<features-formats-compatibility-classes,Format Compatibility Classes>>
|
<<features-formats-compatibility-classes,Format Compatibility Classes>>
|
||||||
ifdef::VK_KHR_maintenance2[]
|
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,
|
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag,
|
||||||
pname:format must: be compatible with, or must: be an uncompressed
|
pname:format must: be compatible with, or must: be an uncompressed
|
||||||
format that is size-compatible with, the pname:format used to create
|
format that is size-compatible with, the pname:format used to create
|
||||||
pname:image.
|
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
|
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag, the
|
||||||
pname:levelCount and pname:layerCount members of pname:subresourceRange
|
pname:levelCount and pname:layerCount members of pname:subresourceRange
|
||||||
must: both be `1`.
|
must: both be `1`.
|
||||||
endif::VK_KHR_maintenance2[]
|
endif::VK_KHR_maintenance2[]
|
||||||
ifdef::VK_KHR_image_format_list[]
|
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
|
pname:pNext chain of the sname:VkImageCreateInfo struct used when
|
||||||
creating pname:image and the pname:viewFormatCount field of
|
creating pname:image and the pname:viewFormatCount field of
|
||||||
sname:VkImageFormatListCreateInfoKHR is not zero then pname:format must:
|
sname:VkImageFormatListCreateInfoKHR is not zero then pname:format must:
|
||||||
|
@ -2230,7 +2244,8 @@ ifdef::VK_KHR_image_format_list[]
|
||||||
sname:VkImageFormatListCreateInfoKHR::pname:pViewFormats.
|
sname:VkImageFormatListCreateInfoKHR::pname:pViewFormats.
|
||||||
endif::VK_KHR_image_format_list[]
|
endif::VK_KHR_image_format_list[]
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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
|
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, if the pname:format of
|
||||||
the pname:image is a
|
the pname:image is a
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
|
||||||
|
@ -2293,7 +2308,8 @@ determining the valid usage conditions of slink:VkImageViewCreateInfo.
|
||||||
|
|
||||||
.Valid Usage
|
.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
|
pname:usage member of the slink:VkImageCreateInfo structure used to
|
||||||
create the image this image view is created from.
|
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~
|
image sampler that enables <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
|
||||||
conversion>>.
|
conversion>>.
|
||||||
|
|
||||||
If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled in
|
When creating a sname:VkImageView, if <<samplers-YCbCr-conversion,sampler
|
||||||
the sampler, the pname:aspectMask used by a sname:VkImageView must: be
|
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.
|
ename:VK_IMAGE_ASPECT_COLOR_BIT.
|
||||||
|
|
||||||
If sampler Y'C~B~C~R~ conversion is not enabled in the sampler and the
|
When creating a sname:VkImageView, if sampler Y'C~B~C~R~ conversion is not
|
||||||
format is
|
enabled in the sampler and the image pname:format is
|
||||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>, the
|
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>, the
|
||||||
image must: have been created with ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
|
image must: have been created with ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
|
||||||
and the pname:aspectMask of the sname:VkImageView's
|
and the pname:aspectMask of the sname:VkImageView's pname:subresourceRange
|
||||||
sname:VkImageSubresourceRange must: be
|
must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR or
|
||||||
or ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
|
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
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[]
|
include::../validity/structs/VkImageSubresourceRange.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -2437,7 +2463,7 @@ include::../api/structs/VkComponentMapping.txt[]
|
||||||
placed in the G component of the output vector.
|
placed in the G component of the output vector.
|
||||||
* pname:b is a elink:VkComponentSwizzle specifying the component value
|
* pname:b is a elink:VkComponentSwizzle specifying the component value
|
||||||
placed in the B component of the output vector.
|
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.
|
placed in the A component of the output vector.
|
||||||
|
|
||||||
include::../validity/structs/VkComponentMapping.txt[]
|
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:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||||
* pname:image is the image to query.
|
* pname:image is the image to query.
|
||||||
|
|
||||||
|
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01589]]
|
||||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01589]] If pname:image was created with a _multi-planar_ format and the
|
If pname:image was created with a _multi-planar_ format and the
|
||||||
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: be a
|
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: be a
|
||||||
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
|
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
|
||||||
the slink:VkImageMemoryRequirementsInfo2KHR structure
|
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
|
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: not be a
|
||||||
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
|
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
|
||||||
the slink:VkImageMemoryRequirementsInfo2KHR structure
|
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
|
be a slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext
|
||||||
chain of the slink:VkImageMemoryRequirementsInfo2KHR structure
|
chain of the slink:VkImageMemoryRequirementsInfo2KHR structure
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
|
||||||
****
|
****
|
||||||
|
|
||||||
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
|
|
||||||
include::../validity/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
|
include::../validity/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
|
||||||
--
|
--
|
||||||
|
|
||||||
|
@ -2839,7 +2870,8 @@ include::../api/structs/VkImagePlaneMemoryRequirementsInfoKHR.txt[]
|
||||||
|
|
||||||
.Valid Usage
|
.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
|
for a two-plane image pname:planeAspect must: be
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and for a three-plane image
|
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
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01593]] pname:buffer must: not already be backed by a memory object
|
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01593]]
|
||||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01594]] pname:buffer must: not have been created with any sparse memory binding
|
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
|
flags
|
||||||
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01595]] pname:memoryOffset must: be less than the size of pname:memory
|
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01595]]
|
||||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01596]] If pname:buffer was created with the
|
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_UNIFORM_TEXEL_BUFFER_BIT or
|
||||||
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must:
|
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must:
|
||||||
be a multiple of
|
be a multiple of
|
||||||
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
|
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
|
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a
|
||||||
multiple of
|
multiple of
|
||||||
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
|
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
|
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a
|
||||||
multiple of
|
multiple of
|
||||||
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
|
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
|
allowed in the pname:memoryTypeBits member of the
|
||||||
sname:VkMemoryRequirements structure returned from a call to
|
sname:VkMemoryRequirements structure returned from a call to
|
||||||
fname:vkGetBufferMemoryRequirements with pname:buffer
|
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
|
member of the sname:VkMemoryRequirements structure returned from a call
|
||||||
to fname:vkGetBufferMemoryRequirements with pname:buffer
|
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
|
returned from a call to fname:vkGetBufferMemoryRequirements with
|
||||||
pname:buffer must: be less than or equal to the size of pname:memory
|
pname:buffer must: be less than or equal to the size of pname:memory
|
||||||
minus pname:memoryOffset
|
minus pname:memoryOffset
|
||||||
ifdef::VK_KHR_dedicated_allocation[]
|
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
|
flink:vkGetBufferMemoryRequirements2KHR in
|
||||||
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
||||||
pname:image), pname:memory must: have been created with
|
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
|
pname:buffer and pname:memoryOffset must: be zero
|
||||||
endif::VK_KHR_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation[]
|
||||||
ifdef::VK_NV_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
|
slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
|
||||||
equal to ename:VK_TRUE, pname:memory must: have been created with
|
equal to ename:VK_TRUE, pname:memory must: have been created with
|
||||||
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:buffer equal to
|
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:buffer equal to
|
||||||
pname:buffer and pname:memoryOffset must: be zero
|
pname:buffer and pname:memoryOffset must: be zero
|
||||||
ifndef::VK_KHR_dedicated_allocation[]
|
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
|
slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
|
||||||
equal to ename:VK_TRUE, pname:memory must: not have been allocated
|
equal to ename:VK_TRUE, pname:memory must: not have been allocated
|
||||||
dedicated for a specific buffer or image
|
dedicated for a specific buffer or image
|
||||||
endif::VK_KHR_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation[]
|
||||||
endif::VK_NV_dedicated_allocation[]
|
endif::VK_NV_dedicated_allocation[]
|
||||||
ifdef::VK_KHX_device_group[]
|
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
|
slink:VkBindBufferMemoryDeviceGroupInfoKHX, all instances of
|
||||||
pname:memory specified by
|
pname:memory specified by
|
||||||
slink:VkBindBufferMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
|
slink:VkBindBufferMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
|
||||||
|
@ -3223,9 +3268,11 @@ In other words, by default each physical device attaches to instance zero.
|
||||||
|
|
||||||
.Valid Usage
|
.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
|
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[]
|
include::../validity/structs/VkBindBufferMemoryDeviceGroupInfoKHX.txt[]
|
||||||
|
@ -3268,7 +3315,8 @@ endif::VK_KHR_bind_memory2[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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.
|
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR set.
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
* [[VUID-vkBindImageMemory-image-01044]]
|
* [[VUID-vkBindImageMemory-image-01044]]
|
||||||
|
@ -3371,45 +3419,56 @@ include::../api/structs/VkBindImageMemoryInfoKHR.txt[]
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01609]] pname:image must: not already be backed by a memory object
|
* [[VUID-VkBindImageMemoryInfoKHR-image-01609]]
|
||||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01610]] pname:image must: not have been created with any sparse memory binding
|
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
|
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[]
|
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
|
allowed in the pname:memoryTypeBits member of the
|
||||||
slink:VkMemoryRequirements structure returned from a call to
|
slink:VkMemoryRequirements structure returned from a call to
|
||||||
flink:vkGetImageMemoryRequirements with pname:image
|
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
|
member of the slink:VkMemoryRequirements structure returned from a call
|
||||||
to flink:vkGetImageMemoryRequirements with pname:image
|
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
|
be greater than or equal to the pname:size member of the
|
||||||
slink:VkMemoryRequirements structure returned from a call to
|
slink:VkMemoryRequirements structure returned from a call to
|
||||||
flink:vkGetImageMemoryRequirements with the same pname:image
|
flink:vkGetImageMemoryRequirements with the same pname:image
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::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
|
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
|
||||||
been allocated using one of the memory types allowed in the
|
been allocated using one of the memory types allowed in the
|
||||||
pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
|
pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
|
||||||
returned from a call to flink:vkGetImageMemoryRequirements2KHR with
|
returned from a call to flink:vkGetImageMemoryRequirements2KHR with
|
||||||
pname:image
|
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:
|
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
|
||||||
be an integer multiple of the pname:alignment member of the
|
be an integer multiple of the pname:alignment member of the
|
||||||
slink:VkMemoryRequirements structure returned from a call to
|
slink:VkMemoryRequirements structure returned from a call to
|
||||||
flink:vkGetImageMemoryRequirements2KHR with pname:image
|
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
|
slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
|
||||||
size of pname:memory and pname:memoryOffset must: be greater than or
|
size of pname:memory and pname:memoryOffset must: be greater than or
|
||||||
equal to the pname:size member of the slink:VkMemoryRequirements
|
equal to the pname:size member of the slink:VkMemoryRequirements
|
||||||
structure returned from a call to flink:vkGetImageMemoryRequirements2KHR
|
structure returned from a call to flink:vkGetImageMemoryRequirements2KHR
|
||||||
with the same pname:image
|
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
|
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:image must: have
|
||||||
been created with the ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR bit set.
|
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
|
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
|
||||||
been allocated using one of the memory types allowed in the
|
been allocated using one of the memory types allowed in the
|
||||||
pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
|
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
|
pname:image and the correct pname:planeAspect for this plane in the
|
||||||
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
|
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
|
||||||
slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
|
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:
|
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
|
||||||
be an integer multiple of the pname:alignment member of the
|
be an integer multiple of the pname:alignment member of the
|
||||||
slink:VkMemoryRequirements structure returned from a call to
|
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
|
pname:planeAspect for this plane in the
|
||||||
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
|
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
|
||||||
slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
|
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
|
slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
|
||||||
size of pname:memory and pname:memoryOffset must: be greater than or
|
size of pname:memory and pname:memoryOffset must: be greater than or
|
||||||
equal to the pname:size member of the slink:VkMemoryRequirements
|
equal to the pname:size member of the slink:VkMemoryRequirements
|
||||||
|
@ -3436,7 +3497,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
chain
|
chain
|
||||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||||
ifdef::VK_KHR_dedicated_allocation[]
|
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
|
flink:vkGetImageMemoryRequirements2KHR in
|
||||||
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
||||||
pname:image), pname:memory must: have been created with
|
pname:image), pname:memory must: have been created with
|
||||||
|
@ -3444,49 +3506,59 @@ ifdef::VK_KHR_dedicated_allocation[]
|
||||||
and pname:memoryOffset must: be zero
|
and pname:memoryOffset must: be zero
|
||||||
endif::VK_KHR_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation[]
|
||||||
ifdef::VK_NV_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
|
slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
|
||||||
equal to ename:VK_TRUE, pname:memory must: have been created with
|
equal to ename:VK_TRUE, pname:memory must: have been created with
|
||||||
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:image equal to
|
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:image equal to
|
||||||
pname:image and pname:memoryOffset must: be zero
|
pname:image and pname:memoryOffset must: be zero
|
||||||
ifndef::VK_KHR_dedicated_allocation[]
|
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
|
slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
|
||||||
equal to ename:VK_TRUE, pname:memory must: not have been allocated
|
equal to ename:VK_TRUE, pname:memory must: not have been allocated
|
||||||
dedicated for a specific buffer or image
|
dedicated for a specific buffer or image
|
||||||
endif::VK_KHR_dedicated_allocation[]
|
endif::VK_KHR_dedicated_allocation[]
|
||||||
endif::VK_NV_dedicated_allocation[]
|
endif::VK_NV_dedicated_allocation[]
|
||||||
ifndef::VK_KHX_device_group[]
|
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[]
|
endif::VK_KHX_device_group[]
|
||||||
ifdef::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
|
slink:VkBindImageMemoryDeviceGroupInfoKHX, all instances of pname:memory
|
||||||
specified by
|
specified by
|
||||||
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
|
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
|
||||||
have been allocated
|
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, and
|
||||||
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:SFRRectCount is not
|
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:SFRRectCount is not
|
||||||
zero, then pname:image must: have been created with the
|
zero, then pname:image must: have been created with the
|
||||||
ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX bit set
|
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, all elements of
|
||||||
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects must: be
|
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects must: be
|
||||||
valid rectangles contained within the dimensions of pname:image
|
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
|
slink:VkBindImageMemoryDeviceGroupInfoKHX, the union of the areas of all
|
||||||
elements of slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects
|
elements of slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects
|
||||||
that correspond to the same instance of pname: image must: cover the
|
that correspond to the same instance of pname: image must: cover the
|
||||||
entire image.
|
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
|
slink:VkImageSwapchainCreateInfoKHX::pname:swapchain, then the
|
||||||
pname:pNext chain must: include a valid instance of
|
pname:pNext chain must: include a valid instance of
|
||||||
slink:VkBindImageMemorySwapchainInfoKHX
|
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
|
slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be
|
||||||
dlink:VK_NULL_HANDLE
|
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
|
slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be a valid
|
||||||
dname:VkDeviceMemory handle
|
dname:VkDeviceMemory handle
|
||||||
endif::VK_KHX_device_group[]
|
endif::VK_KHX_device_group[]
|
||||||
|
@ -3552,28 +3624,37 @@ In other words, by default each physical device attaches to instance zero.
|
||||||
|
|
||||||
.Valid Usage
|
.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.
|
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
|
physical devices in the logical device
|
||||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pDeviceIndices-01635]] All elements of pname:pDeviceIndices must: be valid device indices.
|
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pDeviceIndices-01635]]
|
||||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-SFRRectCount-01636]] pname:SFRRectCount must: either be zero or equal to the number of
|
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
|
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.
|
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
|
multiple of the sparse image block width
|
||||||
(sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of
|
(sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of
|
||||||
all non-metadata aspects of the image
|
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
|
multiple of the sparse image block height
|
||||||
(sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of
|
(sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of
|
||||||
all non-metadata aspects of the image
|
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
|
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:
|
aspects of the image, or else pname:extent.width + pname:offset.x must:
|
||||||
equal the width of the image subresource
|
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
|
either be a multiple of the sparse image block height of all
|
||||||
non-metadata aspects of the image, or else pname:extent.height +
|
non-metadata aspects of the image, or else pname:extent.height +
|
||||||
pname:offset.y must: equal the width of the image subresource
|
pname:offset.y must: equal the width of the image subresource
|
||||||
|
@ -3601,14 +3682,16 @@ include::../api/structs/VkBindImagePlaneMemoryInfoKHR.txt[]
|
||||||
|
|
||||||
.Valid Usage
|
.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
|
format (that is, pname:planeAspect must: be
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for "`etext:_2PLANE`" formats and
|
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,
|
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_1_BIT_KHR, or
|
||||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for "`etext:_3PLANE`" formats)
|
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
|
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
|
made in a single flink:vkBindImageMemory2KHR call), as separate bindings
|
||||||
****
|
****
|
||||||
|
@ -3644,7 +3727,8 @@ pname:pSFRRects members of slink:VkBindImageMemoryDeviceGroupInfoKHX.
|
||||||
|
|
||||||
.Valid Usage
|
.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
|
pname:swapchain
|
||||||
****
|
****
|
||||||
|
|
||||||
|
|
|
@ -168,7 +168,8 @@ pname:maxSamplerAllocationCount limit.
|
||||||
between `1.0` and
|
between `1.0` and
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxSamplerAnisotropy, inclusive
|
sname:VkPhysicalDeviceLimits::pname:maxSamplerAnisotropy, inclusive
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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
|
enabled and
|
||||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
|
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
|
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
|
are ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, pname:borderColor
|
||||||
must: be a valid elink:VkBorderColor value
|
must: be a valid elink:VkBorderColor value
|
||||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
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
|
enabled, pname:addressModeU, pname:addressModeV, and pname:addressModeW
|
||||||
must: be ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
must: be ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||||
pname:anisotropyEnable must: be ename:VK_FALSE, and
|
pname:anisotropyEnable must: be ename:VK_FALSE, and
|
||||||
pname:unnormalizedCoordinates must: be ename:VK_FALSE
|
pname:unnormalizedCoordinates must: be ename:VK_FALSE
|
||||||
ifdef::VK_EXT_sampler_filter_minmax[]
|
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
|
ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT if
|
||||||
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled
|
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled
|
||||||
endif::VK_EXT_sampler_filter_minmax[]
|
endif::VK_EXT_sampler_filter_minmax[]
|
||||||
|
@ -468,7 +471,8 @@ Operations>> chapter.
|
||||||
|
|
||||||
.Valid Usage
|
.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
|
conversion feature>> must: be enabled
|
||||||
****
|
****
|
||||||
|
|
||||||
|
@ -517,21 +521,27 @@ the default mode of operation.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01649]] pname:format must: not be ename:VK_FORMAT_UNDEFINED
|
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01649]]
|
||||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01650]] pname:format must: support
|
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_MIDPOINT_CHROMA_SAMPLES_BIT_KHR or
|
||||||
ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
|
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,
|
ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,
|
||||||
pname:xChromaOffset and pname:yChromaOffset must: not be
|
pname:xChromaOffset and pname:yChromaOffset must: not be
|
||||||
ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR
|
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,
|
ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
|
||||||
pname:xChromaOffset and pname:yChromaOffset must: not be
|
pname:xChromaOffset and pname:yChromaOffset must: not be
|
||||||
ename:VK_CHROMA_LOCATION_MIDPOINT_KHR
|
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)
|
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.g must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||||
** pname:components.a 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
|
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
|
** If either pname:components.r or pname:components.b is
|
||||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY, both values must: be
|
ename:VK_COMPONENT_SWIZZLE_IDENTITY, both values must: be
|
||||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
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
|
ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, then
|
||||||
pname:components.r, pname:components.g, and pname:components.b must:
|
pname:components.r, pname:components.g, and pname:components.b must:
|
||||||
correspond to channels of the pname:format; that is, pname:components.r,
|
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
|
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
|
must: not correspond to a channel which contains zero or one as a
|
||||||
consequence of <<textures-conversion-to-rgba,conversion to RGBA>>
|
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,
|
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
|
||||||
pname:forceExplicitReconstruction must: be FALSE
|
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,
|
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
|
||||||
pname:chromaFilter must: be ename:VK_FILTER_NEAREST
|
pname:chromaFilter must: be ename:VK_FILTER_NEAREST
|
||||||
****
|
****
|
||||||
|
|
|
@ -1326,10 +1326,10 @@ include::../api/structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103]]
|
* [[VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103]]
|
||||||
For any given element of pname:pBinds, if the pname:flags member of that
|
If the pname:flags member of any element of pname:pBinds contains
|
||||||
element contains ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding
|
ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range defined
|
||||||
range defined must: be within the mip tail region of the metadata aspect
|
must: be within the mip tail region of the metadata aspect of
|
||||||
of pname:image
|
pname:image
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
|
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
|
associated with any other queue command that has not yet completed
|
||||||
execution on that queue
|
execution on that queue
|
||||||
* [[VUID-vkQueueBindSparse-pSignalSemaphores-01115]]
|
* [[VUID-vkQueueBindSparse-pSignalSemaphores-01115]]
|
||||||
Any given element of the pname:pSignalSemaphores member of any element
|
Each element of the pname:pSignalSemaphores member of each element of
|
||||||
of pname:pBindInfo must: be unsignaled when the semaphore signal
|
pname:pBindInfo must: be unsignaled when the semaphore signal operation
|
||||||
operation it defines is executed on the device
|
it defines is executed on the device
|
||||||
* [[VUID-vkQueueBindSparse-pWaitSemaphores-01116]]
|
* [[VUID-vkQueueBindSparse-pWaitSemaphores-01116]]
|
||||||
When a semaphore unsignal operation defined by any element of the
|
When a semaphore unsignal operation defined by any element of the
|
||||||
pname:pWaitSemaphores member of any element of pname:pBindInfo executes
|
pname:pWaitSemaphores member of any element of pname:pBindInfo executes
|
||||||
|
|
|
@ -1318,9 +1318,8 @@ that fence.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-vkResetFences-pFences-01123]]
|
* [[VUID-vkResetFences-pFences-01123]]
|
||||||
Any given element of pname:pFences must: not currently be associated
|
Each element of pname:pFences must: not be currently associated with any
|
||||||
with any queue command that has not yet completed execution on that
|
queue command that has not yet completed execution on that queue
|
||||||
queue
|
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/protos/vkResetFences.txt[]
|
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[]
|
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
|
When a fence is using an imported payload, its
|
||||||
slink:VkExportFenceCreateInfoKHR::pname:handleTypes value is that specified
|
slink:VkExportFenceCreateInfoKHR::pname:handleTypes value is that specified
|
||||||
when creating the fence from which the payload was exported, rather than
|
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:
|
The handle types supported by pname:handleType are:
|
||||||
|
|
||||||
[[synchronization-handletypes-win32]]
|
[[synchronization-fence-handletypes-win32]]
|
||||||
.Handle Types Supported by VkImportFenceWin32HandleInfoKHR
|
.Handle Types Supported by VkImportFenceWin32HandleInfoKHR
|
||||||
[width="80%",options="header"]
|
[width="80%",options="header"]
|
||||||
|====
|
|====
|
||||||
|
@ -1687,7 +1733,7 @@ include::../api/structs/VkImportFenceFdInfoKHR.txt[]
|
||||||
|
|
||||||
The handle types supported by pname:handleType are:
|
The handle types supported by pname:handleType are:
|
||||||
|
|
||||||
[[synchronization-handletypes-fd]]
|
[[synchronization-fence-handletypes-fd]]
|
||||||
.Handle Types Supported by VkImportFenceFdInfoKHR
|
.Handle Types Supported by VkImportFenceFdInfoKHR
|
||||||
[width="80%",options="header"]
|
[width="80%",options="header"]
|
||||||
|====
|
|====
|
||||||
|
@ -2269,29 +2315,6 @@ unsignal operation>> is submitted to a queue:
|
||||||
|
|
||||||
ifdef::VK_KHR_external_semaphore[]
|
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]]
|
[[synchronization-semaphores-importing]]
|
||||||
=== Importing Semaphore Payloads
|
=== 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[]
|
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
|
When a semaphore is using an imported payload, its
|
||||||
slink:VkExportSemaphoreCreateInfoKHR::pname:handleTypes value is that
|
slink:VkExportSemaphoreCreateInfoKHR::pname:handleTypes value is that
|
||||||
specified when creating the semaphore from which the payload was exported,
|
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
|
Events are a synchronization primitive that can: be used to insert a
|
||||||
fine-grained dependency between commands submitted to the same queue, or
|
fine-grained dependency between commands submitted to the same queue, or
|
||||||
between the host and a queue.
|
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.
|
Events have two states - signaled and unsignaled.
|
||||||
An application can: signal an event, or unsignal it, on either the host or
|
An application can: signal an event, or unsignal it, on either the host or
|
||||||
the device.
|
the device.
|
||||||
|
@ -2928,7 +2995,10 @@ include::../api/protos/vkCmdWaitEvents.txt[]
|
||||||
slink:VkImageMemoryBarrier structures.
|
slink:VkImageMemoryBarrier structures.
|
||||||
|
|
||||||
When fname:vkCmdWaitEvents is submitted to a queue, it defines a memory
|
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
|
The first synchronization scope only includes event signal operations that
|
||||||
operate on members of pname:pEvents, and the operations that happened-before
|
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
|
<<synchronization-pipeline-stages-supported, table of supported pipeline
|
||||||
stages>>.
|
stages>>.
|
||||||
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01165]]
|
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01165]]
|
||||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers or
|
||||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||||
its pname:srcAccessMask member if that bit is not supported by any of
|
its pname:srcAccessMask member if that bit is not supported by any of
|
||||||
the pipeline stages in pname:srcStageMask, as specified in the
|
the pipeline stages in pname:srcStageMask, as specified in the
|
||||||
<<synchronization-access-types-supported, table of supported access
|
<<synchronization-access-types-supported, table of supported access
|
||||||
types>>.
|
types>>.
|
||||||
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01166]]
|
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01166]]
|
||||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers or
|
||||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||||
its pname:dstAccessMask member if that bit is not supported by any of
|
its pname:dstAccessMask member if that bit is not supported by any of
|
||||||
the pipeline stages in pname:dstStageMask, as specified in the
|
the pipeline stages in pname:dstStageMask, as specified in the
|
||||||
<<synchronization-access-types-supported, table of supported access
|
<<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
|
<<synchronization-pipeline-stages-supported, table of supported pipeline
|
||||||
stages>>.
|
stages>>.
|
||||||
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184]]
|
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184]]
|
||||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers and
|
||||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||||
its pname:srcAccessMask member if that bit is not supported by any of
|
its pname:srcAccessMask member if that bit is not supported by any of
|
||||||
the pipeline stages in pname:srcStageMask, as specified in the
|
the pipeline stages in pname:srcStageMask, as specified in the
|
||||||
<<synchronization-access-types-supported, table of supported access
|
<<synchronization-access-types-supported, table of supported access
|
||||||
types>>.
|
types>>.
|
||||||
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185]]
|
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185]]
|
||||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers and
|
||||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||||
its pname:dstAccessMask member if that bit is not supported by any of
|
its pname:dstAccessMask member if that bit is not supported by any of
|
||||||
the pipeline stages in pname:dstStageMask, as specified in the
|
the pipeline stages in pname:dstStageMask, as specified in the
|
||||||
<<synchronization-access-types-supported, table of supported access
|
<<synchronization-access-types-supported, table of supported access
|
||||||
|
@ -3609,6 +3679,17 @@ would equal ename:VK_IMAGE_LAYOUT_UNDEFINED.
|
||||||
|
|
||||||
endif::VK_EXT_sample_locations[]
|
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
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* [[VUID-VkImageMemoryBarrier-oldLayout-01197]]
|
* [[VUID-VkImageMemoryBarrier-oldLayout-01197]]
|
||||||
|
@ -3692,9 +3773,26 @@ endif::VK_KHR_external_memory[]
|
||||||
pname:image was created
|
pname:image was created
|
||||||
* [[VUID-VkImageMemoryBarrier-image-01207]]
|
* [[VUID-VkImageMemoryBarrier-image-01207]]
|
||||||
If pname:image has a depth/stencil format with both depth and stencil
|
If pname:image has a depth/stencil format with both depth and stencil
|
||||||
components, then pname:aspectMask member of pname:subresourceRange must:
|
components, then the pname:aspectMask member of pname:subresourceRange
|
||||||
include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and
|
must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and
|
||||||
ename:VK_IMAGE_ASPECT_STENCIL_BIT
|
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]]
|
* [[VUID-VkImageMemoryBarrier-oldLayout-01208]]
|
||||||
If either pname:oldLayout or pname:newLayout is
|
If either pname:oldLayout or pname:newLayout is
|
||||||
ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must:
|
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
|
must: have been created with
|
||||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
||||||
ifdef::VK_KHR_maintenance2[]
|
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
|
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
|
||||||
then pname:image must: have been created with
|
then pname:image must: have been created with
|
||||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
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
|
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
|
||||||
then pname:image must: have been created with
|
then pname:image must: have been created with
|
||||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
||||||
|
|
|
@ -320,6 +320,7 @@ They include the following steps, which are performed in the listed order:
|
||||||
** <<textures-operation-validation,Instruction/Sampler/Image validation>>
|
** <<textures-operation-validation,Instruction/Sampler/Image validation>>
|
||||||
** <<textures-integer-coordinate-validation,Coordinate validation>>
|
** <<textures-integer-coordinate-validation,Coordinate validation>>
|
||||||
** <<textures-sparse-validation,Sparse validation>>
|
** <<textures-sparse-validation,Sparse validation>>
|
||||||
|
** <<textures-layout-validation,Layout validation>>
|
||||||
* <<textures-format-conversion,Format conversion>>
|
* <<textures-format-conversion,Format conversion>>
|
||||||
* <<textures-texel-replacement,Texel replacement>>
|
* <<textures-texel-replacement,Texel replacement>>
|
||||||
* <<textures-depth-compare-operation,Depth comparison>>
|
* <<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
|
_sparse unbound texel_, and processing continues with
|
||||||
<<textures-texel-replacement,texel replacement>>.
|
<<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]]
|
[[textures-format-conversion]]
|
||||||
=== 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
|
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,
|
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
|
and B components as described in the "`sRGB EOTF`" section of the
|
||||||
the <<data-format,Khronos Data Format Specification>>.
|
<<data-format,Khronos Data Format Specification>>.
|
||||||
The A component, if present, is unchanged.
|
The A component, if present, is unchanged.
|
||||||
|
|
||||||
If the image view format is block-compressed, then the texel value is first
|
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[]
|
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]]
|
[[textures-instructions]]
|
||||||
== Image Operation Steps
|
== Image Operation Steps
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
# For error and file-loading interfaces only
|
# For error and file-loading interfaces only
|
||||||
from reflib import *
|
from reflib import *
|
||||||
|
from reflow_count import startVUID
|
||||||
|
|
||||||
import argparse, copy, os, pdb, re, string, sys
|
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)
|
logWarn('Updated nextvu to', state.nextvu, 'after file', filename)
|
||||||
args.nextvu = state.nextvu
|
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.
|
# Patterns used to recognize interesting lines in an asciidoc source file.
|
||||||
# These patterns are only compiled once.
|
# These patterns are only compiled once.
|
||||||
|
|
||||||
|
@ -597,8 +613,6 @@ def reflowFile(filename, args):
|
||||||
global vuPat
|
global vuPat
|
||||||
vuPat = re.compile('^(?P<head> [*]+)( *)(?P<tail>.*)', re.DOTALL)
|
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__':
|
if __name__ == '__main__':
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
|
@ -643,10 +657,23 @@ if __name__ == '__main__':
|
||||||
if args.nextvu != None:
|
if args.nextvu != None:
|
||||||
logWarn('Tagging untagged Valid Usage statements starting at', args.nextvu)
|
logWarn('Tagging untagged Valid Usage statements starting at', args.nextvu)
|
||||||
|
|
||||||
|
# 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:
|
for file in args.files:
|
||||||
reflowFile(file, args)
|
reflowFile(file, args)
|
||||||
|
|
||||||
if args.nextvu != None and args.nextvu != startVUID:
|
if args.nextvu != None and args.nextvu != startVUID:
|
||||||
logWarn('You must now edit the value of reflow.py:startVUID to',
|
try:
|
||||||
args.nextvu,
|
reflow_count_file_path = os.path.dirname(os.path.realpath(__file__))
|
||||||
'so that future runs will not overwrite existing VUID tags')
|
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])
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||||
|
startVUID = 1676
|
|
@ -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]]
|
[[writing-compound-words]]
|
||||||
=== Compound Words and Preferred Orthography
|
=== Compound Words and Preferred Orthography
|
||||||
|
|
||||||
|
|
|
@ -157,6 +157,8 @@ include::style/vuid.txt[]
|
||||||
|
|
||||||
= Revision History
|
= 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
|
* 2017-09-10 - Add <<extensions-interactions-parent, Valid Usage and
|
||||||
Extension pname:pNext Chains>> language specifying where to describe
|
Extension pname:pNext Chains>> language specifying where to describe
|
||||||
interactions of structures in a pname:pNext chain (internal issue 715).
|
interactions of structures in a pname:pNext chain (internal issue 715).
|
||||||
|
|
|
@ -1020,6 +1020,57 @@ VkResult vkBindImageMemory2KHR(
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* VK_KHR_bind_memory2 */
|
#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
|
#ifdef VK_EXT_debug_report
|
||||||
static PFN_vkCreateDebugReportCallbackEXT pfn_vkCreateDebugReportCallbackEXT;
|
static PFN_vkCreateDebugReportCallbackEXT pfn_vkCreateDebugReportCallbackEXT;
|
||||||
VkResult vkCreateDebugReportCallbackEXT(
|
VkResult vkCreateDebugReportCallbackEXT(
|
||||||
|
@ -1951,6 +2002,11 @@ void vkExtInitInstance(VkInstance instance)
|
||||||
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindBufferMemory2KHR");
|
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindBufferMemory2KHR");
|
||||||
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindImageMemory2KHR");
|
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindImageMemory2KHR");
|
||||||
#endif /* VK_KHR_bind_memory2 */
|
#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
|
#ifdef VK_EXT_debug_report
|
||||||
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT");
|
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT");
|
||||||
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT");
|
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT");
|
||||||
|
@ -2199,6 +2255,11 @@ void vkExtInitDevice(VkDevice device)
|
||||||
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetDeviceProcAddr(device, "vkBindBufferMemory2KHR");
|
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetDeviceProcAddr(device, "vkBindBufferMemory2KHR");
|
||||||
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetDeviceProcAddr(device, "vkBindImageMemory2KHR");
|
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetDeviceProcAddr(device, "vkBindImageMemory2KHR");
|
||||||
#endif /* VK_KHR_bind_memory2 */
|
#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
|
#ifdef VK_EXT_debug_report
|
||||||
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkCreateDebugReportCallbackEXT");
|
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkCreateDebugReportCallbackEXT");
|
||||||
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkDestroyDebugReportCallbackEXT");
|
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkDestroyDebugReportCallbackEXT");
|
||||||
|
|
|
@ -393,13 +393,19 @@ Extension = element extension {
|
||||||
ProfileName ? ,
|
ProfileName ? ,
|
||||||
ExtensionName ? ,
|
ExtensionName ? ,
|
||||||
Comment ? ,
|
Comment ? ,
|
||||||
InterfaceElement *
|
(
|
||||||
|
InterfaceElement |
|
||||||
|
element comment { text }
|
||||||
|
) *
|
||||||
} |
|
} |
|
||||||
element remove {
|
element remove {
|
||||||
attribute api { text } ? ,
|
attribute api { text } ? ,
|
||||||
ProfileName ? ,
|
ProfileName ? ,
|
||||||
Comment ? ,
|
Comment ? ,
|
||||||
InterfaceElement *
|
(
|
||||||
|
InterfaceElement |
|
||||||
|
element comment { text }
|
||||||
|
) *
|
||||||
}
|
}
|
||||||
) *
|
) *
|
||||||
}
|
}
|
||||||
|
|
102
src/spec/vk.xml
102
src/spec/vk.xml
|
@ -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
|
<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>
|
#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
|
<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">
|
<type category="define">
|
||||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||||
|
@ -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>VkOffset2D</type> <name>offset</name></member>
|
||||||
<member><type>VkExtent2D</type> <name>extent</name></member>
|
<member><type>VkExtent2D</type> <name>extent</name></member>
|
||||||
</type>
|
</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">
|
<type category="struct" name="VkClearRect">
|
||||||
<member><type>VkRect2D</type> <name>rect</name></member>
|
<member><type>VkRect2D</type> <name>rect</name></member>
|
||||||
<member><type>uint32_t</type> <name>baseArrayLayer</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 optional="true"><type>uint32_t</type> <name>attachmentInitialSampleLocationsCount</name></member>
|
||||||
<member len="attachmentInitialSampleLocationsCount">const <type>VkAttachmentSampleLocationsEXT</type>* <name>pAttachmentInitialSampleLocations</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 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>
|
||||||
<type category="struct" name="VkPipelineSampleLocationsStateCreateInfoEXT" structextends="VkPipelineMultisampleStateCreateInfo">
|
<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>
|
<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>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||||
<member><type>VkValidationCacheEXT</type> <name>validationCache</name></member> <!-- Validation cache handle -->
|
<member><type>VkValidationCacheEXT</type> <name>validationCache</name></member> <!-- Validation cache handle -->
|
||||||
</type>
|
</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>
|
</types>
|
||||||
|
|
||||||
<comment>Vulkan enumerant (token) definitions</comment>
|
<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" externsync="true"><type>VkSamplerYcbcrConversionKHR</type> <name>ycbcrConversion</name></param>
|
||||||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||||
</command>
|
</command>
|
||||||
<command>
|
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
|
||||||
<proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto>
|
<proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto>
|
||||||
<param><type>VkDevice</type> <name>device</name></param>
|
<param><type>VkDevice</type> <name>device</name></param>
|
||||||
<param>const <type>VkValidationCacheCreateInfoEXT</type>* <name>pCreateInfo</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><type>uint32_t</type> <name>srcCacheCount</name></param>
|
||||||
<param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param>
|
<param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param>
|
||||||
</command>
|
</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>
|
</commands>
|
||||||
|
|
||||||
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
|
<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>
|
||||||
<extension name="VK_ANDROID_native_buffer" number="11" supported="disabled">
|
<extension name="VK_ANDROID_native_buffer" number="11" supported="disabled">
|
||||||
<require>
|
<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="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/>
|
||||||
<enum value=""VK_ANDROID_native_buffer"" name="VK_ANDROID_NATIVE_BUFFER_NAME"/>
|
<enum value=""VK_ANDROID_native_buffer"" 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>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_EXT_debug_report" number="12" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
|
<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=""VK_AMD_extension_46"" name="VK_AMD_EXTENSION_46_EXTENSION_NAME"/>
|
<enum value=""VK_AMD_extension_46"" name="VK_AMD_EXTENSION_46_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</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>
|
<require>
|
||||||
<enum value="0" name="VK_AMD_EXTENSION_47_SPEC_VERSION"/>
|
<enum value="1" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"/>
|
||||||
<enum value=""VK_AMD_extension_47"" name="VK_AMD_EXTENSION_47_EXTENSION_NAME"/>
|
<enum value=""VK_AMD_shader_image_load_store_lod"" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</extension>
|
||||||
<extension name="VK_NVX_extension_48" number="48" author="NVX" contact="James Jones @cubanismo" supported="disabled">
|
<extension name="VK_NVX_extension_48" number="48" author="NVX" contact="James Jones @cubanismo" supported="disabled">
|
||||||
|
@ -7315,5 +7347,53 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
||||||
<enum value=""VK_EXT_extension_170"" name="VK_EXT_EXTENSION_170_EXTENSION_NAME"/>
|
<enum value=""VK_EXT_extension_170"" name="VK_EXT_EXTENSION_170_EXTENSION_NAME"/>
|
||||||
</require>
|
</require>
|
||||||
</extension>
|
</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=""VK_QCOM_extension_171"" 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=""VK_QCOM_extension_172"" 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=""VK_QCOM_extension_173"" 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=""VK_QCOM_extension_174"" 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=""VK_KHR_extension_175"" 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=""VK_KHR_extension_176"" 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=""VK_KHR_extension_177"" 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=""VK_KHR_extension_178"" name="VK_KHR_EXTENSION_178_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
</extensions>
|
</extensions>
|
||||||
</registry>
|
</registry>
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
||||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||||
// Version of this file
|
// Version of this file
|
||||||
#define VK_HEADER_VERSION 61
|
#define VK_HEADER_VERSION 62
|
||||||
|
|
||||||
|
|
||||||
#define VK_NULL_HANDLE 0
|
#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 1
|
||||||
#define VK_KHX_MULTIVIEW_SPEC_VERSION 1
|
#define VK_KHX_MULTIVIEW_SPEC_VERSION 1
|
||||||
#define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
|
#define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
|
||||||
|
@ -6647,7 +6652,7 @@ typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
|
||||||
uint32_t attachmentInitialSampleLocationsCount;
|
uint32_t attachmentInitialSampleLocationsCount;
|
||||||
const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
|
const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
|
||||||
uint32_t postSubpassSampleLocationsCount;
|
uint32_t postSubpassSampleLocationsCount;
|
||||||
const VkSubpassSampleLocationsEXT* pSubpassSampleLocations;
|
const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;
|
||||||
} VkRenderPassSampleLocationsBeginInfoEXT;
|
} VkRenderPassSampleLocationsBeginInfoEXT;
|
||||||
|
|
||||||
typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
|
typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue