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:
Jon Leech 2018-05-17 02:38:41 -07:00
parent 1e650ddd09
commit e665b9e691
24 changed files with 1060 additions and 384 deletions

98
.gitlab-ci.yml Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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#

View File

@ -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

View File

@ -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[]
--

View File

@ -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]]

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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[]
****

View File

@ -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.

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 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);

View File

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

View File

@ -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

View File

@ -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'):

File diff suppressed because it is too large Load Diff