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/hostsynctable
|
||||
doc/specs/vulkan/validity
|
||||
doc/specs/vulkan/appendices/meta
|
||||
|
||||
# Files generated by extraction from spec source
|
||||
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:
|
||||
|
||||
* Bump API patch number and header version number to 61 for this update.
|
||||
|
|
|
@ -87,25 +87,19 @@ VERBOSE =
|
|||
# $(EXTENSIONS))
|
||||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
SPECREVISION = 1.0.61
|
||||
SPECREVISION = 1.0.62
|
||||
# Spell out RFC2822 format as not all date commands support -R
|
||||
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
|
||||
|
||||
# Generate Asciidoc attributes for spec remark
|
||||
GITHEAD := ../../../.git/logs/HEAD
|
||||
ifeq ($(wildcard $(GITHEAD)),)
|
||||
# If GITHEAD does not exist, don't include branch info.
|
||||
SPECREMARK = Git branch information not available
|
||||
else
|
||||
# Could use `git log -1 --format="%cd"` to get branch commit date
|
||||
# This used to be a dependency in the spec html/pdf targets,
|
||||
# but that's likely to lead to merge conflicts. Just regenerate
|
||||
# when pushing a new spec for review to the sandbox.
|
||||
# The dependency on HEAD is per the suggestion in
|
||||
# http://neugierig.org/software/blog/2014/11/binary-revisions.html
|
||||
SPECREMARK = from git branch: $(shell echo `git symbolic-ref --short HEAD`) \
|
||||
SPECREMARK = from git branch: $(shell echo `git symbolic-ref --short HEAD 2> /dev/null || echo Git branch information not available`) \
|
||||
commit: $(shell echo `git log -1 --format="%H"`)
|
||||
endif
|
||||
|
||||
ATTRIBOPTS = -a revnumber="$(SPECREVISION)" \
|
||||
-a revdate="$(SPECDATE)" \
|
||||
|
|
|
@ -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[]
|
||||
endif::VK_AMD_shader_fragment_mask[]
|
||||
|
||||
ifdef::VK_AMD_shader_image_load_store_lod[]
|
||||
include::VK_AMD_shader_image_load_store_lod.txt[]
|
||||
endif::VK_AMD_shader_image_load_store_lod[]
|
||||
|
||||
ifdef::VK_AMD_shader_trinary_minmax[]
|
||||
include::VK_AMD_shader_trinary_minmax.txt[]
|
||||
endif::VK_AMD_shader_trinary_minmax[]
|
||||
|
|
|
@ -977,6 +977,13 @@ Resolve Attachment::
|
|||
multisample resolve operation from the corresponding color attachment at
|
||||
the end of the subpass.
|
||||
|
||||
Retired Swapchain::
|
||||
A swapchain that has been used as the pname:oldSwapchain parameter to
|
||||
flink:vkCreateSwapchainKHR.
|
||||
Images cannot be acquired from a retired swapchain, however images that
|
||||
were acquired (but not presented) before the swapchain was retired can:
|
||||
be presented.
|
||||
|
||||
Sampled Image::
|
||||
A descriptor type that represents an image view, and supports filtered
|
||||
(sampled) and unfiltered read-only acccess in a shader.
|
||||
|
|
|
@ -106,6 +106,10 @@ ifdef::VK_KHX_device_group[]
|
|||
[[spirvenv-capabilities-table-devicegroup]]
|
||||
| code:DeviceGroup | <<VK_KHX_device_group,VK_KHX_device_group>>
|
||||
endif::VK_KHX_device_group[]
|
||||
ifdef::VK_AMD_shader_image_load_store_lod[]
|
||||
[[spirvenv-capabilities-table-imagereadwritelodamd]]
|
||||
| code:ImageReadWriteLodAMD | <<VK_AMD_shader_image_load_store_lod,VK_AMD_shader_image_load_store_lod>>
|
||||
endif::VK_AMD_shader_image_load_store_lod[]
|
||||
ifdef::VK_AMD_texture_gather_bias_lod[]
|
||||
[[spirvenv-capabilities-table-imagegatherbiaslodamd]]
|
||||
| code:ImageGatherBiasLodAMD | <<VK_AMD_texture_gather_bias_lod,VK_AMD_texture_gather_bias_lod>>
|
||||
|
@ -174,6 +178,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
|||
uses the +SPV_AMD_shader_ballot+ SPIR-V extension.
|
||||
endif::VK_AMD_shader_ballot[]
|
||||
|
||||
ifdef::VK_AMD_shader_image_load_store_lod[]
|
||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||
uses the +SPV_AMD_shader_image_load_store_lod+ SPIR-V extension.
|
||||
endif::VK_AMD_shader_image_load_store_lod[]
|
||||
|
||||
ifdef::VK_AMD_shader_trinary_minmax[]
|
||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||
uses the +SPV_AMD_shader_trinary_minmax+ SPIR-V extension.
|
||||
|
|
|
@ -8,7 +8,7 @@ as well as weights [eq]#{alpha}# and [eq]#{beta}#.
|
|||
++++++++++++++++++++++++
|
||||
\begin{aligned}
|
||||
i_{0} & = \left \lfloor u - \frac{3}{2} \right \rfloor & i_{1} & = i_{0} + 1 & i_{2} & = i_{1} + 1 & i_{3} & = i_{2} + 1 \\[1em]
|
||||
j_{0} & = \left \lfloor u - \frac{3}{2} \right \rfloor & j_{1} & = j_{0} + 1 & j_{2} & = j_{1} + 1 & j_{3} & = j_{2} + 1 \\
|
||||
j_{0} & = \left \lfloor v - \frac{3}{2} \right \rfloor & j_{1} & = j_{0} + 1 & j_{2} & = j_{1} + 1 & j_{3} & = j_{2} + 1 \\
|
||||
\\
|
||||
\alpha & = \mathbin{frac} \left ( u - \frac{1}{2} \right ) \\[1em]
|
||||
\beta & = \mathbin{frac} \left ( v - \frac{1}{2} \right )
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
If a swapchain associated with a display surface is destroyed and there are
|
||||
no valid descendants of that swapchain, the implementation must: either
|
||||
revert any display resources modified by presenting images with the
|
||||
swapchain to their state prior to the first present performed with the
|
||||
swapchain and its ancestors, or leave such resources in their current state.
|
||||
When a swapchain associated with a display surface is destroyed, if the
|
||||
image most recently presented to the display surface is from the swapchain
|
||||
being destroyed, then either any display resources modified by presenting
|
||||
images from any swapchain associated with the display surface must: be
|
||||
reverted by the implementation to their state prior to the first present
|
||||
performed on one of these swapchains, or such resources must: be left in
|
||||
their current state.
|
||||
|
|
|
@ -111,7 +111,8 @@ include::../../api/structs/VkSwapchainCreateInfoKHR.txt[]
|
|||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:flags is a bitmask of elink:VkSwapchainCreateFlagBitsKHR
|
||||
indicating parameters of swapchain creation.
|
||||
* pname:surface is the surface that the swapchain will present images to.
|
||||
* pname:surface is the surface to which the swapchain will present images.
|
||||
The swapchain is associated with pname:surface.
|
||||
* pname:minImageCount is the minimum number of presentable images that the
|
||||
application needs.
|
||||
The platform will either create the swapchain with at least that many
|
||||
|
@ -175,32 +176,43 @@ after reacquiring them and if their pixel shaders do not have any side
|
|||
effects that require them to run for all pixels in the presentable image.
|
||||
====
|
||||
|
||||
* pname:oldSwapchain, if not dlink:VK_NULL_HANDLE, specifies the swapchain
|
||||
that will be replaced by the new swapchain being created.
|
||||
The new swapchain will be a descendant of pname:oldSwapchain.
|
||||
Further, any descendants of the new swapchain will also be descendants
|
||||
of pname:oldSwapchain.
|
||||
* pname:oldSwapchain, if not dlink:VK_NULL_HANDLE, specifies an existing
|
||||
non-retired swapchain that is associated with surface.
|
||||
|
||||
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
|
||||
is not dlink:VK_NULL_HANDLE, any images not acquired by the application
|
||||
may: be freed by the implementation, which may: occur even if creation
|
||||
of the new swapchain fails.
|
||||
The application must: destroy the old swapchain to free all memory
|
||||
associated with the old swapchain.
|
||||
The application must: wait for the completion of any outstanding
|
||||
rendering to images it currently has acquired at the time the swapchain
|
||||
is destroyed.
|
||||
The application can: continue to present any images it acquired and has
|
||||
not yet presented using the old swapchain, as long as it has not entered
|
||||
a state that causes it to return ename:VK_ERROR_OUT_OF_DATE_KHR.
|
||||
However, the application cannot: acquire any more images from the old
|
||||
swapchain regardless of whether or not creation of the new swapchain
|
||||
succeeds.
|
||||
is not dlink:VK_NULL_HANDLE, pname:oldSwapchain is retired, even if
|
||||
creation of the new swapchain fails.
|
||||
The new swapchain is created in the non-retired state whether or not
|
||||
pname:oldSwapchain is dlink:VK_NULL_HANDLE.
|
||||
|
||||
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
|
||||
is not dlink:VK_NULL_HANDLE, any images from pname:oldSwapchain that are
|
||||
not acquired by the application may: be freed by the implementation,
|
||||
which may: occur even if creation of the new swapchain fails.
|
||||
The application must: destroy sname:oldSwapchain to free all memory
|
||||
associated with sname:oldSwapchain.
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
Multiple retired swapchains can: be associated with the same
|
||||
sname:VkSurfaceKHR through multiple uses of sname:oldSwapchain that
|
||||
outnumber calls to flink:vkDestroySwapchainKHR.
|
||||
|
||||
After sname:oldSwapchain is retired, the application can: pass to
|
||||
flink:vkQueuePresentKHR any images it had already acquired from
|
||||
sname:oldSwapchain.
|
||||
E.g., an application may present an image from the old swapchain before an
|
||||
image from the new swapchain is ready to be presented.
|
||||
As usual, flink:vkQueuePresentKHR may: fail if sname:oldSwapchain has
|
||||
entered a state that causes ename:VK_ERROR_OUT_OF_DATE_KHR to be returned.
|
||||
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
The application can: continue to use a shared presentable image obtained
|
||||
from pname:oldSwapchain until a presentable image is acquired from the
|
||||
new swapchain, as long as it has not entered a state that causes it to
|
||||
return ename:VK_ERROR_OUT_OF_DATE_KHR.
|
||||
The application can: continue to use a shared presentable image obtained
|
||||
from pname:oldSwapchain until a presentable image is acquired from the new
|
||||
swapchain, as long as it has not entered a state that causes it to return
|
||||
ename:VK_ERROR_OUT_OF_DATE_KHR.
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
====
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
|
@ -308,6 +320,9 @@ ifdef::VK_KHX_device_group[]
|
|||
to 1, pname:flags must: not contain
|
||||
ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
|
||||
endif::VK_KHX_device_group[]
|
||||
* [[VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01674]]
|
||||
pname:oldSwapchain must: not be in the retired state
|
||||
|
||||
****
|
||||
|
||||
include::../../validity/structs/VkSwapchainCreateInfoKHR.txt[]
|
||||
|
@ -393,12 +408,17 @@ endif::VK_KHX_device_group[]
|
|||
| pname:initialLayout | ename:VK_IMAGE_LAYOUT_UNDEFINED
|
||||
|====
|
||||
|
||||
The sname:VkSurfaceKHR associated with a swapchain must: not be destroyed
|
||||
until after the swapchain is destroyed.
|
||||
The pname:surface must: not be destroyed until after the swapchain is
|
||||
destroyed.
|
||||
|
||||
The native window referred to by pname:surface must: not already be
|
||||
associated with a swapchain other than pname:oldSwapchain, or with a
|
||||
non-Vulkan graphics API surface.
|
||||
If pname:oldSwapchain is not VK_NULL_HANDLE then pname:surface must: be
|
||||
associated with pname:oldSwapchain.
|
||||
Otherwise, the native window referred to by pname:surface must: not already
|
||||
be associated with another swapchain, and must: not be already be associated
|
||||
with a non-Vulkan graphics API surface.
|
||||
The native window referred to by pname:surface must: not become associated
|
||||
with a non-Vulkan graphics API surface before the swapchain has been
|
||||
destroyed.
|
||||
|
||||
Like core functions, several WSI functions, including
|
||||
fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical
|
||||
|
@ -437,10 +457,12 @@ include::../../api/protos/vkDestroySwapchainKHR.txt[]
|
|||
swapchain object when there is no more specific allocator available (see
|
||||
<<memory-allocation,Memory Allocation>>).
|
||||
|
||||
The application must: not destroy a swapchain until after completion of all
|
||||
outstanding operations on images that were acquired from the swapchain.
|
||||
pname:swapchain and all associated sname:VkImage handles are destroyed, and
|
||||
must: not be acquired or used any more by the application.
|
||||
The memory of each sname:VkImage will only be freed after that image is no
|
||||
longer used by the platform.
|
||||
longer used by the presentation engine.
|
||||
For example, if one image of the swapchain is being displayed in a window,
|
||||
the memory for that image may: not be freed until the window is destroyed,
|
||||
or another swapchain is created for the window.
|
||||
|
@ -549,7 +571,8 @@ that image, call:
|
|||
include::../../api/protos/vkAcquireNextImageKHR.txt[]
|
||||
|
||||
* pname:device is the device associated with pname:swapchain.
|
||||
* pname:swapchain is the swapchain from which an image is being acquired.
|
||||
* pname:swapchain is the non-retired swapchain from which an image is
|
||||
being acquired.
|
||||
* pname:timeout indicates how long the function waits, in nanoseconds, if
|
||||
no image is available.
|
||||
* pname:semaphore is dlink:VK_NULL_HANDLE or a semaphore to signal.
|
||||
|
@ -561,9 +584,7 @@ include::../../api/protos/vkAcquireNextImageKHR.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkAcquireNextImageKHR-swapchain-01285]]
|
||||
pname:swapchain must: not have been replaced by being passed as the
|
||||
sname:VkSwapchainCreateInfoKHR::pname:oldSwapchain value to
|
||||
fname:vkCreateSwapchainKHR
|
||||
pname:swapchain must: not be in the retired state
|
||||
* [[VUID-vkAcquireNextImageKHR-semaphore-01286]]
|
||||
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
|
||||
* [[VUID-vkAcquireNextImageKHR-fence-01287]]
|
||||
|
@ -687,8 +708,17 @@ dlink:VK_NULL_HANDLE.
|
|||
An application must: wait until either the pname:semaphore or pname:fence is
|
||||
signaled before using the presentable image.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
|
||||
Use of a non-zero pname:timeout is independent from the need for the
|
||||
application to synchronize access to the acquired image through use of
|
||||
pname:semaphore and/or pname:fence.
|
||||
====
|
||||
|
||||
pname:semaphore and pname:fence may: already be signaled when
|
||||
fname:vkAcquireNextImageKHR returns, if the image is being acquired for the
|
||||
flink:vkAcquireNextImageKHR returns, if the image is being acquired for the
|
||||
first time, or if the presentable image is immediately ready for use.
|
||||
|
||||
A successful call to fname:vkAcquireNextImageKHR counts as a signal
|
||||
|
@ -763,9 +793,9 @@ pname:timeout provided:
|
|||
This may: happen, for example, if the platform surface has been resized but
|
||||
the platform is able to scale the presented images to the new size to
|
||||
produce valid surface updates.
|
||||
It is up to applications to decide whether they prefer to continue using the
|
||||
current swapchain indefinitely or temporarily in this state, or to re-create
|
||||
the swapchain to better match the platform surface properties.
|
||||
It is up to the application to decide whether it prefers to continue using
|
||||
the current swapchain indefinitely or temporarily in this state, or to
|
||||
re-create the swapchain to better match the platform surface properties.
|
||||
====
|
||||
|
||||
* ename:VK_ERROR_OUT_OF_DATE_KHR is returned if the surface has changed in
|
||||
|
@ -836,7 +866,8 @@ include::../../api/structs/VkAcquireNextImageInfoKHX.txt[]
|
|||
|
||||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:swapchain is the swapchain from which an image is being acquired.
|
||||
* pname:swapchain is a non-retired swapchain from which an image is
|
||||
acquired.
|
||||
* pname:timeout indicates how long the function waits, in nanoseconds, if
|
||||
no image is available.
|
||||
* pname:semaphore is code:VK_NULL_HANDLE or a semaphore to signal.
|
||||
|
@ -863,6 +894,8 @@ succeeds, which the other physical device(s) can: wait upon.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkAcquireNextImageInfoKHX-swapchain-01675]]
|
||||
pname:swapchain must: not be in the retired state
|
||||
* [[VUID-VkAcquireNextImageInfoKHX-semaphore-01288]]
|
||||
If pname:semaphore is not dlink:VK_NULL_HANDLE it must: be unsignaled
|
||||
* [[VUID-VkAcquireNextImageInfoKHX-fence-01289]]
|
||||
|
@ -897,9 +930,9 @@ include::../../api/protos/vkQueuePresentKHR.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkQueuePresentKHR-pSwapchains-01292]]
|
||||
Any given element of pname:pSwapchains member of pname:pPresentInfo
|
||||
must: be a swapchain that is created for a surface for which
|
||||
presentation is supported from pname:queue as determined using a call to
|
||||
Each element of pname:pSwapchains member of pname:pPresentInfo must: be
|
||||
a swapchain that is created for a surface for which presentation is
|
||||
supported from pname:queue as determined using a call to
|
||||
fname:vkGetPhysicalDeviceSurfaceSupportKHR
|
||||
ifdef::VK_KHR_display_swapchain[]
|
||||
* [[VUID-vkQueuePresentKHR-pSwapchains-01293]]
|
||||
|
@ -966,19 +999,19 @@ include::../../api/structs/VkPresentInfoKHR.txt[]
|
|||
****
|
||||
ifndef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-VkPresentInfoKHR-pImageIndices-01296]]
|
||||
Any given element of pname:pImageIndices must: be the index of a
|
||||
presentable image acquired from the swapchain specified by the
|
||||
corresponding element of the pname:pSwapchains array, and the presented
|
||||
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
|
||||
layout at the time the operation is executed on a sname:VkDevice
|
||||
Each element of pname:pImageIndices must: be the index of a presentable
|
||||
image acquired from the swapchain specified by the corresponding element
|
||||
of the pname:pSwapchains array, and the presented image subresource
|
||||
must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout at the time
|
||||
the operation is executed on a sname:VkDevice
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifdef::VK_KHR_shared_presentable_image[]
|
||||
* [[VUID-VkPresentInfoKHR-pImageIndices-01430]]
|
||||
Any given element of pname:pImageIndices must: be the index of a
|
||||
presentable image acquired from the swapchain specified by the
|
||||
corresponding element of the pname:pSwapchains array, and the presented
|
||||
image subresource must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
|
||||
or ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout at the time the
|
||||
Each element of pname:pImageIndices must: be the index of a presentable
|
||||
image acquired from the swapchain specified by the corresponding element
|
||||
of the pname:pSwapchains array, and the presented image subresource
|
||||
must: be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR or
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR layout at the time the
|
||||
operation is executed on a sname:VkDevice
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
****
|
||||
|
@ -1146,6 +1179,14 @@ However, if a mechanism other than Vulkan is used to modify the platform
|
|||
window associated with the swapchain, the content of all presentable images
|
||||
in the swapchain becomes undefined.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
The application can: continue to present any acquired images from a retired
|
||||
swapchain as long as the swapchain has not entered a state that causes
|
||||
flink:vkQueuePresentKHR to return ename:VK_ERROR_OUT_OF_DATE_KHR.
|
||||
====
|
||||
|
||||
ifdef::VK_EXT_hdr_metadata[]
|
||||
include::../VK_EXT_hdr_metadata.txt[]
|
||||
endif::VK_EXT_hdr_metadata[]
|
||||
|
|
|
@ -61,7 +61,8 @@ endif::VK_KHR_maintenance1[]
|
|||
pname:image must: have been created with
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdClearColorImage-image-01545]] pname:image must: not use a format listed in
|
||||
* [[VUID-vkCmdClearColorImage-image-01545]]
|
||||
pname:image must: not use a format listed in
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdClearColorImage-image-00003]]
|
||||
|
@ -238,17 +239,16 @@ attachments and the command parameters.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdClearAttachments-aspectMask-00015]]
|
||||
If the pname:aspectMask member of any given element of
|
||||
pname:pAttachments contains ename:VK_IMAGE_ASPECT_COLOR_BIT, the
|
||||
pname:colorAttachment member of those elements must: refer to a valid
|
||||
color attachment in the current subpass
|
||||
If the pname:aspectMask member of any element of pname:pAttachments
|
||||
contains ename:VK_IMAGE_ASPECT_COLOR_BIT, the pname:colorAttachment
|
||||
member of that element must: refer to a valid color attachment in the
|
||||
current subpass
|
||||
* [[VUID-vkCmdClearAttachments-pRects-00016]]
|
||||
The rectangular region specified by a given element of pname:pRects
|
||||
must: be contained within the render area of the current render pass
|
||||
instance
|
||||
The rectangular region specified by each element of pname:pRects must:
|
||||
be contained within the render area of the current render pass instance
|
||||
* [[VUID-vkCmdClearAttachments-pRects-00017]]
|
||||
The layers specified by a given element of pname:pRects must: be
|
||||
contained within every attachment that pname:pAttachments refers to
|
||||
The layers specified by each element of pname:pRects must: be contained
|
||||
within every attachment that pname:pAttachments refers to
|
||||
ifdef::VK_KHX_multiview[]
|
||||
* [[VUID-vkCmdClearAttachments-baseArrayLayer-00018]]
|
||||
If the render pass instance this is recorded in uses multiview, then
|
||||
|
@ -522,7 +522,7 @@ additional storage and may incur an additional allocation), and then copy
|
|||
the data from the command buffer into pname:dstBuffer when the command is
|
||||
executed on a device.
|
||||
|
||||
The additional cost of this functionality compared to <<<<copies-buffers,
|
||||
The additional cost of this functionality compared to <<copies-buffers,
|
||||
buffer to buffer copies>> means it is only recommended for very small
|
||||
amounts of data, and is why it is limited to only 65536 bytes.
|
||||
|
||||
|
|
|
@ -864,9 +864,9 @@ See <<devsandqueues-lost-device,Lost Device>>.
|
|||
<<synchronization-pipeline-stages-supported, table of supported pipeline
|
||||
stages>>.
|
||||
* [[VUID-vkQueueSubmit-pSignalSemaphores-00067]]
|
||||
Any given element of the pname:pSignalSemaphores member of any element
|
||||
of pname:pSubmits must: be unsignaled when the semaphore signal
|
||||
operation it defines is executed on the device
|
||||
Each element of the pname:pSignalSemaphores member of any element of
|
||||
pname:pSubmits must: be unsignaled when the semaphore signal operation
|
||||
it defines is executed on the device
|
||||
* [[VUID-vkQueueSubmit-pWaitSemaphores-00068]]
|
||||
When a semaphore unsignal operation defined by any element of the
|
||||
pname:pWaitSemaphores member of any element of pname:pSubmits executes
|
||||
|
@ -877,27 +877,27 @@ See <<devsandqueues-lost-device,Lost Device>>.
|
|||
<<synchronization-semaphores-signaling, semaphore signal operations>>
|
||||
previously submitted for execution.
|
||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00070]]
|
||||
Any given element of the pname:pCommandBuffers member of any element of
|
||||
Each element of the pname:pCommandBuffers member of each element of
|
||||
pname:pSubmits must: be in the <<commandbuffers-lifecycle, pending or
|
||||
executable state>>.
|
||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00071]]
|
||||
If any given element of the pname:pCommandBuffers member of any element
|
||||
of pname:pSubmits was not recorded with the
|
||||
If any element of the pname:pCommandBuffers member of any element of
|
||||
pname:pSubmits was not recorded with the
|
||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
|
||||
the <<commandbuffers-lifecycle, pending state>>.
|
||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00072]]
|
||||
Any <<commandbuffers-secondary, secondary command buffers recorded>>
|
||||
into any given element of the pname:pCommandBuffers member of any
|
||||
element of pname:pSubmits must: be in the <<commandbuffers-lifecycle,
|
||||
pending or executable state>>.
|
||||
into any element of the pname:pCommandBuffers member of any element of
|
||||
pname:pSubmits must: be in the <<commandbuffers-lifecycle, pending or
|
||||
executable state>>.
|
||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00073]]
|
||||
If any <<commandbuffers-secondary, secondary command buffers recorded>>
|
||||
into any given element of the pname:pCommandBuffers member of any
|
||||
element of pname:pSubmits was not recorded with the
|
||||
into any element of the pname:pCommandBuffers member of any element of
|
||||
pname:pSubmits was not recorded with the
|
||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must: not be in
|
||||
the <<commandbuffers-lifecycle, pending state>>.
|
||||
* [[VUID-vkQueueSubmit-pCommandBuffers-00074]]
|
||||
Any given element of the pname:pCommandBuffers member of any element of
|
||||
Each element of the pname:pCommandBuffers member of each element of
|
||||
pname:pSubmits must: have been allocated from a sname:VkCommandPool that
|
||||
was created for the same queue family pname:queue belongs to.
|
||||
****
|
||||
|
@ -947,20 +947,19 @@ otherwise execute out of order.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkSubmitInfo-pCommandBuffers-00075]]
|
||||
Any given element of pname:pCommandBuffers must: not have been allocated
|
||||
with ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
||||
Each element of pname:pCommandBuffers must: not have been allocated with
|
||||
ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
||||
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00076]]
|
||||
If the <<features-features-geometryShader,geometry shaders>> feature is
|
||||
not enabled, any given element of pname:pWaitDstStageMask must: not
|
||||
contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
||||
not enabled, each element of pname:pWaitDstStageMask must: not contain
|
||||
ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
|
||||
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00077]]
|
||||
If the <<features-features-tessellationShader,tessellation shaders>>
|
||||
feature is not enabled, any given element of pname:pWaitDstStageMask
|
||||
must: not contain
|
||||
ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
|
||||
feature is not enabled, each element of pname:pWaitDstStageMask must:
|
||||
not contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or
|
||||
ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
|
||||
* [[VUID-VkSubmitInfo-pWaitDstStageMask-00078]]
|
||||
Any given element of pname:pWaitDstStageMask must: not include
|
||||
Each element of pname:pWaitDstStageMask must: not include
|
||||
ename:VK_PIPELINE_STAGE_HOST_BIT.
|
||||
****
|
||||
|
||||
|
@ -1197,10 +1196,10 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
|||
pname:commandBuffer must: have been allocated with a pname:level of
|
||||
ename:VK_COMMAND_BUFFER_LEVEL_PRIMARY
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00088]]
|
||||
Any given element of pname:pCommandBuffers must: have been allocated
|
||||
with a pname:level of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
||||
Each element of pname:pCommandBuffers must: have been allocated with a
|
||||
pname:level of ename:VK_COMMAND_BUFFER_LEVEL_SECONDARY
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00089]]
|
||||
Any given element of pname:pCommandBuffers must: be in the
|
||||
Each element of pname:pCommandBuffers must: be in the
|
||||
<<commandbuffers-lifecycle, pending or executable state>>.
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00090]]
|
||||
If any element of pname:pCommandBuffers was not recorded with the
|
||||
|
@ -1208,21 +1207,21 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
|||
recorded into any other primary command buffer, that primary command
|
||||
buffer must: not be in the <<commandbuffers-lifecycle, pending state>>
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00091]]
|
||||
If any given element of pname:pCommandBuffers was not recorded with the
|
||||
If any element of pname:pCommandBuffers was not recorded with the
|
||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not be
|
||||
in the <<commandbuffers-lifecycle, pending state>>.
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00092]]
|
||||
If any given element of pname:pCommandBuffers was not recorded with the
|
||||
If any element of pname:pCommandBuffers was not recorded with the
|
||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not
|
||||
have already been recorded to pname:commandBuffer.
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00093]]
|
||||
If any given element of pname:pCommandBuffers was not recorded with the
|
||||
If any element of pname:pCommandBuffers was not recorded with the
|
||||
ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT flag, it must: not
|
||||
appear more than once in pname:pCommandBuffers.
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00094]]
|
||||
Any given element of pname:pCommandBuffers must: have been allocated
|
||||
from a sname:VkCommandPool that was created for the same queue family as
|
||||
the sname:VkCommandPool from which pname:commandBuffer was allocated
|
||||
Each element of pname:pCommandBuffers must: have been allocated from a
|
||||
sname:VkCommandPool that was created for the same queue family as the
|
||||
sname:VkCommandPool from which pname:commandBuffer was allocated
|
||||
* [[VUID-vkCmdExecuteCommands-contents-00095]]
|
||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||
instance, that render pass instance must: have been begun with the
|
||||
|
@ -1230,14 +1229,13 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
|||
ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00096]]
|
||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||
instance, any given element of pname:pCommandBuffers must: have been
|
||||
recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
|
||||
instance, each element of pname:pCommandBuffers must: have been recorded
|
||||
with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00097]]
|
||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||
instance, any given element of pname:pCommandBuffers must: have been
|
||||
recorded with sname:VkCommandBufferInheritanceInfo::pname:subpass set to
|
||||
the index of the subpass which the given command buffer will be executed
|
||||
in
|
||||
instance, each element of pname:pCommandBuffers must: have been recorded
|
||||
with sname:VkCommandBufferInheritanceInfo::pname:subpass set to the
|
||||
index of the subpass which the given command buffer will be executed in
|
||||
* [[VUID-vkCmdExecuteCommands-pInheritanceInfo-00098]]
|
||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||
instance, the render passes specified in the
|
||||
|
@ -1247,13 +1245,13 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
|||
<<renderpass-compatibility,compatible>> with the current render pass.
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00099]]
|
||||
If fname:vkCmdExecuteCommands is being called within a render pass
|
||||
instance, and any given element of pname:pCommandBuffers was recorded
|
||||
with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal
|
||||
to dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the
|
||||
instance, and any element of pname:pCommandBuffers was recorded with
|
||||
sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to
|
||||
dlink:VK_NULL_HANDLE, that sname:VkFramebuffer must: match the
|
||||
sname:VkFramebuffer used in the current render pass instance
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00100]]
|
||||
If fname:vkCmdExecuteCommands is not being called within a render pass
|
||||
instance, any given element of pname:pCommandBuffers must: not have been
|
||||
instance, each element of pname:pCommandBuffers must: not have been
|
||||
recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
|
||||
* [[VUID-vkCmdExecuteCommands-commandBuffer-00101]]
|
||||
If the <<features-features-inheritedQueries,inherited queries>> feature
|
||||
|
@ -1278,9 +1276,8 @@ command buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
|||
sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics having
|
||||
all bits set that are set in the sname:VkQueryPool the query uses
|
||||
* [[VUID-vkCmdExecuteCommands-pCommandBuffers-00105]]
|
||||
Any given element of pname:pCommandBuffers must: not begin any query
|
||||
types that are <<queries-operation-active,active>> in
|
||||
pname:commandBuffer
|
||||
Each element of pname:pCommandBuffers must: not begin any query types
|
||||
that are <<queries-operation-active,active>> in pname:commandBuffer
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdExecuteCommands.txt[]
|
||||
|
|
|
@ -100,19 +100,19 @@ memory.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdCopyBuffer-size-00112]]
|
||||
The pname:size member of a given element of pname:pRegions must: be
|
||||
greater than `0`
|
||||
The pname:size member of each element of pname:pRegions must: be greater
|
||||
than `0`
|
||||
* [[VUID-vkCmdCopyBuffer-srcOffset-00113]]
|
||||
The pname:srcOffset member of a given element of pname:pRegions must: be
|
||||
The pname:srcOffset member of each element of pname:pRegions must: be
|
||||
less than the size of pname:srcBuffer
|
||||
* [[VUID-vkCmdCopyBuffer-dstOffset-00114]]
|
||||
The pname:dstOffset member of a given element of pname:pRegions must: be
|
||||
The pname:dstOffset member of each element of pname:pRegions must: be
|
||||
less than the size of pname:dstBuffer
|
||||
* [[VUID-vkCmdCopyBuffer-size-00115]]
|
||||
The pname:size member of a given element of pname:pRegions must: be less
|
||||
The pname:size member of each element of pname:pRegions must: be less
|
||||
than or equal to the size of pname:srcBuffer minus pname:srcOffset
|
||||
* [[VUID-vkCmdCopyBuffer-size-00116]]
|
||||
The pname:size member of a given element of pname:pRegions must: be less
|
||||
The pname:size member of each element of pname:pRegions must: be less
|
||||
than or equal to the size of pname:dstBuffer minus pname:dstOffset
|
||||
* [[VUID-vkCmdCopyBuffer-pRegions-00117]]
|
||||
The union of the source regions, and the union of the destination
|
||||
|
@ -304,8 +304,8 @@ images, but both images must: have the same number of samples.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdCopyImage-pRegions-00122]]
|
||||
The source region specified by a given element of pname:pRegions must:
|
||||
be a region that is contained within pname:srcImage
|
||||
The source region specified by each element of pname:pRegions must: be a
|
||||
region that is contained within pname:srcImage
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
if the pname:srcImage's elink:VkFormat is not a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
|
@ -313,8 +313,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
copied if the pname:srcImage's elink:VkFormat is a multi-planar format
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdCopyImage-pRegions-00123]]
|
||||
The destination region specified by a given element of pname:pRegions
|
||||
must: be a region that is contained within pname:dstImage
|
||||
The destination region specified by each element of pname:pRegions must:
|
||||
be a region that is contained within pname:dstImage
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
if the pname:dstImage's elink:VkFormat is not a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
|
@ -344,7 +344,8 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
contiguously to a single sname:VkDeviceMemory object
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdCopyImage-srcImage-01546]] If pname:srcImage is non-sparse then the image or _disjoint_ plane to be
|
||||
* [[VUID-vkCmdCopyImage-srcImage-01546]]
|
||||
If pname:srcImage is non-sparse then the image or _disjoint_ plane to be
|
||||
copied must: be bound completely and contiguously to a single
|
||||
sname:VkDeviceMemory object
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
@ -382,7 +383,8 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
contiguously to a single sname:VkDeviceMemory object
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdCopyImage-dstImage-01547]] If pname:dstImage is non-sparse then the image or _disjoint_ plane that
|
||||
* [[VUID-vkCmdCopyImage-dstImage-01547]]
|
||||
If pname:dstImage is non-sparse then the image or _disjoint_ plane that
|
||||
is the destination of the copy must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
@ -408,18 +410,21 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
compatible, as defined <<copies-images-format-compatibility, below>>
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdCopyImage-srcImage-01548]] If the elink:VkFormat of each of pname:srcImage and pname:dstImage is
|
||||
* [[VUID-vkCmdCopyImage-srcImage-01548]]
|
||||
If the elink:VkFormat of each of pname:srcImage and pname:dstImage is
|
||||
not a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,_multi-planar
|
||||
format_>>, the elink:VkFormat of each of pname:srcImage and
|
||||
pname:dstImage must: be compatible, as defined
|
||||
<<copies-images-format-compatibility, below>>
|
||||
* [[VUID-vkCmdCopyImage-None-01549]] In a copy to or from a plane of a
|
||||
* [[VUID-vkCmdCopyImage-None-01549]]
|
||||
In a copy to or from a plane of a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
image>>, the elink:VkFormat of the image and plane must: be compatible
|
||||
according to <<features-formats-compatible-planes,the description of
|
||||
compatible planes>> for the plane being copied
|
||||
* [[VUID-vkCmdCopyImage-aspectMask-01550]] When a copy is performed to or from an image with a
|
||||
* [[VUID-vkCmdCopyImage-aspectMask-01550]]
|
||||
When a copy is performed to or from an image with a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
format>>, the pname:aspectMask of the pname:srcSubresource and/or
|
||||
pname:dstSubresource that refers to the multi-planar image must: be
|
||||
|
@ -491,39 +496,46 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
pname:dstSubresource must: match
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageCopy-srcImage-01551]] If neither the calling command's pname:srcImage nor the calling
|
||||
* [[VUID-VkImageCopy-srcImage-01551]]
|
||||
If neither the calling command's pname:srcImage nor the calling
|
||||
command's pname:dstImage has a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion, multi-planar
|
||||
image format>> then the pname:aspectMask member of pname:srcSubresource
|
||||
and pname:dstSubresource must: match
|
||||
* [[VUID-VkImageCopy-srcImage-01552]] If the calling command's pname:srcImage has a elink:VkFormat with
|
||||
* [[VUID-VkImageCopy-srcImage-01552]]
|
||||
If the calling command's pname:srcImage has a elink:VkFormat with
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
|
||||
the pname:srcSubresource pname:aspectMask must: be
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
||||
* [[VUID-VkImageCopy-srcImage-01553]] If the calling command's pname:srcImage has a elink:VkFormat with
|
||||
* [[VUID-VkImageCopy-srcImage-01553]]
|
||||
If the calling command's pname:srcImage has a elink:VkFormat with
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
|
||||
then the pname:srcSubresource pname:aspectMask must: be
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
|
||||
* [[VUID-VkImageCopy-dstImage-01554]] If the calling command's pname:dstImage has a elink:VkFormat with
|
||||
* [[VUID-VkImageCopy-dstImage-01554]]
|
||||
If the calling command's pname:dstImage has a elink:VkFormat with
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
|
||||
the pname:dstSubresource pname:aspectMask must: be
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
||||
* [[VUID-VkImageCopy-dstImage-01555]] If the calling command's pname:dstImage has a elink:VkFormat with
|
||||
* [[VUID-VkImageCopy-dstImage-01555]]
|
||||
If the calling command's pname:dstImage has a elink:VkFormat with
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
|
||||
then the pname:dstSubresource pname:aspectMask must: be
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
|
||||
* [[VUID-VkImageCopy-srcImage-01556]] If the calling command's pname:srcImage has a
|
||||
* [[VUID-VkImageCopy-srcImage-01556]]
|
||||
If the calling command's pname:srcImage has a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
|
||||
format>> and the pname:dstImage does not have a multi-planar image
|
||||
format, the pname:dstSubresource pname:aspectMask must: be
|
||||
ename:VK_IMAGE_ASPECT_COLOR_BIT
|
||||
* [[VUID-VkImageCopy-dstImage-01557]] If the calling command's pname:dstImage has a
|
||||
* [[VUID-VkImageCopy-dstImage-01557]]
|
||||
If the calling command's pname:dstImage has a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
|
||||
format>> and the pname:srcImage does not have a multi-planar image
|
||||
format, the pname:srcSubresource pname:aspectMask must: be
|
||||
|
@ -760,11 +772,11 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdCopyBufferToImage-pRegions-00171]]
|
||||
The buffer region specified by a given element of pname:pRegions must:
|
||||
be a region that is contained within pname:srcBuffer
|
||||
The buffer region specified by each element of pname:pRegions must: be a
|
||||
region that is contained within pname:srcBuffer
|
||||
* [[VUID-vkCmdCopyBufferToImage-pRegions-00172]]
|
||||
The image region specified by a given element of pname:pRegions must: be
|
||||
a region that is contained within pname:dstImage
|
||||
The image region specified by each element of pname:pRegions must: be a
|
||||
region that is contained within pname:dstImage
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
if the pname:dstImage's elink:VkFormat is not a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
|
@ -863,8 +875,8 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00182]]
|
||||
The image region specified by a given element of pname:pRegions must: be
|
||||
a region that is contained within pname:srcImage
|
||||
The image region specified by each element of pname:pRegions must: be a
|
||||
region that is contained within pname:srcImage
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
if the pname:srcImage's elink:VkFormat is not a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
|
@ -872,8 +884,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
copied if the pname:srcImage's elink:VkFormat is a multi-planar format
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00183]]
|
||||
The buffer region specified by a given element of pname:pRegions must:
|
||||
be a region that is contained within pname:dstBuffer
|
||||
The buffer region specified by each element of pname:pRegions must: be a
|
||||
region that is contained within pname:dstBuffer
|
||||
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00184]]
|
||||
The union of all source regions, and the union of all destination
|
||||
regions, specified by the elements of pname:pRegions, must: not overlap
|
||||
|
@ -991,12 +1003,14 @@ ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
format's element size
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkBufferImageCopy-bufferOffset-01558]] If the calling command's sname:VkImage parameter's format is not a
|
||||
* [[VUID-VkBufferImageCopy-bufferOffset-01558]]
|
||||
If the calling command's sname:VkImage parameter's format is not a
|
||||
depth/stencil format or a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
format>>,cthen pname:bufferOffset must: be a multiple of the format's
|
||||
element size
|
||||
* [[VUID-VkBufferImageCopy-bufferOffset-01559]] If the calling command's sname:VkImage parameter's format is a
|
||||
* [[VUID-VkBufferImageCopy-bufferOffset-01559]]
|
||||
If the calling command's sname:VkImage parameter's format is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
format>>, then pname:bufferOffset must: be a multiple of the element
|
||||
size of the compatible format for the format and the pname:aspectMask of
|
||||
|
@ -1109,7 +1123,8 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
|||
The pname:aspectMask member of pname:imageSubresource must: specify
|
||||
aspects present in the calling command's sname:VkImage parameter
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkBufferImageCopy-aspectMask-01560]] If the calling command's sname:VkImage parameter's format is a
|
||||
* [[VUID-VkBufferImageCopy-aspectMask-01560]]
|
||||
If the calling command's sname:VkImage parameter's format is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
format>>, then the pname:aspectMask member of pname:imageSubresource
|
||||
must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
|
@ -1326,11 +1341,11 @@ representable range of the destination format, then casting the value.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdBlitImage-pRegions-00215]]
|
||||
The source region specified by a given element of pname:pRegions must:
|
||||
be a region that is contained within pname:srcImage
|
||||
The source region specified by each element of pname:pRegions must: be a
|
||||
region that is contained within pname:srcImage
|
||||
* [[VUID-vkCmdBlitImage-pRegions-00216]]
|
||||
The destination region specified by a given element of pname:pRegions
|
||||
must: be a region that is contained within pname:dstImage
|
||||
The destination region specified by each element of pname:pRegions must:
|
||||
be a region that is contained within pname:dstImage
|
||||
* [[VUID-vkCmdBlitImage-pRegions-00217]]
|
||||
The union of all destination regions, specified by the elements of
|
||||
pname:pRegions, must: not overlap in memory with any texel that may: be
|
||||
|
@ -1343,7 +1358,8 @@ representable range of the destination format, then casting the value.
|
|||
optimally tiled images) - as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdBlitImage-srcImage-01561]] pname:srcImage must: not use a format listed in
|
||||
* [[VUID-vkCmdBlitImage-srcImage-01561]]
|
||||
pname:srcImage must: not use a format listed in
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdBlitImage-srcImage-00219]]
|
||||
|
@ -1375,7 +1391,8 @@ endif::VK_KHR_shared_presentable_image[]
|
|||
optimally tiled images) - as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdBlitImage-dstImage-01562]] pname:dstImage must: not use a format listed in
|
||||
* [[VUID-vkCmdBlitImage-dstImage-01562]]
|
||||
pname:dstImage must: not use a format listed in
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>>
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdBlitImage-dstImage-00224]]
|
||||
|
@ -1575,11 +1592,11 @@ pname:layerCount layers are resolved to the destination image.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdResolveImage-pRegions-00253]]
|
||||
The source region specified by a given element of pname:pRegions must:
|
||||
be a region that is contained within pname:srcImage
|
||||
The source region specified by each element of pname:pRegions must: be a
|
||||
region that is contained within pname:srcImage
|
||||
* [[VUID-vkCmdResolveImage-pRegions-00254]]
|
||||
The destination region specified by a given element of pname:pRegions
|
||||
must: be a region that is contained within pname:dstImage
|
||||
The destination region specified by each element of pname:pRegions must:
|
||||
be a region that is contained within pname:dstImage
|
||||
* [[VUID-vkCmdResolveImage-pRegions-00255]]
|
||||
The union of all source regions, and the union of all destination
|
||||
regions, specified by the elements of pname:pRegions, must: not overlap
|
||||
|
|
|
@ -1563,23 +1563,22 @@ include::../api/structs/VkDescriptorSetAllocateInfo.txt[]
|
|||
* pname:pSetLayouts is an array of descriptor set layouts, with each
|
||||
member specifying how the corresponding descriptor set is allocated.
|
||||
|
||||
ifndef::VK_KHR_maintenance1[]
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
ifndef::VK_KHR_maintenance1[]
|
||||
* [[VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306]]
|
||||
pname:descriptorSetCount must: not be greater than the number of sets
|
||||
that are currently available for allocation in pname:descriptorPool
|
||||
* [[VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307]]
|
||||
pname:descriptorPool must: have enough free descriptor capacity
|
||||
remaining to allocate the descriptor sets of the specified layouts
|
||||
endif::VK_KHR_maintenance1[]
|
||||
ifdef::VK_KHR_push_descriptor[]
|
||||
* [[VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308]]
|
||||
Any given element of pname:pSetLayouts must: not have been created with
|
||||
Each element of pname:pSetLayouts must: not have been created with
|
||||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR set
|
||||
endif::VK_KHR_push_descriptor[]
|
||||
****
|
||||
endif::VK_KHR_maintenance1[]
|
||||
|
||||
include::../validity/structs/VkDescriptorSetAllocateInfo.txt[]
|
||||
--
|
||||
|
@ -1686,17 +1685,17 @@ Each element in the pname:pDescriptorCopies array is a
|
|||
slink:VkCopyDescriptorSet structure describing an operation copying
|
||||
descriptors between sets.
|
||||
|
||||
If the pname:dstSet member of any given element of pname:pDescriptorWrites
|
||||
or pname:pDescriptorCopies is bound, accessed, or modified by any command
|
||||
that was recorded to a command buffer which is currently in the
|
||||
If the pname:dstSet member of any element of pname:pDescriptorWrites or
|
||||
pname:pDescriptorCopies is bound, accessed, or modified by any command that
|
||||
was recorded to a command buffer which is currently in the
|
||||
<<commandbuffers-lifecycle, recording or executable state>>, that command
|
||||
buffer becomes <<commandbuffers-lifecycle, invalid>>.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkUpdateDescriptorSets-dstSet-00314]]
|
||||
The pname:dstSet member of any given element of pname:pDescriptorWrites
|
||||
or pname:pDescriptorCopies must: not be used by any command that was
|
||||
The pname:dstSet member of each element of pname:pDescriptorWrites or
|
||||
pname:pDescriptorCopies must: not be used by any command that was
|
||||
recorded to a command buffer which is in the <<commandbuffers-lifecycle,
|
||||
pending state>>.
|
||||
****
|
||||
|
@ -1800,16 +1799,15 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
|||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and pname:dstSet was
|
||||
not allocated with a layout that included immutable samplers for
|
||||
pname:dstBinding with pname:descriptorType, the pname:sampler member of
|
||||
any given element of pname:pImageInfo must: be a valid sname:VkSampler
|
||||
object
|
||||
each element of pname:pImageInfo must: be a valid sname:VkSampler object
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00326]]
|
||||
If pname:descriptorType is
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
|
||||
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView and
|
||||
pname:imageLayout members of any given element of pname:pImageInfo must:
|
||||
be a valid sname:VkImageView and elink:VkImageLayout, respectively
|
||||
pname:imageLayout members of each element of pname:pImageInfo must: be a
|
||||
valid sname:VkImageView and elink:VkImageLayout, respectively
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01402]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, for
|
||||
each descriptor that will be accessed via load or store operations the
|
||||
|
@ -1818,79 +1816,78 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
|||
* [[VUID-VkWriteDescriptorSet-descriptorType-00327]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:offset member
|
||||
of any given element of pname:pBufferInfo must: be a multiple of
|
||||
of each element of pname:pBufferInfo must: be a multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00328]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:offset member
|
||||
of any given element of pname:pBufferInfo must: be a multiple of
|
||||
of each element of pname:pBufferInfo must: be a multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00329]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:buffer member
|
||||
of any given element of pname:pBufferInfo that is non-sparse must: be
|
||||
bound completely and contiguously to a single sname:VkDeviceMemory
|
||||
object
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, and the pname:buffer
|
||||
member of any element of pname:pBufferInfo is the handle of a non-sparse
|
||||
buffer, then that buffer must: be bound completely and contiguously to a
|
||||
single sname:VkDeviceMemory object
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00330]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:buffer member
|
||||
of any given element of pname:pBufferInfo must: have been created with
|
||||
of each element of pname:pBufferInfo must: have been created with
|
||||
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT set
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00331]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:buffer member
|
||||
of any given element of pname:pBufferInfo must: have been created with
|
||||
of each element of pname:pBufferInfo must: have been created with
|
||||
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT set
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00332]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:range member
|
||||
of any given element of pname:pBufferInfo, or the effective range if
|
||||
of each element of pname:pBufferInfo, or the effective range if
|
||||
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxUniformBufferRange
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00333]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:range member
|
||||
of any given element of pname:pBufferInfo, or the effective range if
|
||||
of each element of pname:pBufferInfo, or the effective range if
|
||||
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxStorageBufferRange
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00334]]
|
||||
If pname:descriptorType is
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, the sname:VkBuffer that
|
||||
any given element of pname:pTexelBufferView was created from must: have
|
||||
been created with ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT set
|
||||
each element of pname:pTexelBufferView was created from must: have been
|
||||
created with ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT set
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00335]]
|
||||
If pname:descriptorType is
|
||||
ename:VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, the sname:VkBuffer that
|
||||
any given element of pname:pTexelBufferView was created from must: have
|
||||
been created with ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set
|
||||
each element of pname:pTexelBufferView was created from must: have been
|
||||
created with ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT set
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00336]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE or
|
||||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView member of
|
||||
any given element of pname:pImageInfo must: have been created with the
|
||||
each element of pname:pImageInfo must: have been created with the
|
||||
identity swizzle
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00337]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageView
|
||||
member of any given element of pname:pImageInfo must: have been created
|
||||
with ename:VK_IMAGE_USAGE_SAMPLED_BIT set
|
||||
member of each element of pname:pImageInfo must: have been created with
|
||||
ename:VK_IMAGE_USAGE_SAMPLED_BIT set
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01403]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, the pname:imageLayout
|
||||
member of any given element of pname:pImageInfo must: be
|
||||
member of each element of pname:pImageInfo must: be
|
||||
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
|
||||
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00338]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
|
||||
the pname:imageView member of any given element of pname:pImageInfo
|
||||
must: have been created with ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
||||
set
|
||||
the pname:imageView member of each element of pname:pImageInfo must:
|
||||
have been created with ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-00339]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the
|
||||
pname:imageView member of any given element of pname:pImageInfo must:
|
||||
have been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
|
||||
pname:imageView member of each element of pname:pImageInfo must: have
|
||||
been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
|
||||
****
|
||||
|
||||
include::../validity/structs/VkWriteDescriptorSet.txt[]
|
||||
|
@ -2013,7 +2010,8 @@ endif::VK_KHR_maintenance1[]
|
|||
subresource accessible from pname:imageView at the time this descriptor
|
||||
is accessed
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkDescriptorImageInfo-sampler-01563]] If pname:sampler is used and enables <<samplers-YCbCr-conversion,sampler
|
||||
* [[VUID-VkDescriptorImageInfo-sampler-01563]]
|
||||
If pname:sampler is used and enables <<samplers-YCbCr-conversion,sampler
|
||||
Y'C~B~C~R~ conversion>>:
|
||||
** The pname:format of the pname:imageView must: be the same as the
|
||||
elink:VkFormat of the image
|
||||
|
@ -2032,7 +2030,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
which is an _identically defined object_ to the pname:conversion of
|
||||
the sname:VkSamplerYcbcrConversionInfoKHR which is in the pname:pNext
|
||||
chain of the pname:sampler
|
||||
* [[VUID-VkDescriptorImageInfo-sampler-01564]] If pname:sampler is used and does not enable
|
||||
* [[VUID-VkDescriptorImageInfo-sampler-01564]]
|
||||
If pname:sampler is used and does not enable
|
||||
<<samplers-YCbCr-conversion, sampler Y'C~B~C~R~ conversion>> and the
|
||||
elink:VkFormat of the image is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
|
@ -2442,7 +2441,7 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
|
|||
};
|
||||
|
||||
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
|
||||
myResult = vkCreatePipelineLayout(
|
||||
myResult = vkCreateDescriptorUpdateTemplateKHR(
|
||||
myDevice,
|
||||
&createInfo,
|
||||
NULL,
|
||||
|
@ -2548,10 +2547,10 @@ descriptor set.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358]]
|
||||
Any given element of pname:pDescriptorSets must: have been allocated
|
||||
with a sname:VkDescriptorSetLayout that matches (is the same as, or
|
||||
identically defined as) the sname:VkDescriptorSetLayout at set _n_ in
|
||||
pname:layout, where _n_ is the sum of pname:firstSet and the index into
|
||||
Each element of pname:pDescriptorSets must: have been allocated with a
|
||||
sname:VkDescriptorSetLayout that matches (is the same as, or identically
|
||||
defined as) the sname:VkDescriptorSetLayout at set _n_ in pname:layout,
|
||||
where _n_ is the sum of pname:firstSet and the index into
|
||||
pname:pDescriptorSets
|
||||
* [[VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359]]
|
||||
pname:dynamicOffsetCount must: be equal to the total number of dynamic
|
||||
|
@ -2564,7 +2563,7 @@ descriptor set.
|
|||
pname:pipelineBindPoint must: be supported by the pname:commandBuffer's
|
||||
parent sname:VkCommandPool's queue family
|
||||
* [[VUID-vkCmdBindDescriptorSets-pDynamicOffsets-00362]]
|
||||
Any given element of pname:pDynamicOffsets must: satisfy the required
|
||||
Each element of pname:pDynamicOffsets must: satisfy the required
|
||||
alignment for the corresponding descriptor binding's descriptor type
|
||||
****
|
||||
|
||||
|
@ -2749,7 +2748,7 @@ const VkDescriptorUpdateTemplateCreateInfoKHR createInfo =
|
|||
};
|
||||
|
||||
VkDescriptorUpdateTemplateKHR myDescriptorUpdateTemplate;
|
||||
myResult = vkCreatePipelineLayout(
|
||||
myResult = vkCreateDescriptorUpdateTemplateKHR(
|
||||
myDevice,
|
||||
&createInfo,
|
||||
NULL,
|
||||
|
|
|
@ -714,7 +714,7 @@ include::../api/structs/VkDeviceCreateInfo.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkDeviceCreateInfo-queueFamilyIndex-00372]]
|
||||
The pname:queueFamilyIndex member of any given element of
|
||||
The pname:queueFamilyIndex member of each element of
|
||||
pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos
|
||||
ifdef::VK_KHR_get_physical_device_properties2[]
|
||||
* [[VUID-VkDeviceCreateInfo-pNext-00373]]
|
||||
|
|
|
@ -873,6 +873,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
* [[VUID-vkCmdDrawIndirect-buffer-00474]]
|
||||
If pname:buffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
* [[VUID-vkCmdDrawIndirect-buffer-01660]]
|
||||
pname:buffer must: have been created with the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-vkCmdDrawIndirect-offset-00475]]
|
||||
pname:offset must: be a multiple of `4`
|
||||
* [[VUID-vkCmdDrawIndirect-drawCount-00476]]
|
||||
|
@ -1091,6 +1094,18 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-buffer-01661]]
|
||||
If pname:buffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-buffer-01662]]
|
||||
pname:buffer must: have been created with the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-countBuffer-01663]]
|
||||
If pname:countBuffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-countBuffer-01664]]
|
||||
pname:countBuffer must: have been created with the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-offset-00502]]
|
||||
pname:offset must: be a multiple of `4`
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503]]
|
||||
|
@ -1266,6 +1281,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
* [[VUID-vkCmdDrawIndexedIndirect-buffer-00526]]
|
||||
If pname:buffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-buffer-01665]]
|
||||
pname:buffer must: have been created with the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-offset-00527]]
|
||||
pname:offset must: be a multiple of `4`
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-drawCount-00528]]
|
||||
|
@ -1493,6 +1511,18 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01666]]
|
||||
If pname:buffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01667]]
|
||||
pname:buffer must: have been created with the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01668]]
|
||||
If pname:countBuffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01669]]
|
||||
pname:countBuffer must: have been created with the
|
||||
ename:VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT bit set
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555]]
|
||||
pname:offset must: be a multiple of `4`
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556]]
|
||||
|
|
|
@ -404,15 +404,15 @@ G, and B destination color values (after conversion from fixed-point to
|
|||
floating-point) are considered to be encoded for the sRGB color space and
|
||||
hence are linearized prior to their use in blending.
|
||||
Each R, G, and B component is converted from nonlinear to linear as
|
||||
described in the "`sRGB EOTF`" section of the
|
||||
<<data-format,Khronos Data Format Specification>>.
|
||||
described in the "`sRGB EOTF`" section of the <<data-format,Khronos Data
|
||||
Format Specification>>.
|
||||
If the format is not sRGB, no linearization is performed.
|
||||
|
||||
If the numeric format of a framebuffer attachment uses sRGB encoding, then
|
||||
the final R, G and B values are converted into the nonlinear sRGB
|
||||
representation before being written to the framebuffer attachment as
|
||||
described in the "`sRGB EOTF^ -1^`" section of the Khronos Data
|
||||
Format Specification.
|
||||
described in the "`sRGB EOTF^ -1^`" section of the Khronos Data Format
|
||||
Specification.
|
||||
|
||||
If the framebuffer color attachment numeric format is not sRGB encoded then
|
||||
the resulting [eq]#c~s~# values for R, G and B are unmodified.
|
||||
|
|
|
@ -436,8 +436,8 @@ endif::VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilitie
|
|||
[[fundamentals-abi]]
|
||||
== Application Binary Interface
|
||||
|
||||
The mechanism by which Vulkan is made available to applications is platform- or
|
||||
implementation- defined.
|
||||
The mechanism by which Vulkan is made available to applications is platform-
|
||||
or implementation- defined.
|
||||
On many platforms the C interface described in this Specification is
|
||||
provided by a shared library.
|
||||
Since shared libraries can be changed independently of the applications that
|
||||
|
@ -446,23 +446,23 @@ Specification places some requirements on them.
|
|||
|
||||
Shared library implementations must: use the default Application Binary
|
||||
Interface (ABI) of the standard C compiler for the platform, or provide
|
||||
customized API headers that cause application code to use the implementation's
|
||||
non-default ABI.
|
||||
An ABI in this context means the the size, alignment, and
|
||||
layout of C data types; the procedure calling convention; and the naming
|
||||
convention for shared library symbols corresponding to C functions.
|
||||
customized API headers that cause application code to use the
|
||||
implementation's non-default ABI.
|
||||
An ABI in this context means the the size, alignment, and layout of C data
|
||||
types; the procedure calling convention; and the naming convention for
|
||||
shared library symbols corresponding to C functions.
|
||||
Customizing the calling convention for a platform is usually accomplished by
|
||||
defining
|
||||
<<boilerplate-platform-specific-calling-conventions,calling convention macros>>
|
||||
appropriately in +vk_platform.h+.
|
||||
defining <<boilerplate-platform-specific-calling-conventions,calling
|
||||
convention macros>> appropriately in +vk_platform.h+.
|
||||
|
||||
On platforms where Vulkan is provided as a shared library, library symbols
|
||||
beginning with 'vk' and followed by a digit or uppercase letter are reserved
|
||||
for use by the implementation.
|
||||
Applications which use Vulkan must: not provide definitions of these symbols.
|
||||
This allows the Vulkan shared library to be updated with additional symbols for
|
||||
new API versions or extensions without causing symbol conflicts with existing
|
||||
applications.
|
||||
Applications which use Vulkan must: not provide definitions of these
|
||||
symbols.
|
||||
This allows the Vulkan shared library to be updated with additional symbols
|
||||
for new API versions or extensions without causing symbol conflicts with
|
||||
existing applications.
|
||||
|
||||
Shared library implementations should: provide library symbols for commands
|
||||
in the highest version of this Specification they support, and for
|
||||
|
@ -475,11 +475,12 @@ extensions.
|
|||
====
|
||||
These requirements and recommendations are intended to allow implementors to
|
||||
take advantage of platform-specific conventions for SDKs, ABIs, library
|
||||
versioning mechanisms, etc. while still minimizing the code changes necessary
|
||||
to port applications or libraries between platforms.
|
||||
Platform vendors, or providers of the _de facto_ standard Vulkan shared library
|
||||
for a platform, are encouraged to document what symbols the shared library
|
||||
provides and how it will be versioned when new symbols are added.
|
||||
versioning mechanisms, etc.
|
||||
while still minimizing the code changes necessary to port applications or
|
||||
libraries between platforms.
|
||||
Platform vendors, or providers of the _de facto_ standard Vulkan shared
|
||||
library for a platform, are encouraged to document what symbols the shared
|
||||
library provides and how it will be versioned when new symbols are added.
|
||||
====
|
||||
|
||||
|
||||
|
|
|
@ -301,7 +301,7 @@ include::../api/structs/VkPipelineVertexInputStateCreateInfo.txt[]
|
|||
pname:vertexAttributeDescriptionCount must: be less than or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributes
|
||||
* [[VUID-VkPipelineVertexInputStateCreateInfo-binding-00615]]
|
||||
For every pname:binding specified by any given element of
|
||||
For every pname:binding specified by each element of
|
||||
pname:pVertexAttributeDescriptions, a
|
||||
sname:VkVertexInputBindingDescription must: exist in
|
||||
pname:pVertexBindingDescriptions with the same value of pname:binding
|
||||
|
|
|
@ -1738,7 +1738,7 @@ to maintaining memory access ordering.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkMapMemory-memory-00678]]
|
||||
pname:memory must: not currently be mapped
|
||||
pname:memory must: not be currently mapped
|
||||
* [[VUID-vkMapMemory-offset-00679]]
|
||||
pname:offset must: be less than the size of pname:memory
|
||||
* [[VUID-vkMapMemory-size-00680]]
|
||||
|
@ -1865,7 +1865,7 @@ include::../api/structs/VkMappedMemoryRange.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkMappedMemoryRange-memory-00684]]
|
||||
pname:memory must: currently be mapped
|
||||
pname:memory must: be currently mapped
|
||||
* [[VUID-VkMappedMemoryRange-size-00685]]
|
||||
If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:offset and
|
||||
pname:size must: specify a range contained within the currently mapped
|
||||
|
@ -1906,7 +1906,7 @@ include::../api/protos/vkUnmapMemory.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkUnmapMemory-memory-00689]]
|
||||
pname:memory must: currently be mapped
|
||||
pname:memory must: be currently mapped
|
||||
****
|
||||
|
||||
include::../validity/protos/vkUnmapMemory.txt[]
|
||||
|
|
|
@ -141,15 +141,15 @@ endif::editing-notes[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCreateComputePipelines-flags-00695]]
|
||||
If the pname:flags member of any given element of pname:pCreateInfos
|
||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
||||
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
||||
pname:basePipelineIndex member of that same element is not `-1`,
|
||||
pname:basePipelineIndex must: be less than the index into
|
||||
pname:pCreateInfos that corresponds to that element
|
||||
* [[VUID-vkCreateComputePipelines-flags-00696]]
|
||||
If the pname:flags member of any given element of pname:pCreateInfos
|
||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base
|
||||
pipeline must: have been created with the
|
||||
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline
|
||||
must: have been created with the
|
||||
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
|
||||
****
|
||||
|
||||
|
@ -388,15 +388,15 @@ pipeline layout.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCreateGraphicsPipelines-flags-00720]]
|
||||
If the pname:flags member of any given element of pname:pCreateInfos
|
||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
||||
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and the
|
||||
pname:basePipelineIndex member of that same element is not `-1`,
|
||||
pname:basePipelineIndex must: be less than the index into
|
||||
pname:pCreateInfos that corresponds to that element
|
||||
* [[VUID-vkCreateGraphicsPipelines-flags-00721]]
|
||||
If the pname:flags member of any given element of pname:pCreateInfos
|
||||
contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base
|
||||
pipeline must: have been created with the
|
||||
If the pname:flags member of any element of pname:pCreateInfos contains
|
||||
the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, the base pipeline
|
||||
must: have been created with the
|
||||
ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT flag set
|
||||
****
|
||||
|
||||
|
@ -508,8 +508,8 @@ endif::VK_NV_glsl_shader[]
|
|||
The pname:stage member of one element of pname:pStages must: be
|
||||
ename:VK_SHADER_STAGE_VERTEX_BIT
|
||||
* [[VUID-VkGraphicsPipelineCreateInfo-stage-00728]]
|
||||
The pname:stage member of any given element of pname:pStages must: not
|
||||
be ename:VK_SHADER_STAGE_COMPUTE_BIT
|
||||
The pname:stage member of each element of pname:pStages must: not be
|
||||
ename:VK_SHADER_STAGE_COMPUTE_BIT
|
||||
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-00729]]
|
||||
If pname:pStages includes a tessellation control shader stage, it must:
|
||||
include a tessellation evaluation shader stage
|
||||
|
@ -755,7 +755,8 @@ ifdef::VK_KHX_device_group[]
|
|||
ename:VK_PIPELINE_CREATE_DISPATCH_BASE_KHX flag.
|
||||
endif::VK_KHX_device_group[]
|
||||
ifdef::VK_KHR_maintenance2[]
|
||||
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-01565]] If pname:pStages includes a fragment shader stage and an input
|
||||
* [[VUID-VkGraphicsPipelineCreateInfo-pStages-01565]]
|
||||
If pname:pStages includes a fragment shader stage and an input
|
||||
attachment was referenced by the
|
||||
slink:VkRenderPassInputAttachmentAspectCreateInfoKHR at renderpass
|
||||
create time, its shader code must: not read from any aspect that was not
|
||||
|
@ -1375,10 +1376,10 @@ slink:VkSpecializationMapEntry.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkSpecializationInfo-offset-00773]]
|
||||
The pname:offset member of any given element of pname:pMapEntries must:
|
||||
be less than pname:dataSize
|
||||
The pname:offset member of each element of pname:pMapEntries must: be
|
||||
less than pname:dataSize
|
||||
* [[VUID-VkSpecializationInfo-pMapEntries-00774]]
|
||||
For any given element of pname:pMapEntries, pname:size must: be less
|
||||
The pname:size member of each element of pname:pMapEntries must: be less
|
||||
than or equal to pname:dataSize minus pname:offset
|
||||
* [[VUID-VkSpecializationInfo-mapEntryCount-00775]]
|
||||
If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer
|
||||
|
|
|
@ -169,7 +169,7 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
|
|||
pname:pInputAttachments, pname:pColorAttachments,
|
||||
pname:pResolveAttachments or pname:pDepthStencilAttachment, or the
|
||||
attachment indexed by any element of pname:pPreserveAttachments in any
|
||||
given element of pname:pSubpasses is bound to a range of a
|
||||
element of pname:pSubpasses is bound to a range of a
|
||||
sname:VkDeviceMemory object that overlaps with any other attachment in
|
||||
any subpass (including the same subpass), the
|
||||
sname:VkAttachmentDescription structures describing them must: include
|
||||
|
@ -178,13 +178,12 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
|
|||
If the pname:attachment member of any element of
|
||||
pname:pInputAttachments, pname:pColorAttachments,
|
||||
pname:pResolveAttachments or pname:pDepthStencilAttachment, or any
|
||||
element of pname:pPreserveAttachments in any given element of
|
||||
pname:pSubpasses is not ename:VK_ATTACHMENT_UNUSED, it must: be less
|
||||
than pname:attachmentCount
|
||||
element of pname:pPreserveAttachments in any element of pname:pSubpasses
|
||||
is not ename:VK_ATTACHMENT_UNUSED, it must: be less than
|
||||
pname:attachmentCount
|
||||
* [[VUID-VkRenderPassCreateInfo-pPreserveAttachments-00835]]
|
||||
The value of any element of the pname:pPreserveAttachments member in any
|
||||
given element of pname:pSubpasses must: not be
|
||||
ename:VK_ATTACHMENT_UNUSED
|
||||
The value of each element of the pname:pPreserveAttachments member in
|
||||
each element of pname:pSubpasses must: not be ename:VK_ATTACHMENT_UNUSED
|
||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-00836]]
|
||||
For any member of pname:pAttachments with a pname:loadOp equal to
|
||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||
|
@ -192,11 +191,13 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
|
|||
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
|
||||
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
|
||||
ifdef::VK_KHR_maintenance2[]
|
||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]] For any member of pname:pAttachments with a pname:loadOp equal to
|
||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-01566]]
|
||||
For any member of pname:pAttachments with a pname:loadOp equal to
|
||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||
must: not specify a pname:layout equal to
|
||||
pname:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR.
|
||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-01567]] For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
||||
* [[VUID-VkRenderPassCreateInfo-pAttachments-01567]]
|
||||
For any member of pname:pAttachments with a pname:stencilLoadOp equal to
|
||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
|
||||
must: not specify a pname:layout equal to
|
||||
pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR.
|
||||
|
@ -531,10 +532,13 @@ include::../api/structs/VkInputAttachmentAspectReferenceKHR.txt[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-pCreateInfo-01568]] There must: be an input attachment at
|
||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-pCreateInfo-01568]]
|
||||
There must: be an input attachment at
|
||||
pname:pCreateInfo::pname:pSubpasses[pname:subpass].pname:pInputAttachments[pname:inputAttachment].
|
||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-None-01569]] The specified input attachment must: have more than one aspect mask.
|
||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-01570]] pname:aspectMask must: be a subset of the aspect masks in the specified
|
||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-None-01569]]
|
||||
The specified input attachment must: have more than one aspect mask.
|
||||
* [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-01570]]
|
||||
pname:aspectMask must: be a subset of the aspect masks in the specified
|
||||
input attachment.
|
||||
****
|
||||
|
||||
|
@ -795,10 +799,10 @@ attachment.
|
|||
element of pname:pColorAttachments must: be anything other than
|
||||
ename:VK_SAMPLE_COUNT_1_BIT
|
||||
* [[VUID-VkSubpassDescription-pResolveAttachments-00849]]
|
||||
Any given element of pname:pResolveAttachments must: have a sample count
|
||||
of ename:VK_SAMPLE_COUNT_1_BIT
|
||||
Each element of pname:pResolveAttachments must: have a sample count of
|
||||
ename:VK_SAMPLE_COUNT_1_BIT
|
||||
* [[VUID-VkSubpassDescription-pResolveAttachments-00850]]
|
||||
Any given element of pname:pResolveAttachments must: have the same
|
||||
Each element of pname:pResolveAttachments must: have the same
|
||||
elink:VkFormat as its corresponding color attachment
|
||||
* [[VUID-VkSubpassDescription-pColorAttachments-01417]]
|
||||
All attachments in pname:pColorAttachments that are not
|
||||
|
@ -823,11 +827,11 @@ endif::VK_AMD_mixed_attachment_samples[]
|
|||
pipelines bound during the subpass must: not access those input
|
||||
attachments from the fragment shader
|
||||
* [[VUID-VkSubpassDescription-attachment-00853]]
|
||||
The pname:attachment member of any element of pname:pPreserveAttachments
|
||||
must: not be ename:VK_ATTACHMENT_UNUSED
|
||||
The pname:attachment member of each element of
|
||||
pname:pPreserveAttachments must: not be ename:VK_ATTACHMENT_UNUSED
|
||||
* [[VUID-VkSubpassDescription-pPreserveAttachments-00854]]
|
||||
Any given element of pname:pPreserveAttachments must: not also be an
|
||||
element of any other member of the subpass description
|
||||
Each element of pname:pPreserveAttachments must: not also be an element
|
||||
of any other member of the subpass description
|
||||
* [[VUID-VkSubpassDescription-layout-00855]]
|
||||
If any attachment is used as both an input attachment and a color or
|
||||
depth/stencil attachment, then each use must: use the same pname:layout
|
||||
|
@ -1504,35 +1508,33 @@ slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
|
|||
pname:attachmentCount must: be equal to the attachment count specified
|
||||
in pname:renderPass
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00877]]
|
||||
Any given element of pname:pAttachments that is used as a color
|
||||
attachment or resolve attachment by pname:renderPass must: have been
|
||||
created with a pname:usage value including
|
||||
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
||||
Each element of pname:pAttachments that is used as a color attachment or
|
||||
resolve attachment by pname:renderPass must: have been created with a
|
||||
pname:usage value including ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00878]]
|
||||
Any given element of pname:pAttachments that is used as a depth/stencil
|
||||
Each element of pname:pAttachments that is used as a depth/stencil
|
||||
attachment by pname:renderPass must: have been created with a
|
||||
pname:usage value including
|
||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00879]]
|
||||
Any given element of pname:pAttachments that is used as an input
|
||||
attachment by pname:renderPass must: have been created with a
|
||||
pname:usage value including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
||||
Each element of pname:pAttachments that is used as an input attachment
|
||||
by pname:renderPass must: have been created with a pname:usage value
|
||||
including ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00880]]
|
||||
Any given element of pname:pAttachments must: have been created with an
|
||||
Each element of pname:pAttachments must: have been created with an
|
||||
elink:VkFormat value that matches the elink:VkFormat specified by the
|
||||
corresponding sname:VkAttachmentDescription in pname:renderPass
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00881]]
|
||||
Any given element of pname:pAttachments must: have been created with a
|
||||
Each element of pname:pAttachments must: have been created with a
|
||||
pname:samples value that matches the pname:samples value specified by
|
||||
the corresponding sname:VkAttachmentDescription in pname:renderPass
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00882]]
|
||||
Any given element of pname:pAttachments must: have dimensions at least
|
||||
as large as the corresponding framebuffer dimension
|
||||
Each element of pname:pAttachments must: have dimensions at least as
|
||||
large as the corresponding framebuffer dimension
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00883]]
|
||||
Any given element of pname:pAttachments must: only specify a single mip
|
||||
level
|
||||
Each element of pname:pAttachments must: only specify a single mip level
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00884]]
|
||||
Any given element of pname:pAttachments must: have been created with the
|
||||
Each element of pname:pAttachments must: have been created with the
|
||||
identity swizzle
|
||||
* [[VUID-VkFramebufferCreateInfo-width-00885]]
|
||||
pname:width must: be greater than `0`.
|
||||
|
@ -1551,8 +1553,8 @@ slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples.
|
|||
sname:VkPhysicalDeviceLimits::pname:maxFramebufferLayers
|
||||
ifdef::VK_KHR_maintenance1[]
|
||||
* [[VUID-VkFramebufferCreateInfo-pAttachments-00891]]
|
||||
Any given element of pname:pAttachments that is a 2D or 2D array image
|
||||
view taken from a 3D image must: not be a depth/stencil format
|
||||
Each element of pname:pAttachments that is a 2D or 2D array image view
|
||||
taken from a 3D image must: not be a depth/stencil format
|
||||
endif::VK_KHR_maintenance1[]
|
||||
****
|
||||
|
||||
|
|
|
@ -145,7 +145,8 @@ ifdef::VK_KHR_external_memory[]
|
|||
slink:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes
|
||||
endif::VK_KHR_external_memory[]
|
||||
ifdef::VK_NV_dedicated_allocation[]
|
||||
* [[VUID-VkBufferCreateInfo-pNext-01571]] If the pname:pNext chain contains an instance of
|
||||
* [[VUID-VkBufferCreateInfo-pNext-01571]]
|
||||
If the pname:pNext chain contains an instance of
|
||||
slink:VkDedicatedAllocationBufferCreateInfoNV, and the
|
||||
pname:dedicatedAllocation member of the chained structure is
|
||||
ename:VK_TRUE, then pname:flags must: not include
|
||||
|
@ -909,13 +910,15 @@ ifdef::VK_KHX_device_group[]
|
|||
be ename:VK_IMAGE_TILING_OPTIMAL
|
||||
endif::VK_KHX_device_group[]
|
||||
ifdef::VK_KHR_maintenance2[]
|
||||
* [[VUID-VkImageCreateInfo-flags-01572]] If pname:flags contains
|
||||
* [[VUID-VkImageCreateInfo-flags-01572]]
|
||||
If pname:flags contains
|
||||
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
|
||||
pname:format must: be a <<appendix-compressedtex-bc,block-compressed
|
||||
image format>>, an <<appendix-compressedtex-etc2, ETC compressed image
|
||||
format>>, or an <<appendix-compressedtex-astc, ASTC compressed image
|
||||
format>>.
|
||||
* [[VUID-VkImageCreateInfo-flags-01573]] If pname:flags contains
|
||||
* [[VUID-VkImageCreateInfo-flags-01573]]
|
||||
If pname:flags contains
|
||||
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
|
||||
pname:flags must: also contain ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT.
|
||||
endif::VK_KHR_maintenance2[]
|
||||
|
@ -932,25 +935,29 @@ ifdef::VK_NV_external_memory[slink:VkExternalMemoryImageCreateInfoNV]
|
|||
must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
|
||||
endif::VK_KHR_external_memory,VK_NV_external_memory[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageCreateInfo-format-01574]] If the image pname:format is one of those listed in
|
||||
* [[VUID-VkImageCreateInfo-format-01574]]
|
||||
If the image pname:format is one of those listed in
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion>>:
|
||||
** pname:mipLevels must: be 1
|
||||
** pname:samples must be ename:VK_SAMPLE_COUNT_1_BIT
|
||||
** pname:imageType must: be ename:VK_IMAGE_TYPE_2D
|
||||
** pname:arrayLayers must: be 1
|
||||
* [[VUID-VkImageCreateInfo-tiling-01575]] If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, pname:format is a
|
||||
* [[VUID-VkImageCreateInfo-tiling-01575]]
|
||||
If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, pname:format is a
|
||||
_multi-planar_ format, and
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
|
||||
pname:flags must: not contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
|
||||
* [[VUID-VkImageCreateInfo-tiling-01576]] If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, pname:format is a
|
||||
* [[VUID-VkImageCreateInfo-tiling-01576]]
|
||||
If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, pname:format is a
|
||||
_multi-planar_ format, and
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
|
||||
pname:flags must: not contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
|
||||
* [[VUID-VkImageCreateInfo-format-01577]] If pname:format is not a _multi-planar_ format, and pname:flags does not
|
||||
* [[VUID-VkImageCreateInfo-format-01577]]
|
||||
If pname:format is not a _multi-planar_ format, and pname:flags does not
|
||||
include ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR, pname:flags must: not
|
||||
contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
@ -1111,14 +1118,17 @@ were not included in the pname:pNext list of slink:VkImageCreateInfo.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578]] If pname:viewFormatCount is not `0`, all of the formats in the
|
||||
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578]]
|
||||
If pname:viewFormatCount is not `0`, all of the formats in the
|
||||
pname:pViewFormats array must: be compatible with the format specified
|
||||
in the pname:format field of sname:VkImageCreateInfo, as described in
|
||||
the <<resources-image-views-compatibility,compatibility table>>.
|
||||
* [[VUID-VkImageFormatListCreateInfoKHR-flags-01579]] If sname:VkImageCreateInfo::pname:flags does not contain
|
||||
* [[VUID-VkImageFormatListCreateInfoKHR-flags-01579]]
|
||||
If sname:VkImageCreateInfo::pname:flags does not contain
|
||||
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, pname:viewFormatCount must: be
|
||||
`0` or `1`.
|
||||
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580]] If pname:viewFormatCount is not `0`,
|
||||
* [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580]]
|
||||
If pname:viewFormatCount is not `0`,
|
||||
sname:VkImageCreateInfo::pname:format must: be in pname:pViewFormats.
|
||||
****
|
||||
|
||||
|
@ -1334,12 +1344,14 @@ image.
|
|||
The pname:aspectMask member of pname:pSubresource must: only have a
|
||||
single bit set
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkGetImageSubresourceLayout-format-01581]] If the pname:format of pname:image is a
|
||||
* [[VUID-vkGetImageSubresourceLayout-format-01581]]
|
||||
If the pname:format of pname:image is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
format>> with two planes, the pname:aspectMask member of
|
||||
pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
||||
* [[VUID-vkGetImageSubresourceLayout-format-01582]] If the pname:format of pname:image is a
|
||||
* [[VUID-vkGetImageSubresourceLayout-format-01582]]
|
||||
If the pname:format of pname:image is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
format>> with three planes, the pname:aspectMask member of
|
||||
pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
|
@ -1865,9 +1877,8 @@ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
|||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR, pname:format must: be
|
||||
<<features-formats-compatible-planes,compatible>> with the corresponding
|
||||
plane of the image, as defined in, and the sampler to be used with the image
|
||||
view must: not enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
|
||||
conversion>>.
|
||||
plane of the image, and the sampler to be used with the image view must: not
|
||||
enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>.
|
||||
The pname:width and pname:height of the single-plane image view must: be
|
||||
derived from the multi-planar image's dimensions in the manner listed for
|
||||
<<features-formats-compatible-planes,plane compatibility>> for the plane.
|
||||
|
@ -2211,18 +2222,21 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
|||
pname:image, as defined in
|
||||
<<features-formats-compatibility-classes,Format Compatibility Classes>>
|
||||
ifdef::VK_KHR_maintenance2[]
|
||||
* [[VUID-VkImageViewCreateInfo-image-01583]] If pname:image was created with the
|
||||
* [[VUID-VkImageViewCreateInfo-image-01583]]
|
||||
If pname:image was created with the
|
||||
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag,
|
||||
pname:format must: be compatible with, or must: be an uncompressed
|
||||
format that is size-compatible with, the pname:format used to create
|
||||
pname:image.
|
||||
* [[VUID-VkImageViewCreateInfo-image-01584]] If pname:image was created with the
|
||||
* [[VUID-VkImageViewCreateInfo-image-01584]]
|
||||
If pname:image was created with the
|
||||
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag, the
|
||||
pname:levelCount and pname:layerCount members of pname:subresourceRange
|
||||
must: both be `1`.
|
||||
endif::VK_KHR_maintenance2[]
|
||||
ifdef::VK_KHR_image_format_list[]
|
||||
* [[VUID-VkImageViewCreateInfo-pNext-01585]] If a sname:VkImageFormatListCreateInfoKHR structure was included in the
|
||||
* [[VUID-VkImageViewCreateInfo-pNext-01585]]
|
||||
If a sname:VkImageFormatListCreateInfoKHR structure was included in the
|
||||
pname:pNext chain of the sname:VkImageCreateInfo struct used when
|
||||
creating pname:image and the pname:viewFormatCount field of
|
||||
sname:VkImageFormatListCreateInfoKHR is not zero then pname:format must:
|
||||
|
@ -2230,7 +2244,8 @@ ifdef::VK_KHR_image_format_list[]
|
|||
sname:VkImageFormatListCreateInfoKHR::pname:pViewFormats.
|
||||
endif::VK_KHR_image_format_list[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageViewCreateInfo-image-01586]] If pname:image was created with the
|
||||
* [[VUID-VkImageViewCreateInfo-image-01586]]
|
||||
If pname:image was created with the
|
||||
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, if the pname:format of
|
||||
the pname:image is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
|
||||
|
@ -2293,7 +2308,8 @@ determining the valid usage conditions of slink:VkImageViewCreateInfo.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkImageViewUsageCreateInfoKHR-usage-01587]] pname:usage must: not include any set bits that were not set in the
|
||||
* [[VUID-VkImageViewUsageCreateInfoKHR-usage-01587]]
|
||||
pname:usage must: not include any set bits that were not set in the
|
||||
pname:usage member of the slink:VkImageCreateInfo structure used to
|
||||
create the image this image view is created from.
|
||||
****
|
||||
|
@ -2391,20 +2407,30 @@ framebuffer attachments, and any sname:VkImageView used with a combined
|
|||
image sampler that enables <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
|
||||
conversion>>.
|
||||
|
||||
If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled in
|
||||
the sampler, the pname:aspectMask used by a sname:VkImageView must: be
|
||||
When creating a sname:VkImageView, if <<samplers-YCbCr-conversion,sampler
|
||||
Y'C~B~C~R~ conversion>> is enabled in the sampler, the pname:aspectMask of a
|
||||
pname:subresourceRange used by the sname:VkImageView must: be
|
||||
ename:VK_IMAGE_ASPECT_COLOR_BIT.
|
||||
|
||||
If sampler Y'C~B~C~R~ conversion is not enabled in the sampler and the
|
||||
format is
|
||||
When creating a sname:VkImageView, if sampler Y'C~B~C~R~ conversion is not
|
||||
enabled in the sampler and the image pname:format is
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>, the
|
||||
image must: have been created with ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
|
||||
and the pname:aspectMask of the sname:VkImageView's
|
||||
sname:VkImageSubresourceRange must: be
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
|
||||
or ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
|
||||
and the pname:aspectMask of the sname:VkImageView's pname:subresourceRange
|
||||
must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkImageSubresourceRange-aspectMask-01670]]
|
||||
If pname:aspectMask includes ename:VK_IMAGE_ASPECT_COLOR_BIT, then it
|
||||
must: not include any of ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
|
||||
****
|
||||
|
||||
include::../validity/structs/VkImageSubresourceRange.txt[]
|
||||
--
|
||||
|
||||
|
@ -2437,7 +2463,7 @@ include::../api/structs/VkComponentMapping.txt[]
|
|||
placed in the G component of the output vector.
|
||||
* pname:b is a elink:VkComponentSwizzle specifying the component value
|
||||
placed in the B component of the output vector.
|
||||
* pname:A is a elink:VkComponentSwizzle specifying the component value
|
||||
* pname:a is a elink:VkComponentSwizzle specifying the component value
|
||||
placed in the A component of the output vector.
|
||||
|
||||
include::../validity/structs/VkComponentMapping.txt[]
|
||||
|
@ -2800,23 +2826,28 @@ include::../api/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
|
|||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:image is the image to query.
|
||||
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01589]] If pname:image was created with a _multi-planar_ format and the
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01589]]
|
||||
If pname:image was created with a _multi-planar_ format and the
|
||||
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: be a
|
||||
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
|
||||
the slink:VkImageMemoryRequirementsInfo2KHR structure
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01590]] If pname:image was not created with the
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01590]]
|
||||
If pname:image was not created with the
|
||||
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: not be a
|
||||
slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
|
||||
the slink:VkImageMemoryRequirementsInfo2KHR structure
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01591]] If pname:image was created with a single-plane format, there must: not
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01591]]
|
||||
If pname:image was created with a single-plane format, there must: not
|
||||
be a slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext
|
||||
chain of the slink:VkImageMemoryRequirementsInfo2KHR structure
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
****
|
||||
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
include::../validity/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
|
||||
--
|
||||
|
||||
|
@ -2839,7 +2870,8 @@ include::../api/structs/VkImagePlaneMemoryRequirementsInfoKHR.txt[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-01592]] pname:planeAspect must: be an aspect that exists in the format; that is,
|
||||
* [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-01592]]
|
||||
pname:planeAspect must: be an aspect that exists in the format; that is,
|
||||
for a two-plane image pname:planeAspect must: be
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and for a three-plane image
|
||||
|
@ -3123,36 +3155,46 @@ include::../api/structs/VkBindBufferMemoryInfoKHR.txt[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01593]] pname:buffer must: not already be backed by a memory object
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01594]] pname:buffer must: not have been created with any sparse memory binding
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01593]]
|
||||
pname:buffer must: not already be backed by a memory object
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01594]]
|
||||
pname:buffer must: not have been created with any sparse memory binding
|
||||
flags
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01595]] pname:memoryOffset must: be less than the size of pname:memory
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01596]] If pname:buffer was created with the
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01595]]
|
||||
pname:memoryOffset must: be less than the size of pname:memory
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01596]]
|
||||
If pname:buffer was created with the
|
||||
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
|
||||
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must:
|
||||
be a multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01597]] If pname:buffer was created with the
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01597]]
|
||||
If pname:buffer was created with the
|
||||
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a
|
||||
multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01598]] If pname:buffer was created with the
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01598]]
|
||||
If pname:buffer was created with the
|
||||
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a
|
||||
multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-memory-01599]] pname:memory must: have been allocated using one of the memory types
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-memory-01599]]
|
||||
pname:memory must: have been allocated using one of the memory types
|
||||
allowed in the pname:memoryTypeBits member of the
|
||||
sname:VkMemoryRequirements structure returned from a call to
|
||||
fname:vkGetBufferMemoryRequirements with pname:buffer
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01600]] pname:memoryOffset must: be an integer multiple of the pname:alignment
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01600]]
|
||||
pname:memoryOffset must: be an integer multiple of the pname:alignment
|
||||
member of the sname:VkMemoryRequirements structure returned from a call
|
||||
to fname:vkGetBufferMemoryRequirements with pname:buffer
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-size-01601]] The pname:size member of the sname:VkMemoryRequirements structure
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-size-01601]]
|
||||
The pname:size member of the sname:VkMemoryRequirements structure
|
||||
returned from a call to fname:vkGetBufferMemoryRequirements with
|
||||
pname:buffer must: be less than or equal to the size of pname:memory
|
||||
minus pname:memoryOffset
|
||||
ifdef::VK_KHR_dedicated_allocation[]
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01602]] If pname:buffer requires a dedicated allocation(as reported by
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01602]]
|
||||
If pname:buffer requires a dedicated allocation(as reported by
|
||||
flink:vkGetBufferMemoryRequirements2KHR in
|
||||
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
||||
pname:image), pname:memory must: have been created with
|
||||
|
@ -3160,20 +3202,23 @@ ifdef::VK_KHR_dedicated_allocation[]
|
|||
pname:buffer and pname:memoryOffset must: be zero
|
||||
endif::VK_KHR_dedicated_allocation[]
|
||||
ifdef::VK_NV_dedicated_allocation[]
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01603]] If pname:buffer was created with
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01603]]
|
||||
If pname:buffer was created with
|
||||
slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
|
||||
equal to ename:VK_TRUE, pname:memory must: have been created with
|
||||
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:buffer equal to
|
||||
pname:buffer and pname:memoryOffset must: be zero
|
||||
ifndef::VK_KHR_dedicated_allocation[]
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01604]] If pname:buffer was not created with
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-buffer-01604]]
|
||||
If pname:buffer was not created with
|
||||
slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
|
||||
equal to ename:VK_TRUE, pname:memory must: not have been allocated
|
||||
dedicated for a specific buffer or image
|
||||
endif::VK_KHR_dedicated_allocation[]
|
||||
endif::VK_NV_dedicated_allocation[]
|
||||
ifdef::VK_KHX_device_group[]
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-pNext-01605]] If the pname:pNext chain includes
|
||||
* [[VUID-VkBindBufferMemoryInfoKHR-pNext-01605]]
|
||||
If the pname:pNext chain includes
|
||||
slink:VkBindBufferMemoryDeviceGroupInfoKHX, all instances of
|
||||
pname:memory specified by
|
||||
slink:VkBindBufferMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
|
||||
|
@ -3223,9 +3268,11 @@ In other words, by default each physical device attaches to instance zero.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-deviceIndexCount-01606]] pname:deviceIndexCount must: either be zero or equal to the number of
|
||||
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-deviceIndexCount-01606]]
|
||||
pname:deviceIndexCount must: either be zero or equal to the number of
|
||||
physical devices in the logical device
|
||||
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-pDeviceIndices-01607]] All elements of pname:pDeviceIndices must: be valid device indices
|
||||
* [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-pDeviceIndices-01607]]
|
||||
All elements of pname:pDeviceIndices must: be valid device indices
|
||||
****
|
||||
|
||||
include::../validity/structs/VkBindBufferMemoryDeviceGroupInfoKHX.txt[]
|
||||
|
@ -3268,7 +3315,8 @@ endif::VK_KHR_bind_memory2[]
|
|||
.Valid Usage
|
||||
****
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkBindImageMemory-image-01608]] pname:image must: not have been created with the
|
||||
* [[VUID-vkBindImageMemory-image-01608]]
|
||||
pname:image must: not have been created with the
|
||||
ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR set.
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkBindImageMemory-image-01044]]
|
||||
|
@ -3371,45 +3419,56 @@ include::../api/structs/VkBindImageMemoryInfoKHR.txt[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01609]] pname:image must: not already be backed by a memory object
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01610]] pname:image must: not have been created with any sparse memory binding
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01609]]
|
||||
pname:image must: not already be backed by a memory object
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01610]]
|
||||
pname:image must: not have been created with any sparse memory binding
|
||||
flags
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01611]] pname:memoryOffset must: be less than the size of pname:memory
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01611]]
|
||||
pname:memoryOffset must: be less than the size of pname:memory
|
||||
ifndef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memory-01612]] pname:memory must: have been allocated using one of the memory types
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memory-01612]]
|
||||
pname:memory must: have been allocated using one of the memory types
|
||||
allowed in the pname:memoryTypeBits member of the
|
||||
slink:VkMemoryRequirements structure returned from a call to
|
||||
flink:vkGetImageMemoryRequirements with pname:image
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01613]] pname:memoryOffset must: be an integer multiple of the pname:alignment
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01613]]
|
||||
pname:memoryOffset must: be an integer multiple of the pname:alignment
|
||||
member of the slink:VkMemoryRequirements structure returned from a call
|
||||
to flink:vkGetImageMemoryRequirements with pname:image
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memory-01614]] The difference of the size of pname:memory and pname:memoryOffset must:
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memory-01614]]
|
||||
The difference of the size of pname:memory and pname:memoryOffset must:
|
||||
be greater than or equal to the pname:size member of the
|
||||
slink:VkMemoryRequirements structure returned from a call to
|
||||
flink:vkGetImageMemoryRequirements with the same pname:image
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01615]] If the pname:pNext chain does not include an instance of the
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01615]]
|
||||
If the pname:pNext chain does not include an instance of the
|
||||
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
|
||||
been allocated using one of the memory types allowed in the
|
||||
pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
|
||||
returned from a call to flink:vkGetImageMemoryRequirements2KHR with
|
||||
pname:image
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01616]] If the pname:pNext chain does not include an instance of the
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01616]]
|
||||
If the pname:pNext chain does not include an instance of the
|
||||
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
|
||||
be an integer multiple of the pname:alignment member of the
|
||||
slink:VkMemoryRequirements structure returned from a call to
|
||||
flink:vkGetImageMemoryRequirements2KHR with pname:image
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01617]] If the pname:pNext chain does not include an instance of the
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01617]]
|
||||
If the pname:pNext chain does not include an instance of the
|
||||
slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
|
||||
size of pname:memory and pname:memoryOffset must: be greater than or
|
||||
equal to the pname:size member of the slink:VkMemoryRequirements
|
||||
structure returned from a call to flink:vkGetImageMemoryRequirements2KHR
|
||||
with the same pname:image
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01618]] If the pname:pNext chain includes an instance of the
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01618]]
|
||||
If the pname:pNext chain includes an instance of the
|
||||
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:image must: have
|
||||
been created with the ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR bit set.
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01619]] If the pname:pNext chain includes an instance of the
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01619]]
|
||||
If the pname:pNext chain includes an instance of the
|
||||
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
|
||||
been allocated using one of the memory types allowed in the
|
||||
pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
|
||||
|
@ -3417,7 +3476,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
pname:image and the correct pname:planeAspect for this plane in the
|
||||
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
|
||||
slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01620]] If the pname:pNext chain includes an instance of the
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01620]]
|
||||
If the pname:pNext chain includes an instance of the
|
||||
slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
|
||||
be an integer multiple of the pname:alignment member of the
|
||||
slink:VkMemoryRequirements structure returned from a call to
|
||||
|
@ -3425,7 +3485,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
pname:planeAspect for this plane in the
|
||||
slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
|
||||
slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01621]] If the pname:pNext chain includes an instance of the
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01621]]
|
||||
If the pname:pNext chain includes an instance of the
|
||||
slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
|
||||
size of pname:memory and pname:memoryOffset must: be greater than or
|
||||
equal to the pname:size member of the slink:VkMemoryRequirements
|
||||
|
@ -3436,7 +3497,8 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
|||
chain
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_KHR_dedicated_allocation[]
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01622]] If pname:image requires a dedicated allocation (as reported by
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01622]]
|
||||
If pname:image requires a dedicated allocation (as reported by
|
||||
flink:vkGetImageMemoryRequirements2KHR in
|
||||
slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
|
||||
pname:image), pname:memory must: have been created with
|
||||
|
@ -3444,49 +3506,59 @@ ifdef::VK_KHR_dedicated_allocation[]
|
|||
and pname:memoryOffset must: be zero
|
||||
endif::VK_KHR_dedicated_allocation[]
|
||||
ifdef::VK_NV_dedicated_allocation[]
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01623]] If pname:image was created with
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01623]]
|
||||
If pname:image was created with
|
||||
slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
|
||||
equal to ename:VK_TRUE, pname:memory must: have been created with
|
||||
slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:image equal to
|
||||
pname:image and pname:memoryOffset must: be zero
|
||||
ifndef::VK_KHR_dedicated_allocation[]
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01624]] If pname:image was not created with
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01624]]
|
||||
If pname:image was not created with
|
||||
slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
|
||||
equal to ename:VK_TRUE, pname:memory must: not have been allocated
|
||||
dedicated for a specific buffer or image
|
||||
endif::VK_KHR_dedicated_allocation[]
|
||||
endif::VK_NV_dedicated_allocation[]
|
||||
ifndef::VK_KHX_device_group[]
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memory-01625]] pname:memory must: be a valid dname:VkDeviceMemory handle
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-memory-01625]]
|
||||
pname:memory must: be a valid dname:VkDeviceMemory handle
|
||||
endif::VK_KHX_device_group[]
|
||||
ifdef::VK_KHX_device_group[]
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01626]] If the pname:pNext chain includes
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01626]]
|
||||
If the pname:pNext chain includes
|
||||
slink:VkBindImageMemoryDeviceGroupInfoKHX, all instances of pname:memory
|
||||
specified by
|
||||
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
|
||||
have been allocated
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01627]] If the pname:pNext chain includes
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01627]]
|
||||
If the pname:pNext chain includes
|
||||
slink:VkBindImageMemoryDeviceGroupInfoKHX, and
|
||||
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:SFRRectCount is not
|
||||
zero, then pname:image must: have been created with the
|
||||
ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX bit set
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01628]] If the pname:pNext chain includes
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01628]]
|
||||
If the pname:pNext chain includes
|
||||
slink:VkBindImageMemoryDeviceGroupInfoKHX, all elements of
|
||||
slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects must: be
|
||||
valid rectangles contained within the dimensions of pname:image
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01629]] If the pname:pNext chain includes
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01629]]
|
||||
If the pname:pNext chain includes
|
||||
slink:VkBindImageMemoryDeviceGroupInfoKHX, the union of the areas of all
|
||||
elements of slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects
|
||||
that correspond to the same instance of pname: image must: cover the
|
||||
entire image.
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01630]] If pname:image was created with a valid swapchain handle in
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-image-01630]]
|
||||
If pname:image was created with a valid swapchain handle in
|
||||
slink:VkImageSwapchainCreateInfoKHX::pname:swapchain, then the
|
||||
pname:pNext chain must: include a valid instance of
|
||||
slink:VkBindImageMemorySwapchainInfoKHX
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01631]] If the pname:pNext chain includes an instance of
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01631]]
|
||||
If the pname:pNext chain includes an instance of
|
||||
slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be
|
||||
dlink:VK_NULL_HANDLE
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01632]] If the pname:pNext chain does not include an instance of
|
||||
* [[VUID-VkBindImageMemoryInfoKHR-pNext-01632]]
|
||||
If the pname:pNext chain does not include an instance of
|
||||
slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be a valid
|
||||
dname:VkDeviceMemory handle
|
||||
endif::VK_KHX_device_group[]
|
||||
|
@ -3552,28 +3624,37 @@ In other words, by default each physical device attaches to instance zero.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01633]] At least one of pname:deviceIndexCount and pname:SFRRectCount must: be
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01633]]
|
||||
At least one of pname:deviceIndexCount and pname:SFRRectCount must: be
|
||||
zero.
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01634]] pname:deviceIndexCount must: either be zero or equal to the number of
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01634]]
|
||||
pname:deviceIndexCount must: either be zero or equal to the number of
|
||||
physical devices in the logical device
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pDeviceIndices-01635]] All elements of pname:pDeviceIndices must: be valid device indices.
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-SFRRectCount-01636]] pname:SFRRectCount must: either be zero or equal to the number of
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pDeviceIndices-01635]]
|
||||
All elements of pname:pDeviceIndices must: be valid device indices.
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-SFRRectCount-01636]]
|
||||
pname:SFRRectCount must: either be zero or equal to the number of
|
||||
physical devices in the logical device squared
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pSFRRects-01637]] Elements of pname:pSFRRects that correspond to the same instance of an
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pSFRRects-01637]]
|
||||
Elements of pname:pSFRRects that correspond to the same instance of an
|
||||
image must: not overlap.
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01638]] The pname:offset.x member of any element of pname:pSFRRects must: be a
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01638]]
|
||||
The pname:offset.x member of any element of pname:pSFRRects must: be a
|
||||
multiple of the sparse image block width
|
||||
(sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of
|
||||
all non-metadata aspects of the image
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01639]] The pname:offset.y member of any element of pname:pSFRRects must: be a
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01639]]
|
||||
The pname:offset.y member of any element of pname:pSFRRects must: be a
|
||||
multiple of the sparse image block height
|
||||
(sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of
|
||||
all non-metadata aspects of the image
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01640]] The pname:extent.width member of any element of pname:pSFRRects must:
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01640]]
|
||||
The pname:extent.width member of any element of pname:pSFRRects must:
|
||||
either be a multiple of the sparse image block width of all non-metadata
|
||||
aspects of the image, or else pname:extent.width + pname:offset.x must:
|
||||
equal the width of the image subresource
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01641]] The pname:extent.height member of any element of pname:pSFRRects must:
|
||||
* [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01641]]
|
||||
The pname:extent.height member of any element of pname:pSFRRects must:
|
||||
either be a multiple of the sparse image block height of all
|
||||
non-metadata aspects of the image, or else pname:extent.height +
|
||||
pname:offset.y must: equal the width of the image subresource
|
||||
|
@ -3601,14 +3682,16 @@ include::../api/structs/VkBindImagePlaneMemoryInfoKHR.txt[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-01642]] pname:planeAspect must: be a single valid plane aspect for the image
|
||||
* [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-01642]]
|
||||
pname:planeAspect must: be a single valid plane aspect for the image
|
||||
format (that is, pname:planeAspect must: be
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for "`etext:_2PLANE`" formats and
|
||||
pname:planeAspect must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for "`etext:_3PLANE`" formats)
|
||||
* [[VUID-VkBindImagePlaneMemoryInfoKHR-None-01643]] A single call to flink:vkBindImageMemory2KHR must: bind all or none of
|
||||
* [[VUID-VkBindImagePlaneMemoryInfoKHR-None-01643]]
|
||||
A single call to flink:vkBindImageMemory2KHR must: bind all or none of
|
||||
the planes of an image (i.e. bindings to all planes of an image must: be
|
||||
made in a single flink:vkBindImageMemory2KHR call), as separate bindings
|
||||
****
|
||||
|
@ -3644,7 +3727,8 @@ pname:pSFRRects members of slink:VkBindImageMemoryDeviceGroupInfoKHX.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkBindImageMemorySwapchainInfoKHX-imageIndex-01644]] pname:imageIndex must: be less than the number of images in
|
||||
* [[VUID-VkBindImageMemorySwapchainInfoKHX-imageIndex-01644]]
|
||||
pname:imageIndex must: be less than the number of images in
|
||||
pname:swapchain
|
||||
****
|
||||
|
||||
|
|
|
@ -168,7 +168,8 @@ pname:maxSamplerAllocationCount limit.
|
|||
between `1.0` and
|
||||
sname:VkPhysicalDeviceLimits::pname:maxSamplerAnisotropy, inclusive
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkSamplerCreateInfo-minFilter-01645]] If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
|
||||
* [[VUID-VkSamplerCreateInfo-minFilter-01645]]
|
||||
If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
|
||||
enabled and
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
|
||||
is not set for the format, pname:minFilter and pname:magFilter must: be
|
||||
|
@ -199,13 +200,15 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
|
|||
are ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, pname:borderColor
|
||||
must: be a valid elink:VkBorderColor value
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkSamplerCreateInfo-addressModeU-01646]] If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
|
||||
* [[VUID-VkSamplerCreateInfo-addressModeU-01646]]
|
||||
If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
|
||||
enabled, pname:addressModeU, pname:addressModeV, and pname:addressModeW
|
||||
must: be ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
|
||||
pname:anisotropyEnable must: be ename:VK_FALSE, and
|
||||
pname:unnormalizedCoordinates must: be ename:VK_FALSE
|
||||
ifdef::VK_EXT_sampler_filter_minmax[]
|
||||
* [[VUID-VkSamplerCreateInfo-None-01647]] The sampler reduction mode must: be set to
|
||||
* [[VUID-VkSamplerCreateInfo-None-01647]]
|
||||
The sampler reduction mode must: be set to
|
||||
ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT if
|
||||
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled
|
||||
endif::VK_EXT_sampler_filter_minmax[]
|
||||
|
@ -468,7 +471,8 @@ Operations>> chapter.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCreateSamplerYcbcrConversionKHR-None-01648]] The <<features-features-sampler-YCbCr-conversion, sampler Y'C~B~C~R~
|
||||
* [[VUID-vkCreateSamplerYcbcrConversionKHR-None-01648]]
|
||||
The <<features-features-sampler-YCbCr-conversion, sampler Y'C~B~C~R~
|
||||
conversion feature>> must: be enabled
|
||||
****
|
||||
|
||||
|
@ -517,21 +521,27 @@ the default mode of operation.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01649]] pname:format must: not be ename:VK_FORMAT_UNDEFINED
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01650]] pname:format must: support
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01649]]
|
||||
pname:format must: not be ename:VK_FORMAT_UNDEFINED
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01650]]
|
||||
pname:format must: support
|
||||
ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR or
|
||||
ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01651]] If the format does not support
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01651]]
|
||||
If the format does not support
|
||||
ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,
|
||||
pname:xChromaOffset and pname:yChromaOffset must: not be
|
||||
ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01652]] If the format does not support
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01652]]
|
||||
If the format does not support
|
||||
ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
|
||||
pname:xChromaOffset and pname:yChromaOffset must: not be
|
||||
ename:VK_CHROMA_LOCATION_MIDPOINT_KHR
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01653]] pname:format must: represent unsigned normalized values (i.e. the format
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01653]]
|
||||
pname:format must: represent unsigned normalized values (i.e. the format
|
||||
must be a etext:UNORM format)
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-None-01654]] If the format has a _422 or _420 suffix:
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-None-01654]]
|
||||
If the format has a _422 or _420 suffix:
|
||||
** pname:components.g must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
** pname:components.a must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY,
|
||||
ename:VK_COMPONENT_SWIZZLE_ONE, or ename:VK_COMPONENT_SWIZZLE_ZERO
|
||||
|
@ -542,7 +552,8 @@ the default mode of operation.
|
|||
** If either pname:components.r or pname:components.b is
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY, both values must: be
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-ycbcrModel-01655]] If pname:ycbcrModel is not
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-ycbcrModel-01655]]
|
||||
If pname:ycbcrModel is not
|
||||
ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, then
|
||||
pname:components.r, pname:components.g, and pname:components.b must:
|
||||
correspond to channels of the pname:format; that is, pname:components.r,
|
||||
|
@ -550,10 +561,12 @@ the default mode of operation.
|
|||
ename:VK_COMPONENT_SWIZZLE_ZERO or ename:VK_COMPONENT_SWIZZLE_ONE, and
|
||||
must: not correspond to a channel which contains zero or one as a
|
||||
consequence of <<textures-conversion-to-rgba,conversion to RGBA>>
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-forceExplicitReconstruction-01656]] If the format does not support
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-forceExplicitReconstruction-01656]]
|
||||
If the format does not support
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
|
||||
pname:forceExplicitReconstruction must: be FALSE
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-chromaFilter-01657]] If the format does not support
|
||||
* [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-chromaFilter-01657]]
|
||||
If the format does not support
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
|
||||
pname:chromaFilter must: be ename:VK_FILTER_NEAREST
|
||||
****
|
||||
|
|
|
@ -1326,10 +1326,10 @@ include::../api/structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103]]
|
||||
For any given element of pname:pBinds, if the pname:flags member of that
|
||||
element contains ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding
|
||||
range defined must: be within the mip tail region of the metadata aspect
|
||||
of pname:image
|
||||
If the pname:flags member of any element of pname:pBinds contains
|
||||
ename:VK_SPARSE_MEMORY_BIND_METADATA_BIT, the binding range defined
|
||||
must: be within the mip tail region of the metadata aspect of
|
||||
pname:image
|
||||
****
|
||||
|
||||
include::../validity/structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
|
||||
|
@ -1509,9 +1509,9 @@ Additional information about fence and semaphore operation is described in
|
|||
associated with any other queue command that has not yet completed
|
||||
execution on that queue
|
||||
* [[VUID-vkQueueBindSparse-pSignalSemaphores-01115]]
|
||||
Any given element of the pname:pSignalSemaphores member of any element
|
||||
of pname:pBindInfo must: be unsignaled when the semaphore signal
|
||||
operation it defines is executed on the device
|
||||
Each element of the pname:pSignalSemaphores member of each element of
|
||||
pname:pBindInfo must: be unsignaled when the semaphore signal operation
|
||||
it defines is executed on the device
|
||||
* [[VUID-vkQueueBindSparse-pWaitSemaphores-01116]]
|
||||
When a semaphore unsignal operation defined by any element of the
|
||||
pname:pWaitSemaphores member of any element of pname:pBindInfo executes
|
||||
|
|
|
@ -1318,9 +1318,8 @@ that fence.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkResetFences-pFences-01123]]
|
||||
Any given element of pname:pFences must: not currently be associated
|
||||
with any queue command that has not yet completed execution on that
|
||||
queue
|
||||
Each element of pname:pFences must: not be currently associated with any
|
||||
queue command that has not yet completed execution on that queue
|
||||
****
|
||||
|
||||
include::../validity/protos/vkResetFences.txt[]
|
||||
|
@ -1513,6 +1512,53 @@ the permanence and transference of each handle type.
|
|||
====
|
||||
endif::VK_KHR_external_fence_win32,VK_KHR_external_fence_fd[]
|
||||
|
||||
<<fundamentals-threadingbehavior,External synchronization>> allows
|
||||
implementations to modify an object's internal state, i.e. payload, without
|
||||
internal synchronization.
|
||||
However, for fences sharing a payload across processes, satisfying the
|
||||
external synchronization requirements of fname:VkFence parameters as if all
|
||||
fences in the set were the same object is sometimes infeasible.
|
||||
Satisfying valid usage constraints on the state of a fence would similarly
|
||||
require impractical coordination or levels of trust between processes.
|
||||
Therefore, these constraints only apply to a specific fence handle, not to
|
||||
its payload.
|
||||
For distinct fence objects which share a payload:
|
||||
|
||||
* If multiple commands which queue a signal operation, or which unsignal a
|
||||
fence, are called concurrently, behavior will be as if the commands were
|
||||
called in an arbitrary sequential order.
|
||||
* If a queue submission command is called with a fence that is sharing a
|
||||
payload, and the payload is already associated with another queue command
|
||||
that has not yet completed execution, either one or both of the commands
|
||||
will cause the fence to become signaled when they complete execution.
|
||||
* If a fence payload is reset while it is associated with a queue command
|
||||
that has not yet completed execution, the payload will become unsignaled,
|
||||
but may: become signaled again when the command completes execution.
|
||||
* In the preceding cases, any of the devices associated with the fences
|
||||
sharing the payload may: be lost, or any of the queue submission or fence
|
||||
reset commands may: return ename:VK_ERROR_INITIALIZATION_FAILED.
|
||||
|
||||
Other than these non-deterministic results, behavior is well defined.
|
||||
In particular:
|
||||
|
||||
* The implementation must: not crash or enter an internally inconsistent
|
||||
state where future valid Vulkan commands might cause undefined results,
|
||||
* Timeouts on future wait commands on fences sharing the payload must: be
|
||||
effective.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
These rules allow processes to synchronize access to shared memory without
|
||||
trusting each other.
|
||||
However, such processes must still be cautious not to use the shared fence
|
||||
for more than synchronizing access to the shared memory.
|
||||
For example, a process should not use a fence with shared payload to tell
|
||||
when commands it submitted to a queue have completed and objects used by
|
||||
those commands may be destroyed, since the other process can accidentally or
|
||||
maliciously cause the fence to signal before the commands actually complete.
|
||||
====
|
||||
|
||||
When a fence is using an imported payload, its
|
||||
slink:VkExportFenceCreateInfoKHR::pname:handleTypes value is that specified
|
||||
when creating the fence from which the payload was exported, rather than
|
||||
|
@ -1596,7 +1642,7 @@ include::../api/structs/VkImportFenceWin32HandleInfoKHR.txt[]
|
|||
|
||||
The handle types supported by pname:handleType are:
|
||||
|
||||
[[synchronization-handletypes-win32]]
|
||||
[[synchronization-fence-handletypes-win32]]
|
||||
.Handle Types Supported by VkImportFenceWin32HandleInfoKHR
|
||||
[width="80%",options="header"]
|
||||
|====
|
||||
|
@ -1687,7 +1733,7 @@ include::../api/structs/VkImportFenceFdInfoKHR.txt[]
|
|||
|
||||
The handle types supported by pname:handleType are:
|
||||
|
||||
[[synchronization-handletypes-fd]]
|
||||
[[synchronization-fence-handletypes-fd]]
|
||||
.Handle Types Supported by VkImportFenceFdInfoKHR
|
||||
[width="80%",options="header"]
|
||||
|====
|
||||
|
@ -2269,29 +2315,6 @@ unsignal operation>> is submitted to a queue:
|
|||
|
||||
ifdef::VK_KHR_external_semaphore[]
|
||||
|
||||
Generally, the implementation behavior will be undefined when applications
|
||||
fail to ensure these requirements are met.
|
||||
However, to avoid requiring Vulkan instances that import semaphore payloads
|
||||
to trust the source of that payload, the side effects of violating the
|
||||
requirements are better defined in certain cases.
|
||||
When the semaphore that violates the requirements is using an imported
|
||||
payload at the time of the violation, the implementation must: ensure side
|
||||
effects are limited to one or more of the following:
|
||||
|
||||
* Returning the error code ename:VK_ERROR_INITIALIZATION_FAILED from the
|
||||
command which resulted in the violation.
|
||||
* Allowing the logical device on which the violation occured to enter an
|
||||
undefined state immediately or in the future and returning the error
|
||||
code ename:VK_ERROR_DEVICE_LOST from any subsequent command, including
|
||||
the one causing the violation, after the device enters such a state.
|
||||
* Continuing execution of the violating command or operation as if the
|
||||
semaphore wait completed successfully after an implementation-dependent
|
||||
timeout.
|
||||
In this case, the state of the semaphore becomes undefined.
|
||||
The semaphore must: be destroyed or have its state replaced by an import
|
||||
operation to again meet valid usage requirements.
|
||||
|
||||
|
||||
[[synchronization-semaphores-importing]]
|
||||
=== Importing Semaphore Payloads
|
||||
|
||||
|
@ -2362,6 +2385,48 @@ the permanence and transference of each handle type.
|
|||
====
|
||||
endif::VK_KHR_external_semaphore_win32,VK_KHR_external_semaphore_fd[]
|
||||
|
||||
<<fundamentals-threadingbehavior,External synchronization>> allows
|
||||
implementations to modify an object's internal state, i.e. payload, without
|
||||
internal synchronization.
|
||||
However, for semaphores sharing a payload across processes, satisfying the
|
||||
external synchronization requirements of fname:VkSemaphore parameters as if
|
||||
all semaphores in the set were the same object is sometimes infeasible.
|
||||
Satisfying the <<synchronization-semaphores-waiting-state,wait operation
|
||||
state requirements>> would similarly require impractical coordination or
|
||||
levels of trust between processes.
|
||||
Therefore, these constraints only apply to a specific semaphore handle, not
|
||||
to its payload.
|
||||
For distinct semaphore objects which share a payload:
|
||||
|
||||
* If the semaphores are passed to multiple queue submission commands
|
||||
concurrently, behavior will be as if the commands were called in an
|
||||
arbitrary sequential order.
|
||||
* If the <<synchronization-semaphores-waiting-state,wait operation state
|
||||
requirements>> are violated for the payload by a queue submission command,
|
||||
or if a signal operation is queued for a payload that is already signaled or
|
||||
has a pending signal operation, the command may: return
|
||||
ename:VK_ERROR_INITIALIZATION_FAILED, the queue's device may: be lost
|
||||
immediately or later, or the wait operation or future wait operations on the
|
||||
payload may: complete immediately when executed or when any one of the queue
|
||||
signal operations completes.
|
||||
|
||||
However, a wait operation on a semaphore sharing the payload must: not
|
||||
continue to wait after the last signal operation queued for the payload
|
||||
completes.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
These rules allow processes to synchronize access to shared memory without
|
||||
trusting each other.
|
||||
However, such processes must still be cautious not to use the shared
|
||||
semaphore for more than synchronizing access to the shared memory.
|
||||
For example, a process should not use a shared semaphore as part of a
|
||||
execution dependency chain that, when complete, leads to objects being
|
||||
destroyed, if it does not trust other processes sharing the semaphore
|
||||
payload.
|
||||
====
|
||||
|
||||
When a semaphore is using an imported payload, its
|
||||
slink:VkExportSemaphoreCreateInfoKHR::pname:handleTypes value is that
|
||||
specified when creating the semaphore from which the payload was exported,
|
||||
|
@ -2618,6 +2683,8 @@ endif::VK_KHR_external_semaphore[]
|
|||
Events are a synchronization primitive that can: be used to insert a
|
||||
fine-grained dependency between commands submitted to the same queue, or
|
||||
between the host and a queue.
|
||||
Events must: not be used to insert a dependency between commands submitted
|
||||
to different queues.
|
||||
Events have two states - signaled and unsignaled.
|
||||
An application can: signal an event, or unsignal it, on either the host or
|
||||
the device.
|
||||
|
@ -2928,7 +2995,10 @@ include::../api/protos/vkCmdWaitEvents.txt[]
|
|||
slink:VkImageMemoryBarrier structures.
|
||||
|
||||
When fname:vkCmdWaitEvents is submitted to a queue, it defines a memory
|
||||
dependency between prior event signal operations, and subsequent commands.
|
||||
dependency between prior event signal operations on the same queue or the
|
||||
host, and subsequent commands.
|
||||
fname:vkCmdWaitEvents must: not be used to wait on event signal operations
|
||||
occuring on other queues.
|
||||
|
||||
The first synchronization scope only includes event signal operations that
|
||||
operate on members of pname:pEvents, and the operations that happened-before
|
||||
|
@ -3031,15 +3101,15 @@ semaphore).
|
|||
<<synchronization-pipeline-stages-supported, table of supported pipeline
|
||||
stages>>.
|
||||
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01165]]
|
||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers or
|
||||
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
its pname:srcAccessMask member if that bit is not supported by any of
|
||||
the pipeline stages in pname:srcStageMask, as specified in the
|
||||
<<synchronization-access-types-supported, table of supported access
|
||||
types>>.
|
||||
* [[VUID-vkCmdWaitEvents-pMemoryBarriers-01166]]
|
||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers or
|
||||
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
its pname:dstAccessMask member if that bit is not supported by any of
|
||||
the pipeline stages in pname:dstStageMask, as specified in the
|
||||
<<synchronization-access-types-supported, table of supported access
|
||||
|
@ -3233,15 +3303,15 @@ framebuffer-space>> pipeline stages is
|
|||
<<synchronization-pipeline-stages-supported, table of supported pipeline
|
||||
stages>>.
|
||||
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184]]
|
||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers and
|
||||
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
its pname:srcAccessMask member if that bit is not supported by any of
|
||||
the pipeline stages in pname:srcStageMask, as specified in the
|
||||
<<synchronization-access-types-supported, table of supported access
|
||||
types>>.
|
||||
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185]]
|
||||
Any given element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers
|
||||
or pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
Each element of pname:pMemoryBarriers, pname:pBufferMemoryBarriers and
|
||||
pname:pImageMemoryBarriers must: not have any access flag included in
|
||||
its pname:dstAccessMask member if that bit is not supported by any of
|
||||
the pipeline stages in pname:dstStageMask, as specified in the
|
||||
<<synchronization-access-types-supported, table of supported access
|
||||
|
@ -3609,6 +3679,17 @@ would equal ename:VK_IMAGE_LAYOUT_UNDEFINED.
|
|||
|
||||
endif::VK_EXT_sample_locations[]
|
||||
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
If pname:image has a multi-planar format and the image is _disjoint_, then
|
||||
including ename:VK_IMAGE_ASPECT_COLOR_BIT in the pname:aspectMask member of
|
||||
pname:subresourceRange is equivalent to including
|
||||
ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and (for three-plane formats only)
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
|
||||
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkImageMemoryBarrier-oldLayout-01197]]
|
||||
|
@ -3692,9 +3773,26 @@ endif::VK_KHR_external_memory[]
|
|||
pname:image was created
|
||||
* [[VUID-VkImageMemoryBarrier-image-01207]]
|
||||
If pname:image has a depth/stencil format with both depth and stencil
|
||||
components, then pname:aspectMask member of pname:subresourceRange must:
|
||||
include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and
|
||||
components, then the pname:aspectMask member of pname:subresourceRange
|
||||
must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and
|
||||
ename:VK_IMAGE_ASPECT_STENCIL_BIT
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageMemoryBarrier-image-01671]]
|
||||
If pname:image has a single-plane color format or is not _disjoint_,
|
||||
then the pname:aspectMask member of pname:subresourceRange must: be
|
||||
ename:VK_IMAGE_ASPECT_COLOR_BIT
|
||||
* [[VUID-VkImageMemoryBarrier-image-01672]]
|
||||
If pname:image has a multi-planar format and the image is _disjoint_,
|
||||
then the pname:aspectMask member of pname:subresourceRange must: include
|
||||
either at least one of ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
|
||||
ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR; or must: include
|
||||
ename:VK_IMAGE_ASPECT_COLOR_BIT
|
||||
* [[VUID-VkImageMemoryBarrier-image-01673]]
|
||||
If pname:image has a multi-planar format with only two planes, then the
|
||||
pname:aspectMask member of pname:subresourceRange must: not include
|
||||
ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageMemoryBarrier-oldLayout-01208]]
|
||||
If either pname:oldLayout or pname:newLayout is
|
||||
ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must:
|
||||
|
@ -3710,11 +3808,13 @@ endif::VK_KHR_external_memory[]
|
|||
must: have been created with
|
||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
||||
ifdef::VK_KHR_maintenance2[]
|
||||
* [[VUID-VkImageMemoryBarrier-oldLayout-01658]] If either pname:oldLayout or pname:newLayout is
|
||||
* [[VUID-VkImageMemoryBarrier-oldLayout-01658]]
|
||||
If either pname:oldLayout or pname:newLayout is
|
||||
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
|
||||
then pname:image must: have been created with
|
||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
||||
* [[VUID-VkImageMemoryBarrier-oldLayout-01659]] If either pname:oldLayout or pname:newLayout is
|
||||
* [[VUID-VkImageMemoryBarrier-oldLayout-01659]]
|
||||
If either pname:oldLayout or pname:newLayout is
|
||||
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
|
||||
then pname:image must: have been created with
|
||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
||||
|
|
|
@ -320,6 +320,7 @@ They include the following steps, which are performed in the listed order:
|
|||
** <<textures-operation-validation,Instruction/Sampler/Image validation>>
|
||||
** <<textures-integer-coordinate-validation,Coordinate validation>>
|
||||
** <<textures-sparse-validation,Sparse validation>>
|
||||
** <<textures-layout-validation,Layout validation>>
|
||||
* <<textures-format-conversion,Format conversion>>
|
||||
* <<textures-texel-replacement,Texel replacement>>
|
||||
* <<textures-depth-compare-operation,Depth comparison>>
|
||||
|
@ -534,6 +535,17 @@ If the texel reads from an unbound region of a sparse image, the texel is a
|
|||
_sparse unbound texel_, and processing continues with
|
||||
<<textures-texel-replacement,texel replacement>>.
|
||||
|
||||
ifdef::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
[[textures-layout-validation]]
|
||||
==== Layout Validation
|
||||
|
||||
If all planes of a _disjoint_ _multi-planar_ image are not in the same
|
||||
<<resources-image-layouts,image layout>> when the image is sampled with
|
||||
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>, the result of
|
||||
texel reads is undefined.
|
||||
|
||||
endif::VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
[[textures-format-conversion]]
|
||||
=== Format Conversion
|
||||
|
@ -561,8 +573,8 @@ Signed integer components smaller than 32 bits are sign-extended.
|
|||
|
||||
If the image format is sRGB, the color components are first converted as if
|
||||
they are UNORM, and then sRGB to linear conversion is applied to the R, G,
|
||||
and B components as described in the "`sRGB EOTF`" section of
|
||||
the <<data-format,Khronos Data Format Specification>>.
|
||||
and B components as described in the "`sRGB EOTF`" section of the
|
||||
<<data-format,Khronos Data Format Specification>>.
|
||||
The A component, if present, is unchanged.
|
||||
|
||||
If the image view format is block-compressed, then the texel value is first
|
||||
|
@ -2177,25 +2189,6 @@ values with non-zero weights.
|
|||
|
||||
endif::VK_EXT_sampler_filter_minmax[]
|
||||
|
||||
ifdef::editing-notes[]
|
||||
[NOTE]
|
||||
.editing-note
|
||||
==================
|
||||
(Bill) EXT_texture_filter_anisotropic has not been updated since 2000,
|
||||
except for ES extension number (2007) and a minor speeling (sic) correction
|
||||
(2014), neither of which are functional changes.
|
||||
It is showing its age.
|
||||
|
||||
In particular, there is an open issue about 3D textures.
|
||||
|
||||
There are no interactions with ARB_texture_cube_map (approved 1999, promoted
|
||||
to core OpenGL 1.3 in 2001), let alone interactions with
|
||||
ARB_seamless_cube_map (approved and promoted to core OpenGL 3.2 in 2009).
|
||||
|
||||
There are no interactions with texture offsets or texture gather.
|
||||
==================
|
||||
endif::editing-notes[]
|
||||
|
||||
|
||||
[[textures-instructions]]
|
||||
== Image Operation Steps
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
|
||||
# For error and file-loading interfaces only
|
||||
from reflib import *
|
||||
from reflow_count import startVUID
|
||||
|
||||
import argparse, copy, os, pdb, re, string, sys
|
||||
|
||||
|
@ -588,6 +589,21 @@ def reflowFile(filename, args):
|
|||
logWarn('Updated nextvu to', state.nextvu, 'after file', filename)
|
||||
args.nextvu = state.nextvu
|
||||
|
||||
def reflowAllAdocFiles(folder_to_reflow, args):
|
||||
for root, subdirs, files in os.walk(folder_to_reflow):
|
||||
for file in files:
|
||||
if file.endswith(".txt"):
|
||||
file_path = os.path.join(root, file)
|
||||
reflowFile(file_path, args)
|
||||
for subdir in subdirs:
|
||||
sub_folder = os.path.join(root, subdir)
|
||||
print('Sub-folder = %s' % sub_folder)
|
||||
if not (subdir.lower() == "scripts") and not (subdir.lower() == "style"):
|
||||
print(' Parsing = %s' % sub_folder)
|
||||
reflowAllAdocFiles(sub_folder, args)
|
||||
else:
|
||||
print(' Skipping = %s' % sub_folder)
|
||||
|
||||
# Patterns used to recognize interesting lines in an asciidoc source file.
|
||||
# These patterns are only compiled once.
|
||||
|
||||
|
@ -597,8 +613,6 @@ def reflowFile(filename, args):
|
|||
global vuPat
|
||||
vuPat = re.compile('^(?P<head> [*]+)( *)(?P<tail>.*)', re.DOTALL)
|
||||
|
||||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 1660
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser()
|
||||
|
@ -643,10 +657,23 @@ if __name__ == '__main__':
|
|||
if args.nextvu != None:
|
||||
logWarn('Tagging untagged Valid Usage statements starting at', args.nextvu)
|
||||
|
||||
for file in args.files:
|
||||
reflowFile(file, args)
|
||||
# If no files are specified, reflow the entire specification chapters folder
|
||||
if len(args.files) == 0:
|
||||
folder_to_reflow = os.getcwd()
|
||||
folder_to_reflow += '/doc/specs/vulkan'
|
||||
reflowAllAdocFiles(folder_to_reflow, args)
|
||||
else:
|
||||
for file in args.files:
|
||||
reflowFile(file, args)
|
||||
|
||||
if args.nextvu != None and args.nextvu != startVUID:
|
||||
logWarn('You must now edit the value of reflow.py:startVUID to',
|
||||
args.nextvu,
|
||||
'so that future runs will not overwrite existing VUID tags')
|
||||
try:
|
||||
reflow_count_file_path = os.path.dirname(os.path.realpath(__file__))
|
||||
reflow_count_file_path += '/reflow_count.py'
|
||||
reflow_count_file = open(reflow_count_file_path, 'w', encoding='utf8')
|
||||
print('# The value to start tagging VU statements at, unless overridden by -nextvu\n', file=reflow_count_file, end='')
|
||||
count_string = 'startVUID = %d\n' % args.nextvu
|
||||
print(count_string, file=reflow_count_file, end='')
|
||||
reflow_count_file.close()
|
||||
except:
|
||||
logWarn('Cannot open output count file reflow_count.py', ':', sys.exc_info()[0])
|
||||
|
|
|
@ -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]]
|
||||
=== Compound Words and Preferred Orthography
|
||||
|
||||
|
|
|
@ -157,6 +157,8 @@ include::style/vuid.txt[]
|
|||
|
||||
= Revision History
|
||||
|
||||
* 2017-09-10 - Add descriptions of <<writing-arrays, how to use `each` and
|
||||
`any`>> to refer to properties of elments of arrays (internal issue 884).
|
||||
* 2017-09-10 - Add <<extensions-interactions-parent, Valid Usage and
|
||||
Extension pname:pNext Chains>> language specifying where to describe
|
||||
interactions of structures in a pname:pNext chain (internal issue 715).
|
||||
|
|
|
@ -1020,6 +1020,57 @@ VkResult vkBindImageMemory2KHR(
|
|||
}
|
||||
|
||||
#endif /* VK_KHR_bind_memory2 */
|
||||
#ifdef VK_ANDROID_native_buffer
|
||||
static PFN_vkGetSwapchainGrallocUsageANDROID pfn_vkGetSwapchainGrallocUsageANDROID;
|
||||
VkResult vkGetSwapchainGrallocUsageANDROID(
|
||||
VkDevice device,
|
||||
VkFormat format,
|
||||
VkImageUsageFlags imageUsage,
|
||||
int* grallocUsage)
|
||||
{
|
||||
return pfn_vkGetSwapchainGrallocUsageANDROID(
|
||||
device,
|
||||
format,
|
||||
imageUsage,
|
||||
grallocUsage
|
||||
);
|
||||
}
|
||||
|
||||
static PFN_vkAcquireImageANDROID pfn_vkAcquireImageANDROID;
|
||||
VkResult vkAcquireImageANDROID(
|
||||
VkDevice device,
|
||||
VkImage image,
|
||||
int nativeFenceFd,
|
||||
VkSemaphore semaphore,
|
||||
VkFence fence)
|
||||
{
|
||||
return pfn_vkAcquireImageANDROID(
|
||||
device,
|
||||
image,
|
||||
nativeFenceFd,
|
||||
semaphore,
|
||||
fence
|
||||
);
|
||||
}
|
||||
|
||||
static PFN_vkQueueSignalReleaseImageANDROID pfn_vkQueueSignalReleaseImageANDROID;
|
||||
VkResult vkQueueSignalReleaseImageANDROID(
|
||||
VkQueue queue,
|
||||
uint32_t waitSemaphoreCount,
|
||||
const VkSemaphore* pWaitSemaphores,
|
||||
VkImage image,
|
||||
int* pNativeFenceFd)
|
||||
{
|
||||
return pfn_vkQueueSignalReleaseImageANDROID(
|
||||
queue,
|
||||
waitSemaphoreCount,
|
||||
pWaitSemaphores,
|
||||
image,
|
||||
pNativeFenceFd
|
||||
);
|
||||
}
|
||||
|
||||
#endif /* VK_ANDROID_native_buffer */
|
||||
#ifdef VK_EXT_debug_report
|
||||
static PFN_vkCreateDebugReportCallbackEXT pfn_vkCreateDebugReportCallbackEXT;
|
||||
VkResult vkCreateDebugReportCallbackEXT(
|
||||
|
@ -1951,6 +2002,11 @@ void vkExtInitInstance(VkInstance instance)
|
|||
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindBufferMemory2KHR");
|
||||
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetInstanceProcAddr(instance, "vkBindImageMemory2KHR");
|
||||
#endif /* VK_KHR_bind_memory2 */
|
||||
#ifdef VK_ANDROID_native_buffer
|
||||
pfn_vkGetSwapchainGrallocUsageANDROID = (PFN_vkGetSwapchainGrallocUsageANDROID)vkGetInstanceProcAddr(instance, "vkGetSwapchainGrallocUsageANDROID");
|
||||
pfn_vkAcquireImageANDROID = (PFN_vkAcquireImageANDROID)vkGetInstanceProcAddr(instance, "vkAcquireImageANDROID");
|
||||
pfn_vkQueueSignalReleaseImageANDROID = (PFN_vkQueueSignalReleaseImageANDROID)vkGetInstanceProcAddr(instance, "vkQueueSignalReleaseImageANDROID");
|
||||
#endif /* VK_ANDROID_native_buffer */
|
||||
#ifdef VK_EXT_debug_report
|
||||
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugReportCallbackEXT");
|
||||
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetInstanceProcAddr(instance, "vkDestroyDebugReportCallbackEXT");
|
||||
|
@ -2199,6 +2255,11 @@ void vkExtInitDevice(VkDevice device)
|
|||
pfn_vkBindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)vkGetDeviceProcAddr(device, "vkBindBufferMemory2KHR");
|
||||
pfn_vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)vkGetDeviceProcAddr(device, "vkBindImageMemory2KHR");
|
||||
#endif /* VK_KHR_bind_memory2 */
|
||||
#ifdef VK_ANDROID_native_buffer
|
||||
pfn_vkGetSwapchainGrallocUsageANDROID = (PFN_vkGetSwapchainGrallocUsageANDROID)vkGetDeviceProcAddr(device, "vkGetSwapchainGrallocUsageANDROID");
|
||||
pfn_vkAcquireImageANDROID = (PFN_vkAcquireImageANDROID)vkGetDeviceProcAddr(device, "vkAcquireImageANDROID");
|
||||
pfn_vkQueueSignalReleaseImageANDROID = (PFN_vkQueueSignalReleaseImageANDROID)vkGetDeviceProcAddr(device, "vkQueueSignalReleaseImageANDROID");
|
||||
#endif /* VK_ANDROID_native_buffer */
|
||||
#ifdef VK_EXT_debug_report
|
||||
pfn_vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkCreateDebugReportCallbackEXT");
|
||||
pfn_vkDestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)vkGetDeviceProcAddr(device, "vkDestroyDebugReportCallbackEXT");
|
||||
|
|
|
@ -393,13 +393,19 @@ Extension = element extension {
|
|||
ProfileName ? ,
|
||||
ExtensionName ? ,
|
||||
Comment ? ,
|
||||
InterfaceElement *
|
||||
(
|
||||
InterfaceElement |
|
||||
element comment { text }
|
||||
) *
|
||||
} |
|
||||
element remove {
|
||||
attribute api { text } ? ,
|
||||
ProfileName ? ,
|
||||
Comment ? ,
|
||||
InterfaceElement *
|
||||
(
|
||||
InterfaceElement |
|
||||
element comment { text }
|
||||
) *
|
||||
}
|
||||
) *
|
||||
}
|
||||
|
|
228
src/spec/vk.xml
228
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
|
||||
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type>
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 61</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 62</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
|
@ -493,10 +493,6 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<member><type>VkOffset2D</type> <name>offset</name></member>
|
||||
<member><type>VkExtent2D</type> <name>extent</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkRect3D">
|
||||
<member><type>VkOffset3D</type> <name>offset</name></member>
|
||||
<member><type>VkExtent3D</type> <name>extent</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkClearRect">
|
||||
<member><type>VkRect2D</type> <name>rect</name></member>
|
||||
<member><type>uint32_t</type> <name>baseArrayLayer</name></member>
|
||||
|
@ -2543,7 +2539,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<member optional="true"><type>uint32_t</type> <name>attachmentInitialSampleLocationsCount</name></member>
|
||||
<member len="attachmentInitialSampleLocationsCount">const <type>VkAttachmentSampleLocationsEXT</type>* <name>pAttachmentInitialSampleLocations</name></member>
|
||||
<member optional="true"><type>uint32_t</type> <name>postSubpassSampleLocationsCount</name></member>
|
||||
<member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pSubpassSampleLocations</name></member>
|
||||
<member len="postSubpassSampleLocationsCount">const <type>VkSubpassSampleLocationsEXT</type>* <name>pPostSubpassSampleLocations</name></member>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineSampleLocationsStateCreateInfoEXT" structextends="VkPipelineMultisampleStateCreateInfo">
|
||||
<member values="VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
|
||||
|
@ -2619,6 +2615,14 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkValidationCacheEXT</type> <name>validationCache</name></member> <!-- Validation cache handle -->
|
||||
</type>
|
||||
<type category="struct" name="VkNativeBufferANDROID">
|
||||
<member values="VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID"><type>VkStructureType</type> <name>sType</name></member>
|
||||
<member>const <type>void</type>* <name>pNext</name></member>
|
||||
<member>const <type>void</type>* <name>handle</name></member>
|
||||
<member><type>int</type> <name>stride</name></member>
|
||||
<member><type>int</type> <name>format</name></member>
|
||||
<member><type>int</type> <name>usage</name></member>
|
||||
</type>
|
||||
</types>
|
||||
|
||||
<comment>Vulkan enumerant (token) definitions</comment>
|
||||
|
@ -5337,7 +5341,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<param optional="true" externsync="true"><type>VkSamplerYcbcrConversionKHR</type> <name>ycbcrConversion</name></param>
|
||||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY">
|
||||
<proto><type>VkResult</type> <name>vkCreateValidationCacheEXT</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param>const <type>VkValidationCacheCreateInfoEXT</type>* <name>pCreateInfo</name></param>
|
||||
|
@ -5364,6 +5368,29 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<param><type>uint32_t</type> <name>srcCacheCount</name></param>
|
||||
<param len="srcCacheCount">const <type>VkValidationCacheEXT</type>* <name>pSrcCaches</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>VkResult</type> <name>vkGetSwapchainGrallocUsageANDROID</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>VkFormat</type> <name>format</name></param>
|
||||
<param><type>VkImageUsageFlags</type> <name>imageUsage</name></param>
|
||||
<param><type>int</type>* <name>grallocUsage</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>VkResult</type> <name>vkAcquireImageANDROID</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>VkImage</type> <name>image</name></param>
|
||||
<param><type>int</type> <name>nativeFenceFd</name></param>
|
||||
<param><type>VkSemaphore</type> <name>semaphore</name></param>
|
||||
<param><type>VkFence</type> <name>fence</name></param>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>VkResult</type> <name>vkQueueSignalReleaseImageANDROID</name></proto>
|
||||
<param><type>VkQueue</type> <name>queue</name></param>
|
||||
<param><type>uint32_t</type> <name>waitSemaphoreCount</name></param>
|
||||
<param>const <type>VkSemaphore</type>* <name>pWaitSemaphores</name></param>
|
||||
<param><type>VkImage</type> <name>image</name></param>
|
||||
<param><type>int</type>* <name>pNativeFenceFd</name></param>
|
||||
</command>
|
||||
</commands>
|
||||
|
||||
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
|
||||
|
@ -5727,9 +5754,14 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</extension>
|
||||
<extension name="VK_ANDROID_native_buffer" number="11" supported="disabled">
|
||||
<require>
|
||||
<enum value="4" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
|
||||
<enum value="5" name="VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION"/>
|
||||
<enum value="11" name="VK_ANDROID_NATIVE_BUFFER_NUMBER"/>
|
||||
<enum value=""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>
|
||||
</extension>
|
||||
<extension name="VK_EXT_debug_report" number="12" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
|
||||
|
@ -5981,10 +6013,10 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<enum value=""VK_AMD_extension_46"" name="VK_AMD_EXTENSION_46_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_47" number="47" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
|
||||
<extension name="VK_AMD_shader_image_load_store_lod" number="47" author="AMD" contact="Dominik Witczak @dominikwitczak_amd" supported="vulkan" type="device">
|
||||
<require>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_47_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_extension_47"" name="VK_AMD_EXTENSION_47_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_shader_image_load_store_lod"" name="VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NVX_extension_48" number="48" author="NVX" contact="James Jones @cubanismo" supported="disabled">
|
||||
|
@ -7153,69 +7185,69 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
</extension>
|
||||
<extension name="VK_KHR_sampler_ycbcr_conversion" number="157" type="device" requires="VK_KHR_maintenance1,VK_KHR_bind_memory2,VK_KHR_get_memory_requirements2,VK_KHR_get_physical_device_properties2" author="KHR" contact="Andrew Garrard @fluppeteer" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_sampler_ycbcr_conversion"" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"/>
|
||||
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"/>
|
||||
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"/>
|
||||
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"/>
|
||||
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"/>
|
||||
<enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"/>
|
||||
<enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"/>
|
||||
<enum offset="0" extends="VkFormat" name="VK_FORMAT_G8B8G8R8_422_UNORM_KHR"/>
|
||||
<enum offset="1" extends="VkFormat" name="VK_FORMAT_B8G8R8G8_422_UNORM_KHR"/>
|
||||
<enum offset="2" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="3" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="4" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="5" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="6" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR"/>
|
||||
<enum offset="7" extends="VkFormat" name="VK_FORMAT_R10X6_UNORM_PACK16_KHR"/>
|
||||
<enum offset="8" extends="VkFormat" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR"/>
|
||||
<enum offset="9" extends="VkFormat" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="10" extends="VkFormat" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="11" extends="VkFormat" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="12" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="13" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="14" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="15" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="16" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="17" extends="VkFormat" name="VK_FORMAT_R12X4_UNORM_PACK16_KHR"/>
|
||||
<enum offset="18" extends="VkFormat" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR"/>
|
||||
<enum offset="19" extends="VkFormat" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="20" extends="VkFormat" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="21" extends="VkFormat" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="22" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="23" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="24" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="25" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="26" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="27" extends="VkFormat" name="VK_FORMAT_G16B16G16R16_422_UNORM_KHR"/>
|
||||
<enum offset="28" extends="VkFormat" name="VK_FORMAT_B16G16R16G16_422_UNORM_KHR"/>
|
||||
<enum offset="29" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="30" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="31" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="32" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="33" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR"/>
|
||||
<enum bitpos="4" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"/>
|
||||
<enum bitpos="5" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"/>
|
||||
<enum bitpos="6" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"/>
|
||||
<enum bitpos="9" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT_KHR"/>
|
||||
<enum bitpos="17" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" comment="Format can have midpoint rather than cosited chroma samples"/>
|
||||
<enum bitpos="18" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" comment="Format can be used with linear filtering whilst color conversion is enabled"/>
|
||||
<enum bitpos="19" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" comment="Format can have different chroma, min and mag filters"/>
|
||||
<enum bitpos="20" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"/>
|
||||
<enum bitpos="21" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"/>
|
||||
<enum bitpos="22" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT_KHR" comment="Format supports disjoint planes"/>
|
||||
<enum bitpos="23" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR" comment="Format can have cosited rather than midpoint chroma samples"/>
|
||||
<type name="VkSamplerYcbcrConversionCreateInfoKHR"/>
|
||||
<type name="VkSamplerYcbcrConversionInfoKHR"/>
|
||||
<type name="VkBindImagePlaneMemoryInfoKHR"/>
|
||||
<type name="VkImagePlaneMemoryRequirementsInfoKHR"/>
|
||||
<type name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"/>
|
||||
<type name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"/>
|
||||
<command name="vkCreateSamplerYcbcrConversionKHR"/>
|
||||
<command name="vkDestroySamplerYcbcrConversionKHR"/>
|
||||
<enum value="1" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION"/>
|
||||
<enum value=""VK_KHR_sampler_ycbcr_conversion"" name="VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME"/>
|
||||
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"/>
|
||||
<enum offset="1" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"/>
|
||||
<enum offset="2" extends="VkStructureType" name="VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"/>
|
||||
<enum offset="3" extends="VkStructureType" name="VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"/>
|
||||
<enum offset="4" extends="VkStructureType" name="VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"/>
|
||||
<enum offset="5" extends="VkStructureType" name="VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"/>
|
||||
<enum offset="0" extends="VkDebugReportObjectTypeEXT" name="VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"/>
|
||||
<enum offset="0" extends="VkObjectType" name="VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"/>
|
||||
<enum offset="0" extends="VkFormat" name="VK_FORMAT_G8B8G8R8_422_UNORM_KHR"/>
|
||||
<enum offset="1" extends="VkFormat" name="VK_FORMAT_B8G8R8G8_422_UNORM_KHR"/>
|
||||
<enum offset="2" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="3" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="4" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="5" extends="VkFormat" name="VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="6" extends="VkFormat" name="VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR"/>
|
||||
<enum offset="7" extends="VkFormat" name="VK_FORMAT_R10X6_UNORM_PACK16_KHR"/>
|
||||
<enum offset="8" extends="VkFormat" name="VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR"/>
|
||||
<enum offset="9" extends="VkFormat" name="VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="10" extends="VkFormat" name="VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="11" extends="VkFormat" name="VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="12" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="13" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="14" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="15" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="16" extends="VkFormat" name="VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="17" extends="VkFormat" name="VK_FORMAT_R12X4_UNORM_PACK16_KHR"/>
|
||||
<enum offset="18" extends="VkFormat" name="VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR"/>
|
||||
<enum offset="19" extends="VkFormat" name="VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="20" extends="VkFormat" name="VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="21" extends="VkFormat" name="VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR"/>
|
||||
<enum offset="22" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="23" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="24" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="25" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="26" extends="VkFormat" name="VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR"/>
|
||||
<enum offset="27" extends="VkFormat" name="VK_FORMAT_G16B16G16R16_422_UNORM_KHR"/>
|
||||
<enum offset="28" extends="VkFormat" name="VK_FORMAT_B16G16R16G16_422_UNORM_KHR"/>
|
||||
<enum offset="29" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="30" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR"/>
|
||||
<enum offset="31" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="32" extends="VkFormat" name="VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR"/>
|
||||
<enum offset="33" extends="VkFormat" name="VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR"/>
|
||||
<enum bitpos="4" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"/>
|
||||
<enum bitpos="5" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"/>
|
||||
<enum bitpos="6" extends="VkImageAspectFlagBits" name="VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"/>
|
||||
<enum bitpos="9" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_DISJOINT_BIT_KHR"/>
|
||||
<enum bitpos="17" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR" comment="Format can have midpoint rather than cosited chroma samples"/>
|
||||
<enum bitpos="18" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR" comment="Format can be used with linear filtering whilst color conversion is enabled"/>
|
||||
<enum bitpos="19" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR" comment="Format can have different chroma, min and mag filters"/>
|
||||
<enum bitpos="20" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"/>
|
||||
<enum bitpos="21" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"/>
|
||||
<enum bitpos="22" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_DISJOINT_BIT_KHR" comment="Format supports disjoint planes"/>
|
||||
<enum bitpos="23" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR" comment="Format can have cosited rather than midpoint chroma samples"/>
|
||||
<type name="VkSamplerYcbcrConversionCreateInfoKHR"/>
|
||||
<type name="VkSamplerYcbcrConversionInfoKHR"/>
|
||||
<type name="VkBindImagePlaneMemoryInfoKHR"/>
|
||||
<type name="VkImagePlaneMemoryRequirementsInfoKHR"/>
|
||||
<type name="VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"/>
|
||||
<type name="VkSamplerYcbcrConversionImageFormatPropertiesKHR"/>
|
||||
<command name="vkCreateSamplerYcbcrConversionKHR"/>
|
||||
<command name="vkDestroySamplerYcbcrConversionKHR"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_KHR_bind_memory2" number="158" type="device" author="KHR" contact="Tobias Hector @tobias" supported="vulkan">
|
||||
|
@ -7315,5 +7347,53 @@ private version is maintained in the 1.0 branch of the member gitlab server.
|
|||
<enum value=""VK_EXT_extension_170"" name="VK_EXT_EXTENSION_170_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_QCOM_extension_171" number="171" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_QCOM_extension_171_SPEC_VERSION"/>
|
||||
<enum value=""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>
|
||||
</registry>
|
||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
|||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 61
|
||||
#define VK_HEADER_VERSION 62
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
@ -5486,6 +5486,11 @@ typedef struct VkTextureLODGatherFormatPropertiesAMD {
|
|||
|
||||
|
||||
|
||||
#define VK_AMD_shader_image_load_store_lod 1
|
||||
#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
|
||||
#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
|
||||
|
||||
|
||||
#define VK_KHX_multiview 1
|
||||
#define VK_KHX_MULTIVIEW_SPEC_VERSION 1
|
||||
#define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
|
||||
|
@ -6647,7 +6652,7 @@ typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
|
|||
uint32_t attachmentInitialSampleLocationsCount;
|
||||
const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
|
||||
uint32_t postSubpassSampleLocationsCount;
|
||||
const VkSubpassSampleLocationsEXT* pSubpassSampleLocations;
|
||||
const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations;
|
||||
} VkRenderPassSampleLocationsBeginInfoEXT;
|
||||
|
||||
typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
|
||||
|
|
|
@ -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