diff options
author | Jon Leech <oddhack@sonic.net> | 2023-10-13 02:29:34 -0700 |
---|---|---|
committer | Jon Leech <oddhack@sonic.net> | 2023-10-13 02:29:34 -0700 |
commit | bb6783481f96d778772ea9607e2991c27e2bbe96 (patch) | |
tree | 460cf33bd23f8b5cf8c8c769ae92948a45058092 | |
parent | a0797ed156639f3fc54be9e640a54dd382191a5a (diff) | |
download | gfxstream-protocols-bb6783481f96d778772ea9607e2991c27e2bbe96.tar.gz |
Change log for October 13, 2023 Vulkan 1.3.268 spec update:
Github Issues
* Restrict flink:vkCmdSetEvent2 ptext:*stageMask parameters to not include
ename:VK_PIPELINE_STAGE_2_HOST_BIT (public issue 1996).
* Fix <<formats-non-packed, byte mapping table>> for
ename:VK_FORMAT_A8_UNORM_KHR (public issue 2234).
* Assign VUIDs to new VUs that were overlooked in the previous spec update
(public issue 2244).
* Add a spec build test and refactor Makefile to allow using a different
repository root directory path, for use with the tests (public PR 2248).
Internal Issues
* Add VUs to slink:VkCopyMemoryToImageInfoEXT and
slink:VkCopyImageToMemoryInfoEXT requiring zero row-length /
image-height when doing a host copy with
ename:VK_HOST_IMAGE_COPY_MEMCPY_EXT (internal issue 3619).
* Clarify that fragment shading rate attachments cannot be cleared in VU
for slink:VkRenderPassCreateInfo2 and language for
slink:VkAttachmentDescription2KHR (internal issue 3634).
* Add VUs to slink:VkSparseImageMemoryBind requiring a non-zero extent
(internal issue 3635).
* Consolidate VUs in many files (internal MRs 6138, 6141. 6142, 6147,
6149, 6153, 6161, 6162, 6167, 6170, 6194, and 6197).
* Use title case consistently for chapter and section titles, and add it
to the style guide (internal MR 6201).
65 files changed, 711 insertions, 835 deletions
@@ -21,7 +21,7 @@ and contains some troubleshooting advice. [[building]] -== Building The Spec +== Building the Spec First, clone the Khronos GitHub repository containing the Vulkan specification to your local Linux, Windows, or Mac PC. @@ -130,7 +130,7 @@ If you encounter problems refer to the <<troubleshooting>> section. [[building-versions]] -=== Building Specifications For Different API Versions +=== Building Specifications for Different API Versions The `Makefile` defaults to building a Vulkan 1.3 specification. This is controlled by Asciidoctor attributes passed in the Makefile variable @@ -235,7 +235,7 @@ probably cause any more restricted set of refpages to fail to build. [[building-diff]] -==== Building A Highlighted Extension Diff +==== Building a Highlighted Extension Diff The `diff_html` target in the Makefile can be used to generate a version of the specification which highlights changes made to the specification by the @@ -278,7 +278,7 @@ The asciidoctor HTML build is very fast, even for the whole Specification, but PDF builds take several minutes. -=== Images Used In The Specification +=== Images Used in the Specification All images used in the specification are in the `images/` directory in the SVG format, and were created with Inkscape. diff --git a/COPYING.adoc b/COPYING.adoc index 4a182769..67bcc08f 100644 --- a/COPYING.adoc +++ b/COPYING.adoc @@ -1,7 +1,7 @@ // Copyright 2020-2023 The Khronos Group Inc. // SPDX-License-Identifier: CC-BY-4.0 -= COPYING file for the KhronosGroup/Vulkan-Docs project += COPYING File for the KhronosGroup/Vulkan-Docs Project == Licenses diff --git a/ChangeLog.adoc b/ChangeLog.adoc index 7f5ea1b7..58b47a22 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -14,6 +14,37 @@ appears frequently in the change log. ----------------------------------------------------- +Change log for October 13, 2023 Vulkan 1.3.268 spec update: + +Github Issues + + * Restrict flink:vkCmdSetEvent2 ptext:*stageMask parameters to not include + ename:VK_PIPELINE_STAGE_2_HOST_BIT (public issue 1996). + * Fix <<formats-non-packed, byte mapping table>> for + ename:VK_FORMAT_A8_UNORM_KHR (public issue 2234). + * Assign VUIDs to new VUs that were overlooked in the previous spec update + (public issue 2244). + * Add a spec build test and refactor Makefile to allow using a different + repository root directory path, for use with the tests (public PR 2248). + +Internal Issues + + * Add VUs to slink:VkCopyMemoryToImageInfoEXT and + slink:VkCopyImageToMemoryInfoEXT requiring zero row-length / + image-height when doing a host copy with + ename:VK_HOST_IMAGE_COPY_MEMCPY_EXT (internal issue 3619). + * Clarify that fragment shading rate attachments cannot be cleared in VU + for slink:VkRenderPassCreateInfo2 and language for + slink:VkAttachmentDescription2KHR (internal issue 3634). + * Add VUs to slink:VkSparseImageMemoryBind requiring a non-zero extent + (internal issue 3635). + * Consolidate VUs in many files (internal MRs 6138, 6141. 6142, 6147, + 6149, 6153, 6161, 6162, 6167, 6170, 6194, and 6197). + * Use title case consistently for chapter and section titles, and add it + to the style guide (internal MR 6201). + +----------------------------------------------------- + Change log for October 6, 2023 Vulkan 1.3.267 spec update: Internal Issues diff --git a/LICENSE.adoc b/LICENSE.adoc index 7f73f3f2..5a31f041 100644 --- a/LICENSE.adoc +++ b/LICENSE.adoc @@ -1,7 +1,7 @@ // Copyright 2020-2023 The Khronos Group Inc. // SPDX-License-Identifier: CC-BY-4.0 -= LICENSE file for the KhronosGroup/Vulkan-Docs project += LICENSE File for the KhronosGroup/Vulkan-Docs Project Files in this repository fall under one of these licenses: @@ -136,7 +136,7 @@ VERBOSE = # ADOCOPTS options for asciidoc->HTML5 output NOTEOPTS = -a editing-notes -a implementation-guide -PATCHVERSION = 267 +PATCHVERSION = 268 BASEOPTS = ifneq (,$(findstring VKSC_VERSION_1_0,$(VERSIONS))) @@ -747,13 +747,13 @@ $(SYNCDEPEND): $(VKXML) $(GENVK) attribs: $(ATTRIBFILE) $(ATTRIBFILE): - for attrib in $(VERSIONS) $(EXTS) ; do \ + $(QUIET)for attrib in $(VERSIONS) $(EXTS) ; do \ echo ":$${attrib}:" ; \ done > $@ - (echo ":SPECREVISION: $(SPECREVISION)" ; \ - echo ":SPECDATE: $(SPECDATE)" ; \ - echo ":SPECREMARK: $(SPECREMARK)" ; \ - echo ":APITITLE: $(APITITLE)") >> $@ + $(QUIET)(echo ":SPECREVISION: $(SPECREVISION)" ; \ + echo ":SPECDATE: $(SPECDATE)" ; \ + echo ":SPECREMARK: $(SPECREMARK)" ; \ + echo ":APITITLE: $(APITITLE)") >> $@ # Debugging aid - generate all files from registry XML generated: $(PYAPIMAP) $(GENDEPENDS) diff --git a/appendices/VK_EXT_extended_dynamic_state.adoc b/appendices/VK_EXT_extended_dynamic_state.adoc index 56d1416e..5eb49a4a 100644 --- a/appendices/VK_EXT_extended_dynamic_state.adoc +++ b/appendices/VK_EXT_extended_dynamic_state.adoc @@ -43,7 +43,9 @@ core functionality. === Issues -==== Why are the values of pname:pStrides in flink:vkCmdBindVertexBuffers2 limited to be between 0 and the maximum extent of the binding, when this restriction is not present for the same static state? +1) Why are the values of pname:pStrides in flink:vkCmdBindVertexBuffers2 +limited to be between 0 and the maximum extent of the binding, when this +restriction is not present for the same static state? Implementing these edge cases adds overhead to some implementations that would require significant cost when calling this function, and the intention diff --git a/appendices/VK_EXT_fragment_density_map2.adoc b/appendices/VK_EXT_fragment_density_map2.adoc index c99876b2..eccfe81b 100644 --- a/appendices/VK_EXT_fragment_density_map2.adoc +++ b/appendices/VK_EXT_fragment_density_map2.adoc @@ -28,7 +28,7 @@ include::{generated}/interfaces/VK_EXT_fragment_density_map2.adoc[] ifdef::isrefpage[] === Examples -==== Additional limits for subsampling +==== Additional Limits for Subsampling Some implementations may not support subsampled samplers if certain implementation limits are not observed by the app. @@ -36,7 +36,7 @@ slink:VkPhysicalDeviceFragmentDensityMap2PropertiesEXT provides additional limits to require apps remain within these boundaries if they wish to use subsampling. -==== Improved host latency +==== Improved Host Latency By default, the fragment density map is locked by the host for reading between flink:vkCmdBeginRenderPass during recording and diff --git a/appendices/VK_HUAWEI_cluster_culling_shader.adoc b/appendices/VK_HUAWEI_cluster_culling_shader.adoc index f44125f4..b1f90c53 100644 --- a/appendices/VK_HUAWEI_cluster_culling_shader.adoc +++ b/appendices/VK_HUAWEI_cluster_culling_shader.adoc @@ -69,7 +69,7 @@ include::{generated}/interfaces/VK_HUAWEI_cluster_culling_shader.adoc[] * <<spirvenv-capabilities-table-ClusterCullingShadingHUAWEI, code:ClusterCullingShadingHUAWEI>> -=== Sample code +=== Sample Code Example of cluster culling in a GLSL shader diff --git a/appendices/VK_KHR_shader_float_controls.adoc b/appendices/VK_KHR_shader_float_controls.adoc index 39f804c7..0dcae497 100644 --- a/appendices/VK_KHR_shader_float_controls.adoc +++ b/appendices/VK_KHR_shader_float_controls.adoc @@ -92,7 +92,7 @@ is passed to them. [[VK_KHR_shader_controls_v4_incompatibility]] -=== Version 4 API incompatibility +=== Version 4 API Incompatibility The original versions of `VK_KHR_shader_float_controls` shipped with booleans named "`separateDenormSettings`" and diff --git a/appendices/compressedtex.adoc b/appendices/compressedtex.adoc index ff94a342..4fab6c4c 100644 --- a/appendices/compressedtex.adoc +++ b/appendices/compressedtex.adoc @@ -162,7 +162,7 @@ color if the implementation supports HDR decoding. ifdef::VK_EXT_astc_decode_mode[] -=== ASTC decode mode +=== ASTC Decode Mode If the `VK_EXT_astc_decode_mode` extension is enabled, the decode mode is determined as follows: diff --git a/appendices/roadmap/Roadmap-2022.adoc b/appendices/roadmap/Roadmap-2022.adoc index 5aff91cc..ae7e224e 100644 --- a/appendices/roadmap/Roadmap-2022.adoc +++ b/appendices/roadmap/Roadmap-2022.adoc @@ -9,7 +9,7 @@ The Roadmap 2022 milestone is intended to be supported by newer mid-to-high-end devices shipping in 2022 or shortly thereafter across mainstream smartphone, tablet, laptops, console and desktop devices. -=== Required API versions +=== Required API Versions This profile requires Vulkan 1.3. @@ -130,7 +130,7 @@ The following core increased limits are required: | pname:maxSubgroupSize | - | - | 4 | min |==== -=== Required extensions +=== Required Extensions The following extensions are required: diff --git a/appendices/spirvenv.adoc b/appendices/spirvenv.adoc index 922be76e..72ee4cb6 100644 --- a/appendices/spirvenv.adoc +++ b/appendices/spirvenv.adoc @@ -143,7 +143,7 @@ include::{generated}/spirvcap/exttable.adoc[] [[spirvenv-module-validation]] -== Validation Rules within a Module +== Validation Rules Within a Module ifndef::VKSC_VERSION_1_0[] A SPIR-V module passed to flink:vkCreateShaderModule must: conform to the @@ -2582,7 +2582,7 @@ The _SPIR-V Type_ is defined by an instruction in SPIR-V, declared with the Type-Declaration Instruction, Bit Width, and Signedness from above. [[spirvenv-image-formats]] -== Compatibility Between SPIR-V Image Formats And Vulkan Formats +== Compatibility Between SPIR-V Image Formats and Vulkan Formats SPIR-V code:Image code:Format values are compatible with elink:VkFormat values as defined below: diff --git a/appendices/versions.adoc b/appendices/versions.adoc index 8b292cab..b5999aab 100644 --- a/appendices/versions.adoc +++ b/appendices/versions.adoc @@ -54,14 +54,14 @@ include::{generated}/meta/promoted_extensions_VK_VERSION_1_3.adoc[] All differences in behavior between these extensions and the corresponding Vulkan 1.3 functionality are summarized below. -=== Differences relative to `VK_EXT_4444_formats` +=== Differences Relative to `VK_EXT_4444_formats` If the `apiext:VK_EXT_4444_formats` extension is not supported, support for all formats defined by it are optional in Vulkan 1.3. There are no members in the slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDevice4444FormatsFeaturesEXT structure. -=== Differences relative to `VK_EXT_extended_dynamic_state` +=== Differences Relative to `VK_EXT_extended_dynamic_state` All dynamic state enumerants and entry points defined by `apiext:VK_EXT_extended_dynamic_state` are required in Vulkan 1.3. @@ -69,7 +69,7 @@ There are no members in the slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDeviceExtendedDynamicStateFeaturesEXT structure. -=== Differences relative to `VK_EXT_extended_dynamic_state2` +=== Differences Relative to `VK_EXT_extended_dynamic_state2` The optional dynamic state enumerants and entry points defined by `apiext:VK_EXT_extended_dynamic_state2` for patch control points and logic @@ -78,7 +78,7 @@ There are no members in the slink:VkPhysicalDeviceVulkan13Features structure corresponding to the slink:VkPhysicalDeviceExtendedDynamicState2FeaturesEXT structure. -=== Differences relative to `VK_EXT_texel_buffer_alignment` +=== Differences Relative to `VK_EXT_texel_buffer_alignment` The more specific alignment requirements defined by slink:VkPhysicalDeviceTexelBufferAlignmentProperties are required in Vulkan @@ -89,7 +89,7 @@ structure. The pname:texelBufferAlignment feature is enabled if using a Vulkan 1.3 instance. -=== Differences relative to `VK_EXT_texture_compression_astc_hdr` +=== Differences Relative to `VK_EXT_texture_compression_astc_hdr` If the `apiext:VK_EXT_texture_compression_astc_hdr` extension is not supported, support for all formats defined by it are optional in Vulkan 1.3. @@ -98,7 +98,7 @@ pname:textureCompressionASTC_HDR>> member of slink:VkPhysicalDeviceVulkan13Features indicates whether a Vulkan 1.3 implementation supports these formats. -=== Differences relative to `VK_EXT_ycbcr_2plane_444_formats` +=== Differences Relative to `VK_EXT_ycbcr_2plane_444_formats` If the `apiext:VK_EXT_ycbcr_2plane_444_formats` extension is not supported, support for all formats defined by it are optional in Vulkan 1.3. @@ -167,7 +167,7 @@ include::{promoted}/promoted_extensions_VK_VERSION_1_2.adoc[] All differences in behavior between these extensions and the corresponding Vulkan 1.2 functionality are summarized below. -=== Differences relative to `VK_KHR_8bit_storage` +=== Differences Relative to `VK_KHR_8bit_storage` If the `apiext:VK_KHR_8bit_storage` extension is not supported, support for the SPIR-V <<features-storageBuffer8BitAccess, @@ -176,7 +176,7 @@ Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:storageBuffer8BitAccess when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_draw_indirect_count` +=== Differences Relative to `VK_KHR_draw_indirect_count` If the `apiext:VK_KHR_draw_indirect_count` extension is not supported, support for the entry points flink:vkCmdDrawIndirectCount and @@ -185,7 +185,7 @@ Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:drawIndirectCount when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_sampler_mirror_clamp_to_edge` +=== Differences Relative to `VK_KHR_sampler_mirror_clamp_to_edge` If the `apiext:VK_KHR_sampler_mirror_clamp_to_edge` extension is not supported, support for the elink:VkSamplerAddressMode @@ -194,7 +194,7 @@ Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:samplerMirrorClampToEdge when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_EXT_descriptor_indexing` +=== Differences Relative to `VK_EXT_descriptor_indexing` If the `apiext:VK_EXT_descriptor_indexing` extension is not supported, support for the <<features-descriptorIndexing, pname:descriptorIndexing>> @@ -203,7 +203,7 @@ Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:descriptorIndexing when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_EXT_scalar_block_layout` +=== Differences Relative to `VK_EXT_scalar_block_layout` If the `apiext:VK_EXT_scalar_block_layout` extension is not supported, support for the <<features-scalarBlockLayout, pname:scalarBlockLayout>> @@ -212,7 +212,7 @@ Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:scalarBlockLayout when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_EXT_shader_viewport_index_layer` +=== Differences Relative to `VK_EXT_shader_viewport_index_layer` The code:ShaderViewportIndexLayerEXT SPIR-V capability was replaced with the code:ShaderViewportIndex and code:ShaderLayer capabilities. @@ -225,7 +225,7 @@ slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputViewportIndex and slink:VkPhysicalDeviceVulkan12Features::pname:shaderOutputLayer when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_buffer_device_address` +=== Differences Relative to `VK_KHR_buffer_device_address` If the `apiext:VK_KHR_buffer_device_address` extension is not supported, support for the <<features-bufferDeviceAddress, pname:bufferDeviceAddress>> @@ -234,7 +234,7 @@ Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:bufferDeviceAddress when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_shader_atomic_int64` +=== Differences Relative to `VK_KHR_shader_atomic_int64` If the `apiext:VK_KHR_shader_atomic_int64` extension is not supported, support for the <<features-shaderBufferInt64Atomics, @@ -243,7 +243,7 @@ Support for this feature is defined by slink:VkPhysicalDeviceVulkan12Features::pname:shaderBufferInt64Atomics when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_shader_float16_int8` +=== Differences Relative to `VK_KHR_shader_float16_int8` If the `apiext:VK_KHR_shader_float16_int8` extension is not supported, support for the <<features-shaderFloat16, pname:shaderFloat16>> and @@ -253,7 +253,7 @@ slink:VkPhysicalDeviceVulkan12Features::pname:shaderFloat16 and slink:VkPhysicalDeviceVulkan12Features::pname:shaderInt8 when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_vulkan_memory_model` +=== Differences Relative to `VK_KHR_vulkan_memory_model` If the `apiext:VK_KHR_vulkan_memory_model` extension is not supported, support for the <<features-vulkanMemoryModel, pname:vulkanMemoryModel>> @@ -350,7 +350,7 @@ include::{promoted}/promoted_extensions_VK_VERSION_1_1.adoc[] All differences in behavior between these extensions and the corresponding Vulkan 1.1 functionality are summarized below. -=== Differences relative to `VK_KHR_16bit_storage` +=== Differences Relative to `VK_KHR_16bit_storage` If the `apiext:VK_KHR_16bit_storage` extension is not supported, support for the <<features-storageBuffer16BitAccess, pname:storageBuffer16BitAccess>> @@ -362,7 +362,7 @@ or slink:VkPhysicalDeviceVulkan11Features::pname:storageBuffer16BitAccess endif::VK_VERSION_1_2[] when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_sampler_ycbcr_conversion` +=== Differences Relative to `VK_KHR_sampler_ycbcr_conversion` If the `apiext:VK_KHR_sampler_ycbcr_conversion` extension is not supported, support for the <<features-samplerYcbcrConversion, @@ -374,7 +374,7 @@ or slink:VkPhysicalDeviceVulkan11Features::pname:samplerYcbcrConversion endif::VK_VERSION_1_2[] when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_shader_draw_parameters` +=== Differences Relative to `VK_KHR_shader_draw_parameters` If the `apiext:VK_KHR_shader_draw_parameters` extension is not supported, support for the @@ -387,7 +387,7 @@ or slink:VkPhysicalDeviceVulkan11Features::pname:shaderDrawParameters endif::VK_VERSION_1_2[] when queried via flink:vkGetPhysicalDeviceFeatures2. -=== Differences relative to `VK_KHR_variable_pointers` +=== Differences Relative to `VK_KHR_variable_pointers` If the `apiext:VK_KHR_variable_pointers` extension is not supported, support for the <<features-variablePointersStorageBuffer, diff --git a/appendices/vulkanscdeviations.adoc b/appendices/vulkanscdeviations.adoc index 7b4d0743..b20acf64 100644 --- a/appendices/vulkanscdeviations.adoc +++ b/appendices/vulkanscdeviations.adoc @@ -4,7 +4,7 @@ [appendix] [[vulkansc-deviations]] -= Vulkan SC Deviations from Base Vulkan += Vulkan SC Deviations From Base Vulkan == Additions The following extensions have been added to Vulkan SC: diff --git a/chapters/VK_EXT_headless_surface/headless.adoc b/chapters/VK_EXT_headless_surface/headless.adoc index 42f98303..2b0a06e6 100644 --- a/chapters/VK_EXT_headless_surface/headless.adoc +++ b/chapters/VK_EXT_headless_surface/headless.adoc @@ -3,7 +3,7 @@ // SPDX-License-Identifier: CC-BY-4.0 [[headless]] -=== Presenting to headless surfaces +=== Presenting to Headless Surfaces Vulkan rendering can be presented to a headless surface, where the presentation operation is a no-op producing no externally-visible result. diff --git a/chapters/VK_EXT_host_image_copy/copies.adoc b/chapters/VK_EXT_host_image_copy/copies.adoc index b1c25570..8dc1fa63 100644 --- a/chapters/VK_EXT_host_image_copy/copies.adoc +++ b/chapters/VK_EXT_host_image_copy/copies.adoc @@ -83,6 +83,10 @@ include::{chapters}/commonvalidity/copy_bufferimage_to_imagebuffer_not_both_imag * [[VUID-VkCopyMemoryToImageInfoEXT-dstImageLayout-09060]] pname:dstImageLayout must: be one of the image layouts returned in slink:VkPhysicalDeviceHostImageCopyPropertiesEXT::pname:pCopyDstLayouts + * [[VUID-VkCopyMemoryToImageInfoEXT-flags-09393]] + If pname:flags includes ename:VK_HOST_IMAGE_COPY_MEMCPY_EXT, for each + region in pname:pRegions, pname:memoryRowLength and + pname:memoryImageHeight must: both be 0 **** include::{generated}/validity/structs/VkCopyMemoryToImageInfoEXT.adoc[] @@ -217,6 +221,10 @@ include::{chapters}/commonvalidity/copy_bufferimage_to_imagebuffer_not_both_imag * [[VUID-VkCopyImageToMemoryInfoEXT-srcImageLayout-09065]] pname:srcImageLayout must: be one of the image layouts returned in slink:VkPhysicalDeviceHostImageCopyPropertiesEXT::pname:pCopySrcLayouts + * [[VUID-VkCopyImageToMemoryInfoEXT-flags-09394]] + If pname:flags includes ename:VK_HOST_IMAGE_COPY_MEMCPY_EXT, for each + region in pname:pRegions, pname:memoryRowLength and + pname:memoryImageHeight must: both be 0 **** include::{generated}/validity/structs/VkCopyImageToMemoryInfoEXT.adoc[] diff --git a/chapters/VK_EXT_opacity_micromap/micromaps.adoc b/chapters/VK_EXT_opacity_micromap/micromaps.adoc index b5ccc1c4..9b629e70 100644 --- a/chapters/VK_EXT_opacity_micromap/micromaps.adoc +++ b/chapters/VK_EXT_opacity_micromap/micromaps.adoc @@ -1142,7 +1142,7 @@ microVertexBarycentrics)# [eq]#microVertexDisplacedPosition = microVertexBasePosition {plus} microVertexDisplacementVector {times} micromapDisplacementValue# -==== Displacement micromap encoding +==== Displacement Micromap Encoding [[displacement-micromap-encoding]] diff --git a/chapters/VK_INTEL_performance_query/queries.adoc b/chapters/VK_INTEL_performance_query/queries.adoc index 4b6c2a5c..2781dc78 100644 --- a/chapters/VK_INTEL_performance_query/queries.adoc +++ b/chapters/VK_INTEL_performance_query/queries.adoc @@ -4,7 +4,7 @@ ifdef::VK_INTEL_performance_query[] [[queries-performance-intel]] -== Intel performance queries +== Intel Performance Queries Intel performance queries allow an application to capture performance data for a set of commands. diff --git a/chapters/VK_NV_device_generated_commands/generation.adoc b/chapters/VK_NV_device_generated_commands/generation.adoc index 0001afe5..36ac42cf 100644 --- a/chapters/VK_NV_device_generated_commands/generation.adoc +++ b/chapters/VK_NV_device_generated_commands/generation.adoc @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: CC-BY-4.0 -== Indirect Commands Generation And Execution +== Indirect Commands Generation and Execution [open,refpage='vkGetGeneratedCommandsMemoryRequirementsNV',desc='Retrieve the buffer allocation requirements for generated commands',type='protos'] -- diff --git a/chapters/VK_NV_optical_flow/optical_flow.adoc b/chapters/VK_NV_optical_flow/optical_flow.adoc index d17ab018..e81e984e 100644 --- a/chapters/VK_NV_optical_flow/optical_flow.adoc +++ b/chapters/VK_NV_optical_flow/optical_flow.adoc @@ -430,7 +430,7 @@ include::{generated}/validity/protos/vkDestroyOpticalFlowSessionNV.adoc[] [[opticalflow-session-binding-images]] -=== Binding vulkan image views to an optical flow session +=== Binding Vulkan Image Views to an Optical Flow Session [open,refpage='vkBindOpticalFlowSessionImageNV',desc='Bind image to an optical flow session',type='protos'] -- diff --git a/chapters/VK_QCOM_rotated_copies/rotated_addressing_blits.adoc b/chapters/VK_QCOM_rotated_copies/rotated_addressing_blits.adoc index b2d0cd02..4f8dd636 100644 --- a/chapters/VK_QCOM_rotated_copies/rotated_addressing_blits.adoc +++ b/chapters/VK_QCOM_rotated_copies/rotated_addressing_blits.adoc @@ -3,7 +3,7 @@ // SPDX-License-Identifier: CC-BY-4.0 [[copies-images-scaling-rotation]] -=== Image Blits with Scaling and Rotation +=== Image Blits With Scaling and Rotation When slink:VkCopyCommandTransformInfoQCOM is in the pname:pNext chain of slink:VkImageBlit2, the specified region is rotated during the blit. diff --git a/chapters/capabilities.adoc b/chapters/capabilities.adoc index c352c643..490c0bca 100644 --- a/chapters/capabilities.adoc +++ b/chapters/capabilities.adoc @@ -1141,7 +1141,7 @@ ename:VK_SAMPLE_COUNT_1_BIT. [[features-extentperimagetype]] -=== Allowed Extent Values Based On Image Type +=== Allowed Extent Values Based on Image Type Implementations may: support extent values larger than the <<limits-minmax, required minimum/maximum values>> for certain types of images. diff --git a/chapters/clears.adoc b/chapters/clears.adoc index 904b60a9..1a017636 100644 --- a/chapters/clears.adoc +++ b/chapters/clears.adoc @@ -7,7 +7,7 @@ [[clears-outside]] -== Clearing Images Outside A Render Pass Instance +== Clearing Images Outside a Render Pass Instance Color and depth/stencil images can: be cleared outside a render pass instance using flink:vkCmdClearColorImage or @@ -239,7 +239,7 @@ the purposes of memory barriers. [[clears-inside]] -== Clearing Images Inside A Render Pass Instance +== Clearing Images Inside a Render Pass Instance [open,refpage='vkCmdClearAttachments',desc='Clear regions within bound framebuffer attachments',type='protos'] -- diff --git a/chapters/cmdbuffers.adoc b/chapters/cmdbuffers.adoc index 56ac1256..eded8533 100644 --- a/chapters/cmdbuffers.adoc +++ b/chapters/cmdbuffers.adoc @@ -3157,22 +3157,26 @@ ifdef::VK_ANDROID_external_format_resolve[] must: be ename:VK_SAMPLE_COUNT_1_BIT endif::VK_ANDROID_external_format_resolve[] endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] - * pname:commandBuffer must: not be a <<glossary, secondary command + * [[VUID-vkCmdExecuteCommands-commandBuffer-09375]] + pname:commandBuffer must: not be a <<glossary, secondary command buffer>> ifdef::VK_EXT_nested_command_buffer[] unless the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> feature is enabled - * If the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> + * [[VUID-vkCmdExecuteCommands-nestedCommandBuffer-09376]] + If the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> feature is enabled, the <<glossary, command buffer nesting level>> of each element of pname:pCommandBuffers must: be less than <<limits-maxCommandBufferNestingLevel, pname:maxCommandBufferNestingLevel>> - * If the <<features-nestedCommandBufferRendering, + * [[VUID-vkCmdExecuteCommands-nestedCommandBufferRendering-09377]] + If the <<features-nestedCommandBufferRendering, pname:nestedCommandBufferRendering>> feature is not enabled, and pname:commandBuffer is a <<glossary, secondary command buffer>>, pname:commandBuffer must: not have been recorded with ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT - * If the <<features-nestedCommandBufferSimultaneousUse, + * [[VUID-vkCmdExecuteCommands-nestedCommandBufferSimultaneousUse-09378]] + If the <<features-nestedCommandBufferSimultaneousUse, pname:nestedCommandBufferSimultaneousUse>> feature is not enabled, and pname:commandBuffer is a <<glossary, secondary command buffer>>, each element of pname:pCommandBuffers must: not have been recorded with diff --git a/chapters/commonvalidity/bind_buffer_common.adoc b/chapters/commonvalidity/bind_buffer_common.adoc index d0953e73..604889b9 100644 --- a/chapters/commonvalidity/bind_buffer_common.adoc +++ b/chapters/commonvalidity/bind_buffer_common.adoc @@ -61,24 +61,22 @@ ifdef::VK_NV_dedicated_allocation[] slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:buffer equal to a buffer handle created with identical creation parameters to pname:buffer and pname:memoryOffset must: be zero -ifndef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] - * [[VUID-{refpage}-buffer-01039]] - If pname:buffer was not created with - slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation - equal to ename:VK_TRUE, pname:memory must: not have been allocated - dedicated for a specific buffer or image -endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] -ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] ifndef::VKSC_VERSION_1_0[] * [[VUID-{refpage}-apiVersion-07920]] - If the apiext:VK_KHR_dedicated_allocation extension is not enabled, + If +ifdef::VK_KHR_dedicated_allocation[] + the apiext:VK_KHR_dedicated_allocation extension is not enabled, +endif::VK_KHR_dedicated_allocation[] +ifdef::VK_VERSION_1_1[] slink:VkPhysicalDeviceProperties::pname:apiVersion is less than Vulkan - 1.1, and pname:buffer was not created with + 1.1, +endif::VK_VERSION_1_1[] +ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[and] + pname:buffer was not created with slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE, pname:memory must: not have been allocated dedicated for a specific buffer or image endif::VKSC_VERSION_1_0[] -endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] endif::VK_NV_dedicated_allocation[] ifdef::VK_VERSION_1_1,VK_KHR_external_memory[] * [[VUID-{refpage}-memory-02726]] @@ -87,21 +85,16 @@ ifdef::VK_VERSION_1_1,VK_KHR_external_memory[] the handles set in slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when pname:buffer was created -ifndef::VK_ANDROID_external_memory_android_hardware_buffer[] - * [[VUID-{refpage}-memory-02727]] - If pname:memory was allocated by a memory import operation, the external - handle type of the imported memory must: also have been set in - slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when - pname:buffer was created -endif::VK_ANDROID_external_memory_android_hardware_buffer[] -ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] * [[VUID-{refpage}-memory-02985]] - If pname:memory was allocated by a memory import operation, that is not - slink:VkImportAndroidHardwareBufferInfoANDROID with a non-`NULL` - pname:buffer value, the external handle type of the imported memory - must: also have been set in - slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when + If pname:memory was allocated by a memory import operation, +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] + that is not slink:VkImportAndroidHardwareBufferInfoANDROID with a + non-`NULL` pname:buffer value, +endif::VK_ANDROID_external_memory_android_hardware_buffer[] + the external handle type of the imported memory must: also have been set + in slink:VkExternalMemoryBufferCreateInfo::pname:handleTypes when pname:buffer was created +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] * [[VUID-{refpage}-memory-02986]] If pname:memory was allocated with the slink:VkImportAndroidHardwareBufferInfoANDROID memory import operation diff --git a/chapters/commonvalidity/bind_image_common.adoc b/chapters/commonvalidity/bind_image_common.adoc index 03ee73c6..8c0347f5 100644 --- a/chapters/commonvalidity/bind_image_common.adoc +++ b/chapters/commonvalidity/bind_image_common.adoc @@ -18,26 +18,19 @@ ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] slink:VkMemoryDedicatedRequirements::pname:requiresDedicatedAllocation for pname:image), pname:memory must: have been created with slink:VkMemoryDedicatedAllocateInfo::pname:image equal to pname:image -ifndef::VK_NV_dedicated_allocation_image_aliasing[] - * [[VUID-{refpage}-memory-01509]] - If the sname:VkMemoryAllocateInfo provided when pname:memory was - allocated included a slink:VkMemoryDedicatedAllocateInfo structure in - its pname:pNext chain, and - slink:VkMemoryDedicatedAllocateInfo::pname:image was not - dlink:VK_NULL_HANDLE, then pname:image must: equal - slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset - must: be zero -endif::VK_NV_dedicated_allocation_image_aliasing[] -ifdef::VK_NV_dedicated_allocation_image_aliasing[] * [[VUID-{refpage}-memory-02628]] - If the <<features-dedicatedAllocationImageAliasing, - pname:dedicatedAllocationImageAliasing>> feature is not enabled, and the - sname:VkMemoryAllocateInfo provided when pname:memory was allocated + If +ifdef::VK_NV_dedicated_allocation_image_aliasing[] + the <<features-dedicatedAllocationImageAliasing, + pname:dedicatedAllocationImageAliasing>> feature is not enabled, and +endif::VK_NV_dedicated_allocation_image_aliasing[] + the sname:VkMemoryAllocateInfo provided when pname:memory was allocated included a slink:VkMemoryDedicatedAllocateInfo structure in its pname:pNext chain, and slink:VkMemoryDedicatedAllocateInfo::pname:image was not dlink:VK_NULL_HANDLE, then pname:image must: equal slink:VkMemoryDedicatedAllocateInfo::pname:image and pname:memoryOffset must: be zero +ifdef::VK_NV_dedicated_allocation_image_aliasing[] * [[VUID-{refpage}-memory-02629]] If the <<features-dedicatedAllocationImageAliasing, pname:dedicatedAllocationImageAliasing>> feature is enabled, and the @@ -74,24 +67,22 @@ ifdef::VK_NV_dedicated_allocation[] slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:image equal to an image handle created with identical creation parameters to pname:image and pname:memoryOffset must: be zero -ifndef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] - * [[VUID-{refpage}-image-01051]] - If pname:image was not created with - slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation - equal to ename:VK_TRUE, pname:memory must: not have been allocated - dedicated for a specific buffer or image -endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] -ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] ifndef::VKSC_VERSION_1_0[] * [[VUID-{refpage}-apiVersion-07921]] - If the apiext:VK_KHR_dedicated_allocation extension is not enabled, + If +ifdef::VK_KHR_dedicated_allocation[] + the apiext:VK_KHR_dedicated_allocation extension is not enabled, +endif::VK_KHR_dedicated_allocation[] +ifdef::VK_VERSION_1_1[] slink:VkPhysicalDeviceProperties::pname:apiVersion is less than Vulkan - 1.1, and pname:image was not created with + 1.1, +endif::VK_VERSION_1_1[] +ifdef::VK_VERSION_1_1,VK_KHR_dedicated_allocation[and] + pname:image was not created with slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation equal to ename:VK_TRUE, pname:memory must: not have been allocated dedicated for a specific buffer or image endif::VKSC_VERSION_1_0[] -endif::VK_VERSION_1_1,VK_KHR_dedicated_allocation[] endif::VK_NV_dedicated_allocation[] ifdef::VK_VERSION_1_1,VK_KHR_external_memory[] * [[VUID-{refpage}-memory-02728]] @@ -100,21 +91,16 @@ ifdef::VK_VERSION_1_1,VK_KHR_external_memory[] the handles set in slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when pname:image was created -ifndef::VK_ANDROID_external_memory_android_hardware_buffer[] - * [[VUID-{refpage}-memory-02729]] - If pname:memory was created by a memory import operation, the external - handle type of the imported memory must: also have been set in - slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when - pname:image was created -endif::VK_ANDROID_external_memory_android_hardware_buffer[] -ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] * [[VUID-{refpage}-memory-02989]] - If pname:memory was created by a memory import operation, that is not - slink:VkImportAndroidHardwareBufferInfoANDROID with a non-`NULL` - pname:buffer value, the external handle type of the imported memory - must: also have been set in - slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when + If pname:memory was created by a memory import operation, +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] + that is not slink:VkImportAndroidHardwareBufferInfoANDROID with a + non-`NULL` pname:buffer value, +endif::VK_ANDROID_external_memory_android_hardware_buffer[] + the external handle type of the imported memory must: also have been set + in slink:VkExternalMemoryImageCreateInfo::pname:handleTypes when pname:image was created +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] * [[VUID-{refpage}-memory-02990]] If pname:memory was created with the slink:VkImportAndroidHardwareBufferInfoANDROID memory import operation diff --git a/chapters/commonvalidity/copy_anyimage_to_imageany_common.adoc b/chapters/commonvalidity/copy_anyimage_to_imageany_common.adoc index 94f1a1e8..0cf91bc4 100644 --- a/chapters/commonvalidity/copy_anyimage_to_imageany_common.adoc +++ b/chapters/commonvalidity/copy_anyimage_to_imageany_common.adoc @@ -10,17 +10,13 @@ // Additionally, it relies on the {imagesubresource} attribute to specify the // field in pRegions corresponding to {imageparam} -ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] - * [[VUID-{refpage}-{imageparam}-07965]] - If pname:{imageparam} is non-sparse then it must: be bound completely - and contiguously to a single sname:VkDeviceMemory object -endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] -ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] * [[VUID-{refpage}-{imageparam}-07966]] - If pname:{imageparam} is non-sparse then the image or the specified - _disjoint_ plane must: be bound completely and contiguously to a single - sname:VkDeviceMemory object + If pname:{imageparam} is non-sparse then the image +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] + or the specified _disjoint_ plane endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] + must: be bound completely and contiguously to a single + sname:VkDeviceMemory object * [[VUID-{refpage}-{imagesubresource}-07967]] The pname:{imagesubresource}.mipLevel member of each element of pname:pRegions must: be less than the pname:mipLevels specified in diff --git a/chapters/commonvalidity/copy_buffer_to_image_common.adoc b/chapters/commonvalidity/copy_buffer_to_image_common.adoc index 38bbd150..ff1420c4 100644 --- a/chapters/commonvalidity/copy_buffer_to_image_common.adoc +++ b/chapters/commonvalidity/copy_buffer_to_image_common.adoc @@ -30,28 +30,19 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[] pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice -ifndef::VK_KHR_shared_presentable_image[] - * [[VUID-{refpage}-dstImageLayout-00181]] - pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL - or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] -ifdef::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-dstImageLayout-01396]] pname:dstImageLayout must: be - ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - ename:VK_IMAGE_LAYOUT_GENERAL, or - ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR +ifdef::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, endif::VK_KHR_shared_presentable_image[] -ifndef::VK_EXT_depth_range_unrestricted[] - * [[VUID-{refpage}-None-00214]] - For each element of pname:pRegions whose pname:imageSubresource contains - a depth aspect, the data in pname:srcBuffer must: be in the range - [eq]#[0,1]# -endif::VK_EXT_depth_range_unrestricted[] -ifdef::VK_EXT_depth_range_unrestricted[] + ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, or + ename:VK_IMAGE_LAYOUT_GENERAL * [[VUID-{refpage}-pRegions-07931]] - If apiext:VK_EXT_depth_range_unrestricted is not enabled, for each - element of pname:pRegions whose pname:imageSubresource contains a depth - aspect, the data in pname:srcBuffer must: be in the range [eq]#[0,1]# +ifdef::VK_EXT_depth_range_unrestricted[] + If apiext:VK_EXT_depth_range_unrestricted is not enabled, for endif::VK_EXT_depth_range_unrestricted[] +ifndef::VK_EXT_depth_range_unrestricted[For] + each element of pname:pRegions whose pname:imageSubresource contains a + depth aspect, the data in pname:srcBuffer must: be in the range + [eq]#[0,1]# // Common Valid Usage diff --git a/chapters/commonvalidity/copy_bufferimage_to_imagebuffer_buffer_alignment_common.adoc b/chapters/commonvalidity/copy_bufferimage_to_imagebuffer_buffer_alignment_common.adoc index 0cb8b9c1..fc1605c7 100644 --- a/chapters/commonvalidity/copy_bufferimage_to_imagebuffer_buffer_alignment_common.adoc +++ b/chapters/commonvalidity/copy_bufferimage_to_imagebuffer_buffer_alignment_common.adoc @@ -9,18 +9,14 @@ // // - {imageparam}, specifying the name of the source or destination image, -ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] - * [[VUID-{refpage}-{imageparam}-07974]] - If pname:{imageparam} does not have a depth/stencil format, then for - each element of pname:pRegions, pname:bufferOffset must: be a multiple - of the format's <<formats-compatibility-classes,texel block size>> -endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] -ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] * [[VUID-{refpage}-{imageparam}-07975]] - If pname:{imageparam} does not have either a depth/stencil or a - <<formats-requiring-sampler-ycbcr-conversion,multi-planar format>>, then - for each element of pname:pRegions, pname:bufferOffset must: be a + If pname:{imageparam} does not have either a depth/stencil format +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] + or a <<formats-requiring-sampler-ycbcr-conversion,multi-planar format>>, +endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] + then for each element of pname:pRegions, pname:bufferOffset must: be a multiple of the <<formats-compatibility-classes,texel block size>> +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] * [[VUID-{refpage}-{imageparam}-07976]] If pname:{imageparam} has a <<formats-requiring-sampler-ycbcr-conversion,multi-planar format>>, then diff --git a/chapters/commonvalidity/copy_image_common.adoc b/chapters/commonvalidity/copy_image_common.adoc index 24a092d5..a274403a 100644 --- a/chapters/commonvalidity/copy_image_common.adoc +++ b/chapters/commonvalidity/copy_image_common.adoc @@ -17,18 +17,13 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[] pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice -ifndef::VK_KHR_shared_presentable_image[] - * [[VUID-{refpage}-srcImageLayout-00129]] - pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL - or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] -ifdef::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-srcImageLayout-01917]] pname:srcImageLayout must: be - ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - ename:VK_IMAGE_LAYOUT_GENERAL, or - ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR +ifdef::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, endif::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, or + ename:VK_IMAGE_LAYOUT_GENERAL ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] * [[VUID-{refpage}-dstImage-01996]] The <<resources-image-format-features,format features>> of @@ -38,29 +33,23 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[] pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice -ifndef::VK_KHR_shared_presentable_image[] - * [[VUID-{refpage}-dstImageLayout-00134]] - pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL - or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] -ifdef::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-dstImageLayout-01395]] pname:dstImageLayout must: be - ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, - ename:VK_IMAGE_LAYOUT_GENERAL, or - ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR +ifdef::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, endif::VK_KHR_shared_presentable_image[] -ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] - * [[VUID-{refpage}-srcImage-00135]] - The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be - <<formats-size-compatibility,size-compatible>> -endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] -ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] + ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, or + ename:VK_IMAGE_LAYOUT_GENERAL * [[VUID-{refpage}-srcImage-01548]] +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] If the elink:VkFormat of each of pname:srcImage and pname:dstImage is not a <<formats-requiring-sampler-ycbcr-conversion,_multi-planar - format_>>, the elink:VkFormat of each of pname:srcImage and - pname:dstImage must: be <<formats-size-compatibility,size-compatible>> + format_>>, the +endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] +ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[The] + elink:VkFormat of each of pname:srcImage and pname:dstImage must: be + <<formats-size-compatibility,size-compatible>> +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] * [[VUID-{refpage}-None-01549]] In a copy to or from a plane of a <<formats-requiring-sampler-ycbcr-conversion,multi-planar image>>, the @@ -117,26 +106,24 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] for each element of pname:pRegions, pname:srcSubresource.aspectMask must: be ename:VK_IMAGE_ASPECT_COLOR_BIT endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] -ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[] - * [[VUID-{refpage}-srcImage-00139]] - If either pname:srcImage or pname:dstImage is of type - ename:VK_IMAGE_TYPE_3D, then for each element of pname:pRegions, - pname:srcSubresource.baseArrayLayer and - pname:dstSubresource.baseArrayLayer must: each be `0`, and - pname:srcSubresource.layerCount and pname:dstSubresource.layerCount - must: each be `1` -endif::VK_VERSION_1_1,VK_KHR_maintenance1[] -ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] ifndef::VKSC_VERSION_1_0[] * [[VUID-{refpage}-apiVersion-07932]] - If the apiext:VK_KHR_maintenance1 extension is not enabled, + If +ifdef::VK_KHR_maintenance1[] + the apiext:VK_KHR_maintenance1 extension is not enabled, +endif::VK_KHR_maintenance1[] +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[or] +ifdef::VK_VERSION_1_1[] slink:VkPhysicalDeviceProperties::pname:apiVersion is less than Vulkan - 1.1, and either pname:srcImage or pname:dstImage is of type + 1.1, +endif::VK_VERSION_1_1[] +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[and] + either pname:srcImage or pname:dstImage is of type ename:VK_IMAGE_TYPE_3D, then for each element of pname:pRegions, pname:srcSubresource.baseArrayLayer and - pname:dstSubresource.baseArrayLayer must: each be `0`, and + pname:dstSubresource.baseArrayLayer must: both be `0`, and pname:srcSubresource.layerCount and pname:dstSubresource.layerCount - must: each be `1` + must: both be `1` endif::VKSC_VERSION_1_0[] * [[VUID-{refpage}-srcImage-04443]] If pname:srcImage is of type ename:VK_IMAGE_TYPE_3D, then for each @@ -146,7 +133,6 @@ endif::VKSC_VERSION_1_0[] If pname:dstImage is of type ename:VK_IMAGE_TYPE_3D, then for each element of pname:pRegions, pname:dstSubresource.baseArrayLayer must: be `0` and pname:dstSubresource.layerCount must: be `1` -endif::VK_VERSION_1_1,VK_KHR_maintenance1[] * [[VUID-{refpage}-aspectMask-00142]] For each element of pname:pRegions, pname:srcSubresource.aspectMask must: specify aspects present in pname:srcImage @@ -187,27 +173,32 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[] * [[VUID-{refpage}-dstImage-01788]] If pname:dstImage is of type ename:VK_IMAGE_TYPE_2D, then for each element of pname:pRegions, pname:dstOffset.z must: be `0` -ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[] - * [[VUID-{refpage}-srcImage-07742]] - pname:srcImage and pname:dstImage must: have the same elink:VkImageType - * [[VUID-{refpage}-srcImage-01789]] - If pname:srcImage or pname:dstImage is of type ename:VK_IMAGE_TYPE_2D, - then for each element of pname:pRegions, pname:extent.depth must: be `1` -endif::VK_VERSION_1_1,VK_KHR_maintenance1[] -ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] ifndef::VKSC_VERSION_1_0[] * [[VUID-{refpage}-apiVersion-07933]] - If the apiext:VK_KHR_maintenance1 extension is not enabled, + If +ifdef::VK_KHR_maintenance1[] + the apiext:VK_KHR_maintenance1 extension is not enabled, +endif::VK_KHR_maintenance1[] +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[and] +ifdef::VK_VERSION_1_1[] slink:VkPhysicalDeviceProperties::pname:apiVersion is less than Vulkan - 1.1, pname:srcImage and pname:dstImage must: have the same - elink:VkImageType + 1.1, +endif::VK_VERSION_1_1[] + pname:srcImage and pname:dstImage must: have the same elink:VkImageType * [[VUID-{refpage}-apiVersion-08969]] - If the apiext:VK_KHR_maintenance1 extension is not enabled, + If +ifdef::VK_KHR_maintenance1[] + the apiext:VK_KHR_maintenance1 extension is not enabled, +endif::VK_KHR_maintenance1[] +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[and] +ifdef::VK_VERSION_1_1[] slink:VkPhysicalDeviceProperties::pname:apiVersion is less than Vulkan - 1.1, and pname:srcImage or pname:dstImage is of type - ename:VK_IMAGE_TYPE_2D, then for each element of pname:pRegions, - pname:extent.depth must: be `1` + 1.1, +endif::VK_VERSION_1_1[] + pname:srcImage or pname:dstImage is of type ename:VK_IMAGE_TYPE_2D, then + for each element of pname:pRegions, pname:extent.depth must: be `1` endif::VKSC_VERSION_1_0[] +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] * [[VUID-{refpage}-srcImage-07743]] If pname:srcImage and pname:dstImage have a different elink:VkImageType, ifdef::VK_KHR_maintenance5[] @@ -215,22 +206,20 @@ ifdef::VK_KHR_maintenance5[] endif::VK_KHR_maintenance5[] one must: be ename:VK_IMAGE_TYPE_3D and the other must: be ename:VK_IMAGE_TYPE_2D -ifndef::VK_KHR_maintenance5[] - * [[VUID-{refpage}-srcImage-07744]] + * [[VUID-{refpage}-srcImage-08793]] If pname:srcImage and pname:dstImage have the same elink:VkImageType, - the pname:layerCount member of pname:srcSubresource and - pname:dstSubresource in each element of pname:pRegions must: match + for each element of pname:pRegions, +ifdef::VK_KHR_maintenance5[] + if neither of the pname:layerCount members of pname:srcSubresource or + pname:dstSubresource are ename:VK_REMAINING_ARRAY_LAYERS, endif::VK_KHR_maintenance5[] + the pname:layerCount members of pname:srcSubresource or + pname:dstSubresource must: match ifdef::VK_KHR_maintenance5[] * [[VUID-{refpage}-maintenance5-08792]] If the <<features-maintenance5, pname:maintenance5>> feature is not enabled, the pname:layerCount member of pname:srcSubresource or pname:dstSubresource must: not be ename:VK_REMAINING_ARRAY_LAYERS - * [[VUID-{refpage}-srcImage-08793]] - If pname:srcImage and pname:dstImage have the same elink:VkImageType, - and neither of the pname:layerCount members of pname:srcSubresource or - pname:dstSubresource are ename:VK_REMAINING_ARRAY_LAYERS, the - pname:layerCount members must: match * [[VUID-{refpage}-srcImage-08794]] If pname:srcImage and pname:dstImage have the same elink:VkImageType, and one of the pname:layerCount members of pname:srcSubresource or @@ -334,29 +323,25 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[] by pname:dstSubresource, pname:extent.depth must: be a multiple of the <<formats-compatibility-classes,texel block extent depth>> of the elink:VkFormat of pname:dstImage -ifndef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] - * [[VUID-{refpage}-srcImage-00126]] - pname:srcImage must: have been created with - ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag - * [[VUID-{refpage}-dstImage-00131]] - pname:dstImage must: have been created with - ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag -endif::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] -ifdef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] * [[VUID-{refpage}-aspect-06662]] +ifdef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] If the pname:aspect member of any element of pname:pRegions includes any flag other than ename:VK_IMAGE_ASPECT_STENCIL_BIT or pname:srcImage was not created with <<VkImageStencilUsageCreateInfo,separate stencil - usage>>, ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT must: have been included - in the slink:VkImageCreateInfo::pname:usage used to create - pname:srcImage + usage>>, +endif::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] + ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT must: have been included in the + slink:VkImageCreateInfo::pname:usage used to create pname:srcImage * [[VUID-{refpage}-aspect-06663]] +ifdef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] If the pname:aspect member of any element of pname:pRegions includes any flag other than ename:VK_IMAGE_ASPECT_STENCIL_BIT or pname:dstImage was not created with <<VkImageStencilUsageCreateInfo,separate stencil - usage>>, ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT must: have been included - in the slink:VkImageCreateInfo::pname:usage used to create - pname:dstImage + usage>>, +endif::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] + ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT must: have been included in the + slink:VkImageCreateInfo::pname:usage used to create pname:dstImage +ifdef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] * [[VUID-{refpage}-aspect-06664]] If the pname:aspect member of any element of pname:pRegions includes ename:VK_IMAGE_ASPECT_STENCIL_BIT, and pname:srcImage was created with diff --git a/chapters/commonvalidity/copy_image_to_buffer_common.adoc b/chapters/commonvalidity/copy_image_to_buffer_common.adoc index ebefc87b..9de04de2 100644 --- a/chapters/commonvalidity/copy_image_to_buffer_common.adoc +++ b/chapters/commonvalidity/copy_image_to_buffer_common.adoc @@ -30,16 +30,11 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[] pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice -ifndef::VK_KHR_shared_presentable_image[] - * [[VUID-{refpage}-srcImageLayout-00190]] - pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL - or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] -ifdef::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-srcImageLayout-01397]] pname:srcImageLayout must: be - ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, - ename:VK_IMAGE_LAYOUT_GENERAL, or - ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR +ifdef::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, endif::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, or + ename:VK_IMAGE_LAYOUT_GENERAL // Common Valid Usage diff --git a/chapters/commonvalidity/copy_memoryimage_to_imagememory_common.adoc b/chapters/commonvalidity/copy_memoryimage_to_imagememory_common.adoc index 948cff7c..b1f892ff 100644 --- a/chapters/commonvalidity/copy_memoryimage_to_imagememory_common.adoc +++ b/chapters/commonvalidity/copy_memoryimage_to_imagememory_common.adoc @@ -17,29 +17,28 @@ If pname:{imageparam} is sparse then all memory ranges accessed by the copy command must: be bound as described in <<sparsememory-resource-binding, Binding Resource Memory>> -ifndef::VK_VERSION_1_2+VK_EXT_separate_stencil_usage[] - * [[VUID-{refpage}-{imageparam}-09110]] + * [[VUID-{refpage}-{imageparam}-09111]] +ifdef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] + If the stencil aspect of pname:{imageparam} is accessed, and + pname:{imageparam} was not created with + <<VkImageStencilUsageCreateInfo,separate stencil usage>>, +endif::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] pname:{imageparam} must: have been created with ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT set in slink:VkImageCreateInfo::pname:usage -endif::VK_VERSION_1_2+VK_EXT_separate_stencil_usage[] ifdef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] - * [[VUID-{refpage}-{imageparam}-09111]] - If the stencil aspect of pname:{imageparam} is accessed, and - pname:{imageparam} was not created with - <<VkImageStencilUsageCreateInfo,separate stencil usage>>, the image - must: have been created with ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT - set in slink:VkImageCreateInfo::pname:usage * [[VUID-{refpage}-{imageparam}-09112]] If the stencil aspect of pname:{imageparam} is accessed, and pname:{imageparam} was created with - <<VkImageStencilUsageCreateInfo,separate stencil usage>>, the image - must: have been created with ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT - set in slink:VkImageStencilUsageCreateInfo::pname:stencilUsage + <<VkImageStencilUsageCreateInfo,separate stencil usage>>, + pname:{imageparam} must: have been created with + ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT set in + slink:VkImageStencilUsageCreateInfo::pname:stencilUsage * [[VUID-{refpage}-{imageparam}-09113]] - If non-stencil aspects of pname:{imageparam} are accessed, the image - must: have been created with ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT - set in slink:VkImageCreateInfo::pname:usage + If non-stencil aspects of pname:{imageparam} are accessed, + pname:{imageparam} must: have been created with + ename:VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT set in + slink:VkImageCreateInfo::pname:usage endif::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[] * [[VUID-{refpage}-{imageoffset}-09114]] If pname:flags contains ename:VK_HOST_IMAGE_COPY_MEMCPY_EXT, the diff --git a/chapters/commonvalidity/image_blit_common.adoc b/chapters/commonvalidity/image_blit_common.adoc index d67163f1..226305a2 100644 --- a/chapters/commonvalidity/image_blit_common.adoc +++ b/chapters/commonvalidity/image_blit_common.adoc @@ -7,20 +7,19 @@ * [[VUID-{refpage}-aspectMask-00238]] The pname:aspectMask member of pname:srcSubresource and pname:dstSubresource must: match -ifndef::VK_KHR_maintenance5[] - * [[VUID-{refpage}-layerCount-00239]] - The pname:layerCount member of pname:srcSubresource and - pname:dstSubresource must: match + * [[VUID-{refpage}-layerCount-08800]] +ifdef::VK_KHR_maintenance5[] + If neither of the pname:layerCount members of pname:srcSubresource or + pname:dstSubresource are ename:VK_REMAINING_ARRAY_LAYERS, the endif::VK_KHR_maintenance5[] +ifndef::VK_KHR_maintenance5[The] + pname:layerCount members of pname:srcSubresource or pname:dstSubresource + must: match ifdef::VK_KHR_maintenance5[] * [[VUID-{refpage}-maintenance5-08799]] If the <<features-maintenance5, pname:maintenance5>> feature is not enabled, the pname:layerCount member of pname:srcSubresource or pname:dstSubresource must: not be ename:VK_REMAINING_ARRAY_LAYERS - * [[VUID-{refpage}-layerCount-08800]] - If neither of the pname:layerCount members of pname:srcSubresource or - pname:dstSubresource are ename:VK_REMAINING_ARRAY_LAYERS, the - pname:layerCount members must: match * [[VUID-{refpage}-layerCount-08801]] If one of the pname:layerCount members of pname:srcSubresource or pname:dstSubresource is ename:VK_REMAINING_ARRAY_LAYERS, the other diff --git a/chapters/commonvalidity/image_copy_common.adoc b/chapters/commonvalidity/image_copy_common.adoc index 0ea14a2f..de6ad749 100644 --- a/chapters/commonvalidity/image_copy_common.adoc +++ b/chapters/commonvalidity/image_copy_common.adoc @@ -4,34 +4,36 @@ // Common Valid Usage // Common to VkImageCopy* struct -ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] - * [[VUID-{refpage}-aspectMask-00137]] - The pname:aspectMask member of pname:srcSubresource and - pname:dstSubresource must: match -endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] -ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] ifndef::VKSC_VERSION_1_0[] * [[VUID-{refpage}-apiVersion-07940]] - If the apiext:VK_KHR_sampler_ycbcr_conversion extension is not enabled - and slink:VkPhysicalDeviceProperties::pname:apiVersion is less than - Vulkan 1.1, the pname:aspectMask member of pname:srcSubresource and - pname:dstSubresource must: match -endif::VKSC_VERSION_1_0[] -endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] -ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] -ifndef::VKSC_VERSION_1_0[] +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[If] +ifdef::VK_KHR_sampler_ycbcr_conversion[] + the apiext:VK_KHR_sampler_ycbcr_conversion extension is not enabled, +endif::VK_KHR_sampler_ycbcr_conversion[] +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[and] +ifdef::VK_VERSION_1_1[] + slink:VkPhysicalDeviceProperties::pname:apiVersion is less than Vulkan + 1.1, +endif::VK_VERSION_1_1[] +ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[the] +ifndef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[The] + pname:aspectMask member of pname:srcSubresource and pname:dstSubresource + must: match * [[VUID-{refpage}-apiVersion-07941]] - If the apiext:VK_KHR_maintenance1 extension is not enabled and +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[If] +ifdef::VK_KHR_maintenance1[] + the apiext:VK_KHR_maintenance1 extension is not enabled, +endif::VK_KHR_maintenance1[] +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[and] +ifdef::VK_VERSION_1_1[] slink:VkPhysicalDeviceProperties::pname:apiVersion is less than Vulkan - 1.1, the pname:layerCount member of pname:srcSubresource and - pname:dstSubresource must: match + 1.1, +endif::VK_VERSION_1_1[] +ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[the] +ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[The] + pname:layerCount member of pname:srcSubresource and pname:dstSubresource + must: match endif::VKSC_VERSION_1_0[] -endif::VK_VERSION_1_1,VK_KHR_maintenance1[] -ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[] - * [[VUID-{refpage}-layerCount-00138]] - The pname:layerCount member of pname:srcSubresource and - pname:dstSubresource must: match -endif::VK_VERSION_1_1,VK_KHR_maintenance1[] * [[VUID-{refpage}-extent-06668]] pname:extent.width must: not be 0 * [[VUID-{refpage}-extent-06669]] diff --git a/chapters/commonvalidity/image_resolve_common.adoc b/chapters/commonvalidity/image_resolve_common.adoc index 93b1c361..3caae543 100644 --- a/chapters/commonvalidity/image_resolve_common.adoc +++ b/chapters/commonvalidity/image_resolve_common.adoc @@ -7,20 +7,19 @@ * [[VUID-{refpage}-aspectMask-00266]] The pname:aspectMask member of pname:srcSubresource and pname:dstSubresource must: only contain ename:VK_IMAGE_ASPECT_COLOR_BIT -ifndef::VK_KHR_maintenance5[] - * [[VUID-{refpage}-layerCount-00267]] - The pname:layerCount member of pname:srcSubresource and - pname:dstSubresource must: match + * [[VUID-{refpage}-layerCount-08803]] +ifdef::VK_KHR_maintenance5[] + If neither of the pname:layerCount members of pname:srcSubresource or + pname:dstSubresource are ename:VK_REMAINING_ARRAY_LAYERS, the endif::VK_KHR_maintenance5[] +ifndef::VK_KHR_maintenance5[The] + pname:layerCount member of pname:srcSubresource and pname:dstSubresource + must: match ifdef::VK_KHR_maintenance5[] * [[VUID-{refpage}-maintenance5-08802]] If the <<features-maintenance5, pname:maintenance5>> feature is not enabled, the pname:layerCount member of pname:srcSubresource or pname:dstSubresource must: not be ename:VK_REMAINING_ARRAY_LAYERS - * [[VUID-{refpage}-layerCount-08803]] - If neither of the pname:layerCount members of pname:srcSubresource or - pname:dstSubresource are ename:VK_REMAINING_ARRAY_LAYERS, the - pname:layerCount members must: match * [[VUID-{refpage}-layerCount-08804]] If one of the pname:layerCount members of pname:srcSubresource or pname:dstSubresource is ename:VK_REMAINING_ARRAY_LAYERS, the other diff --git a/chapters/commonvalidity/resolve_image_common.adoc b/chapters/commonvalidity/resolve_image_common.adoc index 7cb7c19c..47934b2a 100644 --- a/chapters/commonvalidity/resolve_image_common.adoc +++ b/chapters/commonvalidity/resolve_image_common.adoc @@ -24,32 +24,24 @@ pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice -ifndef::VK_KHR_shared_presentable_image[] - * [[VUID-{refpage}-srcImageLayout-00261]] - pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL - or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] -ifdef::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-srcImageLayout-01400]] - pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, + pname:srcImageLayout must: be +ifdef::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, +endif::VK_KHR_shared_presentable_image[] ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-dstImageLayout-00262]] pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice -ifndef::VK_KHR_shared_presentable_image[] - * [[VUID-{refpage}-dstImageLayout-00263]] - pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL - or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] -ifdef::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-dstImageLayout-01401]] - pname:dstImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, + pname:dstImageLayout must: be +ifdef::VK_KHR_shared_presentable_image[] + ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, +endif::VK_KHR_shared_presentable_image[] ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -endif::VK_KHR_shared_presentable_image[] * [[VUID-{refpage}-dstImage-02003]] The <<resources-image-format-features,format features>> of pname:dstImage must: contain diff --git a/chapters/copies.adoc b/chapters/copies.adoc index 55223993..0384c432 100644 --- a/chapters/copies.adoc +++ b/chapters/copies.adoc @@ -1351,7 +1351,7 @@ endif::VK_NV_copy_memory_indirect[] [[copies-imagescaling]] -== Image Copies with Scaling +== Image Copies With Scaling [open,refpage='vkCmdBlitImage',desc='Copy regions of an image, potentially performing format conversion,',type='protos'] -- diff --git a/chapters/descriptorsets.adoc b/chapters/descriptorsets.adoc index 3652e7db..8b41e554 100644 --- a/chapters/descriptorsets.adoc +++ b/chapters/descriptorsets.adoc @@ -1092,7 +1092,8 @@ endif::VK_KHR_push_descriptor[] ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, then all other elements of slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings must: have a smaller value of pname:binding - * If an element of pname:pBindingFlags includes + * [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-09379]] + If an element of pname:pBindingFlags includes ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, then it must: be the element with the the highest pname:binding number * [[VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005]] @@ -3090,7 +3091,8 @@ ifdef::VK_VERSION_1_2,VK_EXT_descriptor_indexing[] ename:VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT bit set, pname:descriptorPool must: have been created with the ename:VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT flag set - * If pname:pSetLayouts[i] was created with an element of + * [[VUID-VkDescriptorSetAllocateInfo-pSetLayouts-09380]] + If pname:pSetLayouts[i] was created with an element of pname:pBindingFlags that includes ename:VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, and slink:VkDescriptorSetVariableDescriptorCountAllocateInfo is included in @@ -4442,7 +4444,7 @@ endif::VK_KHR_descriptor_update_template[] -- -=== Descriptor Set Updates with Templates +=== Descriptor Set Updates With Templates [open,refpage='vkCreateDescriptorUpdateTemplate',desc='Create a new descriptor update template',type='protos'] -- @@ -5194,7 +5196,7 @@ include::{generated}/validity/protos/vkCmdPushDescriptorSetKHR.adoc[] ifdef::VK_VERSION_1_1,VK_KHR_descriptor_update_template[] -=== Push Descriptor Updates with Descriptor Update Templates +=== Push Descriptor Updates With Descriptor Update Templates [open,refpage='vkCmdPushDescriptorSetWithTemplateKHR',desc='Pushes descriptor updates into a command buffer using a descriptor update template',type='protos'] -- @@ -5594,7 +5596,7 @@ rather than descriptor set objects. [[descriptorbuffers-puttingdescriptorsinmemory]] -=== Putting descriptors in memory +=== Putting Descriptors in Memory Commands are provided to retrieve descriptor data, and also to locate where in memory that data must: be written to match the given descriptor set @@ -6126,7 +6128,7 @@ not provided immutably. [[descriptorbuffers-binding]] -=== Binding descriptor buffers +=== Binding Descriptor Buffers Descriptor buffers have their own separate binding point on the command buffer, with buffers bound using flink:vkCmdBindDescriptorBuffersEXT. @@ -6494,7 +6496,7 @@ include::{generated}/validity/protos/vkCmdBindDescriptorBufferEmbeddedSamplersEX [[descriptorbuffers-updates]] -=== Updating descriptor buffers +=== Updating Descriptor Buffers Updates to descriptor data in buffers can: be performed by any operation on either the host or device that can: access memory. @@ -6505,7 +6507,7 @@ stage. [[descriptorbuffers-push-descriptors]] -=== Push Descriptors with Descriptor Buffers +=== Push Descriptors With Descriptor Buffers If the <<features-descriptorBufferPushDescriptors, pname:descriptorBufferPushDescriptors>> feature is enabled, push descriptors @@ -6525,7 +6527,7 @@ required for a subsequent command must: be recorded again. [[descriptorbuffers-capturereplay]] -=== Capture and replay +=== Capture and Replay In a similar way to <<features-bufferDeviceAddressCaptureReplay, pname:bufferDeviceAddressCaptureReplay>>, the diff --git a/chapters/devsandqueues.adoc b/chapters/devsandqueues.adoc index 21c130a0..6c22a537 100644 --- a/chapters/devsandqueues.adoc +++ b/chapters/devsandqueues.adoc @@ -1870,18 +1870,15 @@ include::{generated}/api/structs/VkDeviceCreateInfo.adoc[] .Valid Usage **** -ifndef::VK_VERSION_1_1[] - * [[VUID-VkDeviceCreateInfo-queueFamilyIndex-00372]] + * [[VUID-VkDeviceCreateInfo-queueFamilyIndex-02802]] The pname:queueFamilyIndex member of each element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos +ifdef::VK_VERSION_1_1[] + , except that two members can share the same pname:queueFamilyIndex if + one describes protected-capable queues and one describes queues that are + not protected-capable endif::VK_VERSION_1_1[] ifdef::VK_VERSION_1_1[] - * [[VUID-VkDeviceCreateInfo-queueFamilyIndex-02802]] - The pname:queueFamilyIndex member of each element of - pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos, - except that two members can share the same pname:queueFamilyIndex if one - describes protected-capable queues and one describes queues that are not - protected-capable * [[VUID-VkDeviceCreateInfo-pQueueCreateInfos-06755]] If multiple elements of pname:pQueueCreateInfos share the same pname:queueFamilyIndex, the sum of their pname:queueCount members must: @@ -2933,16 +2930,14 @@ endif::VKSC_VERSION_1_0[] .Valid Usage **** -ifdef::VKSC_VERSION_1_0[] * [[VUID-vkDestroyDevice-device-05137]] - All child objects created on pname:device, except those with no explicit - <<fundamentals-objectmodel-no-destroy, free or destroy command>>, must: - have been destroyed prior to destroying pname:device + All child objects created on pname:device +ifdef::VKSC_VERSION_1_0[] + , except those with no explicit <<fundamentals-objectmodel-no-destroy, + free or destroy command>>, endif::VKSC_VERSION_1_0[] + must: have been destroyed prior to destroying pname:device ifndef::VKSC_VERSION_1_0[] - * [[VUID-vkDestroyDevice-device-00378]] - All child objects created on pname:device must: have been destroyed - prior to destroying pname:device * [[VUID-vkDestroyDevice-device-00379]] If sname:VkAllocationCallbacks were provided when pname:device was created, a compatible set of callbacks must: be provided here diff --git a/chapters/extensions.adoc b/chapters/extensions.adoc index 1015cbc2..56889373 100644 --- a/chapters/extensions.adoc +++ b/chapters/extensions.adoc @@ -712,7 +712,7 @@ include::{generated}/validity/structs/VkExtensionProperties.adoc[] -- [[extendingvulkan-accessing-device-physical-device]] -==== Accessing device-level functionality from a slink:VkPhysicalDevice +==== Accessing Device-Level Functionality From a slink:VkPhysicalDevice Some device extensions also add support for physical-device-level functionality. @@ -721,7 +721,7 @@ is supported as advertised by flink:vkEnumerateDeviceExtensionProperties for a given slink:VkPhysicalDevice. [[extendingvulkan-accessing-device-logical-device]] -==== Accessing device-level functionality from a slink:VkDevice +==== Accessing Device-Level Functionality From a slink:VkDevice For commands that are dispatched from a slink:VkDevice, or from a child object of a slink:VkDevice, device extensions must: be enabled in diff --git a/chapters/formats.adoc b/chapters/formats.adoc index ffc0a072..29dcb494 100644 --- a/chapters/formats.adoc +++ b/chapters/formats.adoc @@ -1299,7 +1299,7 @@ endif::VK_NV_optical_flow[] ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] [[formats-compatible-planes]] -=== Compatible formats of planes of multi-planar formats +=== Compatible Formats of Planes of Multi-Planar Formats Individual planes of multi-planar formats are size-compatible with single-plane color formats if they occupy the same number of bits per texel @@ -1324,7 +1324,7 @@ include::{generated}/formats/planeformat.adoc[] endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] [[formats-planes-image-aspect]] -=== Multi-planar format image aspect +=== Multi-planar Format Image Aspect When using elink:VkImageAspectFlagBits to select a plane of a multi-planar format, the following are the valid options: @@ -1464,7 +1464,7 @@ endianness. ^|R ^|G ^|B ^|A 13+>s|etext:VK_FORMAT_R8G8B8A8_* ^|B ^|G ^|R ^|A 13+>s|etext:VK_FORMAT_B8G8R8A8_* ifdef::VK_KHR_maintenance5[] -^|0 ^|0 ^|0 ^|A 13+>s|ename:VK_FORMAT_A8_UNORM_KHR +^|A 16+>s|ename:VK_FORMAT_A8_UNORM_KHR endif::VK_KHR_maintenance5[] ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] ^|G~0~ ^|B ^|G~1~ ^|R 13+>s|ename:VK_FORMAT_G8B8G8R8_422_UNORM @@ -3514,7 +3514,7 @@ respectively. endif::VK_EXT_host_image_copy[] [[formats-without-shader-storage-format]] -=== Formats without shader storage format +=== Formats Without Shader Storage Format The device-level features for using a storage image or a storage texel buffer with an image format of code:Unknown, @@ -3596,7 +3596,7 @@ endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] ifdef::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] -=== Depth comparison format support +=== Depth Comparison Format Support If Vulkan 1.3 or the `apiext:VK_KHR_format_feature_flags2` extension is supported, a depth/stencil format with a depth component supporting @@ -3606,7 +3606,7 @@ ename:VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT. endif::VK_VERSION_1_3,VK_KHR_format_feature_flags2[] [[format-feature-dependent-usage-flags]] -=== Format feature dependent usage flags +=== Format Feature Dependent Usage Flags Certain resource usage flags depend on support for the corresponding format feature flag for the format in question. diff --git a/chapters/fragops.adoc b/chapters/fragops.adoc index 8e4fa8bb..d3a52711 100644 --- a/chapters/fragops.adoc +++ b/chapters/fragops.adoc @@ -2225,7 +2225,7 @@ sample mask, alpha to coverage, stencil, and depth tests. ifdef::VK_NV_fragment_coverage_to_color[] [[fragops-coverage-to-color]] -== Fragment Coverage To Color +== Fragment Coverage to Color [open,refpage='VkPipelineCoverageToColorStateCreateInfoNV',desc='Structure specifying whether fragment coverage replaces a color',type='structs'] -- diff --git a/chapters/framebuffer.adoc b/chapters/framebuffer.adoc index 8dd8fbcd..e565df47 100644 --- a/chapters/framebuffer.adoc +++ b/chapters/framebuffer.adoc @@ -118,23 +118,17 @@ ifdef::VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_a pname:flags must: not include ename:VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT endif::VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access[] -ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-07353]] - If pname:attachmentCount is not `0`, and any of - ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT, + If pname:attachmentCount is not `0` +ifdef::VK_EXT_extended_dynamic_state3[] + , and any of ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT, ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT, or ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT are not set, +endif::VK_EXT_extended_dynamic_state3[] pname:pAttachments must: be a valid pointer to an array of pname:attachmentCount valid slink:VkPipelineColorBlendAttachmentState structures -endif::VK_EXT_extended_dynamic_state3[] -ifndef::VK_EXT_extended_dynamic_state3[] - * [[VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-07354]] - If pname:attachmentCount is not `0`, pname:pAttachments must: be a valid - pointer to an array of pname:attachmentCount valid - slink:VkPipelineColorBlendAttachmentState structures -endif::VK_EXT_extended_dynamic_state3[] **** include::{generated}/validity/structs/VkPipelineColorBlendStateCreateInfo.adoc[] @@ -1107,23 +1101,17 @@ Write Mask>> as follows: If the <<features-colorWriteEnable, pname:colorWriteEnable>> feature is not enabled, all elements of pname:pColorWriteEnables must: be ename:VK_TRUE -ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-07608]] +ifdef::VK_EXT_extended_dynamic_state3[] If the pipeline is being created with ename:VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT, ename:VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, ename:VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT, or ename:VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT dynamic states not set, - pname:attachmentCount must: be equal to the pname:attachmentCount member - of the sname:VkPipelineColorBlendStateCreateInfo structure specified - during pipeline creation endif::VK_EXT_extended_dynamic_state3[] -ifndef::VK_EXT_extended_dynamic_state3[] - * [[VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-04802]] pname:attachmentCount must: be equal to the pname:attachmentCount member of the sname:VkPipelineColorBlendStateCreateInfo structure specified during pipeline creation -endif::VK_EXT_extended_dynamic_state3[] * [[VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-06655]] pname:attachmentCount must: be less than or equal to the pname:maxColorAttachments member of sname:VkPhysicalDeviceLimits diff --git a/chapters/fundamentals.adoc b/chapters/fundamentals.adoc index ce85734c..5e5e073d 100644 --- a/chapters/fundamentals.adoc +++ b/chapters/fundamentals.adoc @@ -1725,7 +1725,7 @@ respectively. [[fundamentals-fixedfpconv]] -=== Conversion from Normalized Fixed-Point to Floating-Point +=== Conversion From Normalized Fixed-Point to Floating-Point Unsigned normalized fixed-point integers represent numbers in the range [eq]#[0,1]#. @@ -1763,7 +1763,7 @@ result must: be clamped before the value is returned to shaders. [[fundamentals-fpfixedconv]] -=== Conversion from Floating-Point to Normalized Fixed-Point +=== Conversion From Floating-Point to Normalized Fixed-Point The conversion from a floating-point value [eq]#f# to the corresponding unsigned normalized fixed-point value [eq]#c# is defined by first clamping diff --git a/chapters/memory.adoc b/chapters/memory.adoc index 3e46ad2e..ac391b77 100644 --- a/chapters/memory.adoc +++ b/chapters/memory.adoc @@ -1322,28 +1322,23 @@ endif::VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_me .Valid Usage **** -ifndef::VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf,VK_QNX_external_memory_screen_buffer[] - * [[VUID-VkMemoryAllocateInfo-allocationSize-00638]] - pname:allocationSize must: be greater than `0` + * [[VUID-VkMemoryAllocateInfo-allocationSize-07897]] +ifdef::VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf,VK_QNX_external_memory_screen_buffer[] + If the parameters do not define an <<memory-import-operation,import or + export operation>>, endif::VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf,VK_QNX_external_memory_screen_buffer[] + pname:allocationSize must: be greater than `0` ifdef::VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf,VK_QNX_external_memory_screen_buffer[] * [[VUID-VkMemoryAllocateInfo-None-06657]] The parameters must: not define more than one <<memory-import-operation,import operation>> - * [[VUID-VkMemoryAllocateInfo-allocationSize-07897]] - If the parameters do not define an <<memory-import-operation,import or - export operation>>, pname:allocationSize must: be greater than `0` -ifndef::VK_ANDROID_external_memory_android_hardware_buffer[] - * [[VUID-VkMemoryAllocateInfo-allocationSize-07898]] - If the parameters define an export operation, pname:allocationSize must: - be greater than `0` -endif::VK_ANDROID_external_memory_android_hardware_buffer[] -ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] * [[VUID-VkMemoryAllocateInfo-allocationSize-07899]] - If the parameters define an export operation and the handle type is not - ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, - pname:allocationSize must: be greater than `0` + If the parameters define an export operation +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] + and the handle type is not + ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID endif::VK_ANDROID_external_memory_android_hardware_buffer[] + , pname:allocationSize must: be greater than `0` endif::VK_KHR_external_memory_win32,VK_KHR_external_memory_fd,VK_EXT_external_memory_host,VK_ANDROID_external_memory_android_hardware_buffer,VK_FUCHSIA_external_memory,VK_NV_external_memory_sci_buf,VK_QNX_external_memory_screen_buffer[] ifdef::VK_FUCHSIA_buffer_collection[] * [[VUID-VkMemoryAllocateInfo-buffer-06380]] @@ -1757,36 +1752,30 @@ endif::VK_KHR_dedicated_allocation[] * [[VUID-VkMemoryDedicatedAllocateInfo-image-01432]] At least one of pname:image and pname:buffer must: be dlink:VK_NULL_HANDLE -ifndef::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] - * [[VUID-VkMemoryDedicatedAllocateInfo-image-01433]] - If pname:image is not dlink:VK_NULL_HANDLE, - sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the - sname:VkMemoryRequirements::pname:size of the image -endif::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] -ifdef::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] * [[VUID-VkMemoryDedicatedAllocateInfo-image-02964]] - If pname:image is not dlink:VK_NULL_HANDLE and the memory is not an - imported Android Hardware Buffer or an imported QNX Screen buffer, - sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the - sname:VkMemoryRequirements::pname:size of the image + If pname:image is not dlink:VK_NULL_HANDLE +ifdef::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] + and the memory is not an imported +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[Android Hardware Buffer] +ifdef::VK_ANDROID_external_memory_android_hardware_buffer+VK_QNX_external_memory_screen_buffer[or an imported] +ifdef::VK_QNX_external_memory_screen_buffer[QNX Screen buffer] endif::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] + , sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the + sname:VkMemoryRequirements::pname:size of the image * [[VUID-VkMemoryDedicatedAllocateInfo-image-01434]] If pname:image is not dlink:VK_NULL_HANDLE, pname:image must: have been created without ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT set in slink:VkImageCreateInfo::pname:flags -ifndef::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] - * [[VUID-VkMemoryDedicatedAllocateInfo-buffer-01435]] - If pname:buffer is not dlink:VK_NULL_HANDLE, - sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the - sname:VkMemoryRequirements::pname:size of the buffer -endif::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] -ifdef::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] * [[VUID-VkMemoryDedicatedAllocateInfo-buffer-02965]] - If pname:buffer is not dlink:VK_NULL_HANDLE and the memory is not an - imported Android Hardware Buffer or an imported QNX Screen buffer, - sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the - sname:VkMemoryRequirements::pname:size of the buffer + If pname:buffer is not dlink:VK_NULL_HANDLE +ifdef::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] + and the memory is not an imported +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[Android Hardware Buffer] +ifdef::VK_ANDROID_external_memory_android_hardware_buffer+VK_QNX_external_memory_screen_buffer[or an imported] +ifdef::VK_QNX_external_memory_screen_buffer[QNX Screen buffer] endif::VK_ANDROID_external_memory_android_hardware_buffer,VK_QNX_external_memory_screen_buffer[] + , sname:VkMemoryAllocateInfo::pname:allocationSize must: equal the + sname:VkMemoryRequirements::pname:size of the buffer * [[VUID-VkMemoryDedicatedAllocateInfo-buffer-01436]] If pname:buffer is not dlink:VK_NULL_HANDLE, pname:buffer must: have been created without ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT set in diff --git a/chapters/pipelines.adoc b/chapters/pipelines.adoc index 5dfee39a..2d88b2e5 100644 --- a/chapters/pipelines.adoc +++ b/chapters/pipelines.adoc @@ -305,20 +305,18 @@ include::{chapters}/commonvalidity/compute_graph_pipeline_create_info_common.ado stage must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxPerStageResources ifdef::VK_KHR_pipeline_library[] -ifndef::VK_AMDX_shader_enqueue[] - * [[VUID-VkComputePipelineCreateInfo-flags-03364]] - pname:flags must: not include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR -endif::VK_AMDX_shader_enqueue[] -endif::VK_KHR_pipeline_library[] -ifdef::VK_AMDX_shader_enqueue[] * [[VUID-VkComputePipelineCreateInfo-shaderEnqueue-09177]] +ifdef::VK_AMDX_shader_enqueue[] If <<features-shaderEnqueue,pname:shaderEnqueue>> is not enabled, +endif::VK_AMDX_shader_enqueue[] pname:flags must: not include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR +ifdef::VK_AMDX_shader_enqueue[] * [[VUID-VkComputePipelineCreateInfo-flags-09178]] If pname:flags does not include ename:VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, the shader specified by pname:stage must: not declare the code:ShaderEnqueueAMDX capability endif::VK_AMDX_shader_enqueue[] +endif::VK_KHR_pipeline_library[] ifdef::VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3[] * [[VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566]] If @@ -563,19 +561,15 @@ ifdef::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT flag set, the <<features-computeFullSubgroups, pname:computeFullSubgroups>> feature must: be enabled -ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] * [[VUID-VkPipelineShaderStageCreateInfo-flags-08988]] If pname:flags includes ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, - pname:stage must: be one of ename:VK_SHADER_STAGE_MESH_BIT_EXT, - ename:VK_SHADER_STAGE_TASK_BIT_EXT, or ename:VK_SHADER_STAGE_COMPUTE_BIT -endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] -ifndef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] - * [[VUID-VkPipelineShaderStageCreateInfo-flags-08989]] - If pname:flags includes - ename:VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, - pname:stage must: be ename:VK_SHADER_STAGE_COMPUTE_BIT + pname:stage must: be +ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] + one of ename:VK_SHADER_STAGE_MESH_BIT_EXT, + ename:VK_SHADER_STAGE_TASK_BIT_EXT, or endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] + ename:VK_SHADER_STAGE_COMPUTE_BIT * [[VUID-VkPipelineShaderStageCreateInfo-pNext-02754]] If a slink:VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is included in the pname:pNext chain, pname:flags must: not have the @@ -628,74 +622,55 @@ ifdef::VK_KHR_cooperative_matrix[] <<limits-subgroup-size,pname:subgroupSize>>. endif::VK_KHR_cooperative_matrix[] endif::VK_VERSION_1_3,VK_EXT_subgroup_size_control[] -ifndef::VK_EXT_graphics_pipeline_library,VK_EXT_shader_module_identifier,VK_KHR_maintenance5[] - * [[VUID-VkPipelineShaderStageCreateInfo-module-06716]] + + * [[VUID-VkPipelineShaderStageCreateInfo-stage-08771]] +ifdef::VK_EXT_shader_module_identifier[] + If a shader module identifier is not specified for this pname:stage, +endif::VK_EXT_shader_module_identifier[] pname:module must: be a valid slink:VkShaderModule -endif::VK_EXT_graphics_pipeline_library,VK_EXT_shader_module_identifier,VK_KHR_maintenance5[] +ifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] + if none of the following features are enabled: +ifdef::VK_EXT_graphics_pipeline_library[] + ** <<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>> +endif::VK_EXT_graphics_pipeline_library[] +ifdef::VK_KHR_maintenance5[] + ** <<features-maintenance5, pname:maintenance5>> +endif::VK_KHR_maintenance5[] +endif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] + +ifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] + * [[VUID-VkPipelineShaderStageCreateInfo-stage-06845]] +ifdef::VK_EXT_shader_module_identifier[] + If a shader module identifier is not specified for this pname:stage, + pname:module must: be a valid slink:VkShaderModule, or +endif::VK_EXT_shader_module_identifier[] +ifndef::VK_EXT_shader_module_identifier[] + If pname:module is dlink:VK_NULL_HANDLE] +endif::VK_EXT_shader_module_identifier[] + there must: be a valid slink:VkShaderModuleCreateInfo structure in the + pname:pNext chain +endif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] + ifdef::VK_EXT_shader_module_identifier[] ifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] * [[VUID-VkPipelineShaderStageCreateInfo-stage-06844]] If a shader module identifier is specified for this pname:stage, a slink:VkShaderModuleCreateInfo structure must: not be present in the pname:pNext chain - * [[VUID-VkPipelineShaderStageCreateInfo-stage-06845]] - If a shader module identifier is not specified for this pname:stage, - pname:module must: be a valid slink:VkShaderModule or there must: be a - valid slink:VkShaderModuleCreateInfo structure in the pname:pNext chain -ifndef::VK_KHR_maintenance5[] - * [[VUID-VkPipelineShaderStageCreateInfo-stage-06846]] - If a shader module identifier is not specified for this pname:stage, and - the <<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>> - feature is not enabled, pname:module must: be a valid - slink:VkShaderModule -endif::VK_KHR_maintenance5[] -ifdef::VK_EXT_graphics_pipeline_library+VK_KHR_maintenance5[] - * [[VUID-VkPipelineShaderStageCreateInfo-stage-08771]] - If a shader module identifier is not specified for this pname:stage, and - neither the <<features-maintenance5, pname:maintenance5>> nor - <<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>> - feature are enabled, pname:module must: be a valid slink:VkShaderModule -endif::VK_EXT_graphics_pipeline_library+VK_KHR_maintenance5[] -ifndef::VK_EXT_graphics_pipeline_library[] - * [[VUID-VkPipelineShaderStageCreateInfo-stage-08772]] - If a shader module identifier is not specified for this pname:stage, and - the <<features-maintenance5, pname:maintenance5>> feature is not - enabled, pname:module must: be a valid slink:VkShaderModule -endif::VK_EXT_graphics_pipeline_library[] -endif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] -ifndef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] - * [[VUID-VkPipelineShaderStageCreateInfo-stage-06847]] - If a shader identifier is not specified for this pname:stage, - pname:module must: be a valid slink:VkShaderModule endif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] * [[VUID-VkPipelineShaderStageCreateInfo-stage-06848]] If a shader module identifier is specified for this pname:stage, pname:module must: be dlink:VK_NULL_HANDLE +endif::VK_EXT_shader_module_identifier[] * [[VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06849]] - If a shader module identifier is not specified, the shader code used by - the pipeline must: be valid as described by the <<spirv-spec,Khronos - SPIR-V Specification>> after applying the specializations provided in - pname:pSpecializationInfo, if any, and then converting all - specialization constants into fixed constants +ifdef::VK_EXT_shader_module_identifier[] + If a shader module identifier is not specified, the endif::VK_EXT_shader_module_identifier[] -ifndef::VK_EXT_shader_module_identifier[] -ifdef::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] -ifndef::VK_KHR_maintenance5[] - * [[VUID-VkPipelineShaderStageCreateInfo-graphicsPipelineLibrary-06717]] - If the <<features-graphicsPipelineLibrary, - pname:graphicsPipelineLibrary>> feature is not enabled, pname:module - must: be a valid slink:VkShaderModule -endif::VK_KHR_maintenance5[] - * [[VUID-VkPipelineShaderStageCreateInfo-module-06718]] - If pname:module is dlink:VK_NULL_HANDLE, there must: be a valid - slink:VkShaderModuleCreateInfo structure in the pname:pNext chain -endif::VK_EXT_graphics_pipeline_library,VK_KHR_maintenance5[] - * [[VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719]] - The shader code used by the pipeline must: be valid as described by the +ifndef::VK_EXT_shader_module_identifier[The] + shader code used by the pipeline must: be valid as described by the <<spirv-spec,Khronos SPIR-V Specification>> after applying the specializations provided in pname:pSpecializationInfo, if any, and then converting all specialization constants into fixed constants -endif::VK_EXT_shader_module_identifier[] **** include::{generated}/validity/structs/VkPipelineShaderStageCreateInfo.adoc[] @@ -1814,11 +1789,12 @@ endif::VKSC_VERSION_1_0[] **** :pipelineType: graphics include::{chapters}/commonvalidity/pipeline_create_info_common.adoc[] -ifndef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] - * [[VUID-VkGraphicsPipelineCreateInfo-stage-00727]] + * [[VUID-VkGraphicsPipelineCreateInfo-stage-02096]] If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader state>> the pname:stage member of one element of pname:pStages must: be ename:VK_SHADER_STAGE_VERTEX_BIT +ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] + or ename:VK_SHADER_STAGE_MESH_BIT_EXT endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] * [[VUID-VkGraphicsPipelineCreateInfo-pStages-02095]] @@ -1831,11 +1807,6 @@ ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, ename:VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, or ename:VK_SHADER_STAGE_GEOMETRY_BIT) - * [[VUID-VkGraphicsPipelineCreateInfo-stage-02096]] - If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, - pre-rasterization shader state>> the pname:stage member of one element - of pname:pStages must: be either ename:VK_SHADER_STAGE_VERTEX_BIT or - ename:VK_SHADER_STAGE_MESH_BIT_EXT endif::VK_NV_mesh_shader,VK_EXT_mesh_shader[] ifdef::VK_NV_mesh_shader+VK_EXT_mesh_shader[] * [[VUID-VkGraphicsPipelineCreateInfo-TaskNV-07063]] @@ -1854,23 +1825,18 @@ endif::VK_NV_mesh_shader+VK_EXT_mesh_shader[] pre-rasterization shader state>> and pname:pStages includes a tessellation evaluation shader stage, it must: include a tessellation control shader stage -ifndef::VK_EXT_extended_dynamic_state3[] - * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00731]] - If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, - pre-rasterization shader state>> and pname:pStages includes a - tessellation control shader stage and a tessellation evaluation shader - stage, pname:pTessellationState must: be a valid pointer to a valid - slink:VkPipelineTessellationStateCreateInfo structure -endif::VK_EXT_extended_dynamic_state3[] -ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-VkGraphicsPipelineCreateInfo-pStages-09022]] If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader state>> and pname:pStages includes a - tessellation control shader stage, and the - `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled or the - ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state is not - set, pname:pTessellationState must: be a valid pointer to a valid + tessellation control shader stage, +ifdef::VK_EXT_extended_dynamic_state3[] + and the `apiext:VK_EXT_extended_dynamic_state3` extension is not enabled + or the ename:VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state is + not set, +endif::VK_EXT_extended_dynamic_state3[] + pname:pTessellationState must: be a valid pointer to a valid slink:VkPipelineTessellationStateCreateInfo structure +ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-VkGraphicsPipelineCreateInfo-pTessellationState-09023]] If pname:pTessellationState is not `NULL` it must: be a pointer to a valid slink:VkPipelineTessellationStateCreateInfo structure @@ -1899,45 +1865,32 @@ endif::VK_EXT_extended_dynamic_state3[] shader stages, and the shader code of both contain an code:OpExecutionMode instruction specifying the out patch size in the pipeline, they must: both specify the same patch size -ifndef::VK_EXT_extended_dynamic_state3[] - * [[VUID-VkGraphicsPipelineCreateInfo-pStages-00736]] - If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, - pre-rasterization shader state>> and - <<pipelines-graphics-subsets-vertex-input, vertex input state>> and - pname:pStages includes tessellation shader stages, the pname:topology - member of pname:pInputAssembly must: be - ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - * [[VUID-VkGraphicsPipelineCreateInfo-topology-00737]] - If the pipeline requires <<pipelines-graphics-subsets-pre-rasterization, - pre-rasterization shader state>> and - <<pipelines-graphics-subsets-vertex-input, vertex input state>> and the - pname:topology member of pname:pInputAssembly is - ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, pname:pStages must: include - tessellation shader stages -endif::VK_EXT_extended_dynamic_state3[] -ifdef::VK_EXT_extended_dynamic_state3[] * [[VUID-VkGraphicsPipelineCreateInfo-pStages-08888]] If the pipeline is being created with <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader state>> and <<pipelines-graphics-subsets-vertex-input, vertex input - state>> and pname:pStages includes tessellation shader stages, and - either ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is not - enabled or + state>> and pname:pStages includes tessellation shader stages, +ifdef::VK_EXT_extended_dynamic_state3[] + and either ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is + not enabled or <<limits-dynamicPrimitiveTopologyUnrestricted,pname:dynamicPrimitiveTopologyUnrestricted>> - is ename:VK_FALSE, the pname:topology member of pname:pInputAssembly - must: be ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST + is ename:VK_FALSE, +endif::VK_EXT_extended_dynamic_state3[] + the pname:topology member of pname:pInputAssembly must: be + ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST * [[VUID-VkGraphicsPipelineCreateInfo-topology-08889]] If the pipeline is being created with <<pipelines-graphics-subsets-pre-rasterization, pre-rasterization shader state>> and <<pipelines-graphics-subsets-vertex-input, vertex input state>> and the pname:topology member of pname:pInputAssembly is - ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, and either - ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is not enabled - or + ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, +ifdef::VK_EXT_extended_dynamic_state3[] + and either ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY dynamic state is + not enabled or <<limits-dynamicPrimitiveTopologyUnrestricted,pname:dynamicPrimitiveTopologyUnrestricted>> - is ename:VK_FALSE, then pname:pStages must: include tessellation shader - stages + is ename:VK_FALSE, endif::VK_EXT_extended_dynamic_state3[] + then pname:pStages must: include tessellation shader stages * [[VUID-VkGraphicsPipelineCreateInfo-TessellationEvaluation-07723]] If the pipeline is being created with a code:TessellationEvaluation {ExecutionModel}, no code:Geometry {ExecutionModel}, uses the @@ -8692,7 +8645,7 @@ endif::VK_NV_device_generated_commands[] ifdef::VK_EXT_shader_object[] [[pipelines-shader-object-interaction]] -=== Interaction with Shader Objects +=== Interaction With Shader Objects If the <<features-shaderObject, pname:shaderObject>> feature is enabled, applications can: use both pipelines and <<shaders-objects, shader objects>> diff --git a/chapters/primsrast.adoc b/chapters/primsrast.adoc index d492fc8c..f3d1c2bc 100644 --- a/chapters/primsrast.adoc +++ b/chapters/primsrast.adoc @@ -98,16 +98,11 @@ endif::VK_AMD_rasterization_order[] * [[VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782]] If the <<features-depthClamp, pname:depthClamp>> feature is not enabled, pname:depthClampEnable must: be ename:VK_FALSE -ifndef::VK_NV_fill_rectangle[] - * [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413]] + * [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507]] If the <<features-fillModeNonSolid, pname:fillModeNonSolid>> feature is not enabled, pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL -endif::VK_NV_fill_rectangle[] +ifdef::VK_NV_fill_rectangle[or ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV] ifdef::VK_NV_fill_rectangle[] - * [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507]] - If the <<features-fillModeNonSolid, pname:fillModeNonSolid>> feature is - not enabled, pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL or - ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV * [[VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414]] If the `apiext:VK_NV_fill_rectangle` extension is not enabled, pname:polygonMode must: not be ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV @@ -3748,16 +3743,11 @@ ifndef::VK_EXT_shader_object[] The <<features-extendedDynamicState3PolygonMode, pname:extendedDynamicState3PolygonMode>> feature must: be enabled endif::VK_EXT_shader_object[] -ifndef::VK_NV_fill_rectangle[] - * [[VUID-vkCmdSetPolygonModeEXT-fillModeNonSolid-07423]] + * [[VUID-vkCmdSetPolygonModeEXT-fillModeNonSolid-07424]] If the <<features-fillModeNonSolid, pname:fillModeNonSolid>> feature is not enabled, pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL -endif::VK_NV_fill_rectangle[] +ifdef::VK_NV_fill_rectangle[or ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV] ifdef::VK_NV_fill_rectangle[] - * [[VUID-vkCmdSetPolygonModeEXT-fillModeNonSolid-07424]] - If the <<features-fillModeNonSolid, pname:fillModeNonSolid>> feature is - not enabled, pname:polygonMode must: be ename:VK_POLYGON_MODE_FILL or - ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV * [[VUID-vkCmdSetPolygonModeEXT-polygonMode-07425]] If the `apiext:VK_NV_fill_rectangle` extension is not enabled, pname:polygonMode must: not be ename:VK_POLYGON_MODE_FILL_RECTANGLE_NV diff --git a/chapters/renderpass.adoc b/chapters/renderpass.adoc index d0fe20ae..cd767862 100644 --- a/chapters/renderpass.adoc +++ b/chapters/renderpass.adoc @@ -617,7 +617,8 @@ endif::VK_QCOM_multiview_per_view_render_areas[] memory locations that are bound to any other valid attachments specified by this structure ifdef::VK_EXT_nested_command_buffer[] - * If pname:flags includes ename:VK_RENDERING_CONTENTS_INLINE_BIT_EXT then + * [[VUID-VkRenderingInfo-flags-09381]] + If pname:flags includes ename:VK_RENDERING_CONTENTS_INLINE_BIT_EXT then the <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> feature must: be enabled endif::VK_EXT_nested_command_buffer[] @@ -3250,6 +3251,10 @@ ifdef::VK_KHR_fragment_shading_rate[] If any element of pname:pAttachments is used as a fragment shading rate attachment in any subpass, it must: not be used as any other attachment in the render pass + * [[VUID-VkRenderPassCreateInfo2-pAttachments-09387]] + If any element of pname:pAttachments is used as a fragment shading rate + attachment, the pname:loadOp for that attachment must: not be + ename:VK_ATTACHMENT_LOAD_OP_CLEAR ifdef::VK_QCOM_render_pass_transform[] * [[VUID-VkRenderPassCreateInfo2-flags-04521]] If pname:flags includes ename:VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM, @@ -3418,6 +3423,16 @@ in the pname:pNext chain. endif::VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts[] +ifdef::VK_KHR_fragment_shading_rate[] +pname:loadOp and pname:storeOp are ignored for fragment shading rate +attachments. +No access to the shading rate attachment is performed in pname:loadOp and +pname:storeOp. +Instead, access to +ename:VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR is performed +as fragments are rasterized. +endif::VK_KHR_fragment_shading_rate[] + .Valid Usage **** include::{chapters}/commonvalidity/attachment_description_common.adoc[] @@ -3749,38 +3764,24 @@ ifdef::VK_EXT_multisampled_render_to_single_sampled[] attachments in pname:pColorAttachments that are not ename:VK_ATTACHMENT_UNUSED must: have the same sample count endif::VK_EXT_multisampled_render_to_single_sampled[] -ifndef::VK_ANDROID_external_format_resolve[] * [[VUID-VkSubpassDescription2-pInputAttachments-02897]] All attachments in pname:pInputAttachments that are not - ename:VK_ATTACHMENT_UNUSED must: have image formats whose - <<potential-format-features, potential format features>> contain at - least ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT -endif::VK_ANDROID_external_format_resolve[] + ename:VK_ATTACHMENT_UNUSED ifdef::VK_ANDROID_external_format_resolve[] - * [[VUID-VkSubpassDescription2-externalFormatResolve-09340]] - If the <<features-externalFormatResolve, pname:externalFormatResolve>> - feature is not enabled, all attachments in pname:pInputAttachments that - are not ename:VK_ATTACHMENT_UNUSED must: have image formats whose - <<potential-format-features, potential format features>> contain at - least ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT - * [[VUID-VkSubpassDescription2-nullColorAttachmentWithExternalFormatResolve-09341]] - If the <<limits-nullColorAttachmentWithExternalFormatResolve, - pname:nullColorAttachmentWithExternalFormatResolve>> property is - ename:VK_FALSE, all attachments in pname:pInputAttachments that are not - ename:VK_ATTACHMENT_UNUSED must: have image formats whose - <<potential-format-features, potential format features>> contain at - least ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT - * [[VUID-VkSubpassDescription2-pInputAttachments-09342]] - All attachments in pname:pInputAttachments that are not - ename:VK_ATTACHMENT_UNUSED and do not have a non-zero value of - slink:VkExternalFormatANDROID::pname:externalFormat must: have image - formats whose <<potential-format-features, potential format features>> - contain at least ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT + and any of the following is true: + ** the <<features-externalFormatResolve, pname:externalFormatResolve>> + feature is not enabled + ** the <<limits-nullColorAttachmentWithExternalFormatResolve, + pname:nullColorAttachmentWithExternalFormatResolve>> property is + ename:VK_FALSE + ** does not have a non-zero value of + slink:VkExternalFormatANDROID::pname:externalFormat endif::VK_ANDROID_external_format_resolve[] + ++ +must: have image formats whose <<potential-format-features, potential format + features>> contain at least ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT + or ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT * [[VUID-VkSubpassDescription2-pColorAttachments-02898]] All attachments in pname:pColorAttachments that are not ename:VK_ATTACHMENT_UNUSED must: have image formats whose @@ -6453,7 +6454,8 @@ endif::VK_KHR_create_renderpass2[] ifdef::VK_EXT_nested_command_buffer[] .Valid Usage **** - * If pname:contents is + * [[VUID-VkSubpassBeginInfo-contents-09382]] + If pname:contents is ename:VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT, then <<features-nestedCommandBuffer, pname:nestedCommandBuffer>> must: be enabled @@ -7046,7 +7048,7 @@ This section indicates a number of the more common cases as guidelines to help avoid them. -=== Sampling from a read-only attachment +=== Sampling From a Read-only Attachment Vulkan includes read-only layouts for depth/stencil images, that allow the images to be both read during a render pass for the purposes of @@ -7077,7 +7079,7 @@ operation that also performs no writes. endif::VK_VERSION_1_3,VK_EXT_load_store_op_none,VK_QCOM_render_pass_store_ops,VK_KHR_dynamic_rendering[] -=== Non-overlapping access between resources +=== Non-overlapping Access Between Resources When relying on non-overlapping accesses between attachments and other resources, it is important to note that <<renderpass-load-operations, load>> @@ -7097,7 +7099,7 @@ introducing a data race. endif::VK_EXT_attachment_feedback_loop_layout[] -=== Depth/stencil and input attachments +=== Depth/Stencil and Input Attachments When rendering to only the depth OR stencil aspect of an image, an input attachment accessing the other aspect will diff --git a/chapters/resources.adoc b/chapters/resources.adoc index c45868c7..a9ca57ec 100644 --- a/chapters/resources.adoc +++ b/chapters/resources.adoc @@ -70,7 +70,8 @@ endif::VK_NV_extended_sparse_address_space[] memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize ifdef::VK_NV_extended_sparse_address_space[] - * If the pname:flags member of pname:pCreateInfo includes + * [[VUID-vkCreateBuffer-flags-09383]] + If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, the <<features-extendedSparseAddressSpace, pname:extendedSparseAddressSpace>> feature is enabled, and the @@ -85,7 +86,8 @@ ifdef::VK_NV_extended_sparse_address_space[] containing bits in sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseImageUsageFlags, to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize - * If the pname:flags member of pname:pCreateInfo includes + * [[VUID-vkCreateBuffer-flags-09384]] + If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT and the <<features-extendedSparseAddressSpace, pname:extendedSparseAddressSpace>> feature is enabled, creating this @@ -1233,7 +1235,8 @@ endif::VK_NV_extended_sparse_address_space[] memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize ifdef::VK_NV_extended_sparse_address_space[] - * If the pname:flags member of pname:pCreateInfo includes + * [[VUID-vkCreateImage-flags-09385]] + If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, the <<features-extendedSparseAddressSpace, pname:extendedSparseAddressSpace>> feature is enabled, and the @@ -1248,7 +1251,8 @@ ifdef::VK_NV_extended_sparse_address_space[] containing bits in sname:VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV::pname:extendedSparseImageUsageFlags, to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize - * If the pname:flags member of pname:pCreateInfo includes + * [[VUID-vkCreateImage-flags-09386]] + If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT and the <<features-extendedSparseAddressSpace, pname:extendedSparseAddressSpace>> feature is enabled, creating this @@ -4738,79 +4742,26 @@ endif::VK_NV_linear_color_attachment[] ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, then the image view's <<resources-image-view-format-features,format features>> must: contain ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT -ifndef::VK_NV_linear_color_attachment[] -ifndef::VK_ANDROID_external_format_resolve[] - * [[VUID-VkImageViewCreateInfo-usage-02652]] - If pname:usage contains ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then - the image view's <<resources-image-view-format-features,format - features>> must: contain at least one of - ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT -endif::VK_ANDROID_external_format_resolve[] + * [[VUID-VkImageViewCreateInfo-usage-08932]] + If pname:usage contains ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, ifdef::VK_ANDROID_external_format_resolve[] - * [[VUID-VkImageViewCreateInfo-externalFormatResolve-09355]] - If the <<features-externalFormatResolve, pname:externalFormatResolve>> - feature is not enabled and pname:usage contains - ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's - <<resources-image-view-format-features,format features>> must: contain - at least one of ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT - * [[VUID-VkImageViewCreateInfo-nullColorAttachmentWithExternalFormatResolve-09356]] - If the <<limits-nullColorAttachmentWithExternalFormatResolve, - pname:nullColorAttachmentWithExternalFormatResolve>> property is - ename:VK_FALSE and pname:usage contains - ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's - <<resources-image-view-format-features,format features>> must: contain - at least one of ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT - * [[VUID-VkImageViewCreateInfo-image-09357]] - If pname:image was created with a - slink:VkExternalFormatANDROID::pname:externalFormat value of 0 and - pname:usage contains ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the - image view's <<resources-image-view-format-features,format features>> - must: contain at least one of + and any of the following is true: + ** the <<features-externalFormatResolve, pname:externalFormatResolve>> + feature is not enabled + ** the <<limits-nullColorAttachmentWithExternalFormatResolve, + pname:nullColorAttachmentWithExternalFormatResolve>> property is + ename:VK_FALSE + ** pname:image was created with an + slink:VkExternalFormatANDROID::pname:externalFormat value of 0 +endif::VK_ANDROID_external_format_resolve[] + ++ +then the image view's <<resources-image-view-format-features,format + features>> must: contain at least one of ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT -endif::VK_ANDROID_external_format_resolve[] -endif::VK_NV_linear_color_attachment[] ifdef::VK_NV_linear_color_attachment[] -ifndef::VK_ANDROID_external_format_resolve[] - * [[VUID-VkImageViewCreateInfo-usage-08932]] - If pname:usage contains ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then - the image view's <<resources-image-view-format-features,format - features>> must: contain at least one of - ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT or, - ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV -endif::VK_ANDROID_external_format_resolve[] -ifdef::VK_ANDROID_external_format_resolve[] - * [[VUID-VkImageViewCreateInfo-externalFormatResolve-09358]] - If the <<features-externalFormatResolve, pname:externalFormatResolve>> - feature is not enabled and pname:usage contains - ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's - <<resources-image-view-format-features,format features>> must: contain - at least one of ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, or - ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV - * [[VUID-VkImageViewCreateInfo-nullColorAttachmentWithExternalFormatResolve-09359]] - If the <<limits-nullColorAttachmentWithExternalFormatResolve, - pname:nullColorAttachmentWithExternalFormatResolve>> property is - ename:VK_FALSE and pname:usage contains - ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the image view's - <<resources-image-view-format-features,format features>> must: contain - at least one of ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, or - ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV - * [[VUID-VkImageViewCreateInfo-image-09360]] - If pname:image was created with a - slink:VkExternalFormatANDROID::pname:externalFormat value of 0 and - pname:usage contains ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, then the - image view's <<resources-image-view-format-features,format features>> - must: contain at least one of - ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, or - ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV -endif::VK_ANDROID_external_format_resolve[] + or ename:VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV endif::VK_NV_linear_color_attachment[] * [[VUID-VkImageViewCreateInfo-subresourceRange-01478]] pname:subresourceRange.baseMipLevel must: be less than the @@ -9789,7 +9740,7 @@ include::{generated}/api/handles/VkBufferCollectionFUCHSIA.adoc[] participation in the buffer collection -=== Platform initialization for buffer collections +=== Platform Initialization for Buffer Collections To initialize a buffer collection on Fuchsia: * Connect to the Sysmem service to initialize a Sysmem allocator @@ -9799,7 +9750,7 @@ To initialize a buffer collection on Fuchsia: fuchsia.dev for more detailed information -=== Create the buffer collection +=== Create the Buffer Collection [open,refpage='vkCreateBufferCollectionFUCHSIA',desc='Create a new buffer collection',type='protos'] -- @@ -9856,12 +9807,12 @@ include::{generated}/validity/structs/VkBufferCollectionCreateInfoFUCHSIA.adoc[] -- -=== Set the constraints +=== Set the Constraints Buffer collections can be established for slink:VkImage allocations or slink:VkBuffer allocations. -==== Set image-based buffer collection constraints +==== Set Image-based Buffer Collection Constraints [open,refpage='vkSetBufferCollectionImageConstraintsFUCHSIA',desc='Set image-based constraints for a buffer collection',type='protos'] -- @@ -10096,7 +10047,7 @@ include::{generated}/validity/structs/VkSysmemColorSpaceFUCHSIA.adoc[] -- -==== Set buffer-based buffer collection constraints +==== Set Buffer-based Buffer Collection Constraints [open,refpage='vkSetBufferCollectionBufferConstraintsFUCHSIA',desc='Set buffer-based constraints for a buffer collection',type='protos'] -- @@ -10155,7 +10106,7 @@ include::{generated}/validity/structs/VkBufferConstraintsInfoFUCHSIA.adoc[] -- -=== Retrieve buffer collection properties +=== Retrieve Buffer Collection Properties [open,refpage='vkGetBufferCollectionPropertiesFUCHSIA',desc='Retrieve properties from a buffer collection',type='protos'] -- @@ -10263,7 +10214,7 @@ include::{generated}/validity/structs/VkBufferCollectionPropertiesFUCHSIA.adoc[] -- -=== Memory allocation +=== Memory Allocation To import memory from a buffer collection into a slink:VkImage or a slink:VkBuffer, chain a slink:VkImportMemoryBufferCollectionFUCHSIA diff --git a/chapters/samplers.adoc b/chapters/samplers.adoc index a9c68485..1522ff91 100644 --- a/chapters/samplers.adoc +++ b/chapters/samplers.adoc @@ -264,20 +264,14 @@ ifdef::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] ename:VK_FALSE endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] ifdef::VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax[] -ifndef::VK_EXT_filter_cubic[] - * [[VUID-VkSamplerCreateInfo-magFilter-01422]] - If either pname:magFilter or pname:minFilter is - ename:VK_FILTER_CUBIC_EXT, the pname:reductionMode member of - slink:VkSamplerReductionModeCreateInfo must: be - ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE -endif::VK_EXT_filter_cubic[] -ifdef::VK_EXT_filter_cubic[] * [[VUID-VkSamplerCreateInfo-magFilter-07911]] - If the apiext:VK_EXT_filter_cubic extension is not enabled and either - pname:magFilter or pname:minFilter is ename:VK_FILTER_CUBIC_EXT, the - pname:reductionMode member of slink:VkSamplerReductionModeCreateInfo - must: be ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE + If +ifdef::VK_EXT_filter_cubic[] + the apiext:VK_EXT_filter_cubic extension is not enabled and endif::VK_EXT_filter_cubic[] + either pname:magFilter or pname:minFilter is ename:VK_FILTER_CUBIC_EXT, + the pname:reductionMode member of slink:VkSamplerReductionModeCreateInfo + must: be ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE endif::VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax[] ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] * [[VUID-VkSamplerCreateInfo-compareEnable-01423]] @@ -740,7 +734,7 @@ include::{generated}/validity/protos/vkDestroySampler.adoc[] ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] [[samplers-YCbCr-conversion]] -== Sampler {YCbCr} conversion +== Sampler {YCbCr} Conversion [open,refpage='VkSamplerYcbcrConversionInfo',desc='Structure specifying {YCbCr} conversion to a sampler or image view',type='structs'] -- @@ -912,20 +906,17 @@ endif::VK_ANDROID_external_memory_android_hardware_buffer[] .Valid Usage **** -ifndef::VK_ANDROID_external_memory_android_hardware_buffer[] - * [[VUID-VkSamplerYcbcrConversionCreateInfo-format-04060]] - pname:format must: represent unsigned normalized values (i.e. the format - must: be a etext:UNORM format) -endif::VK_ANDROID_external_memory_android_hardware_buffer[] ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] * [[VUID-VkSamplerYcbcrConversionCreateInfo-format-01904]] If an external format conversion is being created, pname:format must: be ename:VK_FORMAT_UNDEFINED +endif::VK_ANDROID_external_memory_android_hardware_buffer[] * [[VUID-VkSamplerYcbcrConversionCreateInfo-format-04061]] - If an external format conversion is not being created, pname:format - must: represent unsigned normalized values (i.e. the format must: be a - etext:UNORM format) +ifdef::VK_ANDROID_external_memory_android_hardware_buffer[] + If an external format conversion is not being created, endif::VK_ANDROID_external_memory_android_hardware_buffer[] + pname:format must: represent unsigned normalized values (i.e. the format + must: be a etext:UNORM format) * [[VUID-VkSamplerYcbcrConversionCreateInfo-format-01650]] The <<potential-format-features, potential format features>> of the sampler {YCbCr} conversion must: support diff --git a/chapters/shaders.adoc b/chapters/shaders.adoc index 01b56e79..4d53bd21 100644 --- a/chapters/shaders.adoc +++ b/chapters/shaders.adoc @@ -758,7 +758,7 @@ unbound). * [[VUID-vkCmdBindShadersEXT-pStages-08464]] pname:pStages must: not contain ename:VK_SHADER_STAGE_ALL_GRAPHICS or ename:VK_SHADER_STAGE_ALL -ifdef::VK_KHR_ray_tracing_pipeline[] +ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[] * [[VUID-vkCmdBindShadersEXT-pStages-08465]] pname:pStages must: not contain ename:VK_SHADER_STAGE_RAYGEN_BIT_KHR, ename:VK_SHADER_STAGE_ANY_HIT_BIT_KHR, @@ -766,18 +766,7 @@ ifdef::VK_KHR_ray_tracing_pipeline[] ename:VK_SHADER_STAGE_MISS_BIT_KHR, ename:VK_SHADER_STAGE_INTERSECTION_BIT_KHR, or ename:VK_SHADER_STAGE_CALLABLE_BIT_KHR -endif::VK_KHR_ray_tracing_pipeline[] -ifndef::VK_KHR_ray_tracing_pipeline[] -ifdef::VK_NV_ray_tracing[] - * [[VUID-vkCmdBindShadersEXT-pStages-08466]] - pname:pStages must: not contain ename:VK_SHADER_STAGE_RAYGEN_BIT_NV, - ename:VK_SHADER_STAGE_ANY_HIT_BIT_NV, - ename:VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV, - ename:VK_SHADER_STAGE_MISS_BIT_NV, - ename:VK_SHADER_STAGE_INTERSECTION_BIT_NV, or - ename:VK_SHADER_STAGE_CALLABLE_BIT_NV -endif::VK_NV_ray_tracing[] -endif::VK_KHR_ray_tracing_pipeline[] +endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[] ifdef::VK_HUAWEI_subpass_shading[] * [[VUID-vkCmdBindShadersEXT-pStages-08467]] pname:pStages must: not contain @@ -1159,7 +1148,7 @@ bound, but all required state must: be set prior to issuing drawing commands. [[shaders-objects-pipeline-interaction]] -=== Interaction with Pipelines +=== Interaction With Pipelines Calling flink:vkCmdBindShadersEXT causes the pipeline bind points <<shaders-binding,corresponding to each stage>> in pname:pStages to be @@ -1297,16 +1286,12 @@ endif::VK_EXT_graphics_pipeline_libraries,VK_KHR_maintenance5[] .Valid Usage **** -ifdef::VK_EXT_validation_cache[] * [[VUID-vkCreateShaderModule-pCreateInfo-06904]] If pname:pCreateInfo is not `NULL`, pname:pCreateInfo->pNext must: be - `NULL` or a pointer to a - slink:VkShaderModuleValidationCacheCreateInfoEXT structure -endif::VK_EXT_validation_cache[] -ifndef::VK_EXT_validation_cache[] - * [[VUID-vkCreateShaderModule-pCreateInfo-06905]] - If pname:pCreateInfo is not `NULL`, pname:pCreateInfo->pNext must: be `NULL` +ifdef::VK_EXT_validation_cache[] + or a pointer to a slink:VkShaderModuleValidationCacheCreateInfoEXT + structure endif::VK_EXT_validation_cache[] **** @@ -1334,13 +1319,14 @@ include::{generated}/api/structs/VkShaderModuleCreateInfo.adoc[] .Valid Usage **** -ifndef::VK_NV_glsl_shader[] :prefixCondition: -include::{chapters}/commonvalidity/shader_create_spv_common.adoc[] -endif::VK_NV_glsl_shader[] ifdef::VK_NV_glsl_shader[] :prefixCondition: If pCode is a pointer to SPIR-V code, +endif::VK_NV_glsl_shader[] + include::{chapters}/commonvalidity/shader_create_spv_common.adoc[] + +ifdef::VK_NV_glsl_shader[] * [[VUID-VkShaderModuleCreateInfo-pCode-07912]] If the apiext:VK_NV_glsl_shader extension is not enabled, pname:pCode must: be a pointer to SPIR-V code @@ -2277,7 +2263,7 @@ endif::VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline[] [[shaders-interpolation-decorations]] -== Interpolation decorations +== Interpolation Decorations Variables in the code:Input storage class in a fragment shader's interface are interpolated from the values specified by the primitive being diff --git a/chapters/sparsemem.adoc b/chapters/sparsemem.adoc index ebcd97ba..7ebe0f40 100644 --- a/chapters/sparsemem.adoc +++ b/chapters/sparsemem.adoc @@ -1661,6 +1661,8 @@ include::{generated}/api/structs/VkSparseImageMemoryBind.adoc[] pname:offset.x must: be a multiple of the sparse image block width (sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of the image + * [[VUID-VkSparseImageMemoryBind-extent-09388]] + pname:extent.width must: be greater than `0` * [[VUID-VkSparseImageMemoryBind-extent-01108]] pname:extent.width must: either be a multiple of the sparse image block width of the image, or else [eq]#(pname:extent.width {plus} @@ -1669,6 +1671,8 @@ include::{generated}/api/structs/VkSparseImageMemoryBind.adoc[] pname:offset.y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image + * [[VUID-VkSparseImageMemoryBind-extent-09389]] + pname:extent.height must: be greater than `0` * [[VUID-VkSparseImageMemoryBind-extent-01110]] pname:extent.height must: either be a multiple of the sparse image block height of the image, or else [eq]#(pname:extent.height {plus} @@ -1677,6 +1681,8 @@ include::{generated}/api/structs/VkSparseImageMemoryBind.adoc[] pname:offset.z must: be a multiple of the sparse image block depth (sname:VkSparseImageFormatProperties::pname:imageGranularity.depth) of the image + * [[VUID-VkSparseImageMemoryBind-extent-09390]] + pname:extent.depth must: be greater than `0` * [[VUID-VkSparseImageMemoryBind-extent-01112]] pname:extent.depth must: either be a multiple of the sparse image block depth of the image, or else [eq]#(pname:extent.depth {plus} diff --git a/chapters/synchronization.adoc b/chapters/synchronization.adoc index cb102396..3496ee1d 100644 --- a/chapters/synchronization.adoc +++ b/chapters/synchronization.adoc @@ -4374,7 +4374,7 @@ endif::VK_KHR_swapchain[] [[synchronization-semaphores-waiting-state]] -=== Semaphore State Requirements For Wait Operations +=== Semaphore State Requirements for Wait Operations Before waiting on a semaphore, the application must: ensure the semaphore is in a valid state for a wait operation. @@ -5636,6 +5636,16 @@ signal operation occurs, and no dependency is generated. be enabled * [[VUID-vkCmdSetEvent2-dependencyFlags-03825]] The pname:dependencyFlags member of pname:pDependencyInfo must: be `0` + * [[VUID-vkCmdSetEvent2-srcStageMask-09391]] + The pname:srcStageMask member of any element of the + pname:pMemoryBarriers, pname:pBufferMemoryBarriers, or + pname:pImageMemoryBarriers members of pname:pDependencyInfo must: not + include ename:VK_PIPELINE_STAGE_2_HOST_BIT + * [[VUID-vkCmdSetEvent2-dstStageMask-09392]] + The pname:dstStageMask member of any element of the + pname:pMemoryBarriers, pname:pBufferMemoryBarriers, or + pname:pImageMemoryBarriers members of pname:pDependencyInfo must: not + include ename:VK_PIPELINE_STAGE_2_HOST_BIT ifdef::VK_VERSION_1_1,VK_KHR_device_group[] * [[VUID-vkCmdSetEvent2-commandBuffer-03826]] The current device mask of pname:commandBuffer must: include exactly one @@ -5760,7 +5770,7 @@ include::{chapters}/commonvalidity/stage_mask_common.adoc[] pname:stageMask must: not include ename:VK_PIPELINE_STAGE_HOST_BIT ifdef::VK_VERSION_1_1,VK_KHR_device_group[] * [[VUID-vkCmdSetEvent-commandBuffer-01152]] - pname:commandBuffer's current device mask must: include exactly one + The current device mask of pname:commandBuffer must: include exactly one physical device endif::VK_VERSION_1_1,VK_KHR_device_group[] **** @@ -7602,7 +7612,7 @@ endif::VK_VERSION_1_1,VK_KHR_device_group[] ifdef::VK_EXT_calibrated_timestamps[] [[calibrated-timestamps]] -== Calibrated timestamps +== Calibrated Timestamps [open,refpage='vkGetCalibratedTimestampsEXT',desc='Query calibrated timestamps',type='protos'] -- diff --git a/chapters/textures.adoc b/chapters/textures.adoc index f5528a9a..e3c06352 100644 --- a/chapters/textures.adoc +++ b/chapters/textures.adoc @@ -2214,7 +2214,7 @@ Operations then proceed to Unnormalized Texel Coordinate Operations. [[textures-unnormalized-to-integer]] -=== (u,v,w,a) to (i,j,k,l,n) Transformation And Array Layer Selection +=== (u,v,w,a) to (i,j,k,l,n) Transformation and Array Layer Selection The unnormalized texel coordinates are transformed to integer texel coordinates relative to the selected mipmap level. diff --git a/chapters/video_encode_h264_extensions.adoc b/chapters/video_encode_h264_extensions.adoc index e2dec540..eb81e973 100644 --- a/chapters/video_encode_h264_extensions.adoc +++ b/chapters/video_encode_h264_extensions.adoc @@ -20,7 +20,7 @@ external materials not created by Khronos. ==== -=== H.264 encode profile +=== H.264 Encode Profile [open,refpage='VkVideoEncodeH264ProfileInfoEXT',desc='Structure specifying H.264 encode profile',type='structs'] -- @@ -553,7 +553,7 @@ include::{generated}/validity/structs/VkVideoEncodeH264DpbSlotInfoEXT.adoc[] -- -=== Rate control +=== Rate Control [open,refpage='VkVideoEncodeH264RateControlInfoEXT',desc='Structure describing H.264 stream rate control parameters',type='structs'] -- diff --git a/chapters/video_encode_h265_extensions.adoc b/chapters/video_encode_h265_extensions.adoc index e601041a..1802994f 100644 --- a/chapters/video_encode_h265_extensions.adoc +++ b/chapters/video_encode_h265_extensions.adoc @@ -20,7 +20,7 @@ external materials not created by Khronos. ==== -=== H.265 encode profile +=== H.265 Encode Profile An H.265 encode profile is specified by including the slink:VkVideoEncodeH265ProfileInfoEXT structure in the pname:pNext chain of @@ -656,7 +656,7 @@ include::{generated}/validity/structs/VkVideoEncodeH265DpbSlotInfoEXT.adoc[] -- -=== Rate control +=== Rate Control [open,refpage='VkVideoEncodeH265RateControlInfoEXT',desc='Structure describing H.265 stream rate control parameters',type='structs'] -- diff --git a/config/CI/contractions-allowed b/config/CI/contractions-allowed index 5f4cbd0f..031d9297 100644 --- a/config/CI/contractions-allowed +++ b/config/CI/contractions-allowed @@ -15,3 +15,4 @@ ^scripts/json_c_generator\.py ^scripts/json_generator\.py ^scripts/json_parser\.py +^build_tests/expectations/.*\.html diff --git a/registry.adoc b/registry.adoc index 5d9eed33..ff173280 100644 --- a/registry.adoc +++ b/registry.adoc @@ -256,15 +256,15 @@ This allows specializing a definition for different, closely related APIs. [[schema:root]] -= Registry Root (tag:registry tag) += Registry Root (tag:registry Tag) A tag:registry contains the entire definition of one or more related APIs. -== Attributes of tag:registry tags +== Attributes of tag:registry Tags None. -== Contents of tag:registry tags +== Contents of tag:registry Tags Zero or more of each of the following tags, normally in this order (although order should not be important): @@ -308,7 +308,7 @@ order should not be important): [[tag-comment]] -=== Comment Tags (tag:comment tag) +=== Comment Tags (tag:comment Tag) A tag:comment tag contains an arbitrary string, and is unused. Comment tags may appear in multiple places in the schema, as described @@ -318,28 +318,28 @@ in generated headers, asciidoc include files, etc. [[tag-platforms]] -= Platform Name Blocks (tag:platforms tag) += Platform Name Blocks (tag:platforms Tag) A tag:platforms contains descriptions of platform IDs for platforms supported by window system-specific extensions to Vulkan. -== Attributes of tag:platforms tags +== Attributes of tag:platforms Tags * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:platforms tags +== Contents of tag:platforms Tags Zero or more tag:platform tags, in arbitrary order (though they are typically ordered by sorting on the platform name). [[tag-platform]] -= Platform Names (tag:platform tag) += Platform Names (tag:platform Tag) A tag:platform tag describes a single platform name. -== Attributes of tag:platform tags +== Attributes of tag:platform Tags * attr:name - required. The platform name. @@ -386,35 +386,35 @@ is used for the `xlib_xrandr` platform name. * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:platform tags +== Contents of tag:platform Tags No contents are allowed. All information is contained in the attributes. [[tag-tags]] -= Author ID Blocks (tag:tags tag) += Author ID Blocks (tag:tags Tag) A tag:tags tag contains tag:authorid tags describing reserved author IDs used by extension and layer authors. -== Attributes of tag:tags tags +== Attributes of tag:tags Tags * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:tags tags +== Contents of tag:tags Tags Zero or more tag:tag tags, in arbitrary order (though they are typically ordered by sorting on the author ID). [[tag-tag]] -= Author IDs (tag:tag tag) += Author IDs (tag:tag Tag) A tag:tag tag contains information defining a single author ID. -== Attributes of tag:tag tags +== Attributes of tag:tag Tags * attr:name - required. The author ID, as registered with Khronos. @@ -428,23 +428,23 @@ A tag:tag tag contains information defining a single author ID. reach the contact such as individual name together with email address, GitHub username, or other contact information. -== Contents of tag:tag tags +== Contents of tag:tag Tags No contents are allowed. All information is contained in the attributes. [[tag-types]] -= API Type Blocks (tag:types tag) += API Type Blocks (tag:types Tag) A tag:types tag contains definitions of derived types used in the API. -== Attributes of tag:types tags +== Attributes of tag:types Tags * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:types tags +== Contents of tag:types Tags Zero or more tag:type and tag:comment tags, in arbitrary order (though they are typically ordered by putting dependencies of other types earlier in the @@ -453,7 +453,7 @@ The tag:comment tags are used mostly to indicate grouping of related types. [[tag-type]] -= API Type (tag:type tag) += API Type (tag:type Tag) A tag:type tag contains information which can be used to generate C code corresponding to the type. @@ -462,7 +462,7 @@ denoting the type name and other types used in defining this type. In some cases, additional attribute and embedded type information is used to generate more complicated C types. -== Attributes of tag:type tags +== Attributes of tag:type Tags * attr:requires - optional. Another type name this type requires to complete its definition. @@ -522,11 +522,11 @@ generate more complicated C types. this type. The enumerant must be defined. -== Contents of tag:type tags +== Contents of tag:type Tags The valid contents depend on the attr:category attribute. -=== Enumerated types - attr:category `"enum"` +=== Enumerated Types - attr:category `"enum"` If the attr:category tag has the value `enum`, the type is a C enumeration. The body of the tag is ignored in this case. @@ -535,7 +535,7 @@ attr:name attribute of a <<tag-enums,tag:enums>> tag. The enumerant values defined within the tag:enums tag are used to generate a C `enum` type declaration. -=== Structure types - attr:category `"struct"` or `"union"` +=== Structure Types - attr:category `"struct"` or `"union"` If the attr:category tag has the values `struct` or `union`, the type is a C structure or union, respectively. @@ -543,11 +543,11 @@ In this case, the attr:name attribute must be provided, and the contents of the tag:type tag are a series of tag:member tags defining the members of the aggregate type, in order, interleaved with any number of tag:comment tags. -==== Structure member (tag:member) tags +==== Structure Member (tag:member) Tags The tag:member tag defines the type and name of a structure or union member. -==== Attributes of tag:member tags +==== Attributes of tag:member Tags * attr:api - optional <<schema:apiname, API names>> for which this definition is specialized, so that different APIs may have different @@ -657,7 +657,7 @@ Explicitly specifying `optional="false"` is not supported, but in the array. Is assumed tightly packed if omitted. -==== Contents of tag:member tags +==== Contents of tag:member Tags The text elements of a tag:member tag, with all other tags removed, is a legal C declaration of a struct or union member. @@ -679,7 +679,7 @@ In addition it may contain several semantic tags: It contains an arbitrary string (unused). -=== All other types +=== All Other Types If the attr:category attribute is one of `basetype`, `bitmask`, `define`, `funcpointer`, `group`, `handle` or `include`, or is not specified, tag:type @@ -724,7 +724,7 @@ The intended purpose of each category is: [[tag-types:example]] -== Example of a tag:types tag +== Example of a tag:types Tag [source,xml] -------------------------------------- @@ -773,7 +773,7 @@ preferred. [[tag-enums]] -= Enumerant Blocks (tag:enums tag) += Enumerant Blocks (tag:enums Tag) The tag:enums tags contain individual tag:enum tags describing each of the token names used in the API. @@ -789,7 +789,7 @@ was based on. ==== -== Attributes of tag:enums tags +== Attributes of tag:enums Tags * attr:name - optional. String naming the C `enum` type whose members are defined by this enum @@ -806,13 +806,13 @@ was based on. Bit width required for the generated enum value type. If omitted, a default value of 32 is used. -== Contents of tag:enums tags +== Contents of tag:enums Tags Each tag:enums block contains zero or more tag:enum, tag:unused, and tag:comment tags, in arbitrary order (although they are typically ordered by sorting on enumerant values, to improve human readability). -== Example of tag:enums tags +== Example of tag:enums Tags <<tag-types:example,An example>> showing a tag with attribute attr:type`="enum"` is given above. @@ -837,11 +837,11 @@ this results in [[tag-enum]] -= Enumerants (tag:enum tag) += Enumerants (tag:enum Tag) Each tag:enum tag defines a single Vulkan (or other API) token. -== Attributes of tag:enum tags +== Attributes of tag:enum Tags * attr:value is a numeric value in the form of a legal C expression when evaluated at compile time in the generated header files. @@ -917,14 +917,14 @@ expected to be a benign change. ==== -== Contents of tag:enum tags +== Contents of tag:enum Tags tag:enum tags have no allowed contents. All information is contained in the attributes. [[tag-unused]] -= Unused Enumerants (tag:unused tag) += Unused Enumerants (tag:unused Tag) Each tag:unused tag defines a range of enumerants which is allocated, but not yet assigned to specific enums. @@ -940,7 +940,7 @@ However, they are rarely used in the Vulkan XML schema, unlike the OpenGL XML schema it was based on. ==== -== Attributes of tag:unused tags +== Attributes of tag:unused Tags * attr:start - required, attr:end - optional. Integers defining the start and end of an unused range of enumerants. @@ -957,23 +957,23 @@ XML schema it was based on. * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:unused tags +== Contents of tag:unused Tags None. [[tag-commands]] -= Command Blocks (tag:commands tag) += Command Blocks (tag:commands Tag) The tag:commands tag contains definitions of each of the functions (commands) used in the API. -== Attributes of tag:commands tags +== Attributes of tag:commands Tags * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:commands tags +== Contents of tag:commands Tags Each tag:commands block contains zero or more tag:command tags, in arbitrary order (although they are typically ordered by sorting on the command name, @@ -981,12 +981,12 @@ to improve human readability). [[tag-command]] -= Commands (tag:command tag) += Commands (tag:command Tag) The tag:command tag contains a structured definition of a single API command (function). -== Attributes of tag:command tags +== Attributes of tag:command Tags There are two ways to define a command. The first uses a set of attributes to the tag:command tag defining @@ -1052,7 +1052,7 @@ Both forms of tag:command support these options: attribute. May be used to address subtle incompatibilities. -== Contents of tag:command tags +== Contents of tag:command Tags * tag:proto is required and must be the first element. It is a tag defining the C function prototype of a command as described @@ -1092,11 +1092,11 @@ or `vkGetDeviceProcAddr`. [[tag-command:proto]] -== Command prototype (tag:proto tags) +== Command Prototype (tag:proto Tags) The tag:proto tag defines the return type and name of a command. -=== Attributes of tag:proto tags +=== Attributes of tag:proto Tags None. @@ -1105,7 +1105,7 @@ None. // If the group name is defined, it may be interpreted as described in // <<tag-group:meaning>>. -=== Contents of tag:proto tags +=== Contents of tag:proto Tags The text elements of a tag:proto tag, with all other tags removed, is legal C code describing the return type and name of a command. @@ -1122,7 +1122,7 @@ In addition to text, it may contain two semantic tags: [[tag-command:param]] -== Command parameter (tag:param tags) +== Command Parameter (tag:param Tags) The tag:param tag defines the type and name of a parameter. Its contents are very similar to the tag:member tag used to define struct @@ -1130,7 +1130,7 @@ and union members. [[tag-command:param:attr]] -=== Attributes of tag:param tags +=== Attributes of tag:param Tags * attr:api - optional <<schema:apiname, API names>> for which this definition is specialized, so that different APIs may have different @@ -1221,7 +1221,7 @@ require external synchronization. the parameter. -=== Contents of tag:param tags +=== Contents of tag:param Tags The text elements of a tag:param tag, with all other tags removed, is legal C code describing the type and name of a function parameter. @@ -1235,7 +1235,7 @@ In addition it may contain two semantic tags: * The tag:name tag is required, and contains the parameter name being described. -== Example of a tag:commands tag +== Example of a tag:commands Tag [source,xml] -------------------------------------- @@ -1259,14 +1259,14 @@ VkResult vkCreateInstance( [[tag-feature]] -= API Features and Versions (tag:feature tag) += API Features and Versions (tag:feature Tag) API features are described in individual tag:feature tags. A feature is the set of interfaces (enumerants and commands) defined by a particular API and version, such as Vulkan 1.0, and includes all profiles of that API and version. -== Attributes of tag:feature tags +== Attributes of tag:feature Tags * attr:api - required comma-separated list of <<schema:apiname, API names>> for which this feature is defined, such as `vulkan`. @@ -1302,14 +1302,14 @@ The similar `"VK_API_VERSION_1_0"` symbols are part of the API and their values are packed integers containing Vulkan core version numbers. ==== -== Contents of tag:feature tags +== Contents of tag:feature Tags Zero or more <<tag-required,tag:require and tag:remove tags>>, in arbitrary order. Each tag describes a set of interfaces that is respectively required for, or removed from, this feature, as described below. -== Example of a tag:feature tag +== Example of a tag:feature Tag [source,xml] -------------------------------------- @@ -1346,17 +1346,17 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( [[tag-extensions]] -= Extension Blocks (tag:extensions tag) += Extension Blocks (tag:extensions Tag) The tag:extensions tag contains definitions of each of the extensions which are defined for the API. -== Attributes of tag:extensions tags +== Attributes of tag:extensions Tags * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:extensions tags +== Contents of tag:extensions Tags Each tag:extensions block contains zero or more tag:extension tags, each describing an API extension, in arbitrary order (although they are typically @@ -1364,7 +1364,7 @@ ordered by sorting on the extension name, to improve human readability). [[tag-extension]] -= API Extensions (tag:extension tag) += API Extensions (tag:extension Tag) API extensions are described in individual tag:extension tags. An extension is the set of interfaces defined by a particular API extension @@ -1374,7 +1374,7 @@ attr:number attribute, it instead has a attr:supported attribute, which describes the set of API names which the extension can potentially be implemented against. -== Attributes of tag:extension tags +== Attributes of tag:extension Tags * attr:name - required. Extension name, following the conventions in the <<vulkan-spec, Vulkan @@ -1515,14 +1515,14 @@ Such functionality should be specified within a tag:require tag, using the attr:depends attribute to specify that extension. ==== -== Contents of tag:extension tags +== Contents of tag:extension Tags Zero or more <<tag-required,tag:require and tag:remove tags>>, in arbitrary order. Each tag describes a set of interfaces that is respectively required for, or removed from, this extension, as described below. -== Example of an tag:extensions tag +== Example of an tag:extensions Tag [source,xml] -------------------------------------- @@ -1577,7 +1577,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( [[tag-required]] -= Required and Removed Interfaces (tag:require and tag:remove tags) += Required and Removed Interfaces (tag:require and tag:remove Tags) A tag:require block defines a set of interfaces (types, enumerants and commands) 'required' by a tag:feature or tag:extension. @@ -1589,7 +1589,7 @@ the schema). Except for the tag name and behavior, the contents of tag:require and tag:remove tags are identical. -== Attributes of tag:require and tag:remove tags +== Attributes of tag:require and tag:remove Tags * attr:profile - optional. String name of an API profile. @@ -1612,7 +1612,7 @@ The attr:api attribute is only supported inside tag:extension tags, since tag:feature tags already define a specific API. ==== -== Attributes of tag:require tags +== Attributes of tag:require Tags These attributes are allowed only for a tag:require tag. @@ -1632,7 +1632,7 @@ attr:depends is a breaking change in Vulkan 1.3.241, replacing the ==== -- -== Contents of tag:require and tag:remove tags +== Contents of tag:require and tag:remove Tags Zero or more of the following tags, in any order: @@ -1651,7 +1651,7 @@ The tag has no content, but contains attributes: * attr:comment - optional. Arbitrary string (unused). -=== Enum tags +=== Enum Tags tag:enum specifies an required (or removed) enumerant defined in a tag:enums block. @@ -1759,7 +1759,7 @@ Examples of <<tag-required-examples,various types of extension enumerants>> are given below. -=== Type tags +=== Type Tags tag:type specifies a required (or removed) type defined in a tag:types block. @@ -1817,26 +1817,26 @@ typedef enum VkResult { [[tag-formats]] -= Formats (tag:formats tag) += Formats (tag:formats Tag) The tag:formats tag contains definitions of each of the image formats which are defined for the API. -== Attributes of tag:formats tags +== Attributes of tag:formats Tags None. // * attr:comment - optional. // Arbitrary string (unused). -== Contents of tag:formats tags +== Contents of tag:formats Tags A tag:formats block contains zero or more tag:format tags, each describing an image format, in arbitrary order. [[tag-format]] -= Image Format (tag:format tag) += Image Format (tag:format Tag) Image formats are described in individual tag:format tags. An image format corresponds to a Vulkan `VkFormat` enumerant. @@ -1846,7 +1846,7 @@ The meaning of different parts of the format information is described in more detail in the "`Format Definition`" section of the <<vulkan-spec, Vulkan API Specification>>. -== Attributes of tag:format tags +== Attributes of tag:format Tags * attr:name - required. Format name, matching a `VkFormat` tag:enum attr:name. @@ -1883,7 +1883,7 @@ Vulkan API Specification>>. Must be one of the three values `"420"`, `"422"`, or `"444"` corresponding to different {YCbCr} encodings. -== Contents of tag:format tags +== Contents of tag:format Tags One or more <<tag-component,tag:component>> tags. The order of tag:component tags corresponds to the memory order of @@ -1898,7 +1898,7 @@ Zero or more <<tag-spirvimageformat,tag:spirvimageformat>> tags, in arbitrary order. Each tag describes a SPIR-V format name corresponding to the tag:format. -== Example of a tag:format tag +== Example of a tag:format Tag [source,xml] -------------------------------------- @@ -1913,12 +1913,12 @@ Each tag describes a SPIR-V format name corresponding to the tag:format. [[tag-component]] -= Format Components (tag:component tag) += Format Components (tag:component Tag) The tag:component tag contains definitions of each of the components which are part of an image format. -== Attributes of tag:component tags +== Attributes of tag:component Tags * attr:name - required. A string specifying the name of this component. @@ -1946,18 +1946,18 @@ are part of an image format. If present, must correspond to the attr:index attribute value of a tag:plane tag for the same tag:component. -== Contents of tag:component tags +== Contents of tag:component Tags None. [[tag-plane]] -= Format Planes (tag:plane tag) += Format Planes (tag:plane Tag) The tag:plane tag contains definitions of each of the image planes which are part of an image format. -== Attributes of tag:plane tags +== Attributes of tag:plane Tags * attr:index - required. An integer specifying the image plane being defined. @@ -1976,63 +1976,63 @@ part of an image format. compatible with. Must match the attr:name of another attr:format. -== Contents of tag:plane tags +== Contents of tag:plane Tags None. [[tag-spirvimageformat]] -= SPIR-V Image Formats (tag:spirvimageformat tag) += SPIR-V Image Formats (tag:spirvimageformat Tag) The tag:spirvimageformat tag specifies the name of a SPIR-V image format equivalent to this format. -== Attributes of tag:spirvimageformat tags +== Attributes of tag:spirvimageformat Tags * attr:name - required. The name of the SPIR-V image format. Example: `name="R11fG11fB10f"`. -== Contents of tag:spirvimageformat tags +== Contents of tag:spirvimageformat Tags None. [[tag-spirvextensions]] -= SPIR-V Extensions (tag:spirvextensions tag) += SPIR-V Extensions (tag:spirvextensions Tag) The tag:spirvextensions tag contains definitions of each of the SPIR-V extensions which are defined for the API. -== Attributes of tag:spirvextensions tags +== Attributes of tag:spirvextensions Tags * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:spirvextensions tags +== Contents of tag:spirvextensions Tags Each tag:spirvextensions block contains zero or more tag:spirvextension tags, each describing an single SPIR-V extension, in arbitrary order. [[tag-spirvextension]] -= SPIR-V Extension (tag:spirvextension tag) += SPIR-V Extension (tag:spirvextension Tag) SPIR-V extensions are described in individual tag:spirvextension tags. A SPIR-V extension is enabled by API versions or extensions. -== Attributes of tag:spirvextension tags +== Attributes of tag:spirvextension Tags * attr:name - required. SPIR-V extension name. Example: `name="SPV_KHR_variable_pointers"` -== Contents of tag:spirvextension tags +== Contents of tag:spirvextension Tags One or more <<tag-spirvenable,tag:enable>> tags, in arbitrary order. Each tag describes a single enabling mechanism for the extension. -== Example of a tag:spirvextensions tag +== Example of a tag:spirvextensions Tag [source,xml] -------------------------------------- @@ -2044,41 +2044,41 @@ Each tag describes a single enabling mechanism for the extension. [[tag-spirvcapabilities]] -= SPIR-V Capabilities (tag:spirvcapabilities tag) += SPIR-V Capabilities (tag:spirvcapabilities Tag) The tag:spirvcapabilities tag contains definitions of each of the SPIR-V capabilities which are defined for the API. -== Attributes of tag:spirvcapabilities tags +== Attributes of tag:spirvcapabilities Tags * attr:comment - optional. Arbitrary string (unused). -== Contents of tag:spirvcapabilities tags +== Contents of tag:spirvcapabilities Tags Each tag:spirvcapabilities block contains zero or more tag:spirvcapability tags, each describing an single SPIR-V capability, in arbitrary order. [[tag-spirvcapability]] -= SPIR-V Capability (tag:spirvcapability tag) += SPIR-V Capability (tag:spirvcapability Tag) SPIR-V capabilities are described in individual tag:spirvcapability tags. A SPIR-V capability is enabled by API versions, extensions, features, or properties. -== Attributes of tag:spirvcapability tags +== Attributes of tag:spirvcapability Tags * attr:name - required. SPIR-V capability name. Example: `name="SPV_KHR_variable_pointers"` -== Contents of tag:spirvcapability tags +== Contents of tag:spirvcapability Tags One or more <<tag-spirvenable,tag:enable>> tags, in arbitrary order. Each tag describes a single enabling mechanism for the capability. -== Example of a tag:spirvcapabilities tag +== Example of a tag:spirvcapabilities Tag [source,xml] -------------------------------------- @@ -2092,7 +2092,7 @@ Each tag describes a single enabling mechanism for the capability. [[tag-spirvenable]] -= SPIR-V Enables (tag:enable tag) += SPIR-V Enables (tag:enable Tag) The tag:enable tag describes a single mechanism in the API which enables a tag:spirvextension or tag:spirvcapability. @@ -2102,62 +2102,62 @@ tag:spirvextension tags. Each form is described separately below. [[tag-syncstage]] -= Sync Stage (tag:syncstage tag) += Sync Stage (tag:syncstage Tag) The tag:syncstage tag contains definitions of each Pipeline stage. -== Attributes of tag:syncstage tags +== Attributes of tag:syncstage Tags * attr:name - required. VkPipelineStageFlagBits2 name * attr:alias - optional. Semantically equivalent name which is an alias of attr:name. -== Contents of tag:syncstage tags +== Contents of tag:syncstage Tags More information about the Pipeline stage using either tag:syncequivalent or tag:syncsupport [[tag-syncaccess]] -= Sync Access (tag:syncaccess tag) += Sync Access (tag:syncaccess Tag) The tag:syncaccess tag contains definitions of each Access mask. -== Attributes of tag:syncaccess tags +== Attributes of tag:syncaccess Tags * attr:name - required. VkAccessFlagBits2 name * attr:alias - optional. Semantically equivalent name which is an alias of attr:name. -== Contents of tag:syncaccess tags +== Contents of tag:syncaccess Tags More information about the Access mask using either tag:syncequivalent or tag:syncsupport [[tag-syncpipeline]] -= Sync Pipeline (tag:syncpipeline tag) += Sync Pipeline (tag:syncpipeline Tag) The tag:syncpipeline tag contains definitions of each type of Pipeline. -== Attributes of tag:syncpipeline tags +== Attributes of tag:syncpipeline Tags * attr:name - required. A unique string identifying the pipeline. -== Contents of tag:syncpipeline tags +== Contents of tag:syncpipeline Tags The tag:syncpipeline lists each pipeline stage in logical order using tag:syncpipelinestage. Stages have extra attributes to describe special ordering within the list [[tag-syncsupport]] -= Sync Support (tag:syncsupport tag) += Sync Support (tag:syncsupport Tag) The tag:syncsupport tag contains information what support there is for a given Sync element. -== Attributes of tag:syncsupport tags +== Attributes of tag:syncsupport Tags * attr:queues - optional. A comma-separated list of Queue types that are supported. @@ -2166,12 +2166,12 @@ a given Sync element. This is used to cross-reference with tag:syncstage [[tag-syncequivalent]] -= Sync Equivalent (tag:syncequivalent tag) += Sync Equivalent (tag:syncequivalent Tag) The tag:syncequivalent tag contains information showing a one-to-many relationship of Sync elements -== Attributes of tag:syncsupport tags +== Attributes of tag:syncsupport Tags * attr:stage - optional. A comma-separated list of Sync Stages that are the OR logical @@ -2244,7 +2244,7 @@ is enabled. API property enables are not supported for tag:spirvextension tags. -== Contents of tag:enable tags +== Contents of tag:enable Tags None. @@ -2566,7 +2566,7 @@ specified features are generated. [[compile-time-constants]] -== How To Add A Compile Time Constant +== How to Add a Compile Time Constant Go to the desired tag:feature or tag:extension tag. Add (if not present) a nested tag:require block labelled @@ -2616,7 +2616,7 @@ Allowed expressions are additionally restricted to the following syntax: * and the entire expression optionally surrounded by paired `(` and `)`. -== How To Add A Struct or Union Type +== How to Add a Struct or Union Type For this example, assume we want to define a type corresponding to a C `struct` defined as follows: @@ -2692,7 +2692,7 @@ If the type is a C `union`, rather than a `struct`, then set the value of the attr:category attribute to `"union"` instead of `"struct"`. -== How To Add An Enumerated Type +== How to Add an Enumerated Type For this example, assume we want to define a type corresponding to a C `enum` defined as follows: @@ -2752,7 +2752,7 @@ the C header unchanged. [[adding-bitflags]] -== How To Add Bit Flags +== How to Add Bit Flags Bit masks are defined by two types in the xml - the type of the mask itself, and the type of the valid flags. @@ -2897,7 +2897,7 @@ unsigned value for the 31st bit could change the size of the enum type. The generator scripts will warn about values exceeding this range. -== How to Add A Command +== How to Add a Command For this example, assume we want to define the command: @@ -2968,7 +2968,7 @@ This capability is not yet relevant to Vulkan. Those capabilities will be documented as they are needed. -== More Complicated Output Formats And Other Languages +== More Complicated Output Formats and Other Languages The registry schema is oriented towards C-language APIs. Types and commands are defined using syntax which is a subset of C, diff --git a/scripts/extensionmetadocgenerator.py b/scripts/extensionmetadocgenerator.py index eb47bfc5..6f5e0efc 100644 --- a/scripts/extensionmetadocgenerator.py +++ b/scripts/extensionmetadocgenerator.py @@ -298,7 +298,7 @@ class Extension: write('', file=fp) if self.deprecationType: - self.writeTag('Deprecation state', None, isRefpage, fp) + self.writeTag('Deprecation State', None, isRefpage, fp) if self.deprecationType == 'promotion': if self.supercedingAPIVersion: diff --git a/style/extensions.adoc b/style/extensions.adoc index 86cc437a..4e90f1da 100644 --- a/style/extensions.adoc +++ b/style/extensions.adoc @@ -274,7 +274,7 @@ Validation Layers, and a variety of language bindings. [[extensions-author-ID]] -== Registering an Author ID with Khronos +== Registering an Author ID With Khronos Previous Khronos APIs could only officially be modified by Khronos members. In an effort to build a more flexible platform, Vulkan allows non-Khronos @@ -305,7 +305,7 @@ faith. [[extensions-vendor-id]] -== Registering a Vendor ID with Khronos +== Registering a Vendor ID With Khronos Vulkan implementors must report a valid vendor ID for their implementation when queried by fname:vkGetPhysicalDeviceProperties, as described in the @@ -1065,7 +1065,7 @@ implementations. ==== -== Accessing Extension Functions from Programs +== Accessing Extension Functions From Programs fname:vkGetInstanceProcAddr and fname:vkGetDeviceProcAddr can be used in order to obtain function pointer addresses for core and extension commands diff --git a/style/markup.adoc b/style/markup.adoc index c5a72789..25ef10fe 100644 --- a/style/markup.adoc +++ b/style/markup.adoc @@ -130,7 +130,7 @@ in the Table of Contents. [[markup-layout]] -== Asciidoc Markup And Text Layout +== Asciidoc Markup and Text Layout Asciidoc source should be text filled to 76 columns with hard line breaks. Each sentence in a paragraph ends with a newline to minimize git diff @@ -764,7 +764,7 @@ replacement substitutions], resulting in a unicode arrow: ->. [[markup-macros-api-name]] -==== When To Use *name: Macros +==== When to Use *name: Macros Only use the fname{cl}, sname{cl}, tname{cl}, and dname{cl} macros if no definition of the target type with a corresponding anchor exists in the @@ -784,7 +784,7 @@ definitions. [[markup-macros-api-text]] -==== When To Use *text: Macros +==== When to Use *text: Macros Only use the ftext{cl}, stext{cl}, etext{cl}, and ptext{cl} macros when describing something that should be rendered like a command, structure, diff --git a/style/misc.adoc b/style/misc.adoc index bd6ca835..c5088906 100644 --- a/style/misc.adoc +++ b/style/misc.adoc @@ -83,7 +83,7 @@ maintain consistency. [[character-sets-in-svg]] -== Character sets in SVG files +== Character Sets in SVG Files At the moment, the PDF conversion path only supports the Windows-1252 character set, as we are currently using the standard fonts built into every @@ -92,7 +92,7 @@ Unfortunately these only support Windows-1252, which is a highly limited character set. As such, characters not in that set will not display properly when present -in an SVG, and will fire a warning when building the PDF. +in an SVG, and will generate a warning when building the PDF. Luckily, Inkscape has an "`Object to path`" function built in, which will convert text to a raw path, allowing these characters to be supported. diff --git a/style/revisions.adoc b/style/revisions.adoc index ec7a8392..f2f31748 100644 --- a/style/revisions.adoc +++ b/style/revisions.adoc @@ -5,6 +5,8 @@ [[revisions]] = Revision History +* 2023-10-11 - Add rules for <<writing-titlecase, writing chapter and + section titles>>. * 2023-10-05 - Mention that <<extensions-reserving-bitmask-values, bit position 31>> may not be used for enumerated type bitmasks, due to portability concerns. diff --git a/style/writing.adoc b/style/writing.adoc index 14e5a7c6..77d96535 100644 --- a/style/writing.adoc +++ b/style/writing.adoc @@ -23,6 +23,26 @@ link:https://blog.oxforddictionaries.com/2015/01/21/video-oxford-comma/[video discussion of the Oxford comma] provided by the Oxford Dictionary. +[[writing-titlecase]] +=== Use AP Title Case for Chapter and Section Titles + +Here is a link:https://titlecaseconverter.com/rules/[summary] of the rules: + + * Capitalize the first word and the last word of the title. + * Capitalize the principal words. + * Capitalize "`to`" in infinitives. + * Capitalize all words of four letters or more. + * Do not capitalize articles, conjunctions, and prepositions of three + letters or fewer. + +[NOTE] +.Note +==== +The actual AP style guide is behind a paywall. +The summary here is from a commercial website. +==== + + === Date Format Whenever possible, write dates in the <<iso-8601,ISO 8601>> format: @@ -377,7 +397,7 @@ Occasional non-normative explanations can be included in the [[writing-describing-errors]] -=== Commands which Return Error Codes +=== Commands Which Return Error Codes Commands which return elink:VkResult values must list all possible error codes for the command in the `errorcodes` XML attribute for the command. @@ -1170,7 +1190,7 @@ valid usage statement), the original VUs can be left intact. [[writing-empty-enumerations]] -== Markup For Empty Enumerated Types +== Markup for Empty Enumerated Types Sometimes an enumerated type has all values defined by extensions, and each enumerated value defined by the type will be surrounded by an asciidoctor @@ -1207,7 +1227,7 @@ extensions are enabled in this build of the specification. [[writing-refpages]] -== Markup For Automatic Reference Page Extraction +== Markup for Automatic Reference Page Extraction The Vulkan reference pages are (mostly) extracted from corresponding sections of the API Specification. @@ -175,7 +175,7 @@ branch of the member gitlab server. #define <name>VKSC_API_VERSION_1_0</name> <type>VK_MAKE_API_VERSION</type>(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0</type> <type api="vulkan" category="define">// Version of this file -#define <name>VK_HEADER_VERSION</name> 267</type> +#define <name>VK_HEADER_VERSION</name> 268</type> <type api="vulkan" category="define" requires="VK_HEADER_VERSION">// Complete version of this file #define <name>VK_HEADER_VERSION_COMPLETE</name> <type>VK_MAKE_API_VERSION</type>(0, 1, 3, VK_HEADER_VERSION)</type> <type api="vulkansc" category="define">// Version of this file @@ -23534,7 +23534,19 @@ typedef void* <name>MTLSharedEvent_id</name>; <extension name="VK_NV_extension_549" number="549" author="NV" contact="Piers Daniell @pdaniell-nv" supported="disabled"> <require> <enum value="0" name="VK_NV_EXTENSION_549_SPEC_VERSION"/> - <enum value=""VK_NV_extension_549"" name="VK_NV_EXTENSION_549_EXTENSION_NAME"/> + <enum value=""VK_NV_extension_549"" name="VK_NV_EXTENSION_549_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_550" number="550" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_550_SPEC_VERSION"/> + <enum value=""VK_NV_extension_550"" name="VK_NV_EXTENSION_550_EXTENSION_NAME"/> + </require> + </extension> + <extension name="VK_NV_extension_551" number="551" author="NV" contact="Daniel Koch @dgkoch" supported="disabled"> + <require> + <enum value="0" name="VK_NV_EXTENSION_551_SPEC_VERSION"/> + <enum value=""VK_NV_extension_551"" name="VK_NV_EXTENSION_551_EXTENSION_NAME"/> </require> </extension> </extensions> |