From dd9919749a56177c2eb9b6525c0979722a3c24ff Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Mon, 13 Aug 2018 06:23:03 -0700 Subject: [PATCH] Change log for August 13, 2018 Vulkan 1.1.83 spec update: * Update release number to 83. Public Issues: * Use [%inline] directive for all SVGs to reduce file size (public pull request 734). * Convert XML `value` aliases into \ tags (public pull request 747). * Fix metadoc script showing non-selected extensions (public pull request 748). * Reapply public pull request 742 to make ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the graphices pipeline (public pull request 749). * Fix numerous typos related to accidental duplication of words (public pull request 760). * Fix `vk.xml` contact typos (public pull request 761). Internal Issues: * Add images to the <> table (internal issue 1115). * Add a definition of "`Inherited from`" precision in the <> section (internal issue 1314). * Clarify that both built-in and user-defined variables count against the location limits for shader interfaces in the <> section (internal issue 1316). * Merge "`required`" capabilities into the <> (internal issue 1320). * Relax the layout matching rules of descriptors referring to only a single aspect of a depth/stencil image, by reference to the new <> section (internal issue 1346). * Revert extension metadoc generator warning about name mismatches to a diagnostic, due to annoying warnings in build output for conscious choices we've made (internal issue 1351). Other Issues: * Reserve bits for pending vendor extensions. * Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and code:FragDepth in the <> section. * Add missing ChangeLog entries for the previous three spec updates. --- ChangeLog.txt | 153 ++++++++++++++++++ Makefile | 2 +- appendices/VK_AMD_shader_core_properties.txt | 2 +- appendices/VK_AMD_shader_info.txt | 2 +- appendices/VK_EXT_validation_cache.txt | 8 +- appendices/VK_EXT_validation_flags.txt | 4 +- appendices/VK_KHR_win32_surface.txt | 59 +++---- .../VK_NV_device_diagnostic_checkpoints.txt | 12 +- .../VK_NV_framebuffer_mixed_samples.txt | 22 +-- appendices/spirvenv.txt | 94 ++++++----- chapters/VK_EXT_debug_report.txt | 16 +- chapters/VK_EXT_debug_utils.txt | 16 +- chapters/VK_GOOGLE_display_timing/queries.txt | 8 +- .../indirectcommands.txt | 14 +- .../objecttable.txt | 28 ++-- .../device_diagnostic_checkpoints.txt | 24 +-- .../queue_checkpoint_properties.txt | 2 +- chapters/cmdbuffers.txt | 4 +- chapters/descriptorsets.txt | 3 +- chapters/drawing.txt | 24 +-- chapters/features.txt | 74 ++++----- chapters/fxvertex.txt | 5 +- chapters/geometry.txt | 18 +-- chapters/interfaces.txt | 20 ++- chapters/introduction.txt | 6 +- chapters/memory.txt | 4 +- chapters/primsrast.txt | 5 + chapters/resources.txt | 28 +++- chapters/synchronization.txt | 8 +- chapters/textures.txt | 64 ++++---- chapters/vertexpostproc.txt | 12 +- config/makeSubmit.py | 12 +- images/sample_count_1.svg | 24 +++ images/sample_count_16.svg | 69 ++++++++ images/sample_count_2.svg | 27 ++++ images/sample_count_4.svg | 33 ++++ images/sample_count_8.svg | 45 ++++++ include/vulkan/vulkan_core.h | 2 +- reflow_count.py | 2 +- style/markup.txt | 10 +- style/naming.txt | 50 +++--- styleguide.txt | 2 + xml/extensionmetadocgenerator.py | 2 +- xml/vk.xml | 20 ++- 44 files changed, 730 insertions(+), 309 deletions(-) mode change 100644 => 100755 chapters/interfaces.txt create mode 100644 images/sample_count_1.svg create mode 100644 images/sample_count_16.svg create mode 100644 images/sample_count_2.svg create mode 100644 images/sample_count_4.svg create mode 100644 images/sample_count_8.svg diff --git a/ChangeLog.txt b/ChangeLog.txt index 8253b841..acbb0604 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -8,6 +8,159 @@ public pull requests that have been accepted. ----------------------------------------------------- +Change log for August 13, 2018 Vulkan 1.1.83 spec update: + + * Update release number to 83. + +Public Issues: + + * Use [%inline] directive for all SVGs to reduce file size (public pull + request 734). + * Convert XML `value` aliases into \ tags (public pull request + 747). + * Fix metadoc script showing non-selected extensions (public pull request + 748). + * Reapply public pull request 742 to make + ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the + graphices pipeline (public pull request 749). + * Fix numerous typos related to accidental duplication of words (public + pull request 760). + * Fix `vk.xml` contact typos (public pull request 761). + + +Internal Issues: + + * Add images to the <> table (internal issue + 1115). + * Add a definition of "`Inherited from`" precision in the + <> section (internal issue 1314). + * Clarify that both built-in and user-defined variables count against the + location limits for shader interfaces in the + <> section + (internal issue 1316). + * Merge "`required`" capabilities into the <> (internal issue 1320). + * Relax the layout matching rules of descriptors referring to only a + single aspect of a depth/stencil image, by reference to the new + <> + section (internal issue 1346). + * Revert extension metadoc generator warning about name mismatches to a + diagnostic, due to annoying warnings in build output for conscious + choices we've made (internal issue 1351). + +Other Issues: + + * Reserve bits for pending vendor extensions. + * Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and + code:FragDepth in the <> section. + * Add missing ChangeLog entries for the previous three spec updates. + +----------------------------------------------------- + +Change log for July 30, 2018 Vulkan 1.1.82 spec update: + + * Update release number to 82. + +Public Issues: + + * Add flink:vkDestroyPipelineLayout valid usage statement that the layout + must not have been used with command buffers still in the recording + state (public issue 730). + * Correct \ tag for elink:VkResult in `vk.xml` (public merge + request 746). + +Internal Issues: + + * Add a valid usage statement to flink:vkQueueSubmit, and similar language + to the definitions of <> requiring that an acquire operation follow a previous + release of the same subresource (internal issue 1290). + * Add <> and + <> + sections that precisely define the slink:VkFormatFeatures supported by + images and image views, and rewrite valid usage statements to reference + these sections instead of duplicating language (internal issue 1310). + * Reword and consolidate synchronization valid usage statements for + flink:vkCmdPipelineBarrier such that they correctly account for mutiple + possible self-dependencies (internal issue 1322). + * Change order of <> for 2xMSAA (internal issue + 1347). + * Add definitions of "`<>`" and "`<>`" in the + SPIR-V environment appendix, and "`Units in the Last Place (ULP)`" in + the glossary. + +New Extensions: + + * `VK_NV_device_diagnostic_checkpoints` + +----------------------------------------------------- + +Change log for July 23, 2018 Vulkan 1.1.81 spec update: + + * Update release number to 81. + +Public Issues: + + * Fix missing "`valid`" phrasing in some obscure cases (public pull + request 605). + * Replace improper use of cannot: referring to the implementation in the + description of the + <> limit (public pull + request 738). + * Reorder description of bits in elink:VkPipelineStageFlagBits and the + <> table to match their definition order (public pull request 740). + * Add description of ename:VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT + to elink:VkBufferUsageFlagBits (public pull request 741). + * Fix value usage statement for slink:VkSubpassDependency stage mask + parameters (public pull request 742). + * Fix visible markup in registry schema document (public pull request + #745). + +Internal Issues: + + * Make the <> and <> descriptions consistent with other pipeline stages (internal + issue 1325). + * Mark the `VK_NV_glsl_shader` extension as deprecated. + * Adjust the per-instance vertex attribute offset formula specified by + `VK_EXT_vertex_attribute_divisor` for + slink:VkVertexInputBindingDivisorDescriptionEXT so that the interaction + between pname:firstInstance and pname:divisor matches the OpenGL + convention (internal issue 1333). + +----------------------------------------------------- + +Change log for July 7, 2018 Vulkan 1.1.80 spec update: + + * Update release number to 80. + +Public Issues: + + * Remove unused "`API Order`" term from glossary (public issue 657). + * Dynamically generate the extension appendix includes based on + information in `vk.xml`, including new metadata tags describing + deprecated, obsoleted, and promoted extensions (public pull request + 690). + +Internal Issues: + + * Add valid usage statements to flink:vkCmdBindDescriptorSets to keep + offsets + range less than or equal to the buffer size (internal issue + 1174). + +New Extensions: + + * `VK_EXT_conditional_render` + * `VK_KHR_create_renderpass2` (public issue 736) + * `VK_KHR_8bit_storage` (public issue 737) + +----------------------------------------------------- + Change log for July 1, 2018 Vulkan 1.1.79 spec update: * Update release number to 79. diff --git a/Makefile b/Makefile index d91fa8b1..3ca3c911 100644 --- a/Makefile +++ b/Makefile @@ -107,7 +107,7 @@ VERBOSE = # EXTRAATTRIBS sets additional attributes, if passed to make # ADOCOPTS options for asciidoc->HTML5 output NOTEOPTS = -a editing-notes -a implementation-guide -PATCHVERSION = 82 +PATCHVERSION = 83 ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS))) SPECREVISION = 1.1.$(PATCHVERSION) else diff --git a/appendices/VK_AMD_shader_core_properties.txt b/appendices/VK_AMD_shader_core_properties.txt index b0c12e64..440f33df 100644 --- a/appendices/VK_AMD_shader_core_properties.txt +++ b/appendices/VK_AMD_shader_core_properties.txt @@ -27,7 +27,7 @@ None. === New Structures - * slink:VkPhysicalDeviceShaderCorePropertiesAMD + * slink:VkPhysicalDeviceShaderCorePropertiesAMD === New Functions diff --git a/appendices/VK_AMD_shader_info.txt b/appendices/VK_AMD_shader_info.txt index efca3e4a..4e35ab18 100644 --- a/appendices/VK_AMD_shader_info.txt +++ b/appendices/VK_AMD_shader_info.txt @@ -34,7 +34,7 @@ None. === New Structures - * slink:VkShaderStatisticsInfoAMD + * slink:VkShaderStatisticsInfoAMD === New Functions diff --git a/appendices/VK_EXT_validation_cache.txt b/appendices/VK_EXT_validation_cache.txt index 2873e190..cc0a9ade 100644 --- a/appendices/VK_EXT_validation_cache.txt +++ b/appendices/VK_EXT_validation_cache.txt @@ -21,13 +21,13 @@ slink:VkShaderModule. === New Object Types - * slink:VkValidationCacheEXT + * slink:VkValidationCacheEXT === New Enum Constants - * Extending elink:VkStructureType: - ** ename:VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT - ** ename:VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT + * Extending elink:VkStructureType: + ** ename:VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT + ** ename:VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT === New Enums diff --git a/appendices/VK_EXT_validation_flags.txt b/appendices/VK_EXT_validation_flags.txt index 98323a98..bcdb3d02 100644 --- a/appendices/VK_EXT_validation_flags.txt +++ b/appendices/VK_EXT_validation_flags.txt @@ -17,8 +17,8 @@ will be disabled by the validation layers. === New Enum Constants - * Extending elink:VkStructureType: - ** ename:VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT + * Extending elink:VkStructureType: + ** ename:VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT === New Enums diff --git a/appendices/VK_KHR_win32_surface.txt b/appendices/VK_KHR_win32_surface.txt index cbeb22e4..a6cb9250 100644 --- a/appendices/VK_KHR_win32_surface.txt +++ b/appendices/VK_KHR_win32_surface.txt @@ -78,46 +78,47 @@ Such behavior may succeed when using one Vulkan implementation but fail when using a different Vulkan implementation. Potential failures include: - * Creating then destroying a flip presentation model DXGI swapchain on a - window object can prevent flink:vkCreateSwapchainKHR from succeeding on - the same window object. + * Creating then destroying a flip presentation model DXGI swapchain on a + window object can prevent flink:vkCreateSwapchainKHR from succeeding on + the same window object. - * Creating then destroying a slink:VkSwapchainKHR on a window object can - prevent creation of a bitblt model DXGI swapchain on the same window - object. + * Creating then destroying a slink:VkSwapchainKHR on a window object can + prevent creation of a bitblt model DXGI swapchain on the same window + object. - * Creating then destroying a slink:VkSwapchainKHR on a window object can - effectively code:SetPixelFormat to a different format than the format - chosen by an OpenGL application. + * Creating then destroying a slink:VkSwapchainKHR on a window object can + effectively code:SetPixelFormat to a different format than the format + chosen by an OpenGL application. - * Creating then destroying a slink:VkSwapchainKHR on a window object on one - slink:VkPhysicalDevice can prevent flink:vkCreateSwapchainKHR from - succeeding on the same window object, but on a different - slink:VkPhysicalDevice that is associated with a different Vulkan ICD. + * Creating then destroying a slink:VkSwapchainKHR on a window object on + one slink:VkPhysicalDevice can prevent flink:vkCreateSwapchainKHR from + succeeding on the same window object, but on a different + slink:VkPhysicalDevice that is associated with a different Vulkan ICD. In all cases the problem can be worked around by creating a new window object. Technical details include: - * Creating a DXGI swapchain over a window object can alter the object for - the remainder of its lifetime. - The alteration persists even after the DXGI swapchain has been destroyed. - This alteration can make it impossible for a conformant Vulkan - implementation to create a slink:VkSwapchainKHR over the same window - object. - Mention of this alteration can be found in the remarks section of the - MSDN documentation for code:DXGI_SWAP_EFFECT. + * Creating a DXGI swapchain over a window object can alter the object for + the remainder of its lifetime. + The alteration persists even after the DXGI swapchain has been + destroyed. + This alteration can make it impossible for a conformant Vulkan + implementation to create a slink:VkSwapchainKHR over the same window + object. + Mention of this alteration can be found in the remarks section of the + MSDN documentation for code:DXGI_SWAP_EFFECT. - * Calling GDI's code:SetPixelFormat (needed by OpenGL's WGL layer) on a - window object alters the object for the remainder of its lifetime. - The MSDN documentation for code:SetPixelFormat explains that a window - object's pixel format can be set only one time. + * Calling GDI's code:SetPixelFormat (needed by OpenGL's WGL layer) on a + window object alters the object for the remainder of its lifetime. + The MSDN documentation for code:SetPixelFormat explains that a window + object's pixel format can be set only one time. - * Creating a slink:VkSwapchainKHR over a window object can alter the object - for the remaining life of its lifetime. - Either of the above alterations may occur as a side-effect of - slink:VkSwapchainKHR. + * Creating a slink:VkSwapchainKHR over a window object can alter the + object for the remaining life of its lifetime. + Either of the above alterations may occur as a side-effect of + slink:VkSwapchainKHR. === Version History diff --git a/appendices/VK_NV_device_diagnostic_checkpoints.txt b/appendices/VK_NV_device_diagnostic_checkpoints.txt index 5d5e7654..28880a6e 100644 --- a/appendices/VK_NV_device_diagnostic_checkpoints.txt +++ b/appendices/VK_NV_device_diagnostic_checkpoints.txt @@ -27,8 +27,8 @@ None. Extending slink:VkStructureType: - * ename:VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV - * ename:VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV + * ename:VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV + * ename:VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV === New Enums @@ -36,13 +36,13 @@ None. === New Structures - * slink:VkCheckpointDataNV - * slink:VkQueueFamilyCheckpointPropertiesNV + * slink:VkCheckpointDataNV + * slink:VkQueueFamilyCheckpointPropertiesNV === New Functions - * flink:vkCmdSetCheckpointNV - * flink:vkGetQueueCheckpointDataNV + * flink:vkCmdSetCheckpointNV + * flink:vkGetQueueCheckpointDataNV === Issues diff --git a/appendices/VK_NV_framebuffer_mixed_samples.txt b/appendices/VK_NV_framebuffer_mixed_samples.txt index 98683dd7..1c0229c0 100644 --- a/appendices/VK_NV_framebuffer_mixed_samples.txt +++ b/appendices/VK_NV_framebuffer_mixed_samples.txt @@ -33,17 +33,17 @@ antialiasing is applied and there is no corruption on these edges. The key features of this extension are: - * It allows render pass and framebuffer objects to be created where the - number of samples in the depth/stencil attachment in a subpass is a - multiple of the number of samples in the color attachments in the - subpass. - - * A coverage reduction step is added to Fragment Operations which converts - a set of covered raster/depth/stencil samples to a set of color samples - that perform blending and color writes. - The coverage reduction step also includes an optional coverage modulation - step, multiplying color values by a fractional opacity corresponding to - the number of associated raster/depth/stencil samples covered. + * It allows render pass and framebuffer objects to be created where the + number of samples in the depth/stencil attachment in a subpass is a + multiple of the number of samples in the color attachments in the + subpass. + * A coverage reduction step is added to Fragment Operations which converts + a set of covered raster/depth/stencil samples to a set of color samples + that perform blending and color writes. + The coverage reduction step also includes an optional coverage + modulation step, multiplying color values by a fractional opacity + corresponding to the number of associated raster/depth/stencil samples + covered. === New Object Types diff --git a/appendices/spirvenv.txt b/appendices/spirvenv.txt index 1bf31ba8..7f85a853 100755 --- a/appendices/spirvenv.txt +++ b/appendices/spirvenv.txt @@ -35,37 +35,27 @@ Specification. [[spirvenv-capabilities]] == Capabilities -Implementations must: support the following capability operands declared by -code:OpCapability: - - * code:Matrix - * code:Shader - * code:InputAttachment - * code:Sampled1D - * code:Image1D - * code:SampledBuffer - * code:ImageBuffer - * code:ImageQuery - * code:DerivativeControl -ifdef::VK_VERSION_1_1,VK_KHR_device_group[] - * code:DeviceGroup -endif::VK_VERSION_1_1,VK_KHR_device_group[] -ifdef::VK_VERSION_1_1,VK_KHR_multiview[] - * [[spirvenv-capabilities-multiview]] code:MultiView -endif::VK_VERSION_1_1,VK_KHR_multiview[] -ifdef::VK_KHR_8bit_storage[] - * code:StorageBuffer8BitAccess -endif::VK_KHR_8bit_storage[] - -If the implementation supports any of the optional: features described in -the <> chapter, then the capability operand(s) -corresponding to that feature must: also be supported. +The SPIR-V capabilities listed below must: be supported if the corresponding +feature or extension is enabled, or if no features or extensions are listed +for that capability. +Extensions are only listed when there is not also a feature bit associated +with that capability. [[spirvenv-capabilities-table]] -.List of optional: SPIR-V Capabilities and corresponding feature or extension names +.List of SPIR-V Capabilities and enabling features or extensions [options="header"] |==== -| SPIR-V OpCapability | Vulkan feature or extension name +| SPIR-V code:OpCapability | Vulkan feature or extension name + +| code:Matrix | +| code:Shader | +| code:InputAttachment | +| code:Sampled1D | +| code:Image1D | +| code:SampledBuffer | +| code:ImageBuffer | +| code:ImageQuery | +| code:DerivativeControl | | code:Geometry | <> | code:Tessellation | <> | code:Float64 | <> @@ -93,21 +83,30 @@ corresponding to that feature must: also be supported. | code:StorageImageWriteWithoutFormat | <> | code:MultiViewport | <> ifdef::VK_VERSION_1_1,VK_KHR_shader_draw_parameters[] -| code:DrawParameters -| `<>` +| code:DrawParameters | ifdef::VK_VERSION_1_1[] -or <> +<> endif::VK_VERSION_1_1[] +ifdef::VK_KHR_shader_draw_parameters+VK_VERSION_1_1[] +or +endif::VK_KHR_shader_draw_parameters+VK_VERSION_1_1[] +ifdef::VK_KHR_shader_draw_parameters[] +<> +endif::VK_KHR_shader_draw_parameters[] endif::VK_VERSION_1_1,VK_KHR_shader_draw_parameters[] -ifndef::VK_VERSION_1_1[] -ifdef::VK_KHR_multiview[] +ifdef::VK_VERSION_1_1,VK_KHR_multiview[] [[spirvenv-capabilities-multiview]] -| code:MultiView | <> -endif::VK_KHR_multiview[] -ifdef::VK_KHR_device_group[] -| code:DeviceGroup | <> -endif::VK_KHR_device_group[] +| code:MultiView | +ifndef::VK_VERSION_1_1[] +<> endif::VK_VERSION_1_1[] +endif::VK_VERSION_1_1,VK_KHR_multiview[] +ifdef::VK_VERSION_1_1,VK_KHR_device_group[] +| code:DeviceGroup | +ifndef::VK_VERSION_1_1[] +<> +endif::VK_VERSION_1_1[] +endif::VK_VERSION_1_1,VK_KHR_device_group[] ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[] [[spirvenv-capabilities-table-variablepointers]] | code:VariablePointersStorageBuffer | <> @@ -544,8 +543,8 @@ instructions: The precision of double-precision instructions is at least that of single precision. -The precision of operations is defined either in terms of rounding or as an -error bound in ULP, as follows. +The precision of operations is defined either in terms of rounding, as an +error bound in ULP, or as inherited from a formula as follows. .Correctly Rounded Operations described as "correctly rounded" will return the infinitely @@ -575,6 +574,23 @@ operations may return an infinity of the appropriate sign. If the infinitely precise result of the operation is not mathematically defined then the value returned is undefined. +.Inherited From ... +Where an operation's precision is described as being inherited from a +formula, the result returned must be at least as accurate as the result of +computing an approximation to [eq]#x# using a formula equivalent to the +given formula applied to the supplied inputs. +Specifically, the formula given may be transformed using the mathematical +associativity, commutativity and distributivity of the operators involved to +yield an equivalent formula. +The SPIR-V precision rules, when applied to each such formula and the given +input values, define a range of permitted values. +If [eq]#NaN# is one of the permitted values then the operation may return +any result, otherwise let the largest permitted value in any of the ranges +be [eq]#F~max~# and the smallest be [eq]#F~min~#. +The operation must return a value in the range [eq]#[x - E, x + E]# where +latexmath:[E = \mathrm{max} \left( | x - F_{\mathrm{min}} |, | x - +F_{\mathrm{max}} | \right) ] + For single precision (32 bit) instructions, precisions are required: to be at least as follows, unless decorated with RelaxedPrecision: diff --git a/chapters/VK_EXT_debug_report.txt b/chapters/VK_EXT_debug_report.txt index 550a51d4..730e0f0f 100644 --- a/chapters/VK_EXT_debug_report.txt +++ b/chapters/VK_EXT_debug_report.txt @@ -290,14 +290,14 @@ To destroy a sname:VkDebugReportCallbackEXT object, call: include::../api/protos/vkDestroyDebugReportCallbackEXT.txt[] - * pname:instance the instance where the callback was created. - * pname:callback the slink:VkDebugReportCallbackEXT object to destroy. - pname:callback is an externally synchronized object and must: not be used - on more than one thread at a time. - This means that fname:vkDestroyDebugReportCallbackEXT must: not be called - when a callback is active. - * pname:pAllocator controls host memory allocation as described in the - <> chapter. + * pname:instance the instance where the callback was created. + * pname:callback the slink:VkDebugReportCallbackEXT object to destroy. + pname:callback is an externally synchronized object and must: not be + used on more than one thread at a time. + This means that fname:vkDestroyDebugReportCallbackEXT must: not be + called when a callback is active. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. .Valid Usage **** diff --git a/chapters/VK_EXT_debug_utils.txt b/chapters/VK_EXT_debug_utils.txt index c15431f8..534ea4cb 100644 --- a/chapters/VK_EXT_debug_utils.txt +++ b/chapters/VK_EXT_debug_utils.txt @@ -658,14 +658,14 @@ To destroy a sname:VkDebugUtilsMessengerEXT object, call: include::../api/protos/vkDestroyDebugUtilsMessengerEXT.txt[] - * pname:instance the instance where the callback was created. - * pname:messenger the slink:VkDebugUtilsMessengerEXT object to destroy. - pname:messenger is an externally synchronized object and must: not be - used on more than one thread at a time. - This means that fname:vkDestroyDebugUtilsMessengerEXT must: not be called - when a callback is active. - * pname:pAllocator controls host memory allocation as described in the - <> chapter. + * pname:instance the instance where the callback was created. + * pname:messenger the slink:VkDebugUtilsMessengerEXT object to destroy. + pname:messenger is an externally synchronized object and must: not be + used on more than one thread at a time. + This means that fname:vkDestroyDebugUtilsMessengerEXT must: not be + called when a callback is active. + * pname:pAllocator controls host memory allocation as described in the + <> chapter. .Valid Usage **** diff --git a/chapters/VK_GOOGLE_display_timing/queries.txt b/chapters/VK_GOOGLE_display_timing/queries.txt index 99df00f2..827ef78c 100644 --- a/chapters/VK_GOOGLE_display_timing/queries.txt +++ b/chapters/VK_GOOGLE_display_timing/queries.txt @@ -141,8 +141,8 @@ include::../../api/protos/vkGetPastPresentationTimingGOOGLE.txt[] * pname:pPresentationTimingCount is a pointer to an integer related to the number of sname:VkPastPresentationTimingGOOGLE structures to query, as described below. - * pname:pPresentationTimings is either `NULL` or a pointer to an array - of sname:VkPastPresentationTimingGOOGLE structures. + * pname:pPresentationTimings is either `NULL` or a pointer to an array of + sname:VkPastPresentationTimingGOOGLE structures. If pname:pPresentationTimings is `NULL`, then the number of newly-available timing records for the given pname:swapchain is returned in @@ -244,8 +244,8 @@ The semantics for other present modes are as follows: when the image was displayed. For images that are not displayed to the user, fname:vkGetPastPresentationTimingGOOGLE may: not return a - sname:VkPastPresentationTimingGOOGLE structure, or it may: return - a sname:VkPastPresentationTimingGOOGLE structure with the value of zero + sname:VkPastPresentationTimingGOOGLE structure, or it may: return a + sname:VkPastPresentationTimingGOOGLE structure with the value of zero for both sname:VkPastPresentationTimingGOOGLE::pname:actualPresentTime and sname:VkPastPresentationTimingGOOGLE::pname:earliestPresentTime. It is possible that an application can: submit images with diff --git a/chapters/VK_NVX_device_generated_commands/indirectcommands.txt b/chapters/VK_NVX_device_generated_commands/indirectcommands.txt index e7fe2d73..725f267b 100644 --- a/chapters/VK_NVX_device_generated_commands/indirectcommands.txt +++ b/chapters/VK_NVX_device_generated_commands/indirectcommands.txt @@ -81,13 +81,13 @@ the function arguments that need to be known at layout creation time: include::../../api/structs/VkIndirectCommandsLayoutTokenNVX.txt[] - * pname:type specifies the token command type. - * pname:bindingUnit has a different meaning depending on the type, please - refer pseudo code further down for details. - * pname:dynamicCount has a different meaning depending on the type, please - refer pseudo code further down for details. - * pname:divisor defines the rate at which the input data buffers are - accessed. + * pname:type specifies the token command type. + * pname:bindingUnit has a different meaning depending on the type, please + refer pseudo code further down for details. + * pname:dynamicCount has a different meaning depending on the type, please + refer pseudo code further down for details. + * pname:divisor defines the rate at which the input data buffers are + accessed. .Valid Usage **** diff --git a/chapters/VK_NVX_device_generated_commands/objecttable.txt b/chapters/VK_NVX_device_generated_commands/objecttable.txt index e1460680..7c1d64fc 100644 --- a/chapters/VK_NVX_device_generated_commands/objecttable.txt +++ b/chapters/VK_NVX_device_generated_commands/objecttable.txt @@ -119,20 +119,20 @@ the entry type of a configuration, are: include::../../api/enums/VkObjectEntryTypeNVX.txt[] - * ename:VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX specifies a - sname:VkDescriptorSet resource entry that is registered via - sname:VkObjectTableDescriptorSetEntryNVX. - * ename:VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX specifies a sname:VkPipeline - resource entry that is registered via - sname:VkObjectTablePipelineEntryNVX. - * ename:VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX specifies a sname:VkBuffer - resource entry that is registered via - sname:VkObjectTableIndexBufferEntryNVX. - * ename:VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX specifies a sname:VkBuffer - resource entry that is registered via - sname:VkObjectTableVertexBufferEntryNVX. - * ename:VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX specifies the resource entry - is registered via sname:VkObjectTablePushConstantEntryNVX. + * ename:VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX specifies a + sname:VkDescriptorSet resource entry that is registered via + sname:VkObjectTableDescriptorSetEntryNVX. + * ename:VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX specifies a sname:VkPipeline + resource entry that is registered via + sname:VkObjectTablePipelineEntryNVX. + * ename:VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX specifies a sname:VkBuffer + resource entry that is registered via + sname:VkObjectTableIndexBufferEntryNVX. + * ename:VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX specifies a sname:VkBuffer + resource entry that is registered via + sname:VkObjectTableVertexBufferEntryNVX. + * ename:VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX specifies the resource + entry is registered via sname:VkObjectTablePushConstantEntryNVX. -- diff --git a/chapters/VK_NV_device_diagnostic_checkpoints/device_diagnostic_checkpoints.txt b/chapters/VK_NV_device_diagnostic_checkpoints/device_diagnostic_checkpoints.txt index 5c6329f1..fa1dcc42 100644 --- a/chapters/VK_NV_device_diagnostic_checkpoints/device_diagnostic_checkpoints.txt +++ b/chapters/VK_NV_device_diagnostic_checkpoints/device_diagnostic_checkpoints.txt @@ -45,12 +45,12 @@ diagnostic checkpoints that were executed by the device. include::../../api/protos/vkGetQueueCheckpointDataNV.txt[] - * pname:queue is the elink:VkQueue object the caller would like to retrieve - checkpoint data for - * pname:pCheckpointDataCount is a pointer to an integer related to the - number of checkpoint markers available or queried, as described below. - * pname:pCheckpointData is either `NULL` or a pointer to an array of - sname:VkCheckpointDataNV structures. + * pname:queue is the elink:VkQueue object the caller would like to + retrieve checkpoint data for + * pname:pCheckpointDataCount is a pointer to an integer related to the + number of checkpoint markers available or queried, as described below. + * pname:pCheckpointData is either `NULL` or a pointer to an array of + sname:VkCheckpointDataNV structures. If pname:pCheckpointData is `NULL`, then the number of checkpoint markers available is returned in pname:pCheckpointDataCount. @@ -78,12 +78,12 @@ The slink:VkCheckpointDataNV structure is defined as: include::../../api/structs/VkCheckpointDataNV.txt[] - * pname:sType is the type of this structure - * pname:pNext is `NULL` or a pointer to an extension-specific structure. - * pname:stage indicates which pipeline stage the checkpoint marker data - refers to. - * pname:pCheckpointMarker contains the value of the last checkpoint marker - executed in the stage that pname:stage refers to. + * pname:sType is the type of this structure + * pname:pNext is `NULL` or a pointer to an extension-specific structure. + * pname:stage indicates which pipeline stage the checkpoint marker data + refers to. + * pname:pCheckpointMarker contains the value of the last checkpoint marker + executed in the stage that pname:stage refers to. include::../../validity/structs/VkCheckpointDataNV.txt[] diff --git a/chapters/VK_NV_device_diagnostic_checkpoints/queue_checkpoint_properties.txt b/chapters/VK_NV_device_diagnostic_checkpoints/queue_checkpoint_properties.txt index 85c966d3..26421de1 100644 --- a/chapters/VK_NV_device_diagnostic_checkpoints/queue_checkpoint_properties.txt +++ b/chapters/VK_NV_device_diagnostic_checkpoints/queue_checkpoint_properties.txt @@ -2,7 +2,7 @@ Additional queue family information can be queried by setting slink:VkQueueFamilyProperties2::pname:pNext to point to an instance of the slink:VkQueueFamilyCheckpointPropertiesNV structure. -[open,refpage='VkQueueFamilyCheckpointPropertiesNV',desc='return structure for queue family checkpoint info query'] +[open,refpage='VkQueueFamilyCheckpointPropertiesNV',desc='return structure for queue family checkpoint info query',type='structs'] -- The slink:VkQueueFamilyCheckpointPropertiesNV structure is defined as: diff --git a/chapters/cmdbuffers.txt b/chapters/cmdbuffers.txt index 3cab5d85..1d4b87bf 100644 --- a/chapters/cmdbuffers.txt +++ b/chapters/cmdbuffers.txt @@ -454,8 +454,8 @@ include::../api/structs/VkCommandBufferAllocateInfo.txt[] * pname:pNext is `NULL` or a pointer to an extension-specific structure. * pname:commandPool is the command pool from which the command buffers are allocated. - * pname:level is a elink:VkCommandBufferLevel value specifying the - command buffer level. + * pname:level is a elink:VkCommandBufferLevel value specifying the command + buffer level. * pname:commandBufferCount is the number of command buffers to allocate from the pool. diff --git a/chapters/descriptorsets.txt b/chapters/descriptorsets.txt index 437f5749..4d396868 100644 --- a/chapters/descriptorsets.txt +++ b/chapters/descriptorsets.txt @@ -2609,7 +2609,8 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[] * [[VUID-VkDescriptorImageInfo-imageLayout-00344]] pname:imageLayout must: match the actual elink:VkImageLayout of each subresource accessible from pname:imageView at the time this descriptor - is accessed + is accessed as defined by the <> ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] * [[VUID-VkDescriptorImageInfo-sampler-01564]] If pname:sampler is used and the elink:VkFormat of the image is a diff --git a/chapters/drawing.txt b/chapters/drawing.txt index 162c2c37..8d88171d 100644 --- a/chapters/drawing.txt +++ b/chapters/drawing.txt @@ -617,8 +617,8 @@ The assembled primitives execute the bound graphics pipeline. ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT. ifdef::VK_IMG_filter_cubic[] * [[VUID-vkCmdDraw-None-02010]] - If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as - a result of this command, then the image view's + If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a + result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG. * [[VUID-vkCmdDraw-None-00452]] @@ -803,8 +803,8 @@ The assembled primitives execute the bound graphics pipeline. not be accessed in any way other than as an attachment by this command. ifdef::VK_IMG_filter_cubic[] * [[VUID-vkCmdDrawIndexed-None-02012]] - If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as - a result of this command, then the image view's + If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a + result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG. * [[VUID-vkCmdDrawIndexed-None-00472]] @@ -998,8 +998,8 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored. not be accessed in any way other than as an attachment by this command. ifdef::VK_IMG_filter_cubic[] * [[VUID-vkCmdDrawIndirect-None-02014]] - If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as - a result of this command, then the image view's + If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a + result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG. * [[VUID-vkCmdDrawIndirect-None-00498]] @@ -1238,8 +1238,8 @@ located at pname:countBufferOffset and use this as the draw count. not be accessed in any way other than as an attachment by this command. ifdef::VK_IMG_filter_cubic[] * [[VUID-vkCmdDrawIndirectCountKHR-None-02016]] - If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as - a result of this command, then the image view's + If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a + result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG. * [[VUID-vkCmdDrawIndirectCountKHR-None-03170]] @@ -1635,8 +1635,8 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored. not be accessed in any way other than as an attachment by this command. ifdef::VK_IMG_filter_cubic[] * [[VUID-vkCmdDrawIndexedIndirect-None-02019]] - If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as - a result of this command, then the image view's + If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a + result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG. * [[VUID-vkCmdDrawIndexedIndirect-None-00550]] @@ -1883,8 +1883,8 @@ located at pname:countBufferOffset and use this as the draw count. not be accessed in any way other than as an attachment by this command. ifdef::VK_IMG_filter_cubic[] * [[VUID-vkCmdDrawIndexedIndirectCountKHR-None-02021]] - If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as - a result of this command, then the image view's + If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a + result of this command, then the image view's <> must: contain ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG. * [[VUID-vkCmdDrawIndexedIndirectCountKHR-None-03173]] diff --git a/chapters/features.txt b/chapters/features.txt index 6471e73b..57fdfc5d 100755 --- a/chapters/features.txt +++ b/chapters/features.txt @@ -4251,10 +4251,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. Images in this format must: be defined with a width and height that is a multiple of two. - * ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM specifies an unsigned normalized - _multi-planar format_ that has an 8-bit G component in plane 0, and a - two-component, 16-bit BR plane 1 consisting of an 8-bit B component in - byte 0 and an 8-bit R component in byte 1. + * ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM specifies an unsigned + normalized _multi-planar format_ that has an 8-bit G component in plane + 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B + component in byte 0 and an 8-bit R component in byte 1. The horizontal and vertical dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which latexmath:[\lfloor i_G \times 0.5 \rfloor = @@ -4278,10 +4278,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane. Images in this format must: be defined with a width that is a multiple of two. - * ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM specifies an unsigned normalized - _multi-planar format_ that has an 8-bit G component in plane 0, and a - two-component, 16-bit BR plane 1 consisting of an 8-bit B component in - byte 0 and an 8-bit R component in byte 1. + * ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM specifies an unsigned + normalized _multi-planar format_ that has an 8-bit G component in plane + 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B + component in byte 0 and an 8-bit R component in byte 1. The horizontal dimensions of the BR plane is halved relative to the image dimensions, and each R and B value is shared with the G components for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R]. @@ -6933,13 +6933,13 @@ sample counts for the image parameters. pname:sampleCounts will be set to ename:VK_SAMPLE_COUNT_1_BIT if at least one of the following conditions is true: - * pname:tiling is ename:VK_IMAGE_TILING_LINEAR - * pname:type is not ename:VK_IMAGE_TYPE_2D - * pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT - * Neither the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag nor the - ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in - sname:VkFormatProperties::pname:optimalTilingFeatures returned by - flink:vkGetPhysicalDeviceFormatProperties is set + * pname:tiling is ename:VK_IMAGE_TILING_LINEAR + * pname:type is not ename:VK_IMAGE_TYPE_2D + * pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT + * Neither the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag nor the + ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in + sname:VkFormatProperties::pname:optimalTilingFeatures returned by + flink:vkGetPhysicalDeviceFormatProperties is set ifdef::VK_VERSION_1_1,VK_KHR_external_memory_capabilities[] * pname:VkPhysicalDeviceExternalImageFormatInfoKHR::pname:handleType is an external handle type for which multisampled image support is not @@ -6951,28 +6951,28 @@ supported for the specified values of pname:usage and pname:format. For each bit set in pname:usage, the supported sample counts relate to the limits in sname:VkPhysicalDeviceLimits as follows: - * If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT and - pname:format is a floating- or fixed-point color format, a superset of - sname:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts - * If pname:usage includes - ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format - includes a depth aspect, a superset of - sname:VkPhysicalDeviceLimits::pname:framebufferDepthSampleCounts - * If pname:usage includes - ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format - includes a stencil aspect, a superset of - sname:VkPhysicalDeviceLimits::pname:framebufferStencilSampleCounts - * If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and - pname:format includes a color aspect, a superset of - sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts - * If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and - pname:format includes a depth aspect, a superset of - sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts - * If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and - pname:format is an integer format, a superset of - sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts - * If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, a superset of - sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts + * If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT and + pname:format is a floating- or fixed-point color format, a superset of + sname:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts + * If pname:usage includes + ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format + includes a depth aspect, a superset of + sname:VkPhysicalDeviceLimits::pname:framebufferDepthSampleCounts + * If pname:usage includes + ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, and pname:format + includes a stencil aspect, a superset of + sname:VkPhysicalDeviceLimits::pname:framebufferStencilSampleCounts + * If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and + pname:format includes a color aspect, a superset of + sname:VkPhysicalDeviceLimits::pname:sampledImageColorSampleCounts + * If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and + pname:format includes a depth aspect, a superset of + sname:VkPhysicalDeviceLimits::pname:sampledImageDepthSampleCounts + * If pname:usage includes ename:VK_IMAGE_USAGE_SAMPLED_BIT, and + pname:format is an integer format, a superset of + sname:VkPhysicalDeviceLimits::pname:sampledImageIntegerSampleCounts + * If pname:usage includes ename:VK_IMAGE_USAGE_STORAGE_BIT, a superset of + sname:VkPhysicalDeviceLimits::pname:storageImageSampleCounts If multiple bits are set in pname:usage, pname:sampleCounts will be the intersection of the per-usage values described above. diff --git a/chapters/fxvertex.txt b/chapters/fxvertex.txt index 1175babd..4cea7c7d 100644 --- a/chapters/fxvertex.txt +++ b/chapters/fxvertex.txt @@ -490,9 +490,8 @@ as: include::../api/structs/VkVertexInputBindingDivisorDescriptionEXT.txt[] * pname:binding is the binding number for which the divisor is specified. - * pname:divisor is the number of successive instances that will use - the same value of the vertex attribute when instanced rendering is - enabled. + * pname:divisor is the number of successive instances that will use the + same value of the vertex attribute when instanced rendering is enabled. For example, if the divisor is N, the same vertex attribute will applied to N successive instances before moving on to the next vertex attribute. The maximum value of divisor is implementation dependent and can be diff --git a/chapters/geometry.txt b/chapters/geometry.txt index 0bdf511d..b618db8d 100644 --- a/chapters/geometry.txt +++ b/chapters/geometry.txt @@ -203,15 +203,15 @@ code:Input storage class. The code:PassthroughNV decoration must: not be used with any of: - * an input primitive type other than code:InputPoints, code:InputLines, or - code:Triangles, as specified by the mode for code:OpExecutionMode. - * an invocation count other than one, as specified by the code:Invocations - mode for code:OpExecutionMode. - * an code:OpEntryPoint which statically uses the code:OpEmitVertex or - code:OpEndPrimitive instructions. - * a variable decorated with the code:InvocationId built-in decoration. - * a variable decorated with the code:PrimitiveId built-in decoration that - is declared using the code:Input storage class. + * an input primitive type other than code:InputPoints, code:InputLines, or + code:Triangles, as specified by the mode for code:OpExecutionMode. + * an invocation count other than one, as specified by the code:Invocations + mode for code:OpExecutionMode. + * an code:OpEntryPoint which statically uses the code:OpEmitVertex or + code:OpEndPrimitive instructions. + * a variable decorated with the code:InvocationId built-in decoration. + * a variable decorated with the code:PrimitiveId built-in decoration that + is declared using the code:Input storage class. [[geometry-passthrough-interface]] diff --git a/chapters/interfaces.txt b/chapters/interfaces.txt old mode 100644 new mode 100755 index b30a89f2..678abf57 --- a/chapters/interfaces.txt +++ b/chapters/interfaces.txt @@ -238,6 +238,9 @@ be assigned the same location, either explicitly or implicitly. The number of input and output locations available for a shader input or output interface are limited, and dependent on the shader stage as described in <>. +All variables in both the <> and the <> count against these limits. [[interfaces-iointerfaces-limits]] @@ -1224,18 +1227,13 @@ four-component vector of 32-bit floating-point values. code:FragDepth:: -Decorating a variable with the code:FragDepth built-in decoration will make -that variable contain the new depth value for all samples covered by the -fragment. -This value will be used for depth testing and, if the depth test passes, any -subsequent write to the depth/stencil attachment. +To have a shader supply a fragment-depth value, the shader must: declare the +code:DepthReplacing execution mode. +Such a shader's fragment-depth value will come from the variable decorated +with the code:FragDepth built-in decoration. + -To write to code:FragDepth, a shader must: declare the code:DepthReplacing -execution mode. -If a shader declares the code:DepthReplacing execution mode and there is an -execution path through the shader that does not set code:FragDepth, then the -fragment's depth value is undefined for executions of the shader that take -that path. +This value will be used for any subsequent depth testing performed by the +implementation or writes to the depth attachment. + The code:FragDepth decoration must: be used only within fragment shaders. + diff --git a/chapters/introduction.txt b/chapters/introduction.txt index 0d1284cb..eb16e7a5 100644 --- a/chapters/introduction.txt +++ b/chapters/introduction.txt @@ -136,9 +136,9 @@ September, 2017. [[spirv-extended]] J. Kessenich, _SPIR-V Extended Instructions for GLSL, Version 1.00_, https://www.khronos.org/registry/spir-v/, February 10, 2016. -[[spirv-spec]] J. Kessenich and B. Ouriel, _The Khronos SPIR-V -Specification, Version 1.00_, https://www.khronos.org/registry/spir-v/, -February 10, 2016. +[[spirv-spec]] J. Kessenich, B. Ouriel, and R. Krisch, _SPIR-V +Specification, Version 1.3, Revision 2, Unified_, +https://www.khronos.org/registry/spir-v/, May 11, 2018. [[vulkan-styleguide]] J. Leech and T. Hector, _Vulkan Documentation and Extensions: Procedures and Conventions_, diff --git a/chapters/memory.txt b/chapters/memory.txt index fbd2bbe3..fac17d63 100644 --- a/chapters/memory.txt +++ b/chapters/memory.txt @@ -2783,8 +2783,8 @@ representation, images with external formats must: only be used as sampled images, must: only be sampled with a sampler that has Y'C~B~C~R~ conversion enabled, and must: have optimal tiling. -Images that will be backed by an Android hardware buffer can: use an external -format by setting slink:VkImageCreateInfo::pname:format to +Images that will be backed by an Android hardware buffer can: use an +external format by setting slink:VkImageCreateInfo::pname:format to ename:VK_FORMAT_UNDEFINED and including an instance of slink:VkExternalFormatANDROID in the pname:pNext chain. Images can: be created with an external format even if the Android hardware diff --git a/chapters/primsrast.txt b/chapters/primsrast.txt index b2dea6f7..4a4b8941 100644 --- a/chapters/primsrast.txt +++ b/chapters/primsrast.txt @@ -400,6 +400,11 @@ pixel. [eq]#(0.9375, 0.25)# + [eq]#(0.875, 0.9375)# + [eq]#(0.0625, 0.0)# +|image:images/sample_count_1.svg[align="center"] +|image:images/sample_count_2.svg[align="center"] +|image:images/sample_count_4.svg[align="center"] +|image:images/sample_count_8.svg[align="center"] +|image:images/sample_count_16.svg[align="center"] |==== ifdef::VK_AMD_shader_fragment_mask[] diff --git a/chapters/resources.txt b/chapters/resources.txt index 928f04c4..05d098c5 100644 --- a/chapters/resources.txt +++ b/chapters/resources.txt @@ -1841,9 +1841,33 @@ For use as a framebuffer attachment, this is a member in the substructures of the sname:VkRenderPassCreateInfo (see <>). For use in a descriptor set, this is a member in the sname:VkDescriptorImageInfo structure (see <>). + +-- + + +[[resources-image-layouts-matching-rule]] +=== Image Layout Matching Rules + At the time that any command buffer command accessing an image executes on any queue, the layouts of the image subresources that are accessed must: all -match the layout specified via the API controlling those accesses. +match exactly the layout specified via the API controlling those accesses +ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[] +, except in case of accesses to an image with a depth/stencil format +performed through descriptors referring to only a single aspect of the +image, where the following relaxed matching rules apply: + + * Descriptors referring just to the depth aspect of a depth/stencil image + only need to match in the image layout of the depth aspect, thus + ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL and + ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL are + considered to match. + * Descriptors referring just to the stencil aspect of a depth/stencil + image only need to match in the image layout of the stencil aspect, thus + ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL and + ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL are + considered to match +endif::VK_VERSION_1_1,VK_KHR_maintenance2[] +. When performing a layout transition on an image subresource, the old layout value must: either equal the current layout of the image subresource (at the @@ -1879,8 +1903,6 @@ the contents of the depth aspect of those image subresources undefined. endif::VK_EXT_sample_locations[] --- - [[resources-image-views]] == Image Views diff --git a/chapters/synchronization.txt b/chapters/synchronization.txt index d558b54a..4f4c9b64 100644 --- a/chapters/synchronization.txt +++ b/chapters/synchronization.txt @@ -539,8 +539,9 @@ For the compute pipeline, the following stages occur in this order: ifdef::VK_EXT_conditional_rendering[] The conditional rendering stage is formally part of both the graphics, and -the compute pipeline. The pipeline stage where the predicate read happens -has unspecified order relative to other stages of these pipelines: +the compute pipeline. +The pipeline stage where the predicate read happens has unspecified order +relative to other stages of these pipelines: * ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT endif::VK_EXT_conditional_rendering[] @@ -3426,7 +3427,8 @@ framebuffer-space>> pipeline stages is contains a subset of the bit values in sname:VkSubpassDependency::pname:dstStageMask, and pname:dependencyFlags is equal to sname:VkSubpassDependency::pname:dependencyFlags. - * If fname:vkCmdPipelineBarrier is called within a render pass instance, + * [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-02026]] + If fname:vkCmdPipelineBarrier is called within a render pass instance, for each element of pname:pMemoryBarriers and pname:pImageMemoryBarriers, the render pass must: have been defined with a sname:VkSubpassDependency self-dependency for the current subpass with diff --git a/chapters/textures.txt b/chapters/textures.txt index 195fdc5d..d48ebc61 100644 --- a/chapters/textures.txt +++ b/chapters/textures.txt @@ -727,14 +727,14 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] All texel input instructions apply a _swizzle_ based on: - * the elink:VkComponentSwizzle enums in the pname:components member of the - slink:VkImageViewCreateInfo structure for the image being read if - <> is not - enabled, and - * the elink:VkComponentSwizzle enums in the pname:components member of the - slink:VkSamplerYcbcrConversionCreateInfo structure for the - <> if sampler - Y'C~B~C~R~ conversion is enabled. + * the elink:VkComponentSwizzle enums in the pname:components member of the + slink:VkImageViewCreateInfo structure for the image being read if + <> is not + enabled, and + * the elink:VkComponentSwizzle enums in the pname:components member of the + slink:VkSamplerYcbcrConversionCreateInfo structure for the + <> if sampler + Y'C~B~C~R~ conversion is enabled. endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] @@ -1174,30 +1174,30 @@ described in the "`Introduction to Color Conversions`" chapter of the <> may be performed as follows: - * Calculate the <> corresponding to the desired sample position. - * For a pname:minFilter/pname:magFilter of ename:VK_FILTER_NEAREST: - . Calculate (_i_,_j_) for the sample location as described under the - "`nearest filtering`" formulae in <> - . Calculate the normalized texel coordinates corresponding to these - integer coordinates. - . Sample using <> at this location. - * For a pname:minFilter/pname:magFilter of ename:VK_FILTER_LINEAR: - . Calculate (_i~[0,1]~_,_j~[0,1]~_) for the sample location as described - under the "`linear filtering`" formulae in - <> - . Calculate the normalized texel coordinates corresponding to these - integer coordinates. - . Sample using <> at each of these locations. - . Convert the non-linear AR'G'B' outputs of the Y'C~B~C~R~ conversions to - linear ARGB values as described in the "`Transfer Functions`" chapter - of the <>. - . Interpolate the linear ARGB values using the [eq]#{alpha}# and - [eq]#{beta}# values described in the "`linear filtering`" section of - <> and the equations in - <>. + * Calculate the <> corresponding to the desired sample position. + * For a pname:minFilter/pname:magFilter of ename:VK_FILTER_NEAREST: + . Calculate (_i_,_j_) for the sample location as described under the + "`nearest filtering`" formulae in <> + . Calculate the normalized texel coordinates corresponding to these + integer coordinates. + . Sample using <> at this location. + * For a pname:minFilter/pname:magFilter of ename:VK_FILTER_LINEAR: + . Calculate (_i~[0,1]~_,_j~[0,1]~_) for the sample location as described + under the "`linear filtering`" formulae in + <> + . Calculate the normalized texel coordinates corresponding to these + integer coordinates. + . Sample using <> at each of these locations. + . Convert the non-linear AR'G'B' outputs of the Y'C~B~C~R~ conversions + to linear ARGB values as described in the "`Transfer Functions`" + chapter of the <>. + . Interpolate the linear ARGB values using the [eq]#{alpha}# and + [eq]#{beta}# values described in the "`linear filtering`" section of + <> and the equations in + <>. The additional calculations and, especially, additional number of sampling operations in the ename:VK_FILTER_LINEAR case can be expected to have a diff --git a/chapters/vertexpostproc.txt b/chapters/vertexpostproc.txt index 53cbf54f..3cee18fc 100644 --- a/chapters/vertexpostproc.txt +++ b/chapters/vertexpostproc.txt @@ -301,12 +301,12 @@ or the equivalent include::../api/enums/VkPointClippingBehaviorKHR.txt[] endif::VK_KHR_maintenance2[] - * ename:VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES specifies that the - primitive is discarded if the vertex lies outside any clip plane, - including the planes bounding the view volume. - * ename:VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY specifies that the - primitive is discarded only if the vertex lies outside any user clip - plane. + * ename:VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES specifies that the + primitive is discarded if the vertex lies outside any clip plane, + including the planes bounding the view volume. + * ename:VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY specifies that + the primitive is discarded only if the vertex lies outside any user clip + plane. -- diff --git a/config/makeSubmit.py b/config/makeSubmit.py index b232b07b..88ecc771 100755 --- a/config/makeSubmit.py +++ b/config/makeSubmit.py @@ -29,6 +29,9 @@ subprocess.check_call(['make', 'config/extDependency.py']) from extDependency import * +def enQuote(str): + return '"' + str + '"' + # Make a single submission target. Several are needed per document. # # outDir - where to generate intermediate and final documents @@ -43,7 +46,7 @@ def makeTarget(outDir, extensionList, submitName, title, target): 'APITITLE="' + title + '"', target) # Rename into submission directory outFile = outDir + '/html/' + submitName + '.html' - print('mv', outDir + '/html/vkspec.html', outFile) + print('mv', outDir + '/html/vkspec.html', enQuote(outFile)) # No longer needed # print('mv -n', outDir + '/katex', 'out/submit/') @@ -81,9 +84,10 @@ def makeSubmit(submitName, required, target='html'): print('') print('cd scripts') print('./htmldiff', - '../' + baseSpec, - '../' + newSpec, - '> ../submit/html/diff-' + submitName + '.html') + enQuote('../' + baseSpec), + enQuote('../' + newSpec), + '>', + enQuote('../submit/html/diff-' + submitName + '.html')) print('cd ..') if __name__ == '__main__': diff --git a/images/sample_count_1.svg b/images/sample_count_1.svg new file mode 100644 index 00000000..bfae69cf --- /dev/null +++ b/images/sample_count_1.svg @@ -0,0 +1,24 @@ + + + + VK_SAMPLE_COUNT_1_BIT + + + + + + + + + + + + + + + + + + 0 + + diff --git a/images/sample_count_16.svg b/images/sample_count_16.svg new file mode 100644 index 00000000..ce38c9b3 --- /dev/null +++ b/images/sample_count_16.svg @@ -0,0 +1,69 @@ + + + + VK_SAMPLE_COUNT_16_BIT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + + diff --git a/images/sample_count_2.svg b/images/sample_count_2.svg new file mode 100644 index 00000000..91fd4d99 --- /dev/null +++ b/images/sample_count_2.svg @@ -0,0 +1,27 @@ + + + + VK_SAMPLE_COUNT_2_BIT + + + + + + + + + + + + + + + + + + + + 0 + 1 + + diff --git a/images/sample_count_4.svg b/images/sample_count_4.svg new file mode 100644 index 00000000..f4bcc7e5 --- /dev/null +++ b/images/sample_count_4.svg @@ -0,0 +1,33 @@ + + + + VK_SAMPLE_COUNT_4_BIT + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 2 + 3 + + diff --git a/images/sample_count_8.svg b/images/sample_count_8.svg new file mode 100644 index 00000000..0a863718 --- /dev/null +++ b/images/sample_count_8.svg @@ -0,0 +1,45 @@ + + + + VK_SAMPLE_COUNT_8_BIT + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + + diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h index 5fcf5cae..8891ca46 100644 --- a/include/vulkan/vulkan_core.h +++ b/include/vulkan/vulkan_core.h @@ -43,7 +43,7 @@ extern "C" { #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 82 +#define VK_HEADER_VERSION 83 #define VK_NULL_HANDLE 0 diff --git a/reflow_count.py b/reflow_count.py index 5720703c..b2f701ab 100644 --- a/reflow_count.py +++ b/reflow_count.py @@ -1,2 +1,2 @@ # The value to start tagging VU statements at, unless overridden by -nextvu -startVUID = 2026 +startVUID = 2027 diff --git a/style/markup.txt b/style/markup.txt index 9357e580..cc1b0347 100644 --- a/style/markup.txt +++ b/style/markup.txt @@ -348,13 +348,15 @@ and is added to the list of figures: .Example Markup ---- [[fig-anchorname]] +[%inline] image::images/imagename.svg[align="center",title="Figure caption",{fullimagewidth}] ---- -There must be both .svg and .pdf versions of each figure checked into the -+images/+ directory, to support generating both HTML and PDF outputs. -It is best to create images in Inkscape as SVG files and then use the -conversion rule in `images/Makefile` to generate PDF. +There must be SVG versions of each figure checked into the `images/` +directory, to support generating both HTML and PDF outputs. +The PDF generation pipeline is now able to use SVG images, so PDF versions +of each image are no longer required. +The `[%inline]` directive decreases output image size in the generated HTML. Asciidoc restricts captions in figures to be a single line in the source document. diff --git a/style/naming.txt b/style/naming.txt index 440dc5d5..9f9c177a 100644 --- a/style/naming.txt +++ b/style/naming.txt @@ -60,23 +60,23 @@ This rule applies to most declarations with the C Preprocessor's `#define` token, including macros and constants. There are however a few exceptions: - * The header guard for each header includes an additional underscore `_` at - the end of the identifier. - ** Example: `VULKAN_H_` - * Definitions that denote the presence of an extension follow the - <>. - ** Example: `VK_KHR_sampler_mirror_clamp_to_edge` - * Three `VKAPI_*` definitions are defined by the platform header to alias - certain platform-specific identifiers related to calling conventions. - ** Examples: `VKAPI_ATTR`, `VKAPI_CALL` and `VKAPI_PTR` - * Preprocessor defines are occasionally used to create aliases between - other Vulkan identifiers, which usually happens when something was - originally misnamed. - In these cases, the fixed name is added to the API, and the old name is - made into an alias of that. - In these cases, the name will be whatever the original misnamed - identifier was. + * The header guard for each header includes an additional underscore `_` + at the end of the identifier. + ** Example: `VULKAN_H_` + * Definitions that denote the presence of an extension follow the + <>. + ** Example: `VK_KHR_sampler_mirror_clamp_to_edge` + * Three `VKAPI_*` definitions are defined by the platform header to alias + certain platform-specific identifiers related to calling conventions. + ** Examples: `VKAPI_ATTR`, `VKAPI_CALL` and `VKAPI_PTR` + * Preprocessor defines are occasionally used to create aliases between + other Vulkan identifiers, which usually happens when something was + originally misnamed. + In these cases, the fixed name is added to the API, and the old name is + made into an alias of that. + In these cases, the name will be whatever the original misnamed + identifier was. [source, c] .Example @@ -183,10 +183,10 @@ converted to the correct case (e.g. `VkStructureType` -> This rule applies to all enumerants, with one exception. - * The `VkResult` enumerants are split into two sub types: error and success - codes. - ** Success codes are not prefixed with anything other than `VK_`. - ** Error codes are prefixed with `VK_ERROR_`. + * The `VkResult` enumerants are split into two sub types: error and + success codes. + ** Success codes are not prefixed with anything other than `VK_`. + ** Error codes are prefixed with `VK_ERROR_`. [source, c] .Example @@ -400,10 +400,10 @@ as the length in the base structure. These rules apply to all function parameters and struct/union members, with a single exception: - * The `sType` member of structures is abbreviated as it is used in almost - every structure. - ** The slightly odd naming prevents it clashing with any future variables. - ** The `s` stands for "`structure`", referring to its enumerant type. + * The `sType` member of structures is abbreviated as it is used in almost + every structure. + ** The slightly odd naming prevents it clashing with any future variables. + ** The `s` stands for "`structure`", referring to its enumerant type. [source, c] .Example diff --git a/styleguide.txt b/styleguide.txt index 017ed610..2d9a3af0 100644 --- a/styleguide.txt +++ b/styleguide.txt @@ -150,6 +150,8 @@ include::style/vuid.txt[] = Revision History +* 2018-08-13 - Add %inline directive to the <> section (public pull request 734). * 2018-07-08 - Remove requirement to explicitly include extension appendices in the <> section. diff --git a/xml/extensionmetadocgenerator.py b/xml/extensionmetadocgenerator.py index 34550c91..ffdb5536 100644 --- a/xml/extensionmetadocgenerator.py +++ b/xml/extensionmetadocgenerator.py @@ -497,7 +497,7 @@ class ExtensionMetaDocOutputGenerator(OutputGenerator): for enum in elem.findall('./require/enum'): enumName = self.getAttrib(enum, 'name') if enumName.find('SPEC_VERSION') != -1: - self.logMsg('warn', 'Missing ' + versioningEnumName + '! Potential misnamed candidate ' + enumName + '.') + self.logMsg('diag', 'Missing ' + versioningEnumName + '! Potential misnamed candidate ' + enumName + '.') return self.getAttrib(enum, 'value') self.logMsg('error', 'Missing ' + versioningEnumName + '!') diff --git a/xml/vk.xml b/xml/vk.xml index 6a0e0d83..82f1d0fc 100644 --- a/xml/vk.xml +++ b/xml/vk.xml @@ -147,7 +147,7 @@ server. // Vulkan 1.1 version number #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 82 +#define VK_HEADER_VERSION 83 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -7276,6 +7276,7 @@ server. + @@ -8702,6 +8703,8 @@ server. + + @@ -8714,6 +8717,17 @@ server. + + + + + + + + + + + @@ -8963,6 +8977,10 @@ server. + + + +