Change log for May 16, 2018 Vulkan 1.1.75 spec update:
* Update release number to 75. Github Issues: * Use Github handles (e.g. @handle) for contact information in vk.xml, when available (partial fix for public issue 630). * Add size invariance guarantee to slink:VkMemoryRequirements for buffer/image memory requirements (public issue 661). * Correct scope (conditional constructs) in valid usage statement for slink:VkBindImageMemoryInfo (public pull request 684). * Clean up minor markup issues and typos in the `VK_ANDROID_external_memory_android_hardware_buffer` extension appendix (public pull request 698). * Modify registry processing script to avoid irrelevant warnings of benign enumerant redefinitions (public pull request 705). * Fix some duplicate words and some misspelled "`stagess`" (public pull request 712) Internal Issues: * Enable continuous integration tests on the internal Khronos gitlab server by adding a .gitlab-ci.yml file. Note: this does not implement CI on the public Github repository (internal issue 408). * Add link from description of depth clamping in the <<fragops-depth, depth test>> section to the slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable parameter which enables it, making it easily searchable / findable (internal issue 1125). * Clarify that arrays of arrays of descriptors are not allowed in the <<interfaces-resources-descset, Descriptor Set Interface>> and <<interfaces-resources-setandbinding, DescriptorSet and Binding Assignment>> sections (internal issue 1192). * Comment out some redundant nested asciidoctor conditionals in the slink:VkImageViewCreateInfo valid usage block, and explain in all cases why the redundant conditional exist and are commented out (internal issue 1231). * Move a valid usage statement from slink:VkCommandPoolCreateInfo to the parent flink:vkCreateCommandPool, where the device queue is known (internal issue 1233). * Add new slink:VkBaseInStructure and slink:VkBaseOutStructure types which can be used by extensions and implementations for handling Vulkan sType/pNext style structures in a more generic way (internal issue 1265). * Clarify that slink:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures only applies to external-format images. Add references to this in valid usage statements that previously only referred to slink:VkFormatProperties (internal issue 1244). * Fix the description of elink:VkPipelineCreateFlagBits enumerant ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT to match the name (internal issue 1279). * Add a NOTE to the <<interfaces-resources-setandbinding, DescriptorSet and Binding Assignment>> section making it clear that variables sharing a storage class may use identical descriptor set and bindings. Specifically state the sometimes misunderstood ability to have one or more differently typed image descriptors sharing a descriptor set and binding (internal SPIR-V issue 264). * Make DynamicIndexing features and capabilities also control the uniformity of the descriptor used in memory access instructions in the <<interfaces-resources-descset, Descriptor Set Interface>> section. This makes them also apply to variable_pointer usage, which can bypass the array indexing operation (internal SPIR-V issue 289). Other Issues: * Correct flink:vkCmdBlitImage limitations on cubic blits to be 2D only, not 3D. * Update valid usage statements for slink:VkRenderPassCreateInfo and slink:VkInputAttachmentAspectReference. * Move YCbCr-related VU statements from slink:VkDescriptorImageInfo to slink:VkWriteDescriptorSet, where all needed information is known, and remove redundant statements. * Move SPIR-V restriction that images be of either sampled or storage types from the <<interfaces-resources-descset, Descriptor Set Interface>> section to the <<spirvenv-module-validation, Validation Rules within a Module>> section of the SPIR-V appendix.
This commit is contained in:
parent
1e650ddd09
commit
e665b9e691
|
@ -0,0 +1,98 @@
|
|||
# Gitlab CI file for vulkan spec and header generation
|
||||
|
||||
# Build the vulkan specification and generate any associated files (such as vulkan.h)
|
||||
spec-generate:
|
||||
stage: build
|
||||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq gcc git python3 ruby
|
||||
- apt-get install -y -qq cmake bison flex libffi-dev libxml2-dev libgdk-pixbuf2.0-dev libcairo2-dev libpango1.0-dev ttf-lyx
|
||||
- gem install asciidoctor asciidoctor-mathematical coderay json-schema
|
||||
script:
|
||||
- ./makeAllExts -j${nproc} -Otarget html styleguide registry manhtml manhtmlpages checkinc checklinks validusage
|
||||
artifacts:
|
||||
paths:
|
||||
- include/
|
||||
- src/
|
||||
- out/
|
||||
expire_in: 1 month
|
||||
|
||||
# Generate the vulkan C++ header (vulkan.hpp)
|
||||
hpp-generate:
|
||||
stage: build
|
||||
image: ubuntu:16.04
|
||||
before_script:
|
||||
- SPEC_DIR="${PWD}"
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq cmake git g++
|
||||
- cd /tmp
|
||||
- rm -rf Vulkan-Hpp
|
||||
- git clone https://github.com/KhronosGroup/Vulkan-Hpp.git
|
||||
- cd Vulkan-Hpp
|
||||
- git submodule update --init --recursive -- tinyxml2
|
||||
- rm -rf Vulkan-Docs
|
||||
- cp -r "${SPEC_DIR}" Vulkan-Docs
|
||||
script:
|
||||
- cd /tmp/Vulkan-Hpp
|
||||
- cmake -H. -Bbuild
|
||||
- make -C build
|
||||
- cd build
|
||||
- ./VulkanHppGenerator
|
||||
after_script:
|
||||
- mkdir -p Vulkan-Hpp/vulkan/
|
||||
- cp /tmp/Vulkan-Hpp/vulkan/vulkan.hpp Vulkan-Hpp/vulkan/
|
||||
artifacts:
|
||||
paths:
|
||||
- Vulkan-Hpp/vulkan/
|
||||
expire_in: 1 month
|
||||
allow_failure: true
|
||||
|
||||
# Compile a simple test program that uses vulkan.h
|
||||
h-compile:
|
||||
stage: test
|
||||
dependencies:
|
||||
- spec-generate
|
||||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq gcc clang
|
||||
- echo "#include <vulkan/vulkan.h>" > /tmp/htest.c
|
||||
- echo "int main()" >> /tmp/htest.c
|
||||
- echo "{" >> /tmp/htest.c
|
||||
- echo " const VkInstanceCreateInfo instance_info = {" >> /tmp/htest.c
|
||||
- echo " .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO," >> /tmp/htest.c
|
||||
- echo " .pNext = NULL," >> /tmp/htest.c
|
||||
- echo " .flags = 0," >> /tmp/htest.c
|
||||
- echo " .pApplicationInfo = NULL," >> /tmp/htest.c
|
||||
- echo " .enabledLayerCount = 0," >> /tmp/htest.c
|
||||
- echo " .ppEnabledLayerNames = NULL," >> /tmp/htest.c
|
||||
- echo " .enabledExtensionCount = 0," >> /tmp/htest.c
|
||||
- echo " .ppEnabledExtensionNames = NULL," >> /tmp/htest.c
|
||||
- echo " };" >> /tmp/htest.c
|
||||
- echo " VkInstance instance;" >> /tmp/htest.c
|
||||
- echo " vkCreateInstance(&instance_info, NULL, &instance);" >> /tmp/htest.c
|
||||
- echo " vkDestroyInstance(instance, NULL);" >>/tmp/htest.c
|
||||
- echo "}" >> /tmp/htest.c
|
||||
script:
|
||||
- gcc -c -std=c11 -Iinclude -Wall -Wextra -Werror /tmp/htest.c
|
||||
- clang -c -std=c11 -Iinclude -Wall -Wextra -Werror /tmp/htest.c
|
||||
|
||||
# Compile a simple test program that uses vulkan.hpp
|
||||
hpp-compile:
|
||||
stage: test
|
||||
dependencies:
|
||||
- spec-generate
|
||||
- hpp-generate
|
||||
before_script:
|
||||
- apt-get update -qq
|
||||
- apt-get install -y -qq g++ clang
|
||||
- echo "#include <vulkan/vulkan.hpp>" > /tmp/hpptest.cpp
|
||||
- echo "int main()" >> /tmp/hpptest.cpp
|
||||
- echo "{" >> /tmp/hpptest.cpp
|
||||
- echo " auto const instance_info = vk::InstanceCreateInfo();" >> /tmp/hpptest.cpp
|
||||
- echo " vk::Instance instance;" >> /tmp/hpptest.cpp
|
||||
- echo " vk::createInstance(&instance_info, nullptr, &instance);" >> /tmp/hpptest.cpp
|
||||
- echo "}" >> /tmp/hpptest.cpp
|
||||
script:
|
||||
- g++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror /tmp/hpptest.cpp
|
||||
- clang++ -c -std=c++11 -Iinclude -IVulkan-Hpp -Wall -Wextra -Werror /tmp/hpptest.cpp
|
||||
allow_failure: true
|
2
Makefile
2
Makefile
|
@ -106,7 +106,7 @@ VERBOSE =
|
|||
# $(EXTENSIONS))
|
||||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
PATCHVERSION = 74
|
||||
PATCHVERSION = 75
|
||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||
else
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
include::meta/VK_ANDROID_external_memory_android_hardware_buffer.txt[]
|
||||
|
||||
*Status*::
|
||||
Draft
|
||||
*Last Modified Date*::
|
||||
2018-03-04
|
||||
*IP Status*::
|
||||
|
@ -14,19 +16,19 @@ include::meta/VK_ANDROID_external_memory_android_hardware_buffer.txt[]
|
|||
- Matthew Netsch, Qualcomm
|
||||
- Andrew Garrard, Samsung
|
||||
|
||||
This extension enables an application to import Android code:AHardwareBuffer
|
||||
This extension enables an application to import Android AHardwareBuffer
|
||||
objects created outside of the Vulkan device into Vulkan memory objects,
|
||||
where they can be bound to images and buffers.
|
||||
It also allows exporting an code:AHardwareBuffer from a Vulkan memory object
|
||||
It also allows exporting an +AHardwareBuffer+ from a Vulkan memory object
|
||||
for symmetry with other operating systems.
|
||||
But since not all code:AHardwareBuffer usages and formats have Vulkan
|
||||
But since not all +AHardwareBuffer+ usages and formats have Vulkan
|
||||
equivalents, exporting from Vulkan provides strictly less functionality than
|
||||
creating the code:AHardwareBuffer externally and importing it.
|
||||
creating the +AHardwareBuffer+ externally and importing it.
|
||||
|
||||
Some code:AHardwareBuffer images have implementation-defined _external
|
||||
formats_ that may not correspond to Vulkan formats.
|
||||
Some AHardwareBuffer images have implementation-defined _external formats_
|
||||
that may not correspond to Vulkan formats.
|
||||
Sampler Y'C~b~C~r~ conversion can be used to sample from these images and
|
||||
convert them to a known color space.
|
||||
convert them to a known colorspace.
|
||||
|
||||
=== New Object Types
|
||||
|
||||
|
|
|
@ -392,9 +392,11 @@ endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
|
|||
type for the "`Sampled Type`".
|
||||
(code:RelaxedPrecision can: be applied to a sampling instruction and to
|
||||
the variable holding the result of a sampling instruction.)
|
||||
** code:OpSampledImage, code:OpImageQuerySizeLod, and
|
||||
code:OpImageQueryLevels must: only consume an "`Image`" operand whose
|
||||
type has its "`Sampled`" operand set to 1.
|
||||
** code:OpTypeImage must: have a "`Sampled`" operand of 1 (sampled image)
|
||||
or 2 (storage image).
|
||||
** code:OpImageQuerySizeLod, and code:OpImageQueryLevels must: only
|
||||
consume an "`Image`" operand whose type has its "`Sampled`" operand set
|
||||
to 1.
|
||||
** The [eq]#(u,v)# coordinates used for a code:SubpassData must: be the
|
||||
<id> of a constant vector [eq]#(0,0)#, or if a layer coordinate is
|
||||
used, must: be a vector that was formed with constant 0 for the [eq]#u#
|
||||
|
|
|
@ -48,15 +48,29 @@ pname:pColor.
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* [[VUID-vkCmdClearColorImage-image-00001]]
|
||||
pname:image must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdClearColorImage-image-01935]]
|
||||
pname:image must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdClearColorImage-image-00002]]
|
||||
pname:image must: have been created with
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
|
@ -152,15 +166,29 @@ include::../api/protos/vkCmdClearDepthStencilImage.txt[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* [[VUID-vkCmdClearDepthStencilImage-image-00008]]
|
||||
pname:image must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdClearDepthStencilImage-image-01936]]
|
||||
pname:image must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdClearDepthStencilImage-image-00009]]
|
||||
pname:image must: have been created with
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
|
|
|
@ -158,12 +158,21 @@ To create a command pool, call:
|
|||
include::../api/protos/vkCreateCommandPool.txt[]
|
||||
|
||||
* pname:device is the logical device that creates the command pool.
|
||||
* pname:pCreateInfo contains information used to create the command pool.
|
||||
* pname:pCreateInfo is a pointer to an instance of the
|
||||
slink:VkCommandPoolCreateInfo structure specifying the state of the
|
||||
command pool object.
|
||||
* pname:pAllocator controls host memory allocation as described in the
|
||||
<<memory-allocation, Memory Allocation>> chapter.
|
||||
* pname:pCommandPool points to a sname:VkCommandPool handle in which the
|
||||
created pool is returned.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-vkCreateCommandPool-queueFamilyIndex-01937]]
|
||||
sname:pCreateInfo::pname:queueFamilyIndex must: be the index of a queue
|
||||
family available in the logical device pname:device.
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCreateCommandPool.txt[]
|
||||
--
|
||||
|
||||
|
@ -183,13 +192,6 @@ include::../api/structs/VkCommandPoolCreateInfo.txt[]
|
|||
All command buffers allocated from this command pool must: be submitted
|
||||
on queues from the same queue family.
|
||||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkCommandPoolCreateInfo-queueFamilyIndex-00039]]
|
||||
pname:queueFamilyIndex must: be the index of a queue family available in
|
||||
the calling command's pname:device parameter
|
||||
****
|
||||
|
||||
include::../validity/structs/VkCommandPoolCreateInfo.txt[]
|
||||
--
|
||||
|
||||
|
|
|
@ -47,16 +47,26 @@ endif::VK_KHR_shared_presentable_image[]
|
|||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* Source images must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
flink:vkGetPhysicalDeviceFormatProperties.
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
* Destination images must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
flink:vkGetPhysicalDeviceFormatProperties.
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* Source images must: have been created with the
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled and destination
|
||||
|
@ -335,15 +345,29 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
The union of all source regions, and the union of all destination
|
||||
regions, specified by the elements of pname:pRegions, must: not overlap
|
||||
in memory
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* [[VUID-vkCmdCopyImage-srcImage-00125]]
|
||||
pname:srcImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
flink:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyImage-srcImage-01938]]
|
||||
pname:srcImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyImage-srcImage-00126]]
|
||||
pname:srcImage must: have been created with
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
|
@ -374,15 +398,29 @@ ifdef::VK_KHR_shared_presentable_image[]
|
|||
ename:VK_IMAGE_LAYOUT_GENERAL, or
|
||||
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* [[VUID-vkCmdCopyImage-dstImage-00130]]
|
||||
pname:dstImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
flink:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyImage-dstImage-01939]]
|
||||
pname:dstImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyImage-dstImage-00131]]
|
||||
pname:dstImage must: have been created with
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
|
@ -723,7 +761,7 @@ ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
||||
// VU extractor and validation layers can handle VU with imbedded
|
||||
// conditionals.
|
||||
// conditionals. They are commented out until then.
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageCopy-srcImage-01727]]
|
||||
If the calling command's pname:srcImage is a compressed image,
|
||||
|
@ -886,15 +924,29 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
* [[VUID-vkCmdCopyBufferToImage-srcBuffer-00174]]
|
||||
pname:srcBuffer must: have been created with
|
||||
ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* [[VUID-vkCmdCopyBufferToImage-dstImage-00175]]
|
||||
pname:dstImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
flink:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyBufferToImage-dstImage-01940]]
|
||||
pname:dstImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyBufferToImage-srcBuffer-00176]]
|
||||
If pname:srcBuffer is non-sparse then it must: be bound completely and
|
||||
contiguously to a single sname:VkDeviceMemory object
|
||||
|
@ -944,10 +996,10 @@ endif::VK_VERSION_1_1[]
|
|||
must: be less than or equal to the pname:arrayLayers specified in
|
||||
slink:VkImageCreateInfo when pname:dstImage was created
|
||||
* [[VUID-vkCmdCopyBufferToImage-imageOffset-01793]]
|
||||
The pname:imageOffset and pname:imageExtent members of each element
|
||||
of pname:pRegions must: respect the image transfer granularity
|
||||
requirements of pname:commandBuffer's command pool's queue family, as
|
||||
described in slink:VkQueueFamilyProperties
|
||||
The pname:imageOffset and pname:imageExtent members of each element of
|
||||
pname:pRegions must: respect the image transfer granularity requirements
|
||||
of pname:commandBuffer's command pool's queue family, as described in
|
||||
slink:VkQueueFamilyProperties
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdCopyBufferToImage.txt[]
|
||||
|
@ -1010,15 +1062,29 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
The union of all source regions, and the union of all destination
|
||||
regions, specified by the elements of pname:pRegions, must: not overlap
|
||||
in memory
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
* [[VUID-vkCmdCopyImageToBuffer-srcImage-00185]]
|
||||
pname:srcImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
flink:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyImageToBuffer-srcImage-01941]]
|
||||
pname:srcImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdCopyImageToBuffer-srcImage-00186]]
|
||||
pname:srcImage must: have been created with
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
|
@ -1070,10 +1136,10 @@ endif::VK_VERSION_1_1[]
|
|||
must: be less than or equal to the pname:arrayLayers specified in
|
||||
slink:VkImageCreateInfo when pname:srcImage was created
|
||||
* [[VUID-vkCmdCopyImageToBuffer-imageOffset-01794]]
|
||||
The pname:imageOffset and pname:imageExtent members of each element
|
||||
of pname:pRegions must: respect the image transfer granularity
|
||||
requirements of pname:commandBuffer's command pool's queue family, as
|
||||
described in slink:VkQueueFamilyProperties
|
||||
The pname:imageOffset and pname:imageExtent members of each element of
|
||||
pname:pRegions must: respect the image transfer granularity requirements
|
||||
of pname:commandBuffer's command pool's queue family, as described in
|
||||
slink:VkQueueFamilyProperties
|
||||
****
|
||||
|
||||
include::../validity/protos/vkCmdCopyImageToBuffer.txt[]
|
||||
|
@ -1242,7 +1308,7 @@ ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
||||
// VU extractor and validation layers can handle VU with imbedded
|
||||
// conditionals.
|
||||
// conditionals. They are commented out until then.
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkBufferImageCopy-None-01735]]
|
||||
If the calling command's sname:VkImage parameter is a compressed image,
|
||||
|
@ -1530,13 +1596,27 @@ representable range of the destination format, then casting the value.
|
|||
The union of all destination regions, specified by the elements of
|
||||
pname:pRegions, must: not overlap in memory with any texel that may: be
|
||||
sampled during the blit operation
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-srcImage-00218]]
|
||||
pname:srcImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-srcImage-01942]]
|
||||
pname:srcImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdBlitImage-srcImage-01561]]
|
||||
pname:srcImage must: not use a format listed in
|
||||
|
@ -1563,13 +1643,27 @@ ifdef::VK_KHR_shared_presentable_image[]
|
|||
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
endif::VK_KHR_shared_presentable_image[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-dstImage-00223]]
|
||||
pname:dstImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for linearly tiled
|
||||
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
|
||||
optimally tiled images) - as returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-dstImage-01943]]
|
||||
pname:dstImage must: use a format that supports
|
||||
ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT, which is indicated by
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-vkCmdBlitImage-dstImage-01562]]
|
||||
pname:dstImage must: not use a format listed in
|
||||
|
@ -1619,26 +1713,56 @@ endif::VK_KHR_shared_presentable_image[]
|
|||
* [[VUID-vkCmdBlitImage-dstImage-00234]]
|
||||
pname:dstImage must: have been created with a pname:samples value of
|
||||
ename:VK_SAMPLE_COUNT_1_BIT
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-filter-00235]]
|
||||
If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a
|
||||
format which supports linear filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-filter-01944]]
|
||||
If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a
|
||||
format which supports linear filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-filter-00236]]
|
||||
If pname:filter is ename:VK_FILTER_CUBIC_IMG, pname:srcImage must: be of
|
||||
a format which supports cubic filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-filter-01945]]
|
||||
If pname:filter is ename:VK_FILTER_CUBIC_IMG, pname:srcImage must: be of
|
||||
a format which supports cubic filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdBlitImage-filter-00237]]
|
||||
If pname:filter is ename:VK_FILTER_CUBIC_IMG, pname:srcImage must: have
|
||||
a elink:VkImageType of ename:VK_IMAGE_TYPE_3D
|
||||
a elink:VkImageType of ename:VK_IMAGE_TYPE_2D
|
||||
endif::VK_IMG_filter_cubic[]
|
||||
ifdef::VK_VERSION_1_1[]
|
||||
* [[VUID-vkCmdBlitImage-commandBuffer-01834]]
|
||||
|
|
|
@ -1156,8 +1156,8 @@ ifndef::VK_EXT_descriptor_indexing[]
|
|||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER accessible across all shader
|
||||
stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetUniformBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679]]
|
||||
The total number of descriptors of the type
|
||||
|
@ -1316,8 +1316,8 @@ ifdef::VK_EXT_descriptor_indexing[]
|
|||
ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT bit
|
||||
set with a pname:descriptorType of
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER accessible across all shader
|
||||
stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceLimits::pname:maxDescriptorSetUniformBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-descriptorType-03030]]
|
||||
The total number of descriptors in descriptor set layouts created
|
||||
|
@ -1386,8 +1386,8 @@ ifdef::VK_EXT_descriptor_indexing[]
|
|||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037]]
|
||||
The total number of descriptors of the type
|
||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER accessible across all shader
|
||||
stages and across all elements of pname:pSetLayouts must: be less
|
||||
than or equal to
|
||||
stages and across all elements of pname:pSetLayouts must: be less than
|
||||
or equal to
|
||||
sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT::pname:maxDescriptorSetUpdateAfterBindUniformBuffers
|
||||
* [[VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038]]
|
||||
The total number of descriptors of the type
|
||||
|
@ -2351,6 +2351,31 @@ bindings as needed to update all pname:descriptorCount descriptors.
|
|||
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the pname:imageView and
|
||||
pname:imageLayout members of each element of pname:pImageInfo must: be a
|
||||
valid sname:VkImageView and elink:VkImageLayout, respectively
|
||||
ifdef::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01946]]
|
||||
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, then
|
||||
the pname:imageView member of each pname:pImageInfo element must: have
|
||||
been created without a sname:VkSamplerYcbcrConversionInfo structure in
|
||||
its pname:pNext chain
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01947]]
|
||||
If pname:descriptorType is
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and if any element of
|
||||
pname:pImageInfo has a pname:imageView member that was created with a
|
||||
sname:VkSamplerYcbcrConversionInfo structure in its pname:pNext chain,
|
||||
then pname:dstSet must: have been allocated with a layout that included
|
||||
immutable samplers for pname:dstBinding
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01948]]
|
||||
If pname:descriptorType is
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and pname:dstSet was
|
||||
allocated with a layout that included immutable samplers for
|
||||
pname:dstBinding, then the pname:imageView member of each element of
|
||||
pname:pImageInfo which corresponds to a immutable sampler that enables
|
||||
<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> must: have
|
||||
been created with a sname:VkSamplerYcbcrConversionInfo structure in its
|
||||
pname:pNext chain with an _identically defined_
|
||||
sname:VkSamplerYcbcrConversionInfo to the corresponding immutable
|
||||
sampler
|
||||
endif::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[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
|
||||
|
@ -2589,30 +2614,8 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
|||
subresource accessible from pname:imageView at the time this descriptor
|
||||
is accessed
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[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
|
||||
** The pname:aspectMask of the pname:imageView must: be
|
||||
ename:VK_IMAGE_ASPECT_COLOR_BIT
|
||||
** The pname:components.a of the pname:imageView must: be
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
** The pname:components.r of the pname:imageView must: be
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
** The pname:components.g of the pname:imageView must: be
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
** The pname:components.b of the pname:imageView must: be
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
** The pname:pNext chain of the pname:imageView must: contain a
|
||||
sname:VkSamplerYcbcrConversionInfo which has a pname:conversion which
|
||||
is an _identically defined object_ to the pname:conversion of the
|
||||
sname:VkSamplerYcbcrConversionInfo which is in the pname:pNext chain
|
||||
of the pname:sampler
|
||||
* [[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
|
||||
If pname:sampler is used and the elink:VkFormat of the image is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
|
||||
format>>, the image must: have been created with
|
||||
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, and the pname:aspectMask of
|
||||
|
@ -3229,8 +3232,8 @@ endif::VK_EXT_descriptor_indexing[]
|
|||
|
||||
Thus, the contents of a descriptor set binding must: not be altered
|
||||
(overwritten by an update command, or freed) between the first point in time
|
||||
that it may: be consumed, and when the command completes executing on
|
||||
the queue.
|
||||
that it may: be consumed, and when the command completes executing on the
|
||||
queue.
|
||||
|
||||
The contents of pname:pDynamicOffsets are consumed immediately during
|
||||
execution of fname:vkCmdBindDescriptorSets.
|
||||
|
|
|
@ -99,25 +99,57 @@ is assembled.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatch-linearTilingFeatures-00398]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatch-formatFeatures-01949]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatch-linearTilingFeatures-00399]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatch-formatFeatures-01950]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatch-None-00400]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
|
@ -235,25 +267,57 @@ at pname:offset.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatchIndirect-linearTilingFeatures-00414]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatchIndirect-formatFeatures-01951]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatchIndirect-linearTilingFeatures-00415]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatchIndirect-formatFeatures-01952]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDispatchIndirect-None-00416]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
|
|
|
@ -591,28 +591,60 @@ The assembled primitives execute the bound graphics pipeline.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDraw-linearTilingFeatures-00450]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDraw-formatFeatures-01953]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDraw-None-01499]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDraw-linearTilingFeatures-00451]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDraw-formatFeatures-01954]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDraw-None-00452]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
|
@ -785,28 +817,60 @@ The assembled primitives execute the bound graphics pipeline.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexed-linearTilingFeatures-00470]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexed-formatFeatures-01955]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexed-None-01500]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexed-linearTilingFeatures-00471]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexed-formatFeatures-01956]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexed-None-00472]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
|
@ -988,28 +1052,60 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirect-linearTilingFeatures-00496]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirect-formatFeatures-01957]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirect-None-01501]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirect-linearTilingFeatures-00497]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirect-formatFeatures-01958]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirect-None-00498]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
|
@ -1236,15 +1332,31 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-linearTilingFeatures-00524]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-formatFeatures-01959]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndirectCountAMD-None-01502]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
|
@ -1426,28 +1538,60 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-linearTilingFeatures-00548]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-formatFeatures-01960]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-01503]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
ifdef::VK_IMG_filter_cubic[]
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-linearTilingFeatures-00549]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-formatFeatures-01961]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: be of a format which supports cubic
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirect-None-00550]]
|
||||
Any slink:VkImageView being sampled with ename:VK_FILTER_CUBIC_IMG as a
|
||||
result of this command must: not have a elink:VkImageViewType of
|
||||
|
@ -1682,15 +1826,31 @@ located at pname:countBufferOffset and use this as the draw count.
|
|||
object bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage
|
||||
buffer, it must: not access values outside of the range of that buffer
|
||||
specified in the bound descriptor set
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-linearTilingFeatures-00577]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures (for a linear
|
||||
image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an
|
||||
optimally tiled image) returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for linearly or optimally
|
||||
tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-formatFeatures-01962]]
|
||||
Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a
|
||||
result of this command must: be of a format which supports linear
|
||||
filtering, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
|
||||
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external
|
||||
format images, or by
|
||||
sname:VkFormatProperties::pname:linearTilingFeatures or
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties for non-external format
|
||||
linearly or optimally tiled images, respectively
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkCmdDrawIndexedIndirectCountAMD-None-01504]]
|
||||
Image subresources used as attachments in the current render pass must:
|
||||
not be accessed in any way other than as an attachment by this command.
|
||||
|
|
|
@ -6814,7 +6814,7 @@ usages or flags are requested.
|
|||
Requiring at least one GPU usage flag ensures that Android hardware buffer
|
||||
memory will be allocated in a memory pool accessible to the Vulkan
|
||||
implementation, and that specializing the memory layout based on usage flags
|
||||
does not prevent it from being compatible with Vulkan.
|
||||
doesn't prevent it from being compatible with Vulkan.
|
||||
Implementations may: avoid unnecessary restrictions caused by this
|
||||
requirement by using vendor usage flags to indicate that only the Vulkan
|
||||
uses indicated in slink:VkImageFormatProperties2 are required.
|
||||
|
|
|
@ -879,7 +879,7 @@ The depth test passes under the following conditions:
|
|||
{geq} z~a~#.
|
||||
* ename:VK_COMPARE_OP_ALWAYS: the test always passes.
|
||||
|
||||
If depth clamping (see <<vertexpostproc-clipping,Primitive Clipping>>) is
|
||||
If slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable is
|
||||
enabled, before the incoming fragment's [eq]#pname:z~f~# is compared to
|
||||
[eq]#pname:z~a~#, [eq]#pname:z~f~# is clamped to [eq]#[min(n,f),max(n,f)]#,
|
||||
where [eq]#n# and [eq]#f# are the pname:minDepth and pname:maxDepth depth
|
||||
|
|
|
@ -945,6 +945,20 @@ Extension structures are not described in the base Vulkan Specification, but
|
|||
either in layered Specifications incorporating those extensions, or in
|
||||
separate vendor-provided documents.
|
||||
|
||||
As a convenience to implementations and layers needing to iterate through a
|
||||
structure pointer chain, the Vulkan API provides the following base
|
||||
structures:
|
||||
|
||||
include::../api/structs/VkBaseInStructure.txt[]
|
||||
|
||||
include::../api/structs/VkBaseOutStructure.txt[]
|
||||
|
||||
sname:VkBaseInStructure can be used to facilitate iterating through a
|
||||
read-only structure pointer chain.
|
||||
sname:VkBaseOutStructure can be used to facilitate iterating through a
|
||||
structure pointer chain that returns data back to the application.
|
||||
These structures allow for some type safety and can be used by Vulkan API
|
||||
functions that operate on generic inputs and outputs.
|
||||
|
||||
[[fundamentals-validusage-nested-structs]]
|
||||
==== Valid Usage for Nested Structures
|
||||
|
|
|
@ -496,9 +496,7 @@ sname:VkDescriptorSetLayout objects in the pipeline layout as described in
|
|||
Variables identified with the code:UniformConstant storage class are used
|
||||
only as handles to refer to opaque resources.
|
||||
Such variables must: be typed as code:OpTypeImage, code:OpTypeSampler,
|
||||
code:OpTypeSampledImage, or arrays of only these types.
|
||||
Variables of type code:OpTypeImage must: have a code:Sampled operand of 1
|
||||
(sampled image) or 2 (storage image).
|
||||
code:OpTypeSampledImage, or an array of one of these types.
|
||||
|
||||
The code:Sampled code:Type of an code:OpTypeImage declaration must: match
|
||||
the same basic data type as the corresponding resource, or the values
|
||||
|
@ -524,7 +522,7 @@ Variables identified with the code:Uniform storage class are used to access
|
|||
transparent buffer backed resources.
|
||||
Such variables must: be:
|
||||
|
||||
* typed as code:OpTypeStruct, or arrays of only this type,
|
||||
* typed as code:OpTypeStruct, or an array of this type,
|
||||
* identified with a code:Block or code:BufferBlock decoration, and
|
||||
* laid out explicitly using the code:Offset, code:ArrayStride, and
|
||||
code:MatrixStride decorations as specified in
|
||||
|
@ -535,7 +533,7 @@ Variables identified with the code:StorageBuffer storage class are used to
|
|||
access transparent buffer backed resources.
|
||||
Such variables must: be:
|
||||
|
||||
* typed as code:OpTypeStruct, or arrays of only this type,
|
||||
* typed as code:OpTypeStruct, or an array of this type,
|
||||
* identified with a code:Block decoration, and
|
||||
* laid out explicitly using the code:Offset, code:ArrayStride, and
|
||||
code:MatrixStride decorations as specified in
|
||||
|
@ -630,11 +628,25 @@ ifdef::VK_EXT_descriptor_indexing[]
|
|||
code:StorageBufferArrayNonUniformIndexingEXT
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
If an instruction loads from or stores to a resource (including atomics and
|
||||
image instructions) and the resource descriptor being accessed is not
|
||||
dynamically uniform, then the corresponding non-uniform indexing feature
|
||||
must: be enabled and the capability must: be declared.
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
If an instruction loads from or stores to a resource (including atomics and
|
||||
image instructions) and the resource descriptor being accessed is not
|
||||
uniform, then the corresponding dynamic indexing
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
or non-uniform
|
||||
endif::VK_EXT_descriptor_indexing[]
|
||||
feature must: be enabled and the capability must: be declared.
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* If sampler Y'C~B~C~R~ conversion is enabled, the combined image sampler
|
||||
must: be indexed only by constant integral expressions when aggregated
|
||||
into arrays in shader code, irrespective of the
|
||||
pname:shaderSampledImageArrayDynamicIndexing feature.
|
||||
If sampler Y'C~B~C~R~ conversion is enabled, the combined image sampler
|
||||
must: be indexed only by constant integral expressions when aggregated into
|
||||
arrays in shader code, irrespective of the
|
||||
pname:shaderSampledImageArrayDynamicIndexing feature.
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
||||
[[interfaces-resources-correspondence]]
|
||||
|
@ -713,8 +725,8 @@ Each descriptor set has its own binding name space.
|
|||
|
||||
If the code:Binding decoration is used with an array, the entire array is
|
||||
assigned that binding value.
|
||||
The size of the array declaration must: be no larger than the
|
||||
pname:descriptorCount of that sname:VkDescriptorSetLayoutBinding.
|
||||
The array must: be a single-dimensional array and size of the array must: be
|
||||
no larger than the number of descriptors in the binding.
|
||||
ifdef::VK_EXT_descriptor_indexing[]
|
||||
If the array is runtime-sized, then array elements greater than or equal to
|
||||
the size of that binding in the bound descriptor set must: not be used.
|
||||
|
@ -754,10 +766,39 @@ The descriptor set layout binding must: be of a corresponding descriptor
|
|||
type, as defined in <<interfaces-resources-correspondence,Shader Resource
|
||||
and Descriptor Type Correspondence>>.
|
||||
|
||||
It is valid for multiple shader variables to be assigned the same descriptor
|
||||
set and binding values, as long as all those that are statically used by the
|
||||
entry point being compiled are compatible with the descriptor type in the
|
||||
descriptor set layout binding.
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
There are no limits on the number of shader variables that can have
|
||||
overlapping set and binding values in a shader; but which resources are
|
||||
<<shaders-staticuse,statically used>> has an impact.
|
||||
If any shader variable identifying a resource is
|
||||
<<shaders-staticuse,statically used>> in a shader, then the underlying
|
||||
descriptor bound at the declared set and binding must
|
||||
<<interfaces-resources-correspondence,support the declared type in the
|
||||
shader>> when the shader executes.
|
||||
|
||||
If multiple shader variables are declared with the same set and binding
|
||||
values, and with the same underlying descriptor type, they can all be
|
||||
statically used within the same shader.
|
||||
However, accesses are not automatically synchronized, and code:Aliased
|
||||
decorations should be used to avoid data hazards (see
|
||||
https://www.khronos.org/registry/spir-v/specs/unified1/SPIRV.html#_a_id_aliasingsection_a_aliasing[section
|
||||
2.18.2 Aliasing in the SPIR-V specification]).
|
||||
|
||||
If multiple shader variables with the same set and binding values are
|
||||
declared in a single shader, but with different declared types, where any of
|
||||
those are not supported by the relevant bound descriptor, that shader can
|
||||
only be executed if the variables with the unsupported type are not
|
||||
statically used.
|
||||
|
||||
A noteworthy example of using multiple statically-used shader variables
|
||||
sharing the same descriptor set and binding values is a descriptor of type
|
||||
code:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER that has multiple
|
||||
corresponding shader variables in the code:UniformConstant storage class,
|
||||
where some could be code:OpTypeImage, some could be code:OpTypeSampler
|
||||
(code:Sampled=1), and some could be code:OpTypeSampledImage.
|
||||
====
|
||||
|
||||
[[interfaces-resources-limits]]
|
||||
.Shader Resource Limits
|
||||
|
|
|
@ -1084,7 +1084,7 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
|||
** pname:allocationSize must: be the size returned by
|
||||
flink:vkGetAndroidHardwareBufferPropertiesANDROID for the Android
|
||||
hardware buffer
|
||||
** If the pname:pNext chain does not contain an instance of
|
||||
** If the pname:pNext chain doesn't contain an instance of
|
||||
slink:VkMemoryDedicatedAllocateInfo or
|
||||
pname:VkMemoryDedicatedAllocateInfo::pname:image is
|
||||
dlink:VK_NULL_HANDLE, the Android hardware buffer must: have a format
|
||||
|
@ -1933,7 +1933,7 @@ Each call to fname:vkGetMemoryAndroidHardwareBufferANDROID must: return an
|
|||
Android hardware buffer with a new reference acquired in addition to the
|
||||
reference held by the sname:VkDeviceMemory.
|
||||
To avoid leaking resources, the application must: release the reference by
|
||||
calling code:AHardwareBuffer_release when it is no longer needed.
|
||||
calling +AHardwareBuffer_release+ when it is no longer needed.
|
||||
When called with the same handle in
|
||||
sname:VkMemoryGetAndroidHardwareBufferInfoANDROID::pname:memory,
|
||||
fname:vkGetMemoryAndroidHardwareBufferANDROID must: return the same Android
|
||||
|
@ -2028,7 +2028,7 @@ include::../api/structs/VkAndroidHardwareBufferFormatPropertiesANDROID.txt[]
|
|||
* pname:sType is the type of this structure.
|
||||
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
|
||||
* pname:format is the Vulkan format corresponding to the Android hardware
|
||||
buffer's format, or ename:VK_FORMAT_UNDEFINED if there is not an
|
||||
buffer's format, or ename:VK_FORMAT_UNDEFINED if there isn't an
|
||||
equivalent Vulkan format.
|
||||
* pname:externalFormat is an implementation-defined external format
|
||||
identifier for use with slink:VkExternalFormatANDROID.
|
||||
|
@ -2060,6 +2060,23 @@ ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, and should: include
|
|||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT and
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
The pname:formatFeatures member only indicates the features available when
|
||||
using an
|
||||
<memory-external-android-hardware-buffer-external-formats,external-format
|
||||
image>> created from the Android hardware buffer.
|
||||
Images from Android hardware buffers with a format other than
|
||||
ename:VK_FORMAT_UNDEFINED are subject to the format capabilities obtained
|
||||
from flink:vkGetPhysicalDeviceFormatProperties2, and
|
||||
flink:vkGetPhysicalDeviceImageFormatProperties2 with appropriate parameters.
|
||||
These sets of features are independent of each other, e.g. the external
|
||||
format will support sampler Y'C~B~C~R~ conversion even if the non-external
|
||||
format doesn't, and writing to non-external format images is possible but
|
||||
writing to external format images is not.
|
||||
====
|
||||
|
||||
Android hardware buffers with the same external format must: have the same
|
||||
support for ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
|
||||
ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
|
||||
|
@ -2068,6 +2085,7 @@ ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
|
|||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
|
||||
and
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT.
|
||||
in pname:formatFeatures.
|
||||
Other format features may: differ between Android hardware buffers that have
|
||||
the same external format.
|
||||
This allows applications to use the same slink:VkSamplerYcbcrConversion
|
||||
|
@ -2082,7 +2100,7 @@ If pname:format is ename:VK_FORMAT_UNDEFINED, all members of
|
|||
pname:samplerYcbcrConversionComponents must: be
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY.
|
||||
|
||||
Implementations may: not always be able to determine the color model,
|
||||
Implementations may not always be able to determine the color model,
|
||||
numerical range, or chroma offsets of the image contents, so the values in
|
||||
sname:VkAndroidHardwareBufferFormatPropertiesANDROID are only suggestions.
|
||||
Applications should: treat these values as sensible defaults to use in the
|
||||
|
@ -2693,7 +2711,7 @@ A sname:VkDeviceMemory imported from an Android hardware buffer or that can
|
|||
be exported to an Android hardware buffer must: acquire a reference to its
|
||||
code:AHardwareBuffer object, and must: release this reference when the
|
||||
device memory is freed.
|
||||
During the host execution of a Vulkan command that has an Android hardware
|
||||
During the host execution of a Vulkan command which has an Android hardware
|
||||
buffer as a parameter (including indirect parameters via pname:pNext
|
||||
chains), the application must: not decrement the Android hardware buffer's
|
||||
reference count to zero.
|
||||
|
@ -2724,36 +2742,37 @@ device.
|
|||
Vulkan buffer and image usage flags do not correspond exactly to Android
|
||||
hardware buffer usage flags.
|
||||
When allocating Android hardware buffers with non-Vulkan APIs, if any
|
||||
code:AHARDWAREBUFFER_USAGE_GPU_* usage bits are included, by default the
|
||||
+AHARDWAREBUFFER_USAGE_GPU_*+ usage bits are included, by default the
|
||||
allocator must: allocate the memory in such a way that it can support Vulkan
|
||||
usages and creation flags in the
|
||||
<<memory-external-android-hardware-buffer-usage, usage equivalence table>>
|
||||
which do not have Android hardware buffer equivalents.
|
||||
which don't have Android hardware buffer equivalents.
|
||||
|
||||
The slink:VkAndroidHardwareBufferUsageANDROID structure can: be attached to
|
||||
the pname:pNext chain of a slink:VkImageFormatProperties2 instance passed to
|
||||
flink:vkGetPhysicalDeviceImageFormatProperties2 to obtain optimal Android
|
||||
hardware buffer usage flags for specific Vulkan resource creation
|
||||
parameters.
|
||||
Some usage flags returned by these commands are required: based on the input
|
||||
Some usage flags returned by these commands are required based on the input
|
||||
parameters, but additional vendor-specific usage flags
|
||||
(code:AHARDWAREBUFFER_USAGE_VENDOR_*) may: also be returned.
|
||||
(+AHARDWAREBUFFER_USAGE_VENDOR_*+) may: also be returned.
|
||||
Any Android hardware buffer allocated with these vendor-specific usage flags
|
||||
and imported to Vulkan must: only be bound to resources created with
|
||||
parameters that are a subset of the parameters used to obtain the Android
|
||||
hardware buffer usage, since the memory may: have been allocated in a way
|
||||
incompatible with other parameters.
|
||||
If an Android hardware buffer is successfully allocated with additional
|
||||
If a Android hardware buffer is successfully allocated with additional
|
||||
non-vendor-specific usage flags in addition to the recommended usage, it
|
||||
must: support being used in the same ways as an Android hardware buffer
|
||||
must: support being used in the same ways as a Android hardware buffer
|
||||
allocated with only the recommended usage, and also in ways indicated by the
|
||||
additional usage.
|
||||
|
||||
[[memory-external-android-hardware-buffer-external-formats]]
|
||||
===== Android Hardware Buffer External Formats =====
|
||||
|
||||
Android hardware buffers may: represent images using implementation-specific
|
||||
formats, layouts, color models, etc., which do not have Vulkan equivalents.
|
||||
Android hardware buffers can represent images using implementation-specific
|
||||
formats, layouts, color models, etc.
|
||||
which don't have Vulkan equivalents.
|
||||
Such _external formats_ are commonly used by external image sources such as
|
||||
video decoders or cameras.
|
||||
Vulkan can: import Android hardware buffers that have external formats, but
|
||||
|
@ -2766,7 +2785,7 @@ Images that will be backed by a Android hardware buffer can use an external
|
|||
format by setting sname:VkImageCreateInfo::pname:format to
|
||||
ename:VK_FORMAT_UNDEFINED and including an instance of
|
||||
slink:VkExternalFormatANDROID in the pname:pNext chain.
|
||||
Images can: be created with an external format even if the Android hardware
|
||||
Images can be created with an external format even if the Android hardware
|
||||
buffer has a format which has an
|
||||
<<memory-external-android-hardware-buffer-formats,equivalent Vulkan format>>
|
||||
to enable consistent handling of images from sources that might use either
|
||||
|
@ -2775,9 +2794,8 @@ However, all images created with an external format are subject to the valid
|
|||
usage requirements associated with external formats, even if the Android
|
||||
hardware buffer's format has a Vulkan equivalent.
|
||||
The external format of an Android hardware buffer can: be obtained by
|
||||
passing an instance of
|
||||
slink:VkAndroidHardwareBufferFormatPropertiesANDROID to
|
||||
flink:vkGetAndroidHardwareBufferPropertiesANDROID.
|
||||
passing an instance of slink:VkAndroidHardwareBufferFormatPropertiesANDROID
|
||||
to flink:vkGetAndroidHardwareBufferPropertiesANDROID.
|
||||
|
||||
[[memory-external-android-hardware-buffer-image-resources]]
|
||||
===== Android Hardware Buffer Image Resources
|
||||
|
@ -2821,7 +2839,7 @@ properties derived from the image:
|
|||
hardware buffer with usage returned in
|
||||
slink:VkAndroidHardwareBufferUsageANDROID.
|
||||
|
||||
Implementations may: support fewer combinations of image creation parameters
|
||||
Implementations may support fewer combinations of image creation parameters
|
||||
for images with Android hardware buffer external handle type than for
|
||||
non-external images.
|
||||
Support for a given set of parameters can be determined by passing
|
||||
|
@ -2829,7 +2847,7 @@ slink:VkExternalImageFormatProperties to
|
|||
flink:vkGetPhysicalDeviceImageFormatProperties2 with pname:handleType set to
|
||||
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID.
|
||||
Any Android hardware buffer successfully allocated outside Vulkan with usage
|
||||
that includes code:AHARDWAREBUFFER_USAGE_GPU_* must: be supported when using
|
||||
that includes +AHARDWAREBUFFER_USAGE_GPU_*+ must be supported when using
|
||||
equivalent Vulkan image parameters.
|
||||
If a given choice of image parameters are supported for import, they can:
|
||||
also be used to create an image and memory that will be exported to an
|
||||
|
@ -2876,11 +2894,11 @@ endif::VK_VERSION_1_1[]
|
|||
2::
|
||||
The code:AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE flag does not
|
||||
correspond to a Vulkan image usage or creation flag.
|
||||
Instead, its presence indicates that the Android hardware buffer
|
||||
Instead, it's presence indicates that the Android hardware buffer
|
||||
contains a complete set of mip levels
|
||||
(sname:VkImageCreateInfo::pname:mipLevels is
|
||||
[eq]#{lceil}log~2~(max(code:width, code:height)){rceil} {plus} 1#), and
|
||||
its absence indicates that the Android hardware buffer contains only a
|
||||
it's absence indicates that the Android hardware buffer contains only a
|
||||
single mip level.
|
||||
|
||||
ifdef::VK_KHR_image_format_list[]
|
||||
|
@ -2899,7 +2917,7 @@ endif::VK_KHR_image_format_list[]
|
|||
===== Android Hardware Buffer Buffer Resources
|
||||
|
||||
Android hardware buffers with a format of code:AHARDWAREBUFFER_FORMAT_BLOB
|
||||
and usage that includes code:AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER can: be
|
||||
and usage that includes code:AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER may be
|
||||
used as the backing store for sname:VkBuffer objects.
|
||||
Such Android hardware buffers have a size in bytes specified by their
|
||||
code:width; code:height and code:layers are 1.
|
||||
|
|
|
@ -606,7 +606,7 @@ ifndef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
|||
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
||||
// VU extractor and validation layers can handle VU with imbedded
|
||||
// conditionals.
|
||||
// conditionals. They are commented out until then.
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||
* [[VUID-VkGraphicsPipelineCreateInfo-subpass-01756]]
|
||||
If rasterization is not disabled and pname:subpass uses a depth/stencil
|
||||
|
@ -850,8 +850,8 @@ include::../api/enums/VkPipelineCreateFlagBits.txt[]
|
|||
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT specifies that
|
||||
any shader input variables decorated as code:DeviceIndex will be
|
||||
assigned values as if they were decorated as code:ViewIndex.
|
||||
any shader input variables decorated as code:ViewIndex will be assigned
|
||||
values as if they were decorated as code:DeviceIndex.
|
||||
endif::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* ename:VK_PIPELINE_CREATE_DISPATCH_BASE specifies that a compute pipeline
|
||||
can: be used with flink:vkCmdDispatchBase with a non-zero base
|
||||
|
|
|
@ -213,6 +213,13 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
|||
pname:pAspectReferences member must: be less than the value of
|
||||
pname:inputAttachmentCount in the member of pname:pSubpasses identified
|
||||
by its pname:subpass member
|
||||
* [[VUID-VkRenderPassCreateInfo-pNext-01963]]
|
||||
If the pname:pNext chain includes an instance of
|
||||
slink:VkRenderPassInputAttachmentAspectCreateInfo, the pname:aspectMask
|
||||
member of any element of pname:pAspectReferences must: only include
|
||||
aspects that are present in images of the pname:format of the input
|
||||
attachment specified by the pname:subpass and pname:inputAttachment of
|
||||
the same element of pname:pAspectReferences
|
||||
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
|
||||
* [[VUID-VkRenderPassCreateInfo-pNext-01928]]
|
||||
|
@ -574,14 +581,8 @@ endif::VK_KHR_maintenance2[]
|
|||
|
||||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkInputAttachmentAspectReference-pCreateInfo-01568]]
|
||||
There must: be an input attachment at
|
||||
pname:pCreateInfo::pname:pSubpasses[pname:subpass].pname:pInputAttachments[pname:inputAttachmentIndex].
|
||||
* [[VUID-VkInputAttachmentAspectReference-None-01569]]
|
||||
The specified input attachment must: have more than one aspect mask.
|
||||
* [[VUID-VkInputAttachmentAspectReference-aspectMask-01570]]
|
||||
pname:aspectMask must: be a subset of the aspect masks in the specified
|
||||
input attachment.
|
||||
* [[VUID-VkInputAttachmentAspectReference-aspectMask-01964]]
|
||||
pname:aspectMask must: not include ename:VK_IMAGE_ASPECT_METADATA_BIT
|
||||
****
|
||||
|
||||
include::../validity/structs/VkInputAttachmentAspectReference.txt[]
|
||||
|
@ -1721,7 +1722,7 @@ ifndef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
|||
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
||||
// VU extractor and validation layers can handle VU with imbedded
|
||||
// conditionals.
|
||||
// conditionals. They are commented out until then.
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||
* [[VUID-vkCmdBeginRenderPass-initialLayout-01758]]
|
||||
If any of the pname:initialLayout or pname:finalLayout member of the
|
||||
|
|
|
@ -658,11 +658,11 @@ ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
|||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageCreateInfo-pNext-01889]]
|
||||
If the pname:pNext chain does not contain an instance of
|
||||
If the pname:pNext chain doesn't contain an instance of
|
||||
slink:VkExternalFormatANDROID, or if pname:format is not
|
||||
ename:VK_FORMAT_UNDEFINED, the combination of pname:format,
|
||||
pname:imageType, pname:tiling, pname:usage, and pname:flags must: be
|
||||
supported, as indicated by a ename:VK_SUCCESS return value from
|
||||
VK_FORMAT_UNDEFINED, the combination of pname:format, pname:imageType,
|
||||
pname:tiling, pname:usage, and pname:flags must: be supported, as
|
||||
indicated by a ename:VK_SUCCESS return value from
|
||||
fname:vkGetPhysicalDeviceImageFormatProperties invoked with the same
|
||||
values passed to the corresponding parameters.
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
|
@ -690,8 +690,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
|
|||
flink:vkGetPhysicalDeviceQueueFamilyProperties2 for the
|
||||
pname:physicalDevice that was used to create pname:device
|
||||
endif::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageCreateInfo-format-00943]]
|
||||
pname:format must: not be ename:VK_FORMAT_UNDEFINED
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageCreateInfo-extent-00944]]
|
||||
pname:extent::pname:width must: be greater than `0`.
|
||||
* [[VUID-VkImageCreateInfo-extent-00945]]
|
||||
|
@ -1003,9 +1005,9 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
|||
pname:externalFormat member is not `0`
|
||||
* [[VUID-VkImageCreateInfo-pNext-01893]]
|
||||
If the pname:pNext chain includes a slink:VkExternalFormatANDROID
|
||||
structure whose pname:externalFormat member is not `0`:
|
||||
structure whose pname:externalFormat member is not code:0:
|
||||
** pname:format must: be ename:VK_FORMAT_UNDEFINED
|
||||
** pname:flags must: not include ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
|
||||
** pname:flags must: not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
|
||||
** pname:usage must: not include any usages except
|
||||
pname:VK_IMAGE_USAGE_SAMPLED_BIT
|
||||
** pname:tiling must: be ename:VK_IMAGE_TILING_OPTIMAL
|
||||
|
@ -1134,7 +1136,7 @@ sname:VkImageCreateInfo::pname:format must: be ename:VK_FORMAT_UNDEFINED.
|
|||
.Valid Usage
|
||||
****
|
||||
* [[VUID-VkExternalFormatANDROID-externalFormat-01894]]
|
||||
pname:externalFormat must: be `0` or a value returned in the
|
||||
pname:externalFormat must: be code:0 or a value returned in the
|
||||
pname:externalFormat member of
|
||||
slink:VkAndroidHardwareBufferFormatPropertiesANDROID by an earlier call
|
||||
to flink:vkGetAndroidHardwareBufferPropertiesANDROID
|
||||
|
@ -1442,7 +1444,7 @@ flink:vkGetImageSubresourceLayout is invariant for the lifetime of a single
|
|||
image.
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
However, the subresource layout of images in Android hardware buffer
|
||||
external memory is not known until the image has been bound to memory, so
|
||||
external memory isn't known until the image has been bound to memory, so
|
||||
calling fname:vkGetImageSubresourceLayout for such an image before it has
|
||||
been bound will result in undefined behavior.
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
|
@ -1480,7 +1482,7 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-vkGetImageSubresourceLayout-image-01895]]
|
||||
If pname:image was created with the
|
||||
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
|
||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
|
||||
external memory handle type, then pname:image must: be bound to memory.
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
****
|
||||
|
@ -2214,6 +2216,7 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
|||
flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format
|
||||
ifndef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageViewCreateInfo-image-01012]]
|
||||
If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL,
|
||||
pname:format must: be format that has at least one supported feature bit
|
||||
|
@ -2253,6 +2256,52 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
|||
flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned
|
||||
by fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageViewCreateInfo-image-01965]]
|
||||
If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and
|
||||
pname:format is not ename:VK_FORMAT_UNDEFINED, pname:format must: be
|
||||
format that has at least one supported feature bit present in the value
|
||||
of sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format
|
||||
* [[VUID-VkImageViewCreateInfo-image-01966]]
|
||||
If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL, and
|
||||
pname:format is not ename:VK_FORMAT_UNDEFINED, and pname:usage contains
|
||||
ename:VK_IMAGE_USAGE_SAMPLED_BIT, pname:format must: be supported for
|
||||
sampled images, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT flag in
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format
|
||||
* [[VUID-VkImageViewCreateInfo-image-01967]]
|
||||
If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL, and
|
||||
pname:format is not ename:VK_FORMAT_UNDEFINED, and pname:usage contains
|
||||
ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:format must: be supported for
|
||||
storage images, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT flag in
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format
|
||||
* [[VUID-VkImageViewCreateInfo-image-01968]]
|
||||
If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL, and
|
||||
pname:format is not ename:VK_FORMAT_UNDEFINED, and pname:usage contains
|
||||
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:format must: be
|
||||
supported for color attachments, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format
|
||||
* [[VUID-VkImageViewCreateInfo-image-01969]]
|
||||
If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL, and
|
||||
pname:format is not ename:VK_FORMAT_UNDEFINED, and pname:usage contains
|
||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:format must: be
|
||||
supported for depth/stencil attachments, as specified by the
|
||||
ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in
|
||||
sname:VkFormatProperties::pname:optimalTilingFeatures returned by
|
||||
fname:vkGetPhysicalDeviceFormatProperties with the same value of
|
||||
pname:format
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageViewCreateInfo-subresourceRange-01478]]
|
||||
pname:subresourceRange.baseMipLevel must: be less than the
|
||||
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
|
||||
|
@ -2323,7 +2372,7 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
|
|||
Classes>>
|
||||
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
||||
// VU extractor and validation layers can handle VU with imbedded
|
||||
// conditionals.
|
||||
// conditionals. They are commented out until then.
|
||||
//
|
||||
// If VK_VERSION_1_1,VK_KHR_maintenance2 and NOT VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
|
||||
|
@ -2414,19 +2463,26 @@ ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
// The nested ifdefs are there in anticipation of the hoped-for day when the
|
||||
// VU extractor and validation layers can handle VU with imbedded
|
||||
// conditionals.
|
||||
// conditionals. They are commented out until then.
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageViewCreateInfo-image-01762]]
|
||||
If pname:image was not created with the
|
||||
ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag,
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
// ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
or if the pname:format of the pname:image is a
|
||||
<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
|
||||
format and if pname:subresourceRange.aspectMask is
|
||||
ename:VK_IMAGE_ASPECT_COLOR_BIT,
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
// endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
pname:format must: be identical to the pname:format used to create
|
||||
pname:image
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageViewCreateInfo-pNext-01970]]
|
||||
If the pname:pNext chain contains an instance of
|
||||
slink:VkSamplerYcbcrConversionInfo with a pname:conversion value other
|
||||
than code:VK_NULL_HANDLE, all members of pname:components must: have the
|
||||
value ename:VK_COMPONENT_SWIZZLE_IDENTITY.
|
||||
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
* [[VUID-VkImageViewCreateInfo-image-01020]]
|
||||
If pname:image is non-sparse then it must: be bound completely and
|
||||
|
@ -2440,12 +2496,12 @@ ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
|||
If pname:image has an
|
||||
<<memory-external-android-hardware-buffer-external-formats,external
|
||||
format>>:
|
||||
** pname:format must: be ename:VK_FORMAT_UNDEFINED
|
||||
** The pname:pNext chain must: contain an instance of
|
||||
** pname:format must be ename:VK_FORMAT_UNDEFINED
|
||||
** The pname:pNext chain must contain an instance of
|
||||
slink:VkSamplerYcbcrConversionInfo with a pname:conversion object
|
||||
created with the same external format as pname:image
|
||||
** All members of pname:components must: be
|
||||
ename:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
** All members of pname:components must be
|
||||
pname:VK_COMPONENT_SWIZZLE_IDENTITY
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
****
|
||||
|
||||
|
@ -2870,7 +2926,7 @@ When allocating new memory for an image that can: be exported to a Android
|
|||
hardware buffer, the memory's pname:allocationSize must: be zero; the actual
|
||||
size will be determined by the dedicated image's parameters.
|
||||
After the memory has been allocated, the amount of space allocated from the
|
||||
memory's heap can: be obtained by getting the image's memory requirements or
|
||||
memory's heap can be obtained by getting the image's memory requirements or
|
||||
by calling flink:vkGetAndroidHardwareBufferPropertiesANDROID with the
|
||||
Android hardware buffer exported from the memory.
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
|
@ -2976,6 +3032,23 @@ endif::VK_VERSION_1_1,VK_KHR_external_memory[]
|
|||
====
|
||||
The implication of this requirement is that lazily allocated memory is
|
||||
disallowed for buffers in all cases.
|
||||
====
|
||||
* The pname:size member is identical for all sname:VkBuffer objects
|
||||
created with the same combination of creation parameters specified in
|
||||
sname:VkBufferCreateInfo and its pname:pNext chain.
|
||||
* The pname:size member is identical for all sname:VkImage objects created
|
||||
with the same combination of creation parameters specified in
|
||||
sname:VkImageCreateInfo and its pname:pNext chain.
|
||||
+
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
This, however, does not imply that they interpret the contents of the bound
|
||||
memory identically with each other.
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_bind_memory2[]
|
||||
That additional guarantee, however, can: be explicitly requested using
|
||||
ename:VK_IMAGE_CREATE_ALIAS_BIT.
|
||||
endif::VK_VERSION_1_1,VK_KHR_bind_memory2[]
|
||||
====
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_get_memory_requirements2[]
|
||||
|
@ -3088,7 +3161,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
ifdef::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
* [[VUID-VkImageMemoryRequirementsInfo2-image-01897]]
|
||||
If pname:image was created with the
|
||||
ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
|
||||
VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
|
||||
external memory handle type, then pname:image must: be bound to memory.
|
||||
endif::VK_ANDROID_external_memory_android_hardware_buffer[]
|
||||
****
|
||||
|
|
|
@ -64,7 +64,7 @@ To create a shader module, call:
|
|||
include::../api/protos/vkCreateShaderModule.txt[]
|
||||
|
||||
* pname:device is the logical device that creates the shader module.
|
||||
* pname:pCreateInfo parameter is a pointer to an instance of the
|
||||
* pname:pCreateInfo is a pointer to an instance of the
|
||||
sname:VkShaderModuleCreateInfo structure.
|
||||
* pname:pAllocator controls host memory allocation as described in the
|
||||
<<memory-allocation, Memory Allocation>> chapter.
|
||||
|
|
|
@ -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 74
|
||||
#define VK_HEADER_VERSION 75
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
@ -2715,6 +2715,16 @@ typedef struct VkDrawIndirectCommand {
|
|||
uint32_t firstInstance;
|
||||
} VkDrawIndirectCommand;
|
||||
|
||||
typedef struct VkBaseOutStructure {
|
||||
VkStructureType sType;
|
||||
struct VkBaseOutStructure* pNext;
|
||||
} VkBaseOutStructure;
|
||||
|
||||
typedef struct VkBaseInStructure {
|
||||
VkStructureType sType;
|
||||
const struct VkBaseInStructure* pNext;
|
||||
} VkBaseInStructure;
|
||||
|
||||
|
||||
typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
|
||||
typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 1935
|
||||
startVUID = 1971
|
||||
|
|
|
@ -1111,10 +1111,11 @@ be implemented against.
|
|||
promoted to use a different author ID).
|
||||
* attr:contact - optional. The contact who registered or is currently
|
||||
responsible for extensions and layers using the tag, including
|
||||
sufficient contact information to reach the contact such as
|
||||
individual name together with email address, Github username, or
|
||||
other contact information. If not present, this can be taken from
|
||||
the corresponding tag:tag attribute just like attr:author.
|
||||
sufficient contact information to reach the contact such as individual
|
||||
name together with Github username (`@username`), Khronos internal
|
||||
Gitlab username (`gitlab:@username`) if no public Github contact is
|
||||
avaliable, or other contact information. If not present, this can be
|
||||
taken from the corresponding tag:tag attribute just like attr:author.
|
||||
* attr:type - required if the attr:supported attribute is not
|
||||
`'disabled'`. Must be either `'device'` or `'instance'`, if present.
|
||||
* attr:requires - optional. Comma-separated list of extension names this
|
||||
|
|
11
xml/reg.py
11
xml/reg.py
|
@ -563,14 +563,21 @@ class Registry:
|
|||
if depname:
|
||||
self.gen.logMsg('diag', 'Generating dependent type',
|
||||
depname, 'for', attrib, 'type', typename)
|
||||
self.markTypeRequired(depname, required)
|
||||
# Don't recurse on self-referential structures.
|
||||
if (typename != depname):
|
||||
self.markTypeRequired(depname, required)
|
||||
else:
|
||||
self.gen.logMsg('diag', 'type', typename, 'is self-referential')
|
||||
# Tag types used in defining this type (e.g. in nested
|
||||
# <type> tags)
|
||||
# Look for <type> in entire <command> tree,
|
||||
# not just immediate children
|
||||
for subtype in type.elem.findall('.//type'):
|
||||
self.gen.logMsg('diag', 'markRequired: type requires dependent <type>', subtype.text)
|
||||
self.markTypeRequired(subtype.text, required)
|
||||
if (typename != subtype.text):
|
||||
self.markTypeRequired(subtype.text, required)
|
||||
else:
|
||||
self.gen.logMsg('diag', 'type', typename, 'is self-referential')
|
||||
# Tag enums used in defining this type, for example in
|
||||
# <member><name>member</name>[<enum>MEMBER_SIZE</enum>]</member>
|
||||
for subenum in type.elem.findall('.//enum'):
|
||||
|
|
308
xml/vk.xml
308
xml/vk.xml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue