From 8d6a7b23a7decb5161e0e4a3297c4665f9061b0e Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Sun, 21 Oct 2018 06:08:41 -0700 Subject: [PATCH] Change log for October 21, 2018 Vulkan 1.1.89 spec update: * Update release number to 89. Public Issues: * Clarify the reference to <> in the <> section (public issue 660). * Update <> table with missing types (public pull request 820). * Miscellaneous minor markup cleanup (public pull request 822). * Fix copy/paste bugs in the description of how implicit availability/visibility operations for atomics/barriers are ordered in the <> section (public issue 823). * Add missing shading_rate_image bit from mesh pipeline list in the <> list (public issue 824). Internal Issues: * Clarify that only statically used members of a push constant block need to be in the push constant range, and stop referring to block members as "`variables`" in the <> section. This is related to https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/340 (internal issue 1401). * Clarify interaction between flink:vkCmdSetDeviceMask and render pass control commands in the slink:VkDeviceGroupRenderPassBeginInfo section (internal issue 1416). * Miscellaneous minor markup cleanup. * Remove types defined by `"disabled"` extensions from validextensionstructs in the XML processing scripts, so downstream code generators don't emit them. --- ChangeLog.txt | 37 +++++++++++++++++++++ Makefile | 2 +- appendices/VK_EXT_transform_feedback.txt | 2 +- appendices/VK_NV_shader_image_footprint.txt | 4 +-- appendices/memorymodel.txt | 9 ++--- chapters/cmdbuffers.txt | 8 ++++- chapters/drawing.txt | 5 ++- chapters/features.txt | 9 ----- chapters/interfaces.txt | 16 ++++----- chapters/renderpass.txt | 8 +++-- chapters/synchronization.txt | 3 ++ chapters/textures.txt | 5 +-- include/vulkan/vulkan_core.h | 2 +- vkspec.txt | 6 +++- xml/reg.py | 15 ++++++--- xml/vk.xml | 22 ++++++++++-- 16 files changed, 110 insertions(+), 43 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 3582eb29..6d9d966b 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -8,6 +8,43 @@ public pull requests that have been accepted. ----------------------------------------------------- +Change log for October 21, 2018 Vulkan 1.1.89 spec update: + + * Update release number to 89. + +Public Issues: + + * Clarify the reference to <> in the <> section (public issue 660). + * Update <> table with missing types (public pull request 820). + * Miscellaneous minor markup cleanup (public pull request 822). + * Fix copy/paste bugs in the description of how implicit + availability/visibility operations for atomics/barriers are ordered in + the <> section (public issue 823). + * Add missing shading_rate_image bit from mesh pipeline list in the + <> list (public issue 824). + +Internal Issues: + + * Clarify that only statically used members of a push constant block need + to be in the push constant range, and stop referring to block members as + "`variables`" in the <> section. This is related to + https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/340 + (internal issue 1401). + * Clarify interaction between flink:vkCmdSetDeviceMask and render pass + control commands in the slink:VkDeviceGroupRenderPassBeginInfo section + (internal issue 1416). + * Miscellaneous minor markup cleanup. + * Remove types defined by `"disabled"` extensions from + validextensionstructs in the XML processing scripts, so downstream code + generators don't emit them. + +----------------------------------------------------- + Change log for October 13, 2018 Vulkan 1.1.88 spec update: * Update release number to 88. diff --git a/Makefile b/Makefile index 25d5a124..d5eeacc6 100644 --- a/Makefile +++ b/Makefile @@ -112,7 +112,7 @@ VERBOSE = # EXTRAATTRIBS sets additional attributes, if passed to make # ADOCOPTS options for asciidoc->HTML5 output NOTEOPTS = -a editing-notes -a implementation-guide -PATCHVERSION = 88 +PATCHVERSION = 89 ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS))) SPECREVISION = 1.1.$(PATCHVERSION) else diff --git a/appendices/VK_EXT_transform_feedback.txt b/appendices/VK_EXT_transform_feedback.txt index af77728f..38ea04dc 100644 --- a/appendices/VK_EXT_transform_feedback.txt +++ b/appendices/VK_EXT_transform_feedback.txt @@ -128,7 +128,7 @@ multiview enabled. *RESOLVED*: There is a new query type ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT. - query pool created with this type will capture 2 integers - +A query pool created with this type will capture 2 integers - numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex stream output from the last vertex processing stage. The vertex stream output queried is zero by default, but can be specified diff --git a/appendices/VK_NV_shader_image_footprint.txt b/appendices/VK_NV_shader_image_footprint.txt index da809e19..51f3fac9 100644 --- a/appendices/VK_NV_shader_image_footprint.txt +++ b/appendices/VK_NV_shader_image_footprint.txt @@ -124,8 +124,8 @@ aligned regions and may require updates to four separate footprint image texels. In this case, the implementation will return an anchor coordinate pointing at the lower right footprint image texel and an offset will identify how -many "`columns`" and "`rows`" of the returned 8x8 mask correspond to footprint -texels to the left and above the anchor texel. +many "`columns`" and "`rows`" of the returned 8x8 mask correspond to +footprint texels to the left and above the anchor texel. If the anchor is (2,3), the 64 bits of the returned mask are arranged spatially as follows, where each 4x4 block is assigned a bit number that matches its bit number in the footprint image texels: diff --git a/appendices/memorymodel.txt b/appendices/memorymodel.txt index 41773fd0..55fe7c2f 100644 --- a/appendices/memorymodel.txt +++ b/appendices/memorymodel.txt @@ -464,8 +464,8 @@ visibility>> operations may: be required for writes to be NOTE: Happens-before is not transitive, but each of program-order and inter-thread-happens-before are transitive. These can be thought of as covering the "`single-threaded`" case and the -"`multi-threaded`" case, and it's not necessary (and not valid) to form chains -between the two. +"`multi-threaded`" case, and it's not necessary (and not valid) to form +chains between the two. [[memory-model-availability-visibility]] == Availability and Visibility @@ -596,7 +596,8 @@ includes agent A and all references in the storage classes in that instruction's storage class semantics, and all memory locations, and whose destination scope is a set of memory domains selected as specified below. The implicit availability operation is program-ordered between the barrier -or atomic and all other operations program-ordered before the write. +or atomic and all other operations program-ordered before the barrier or +atomic. A memory barrier or atomic operation via agent A that includes MakeVisible in its semantics performs a visibility operation whose source scope is a set @@ -604,7 +605,7 @@ of memory domains selected as specified below, and whose destination scope includes agent A and all references in the storage classes in that instruction's storage class semantics, and all memory locations. The implicit visibility operation is program-ordered between the barrier or -atomic and all other operations program-ordered after the write. +atomic and all other operations program-ordered after the barrier or atomic. The memory domains are selected based on the memory scope of the instruction as follows: diff --git a/chapters/cmdbuffers.txt b/chapters/cmdbuffers.txt index cadf2151..07f12a52 100644 --- a/chapters/cmdbuffers.txt +++ b/chapters/cmdbuffers.txt @@ -1578,7 +1578,13 @@ endif::VK_KHR_device_group[] * pname:deviceMask is the new value of the current device mask. pname:deviceMask is used to filter out subsequent commands from executing on -all physical devices whose bit indices are not set in the mask. +all physical devices whose bit indices are not set in the mask, except +commands beginning a render pass instance, commands transitioning to the +next subpass in the render pass instance, and commands ending a render pass +instance, which always execute on the set of physical devices whose bit +indices are included in the pname:deviceMask member of the instance of the +slink:VkDeviceGroupRenderPassBeginInfoKHR structure passed to the command +beginning the corresponding render pass instance. .Valid Usage **** diff --git a/chapters/drawing.txt b/chapters/drawing.txt index 141274ea..a2e5596e 100644 --- a/chapters/drawing.txt +++ b/chapters/drawing.txt @@ -127,9 +127,8 @@ lines are the adjacent vertices that are accessible in a geometry shader. [NOTE] .Note ==== -The terminology "`vertex [eq]#i#`" means "`the vertex with -index [eq]#i# in the ordered list of vertices defining this -primitive`". +The terminology "`vertex [eq]#i#`" means "`the vertex with index [eq]#i# in +the ordered list of vertices defining this primitive`". ==== [NOTE] diff --git a/chapters/features.txt b/chapters/features.txt index 447cf3f2..62a53794 100644 --- a/chapters/features.txt +++ b/chapters/features.txt @@ -2299,15 +2299,6 @@ endif::VK_EXT_descriptor_indexing[] get snapped to when determining the contribution from each mip level to the mip filtered results. [eq]#2^pname:mipmapPrecisionBits^# is the actual number of divisions. -+ -[NOTE] -.Note -==== -For example, if this value is 2 bits then when linearly filtering between -two levels, each level could: contribute: 0%, 33%, 66%, or 100% (this is -just an example and the amount of contribution should: be covered by -different equations in the spec). -==== * [[features-limits-maxDrawIndexedIndexValue]] pname:maxDrawIndexedIndexValue is the maximum index value that can: be used for indexed draw calls when using 32-bit indices. diff --git a/chapters/interfaces.txt b/chapters/interfaces.txt index 55729ae7..a04c5b68 100755 --- a/chapters/interfaces.txt +++ b/chapters/interfaces.txt @@ -103,10 +103,10 @@ the subsequent stage if the two variables are declared with the same code:Location and code:Component decoration and match in type and decoration, except that <> are not required: to match. -ifdef::VK_EXT_transform_feedback +ifdef::VK_EXT_transform_feedback[] code:XfbBuffer, code:XfbStride, code:Offset, and code:Stream are also not required to match for the purposes of interface matching. -endif::VK_EXT_transform_feedback +endif::VK_EXT_transform_feedback[] For the purposes of interface matching, variables declared without a code:Component decoration are considered to have a code:Component decoration of zero. @@ -484,17 +484,17 @@ They must: be: There must: be no more than one push constant block statically used per shader entry point. -Each variable in a push constant block must: be placed at an code:Offset -such that the entire constant value is entirely contained within the +Each statically used member of a push constant block must: be placed at an +code:Offset such that the entire member is entirely contained within the slink:VkPushConstantRange for each code:OpEntryPoint that uses it, and the pname:stageFlags for that range must: specify the appropriate elink:VkShaderStageFlagBits for that stage. -The code:Offset decoration for any variable in a push constant block must: -not cause the space required for that variable to extend outside the range +The code:Offset decoration for any member of a push constant block must: not +cause the space required for that member to extend outside the range [eq]#[0, pname:maxPushConstantsSize)#. -Any variable in a push constant block that is declared as an array must: -only be accessed with _dynamically uniform_ indices. +Any member of a push constant block that is declared as an array must: only +be accessed with _dynamically uniform_ indices. [[interfaces-resources-descset]] diff --git a/chapters/renderpass.txt b/chapters/renderpass.txt index 59626e9d..e4a6eb6f 100644 --- a/chapters/renderpass.txt +++ b/chapters/renderpass.txt @@ -2670,9 +2670,11 @@ The pname:deviceMask serves several purposes. It is an upper bound on the set of physical devices that can: be used during the render pass instance, and the initial device mask when the render pass instance begins. -Render pass attachment load, store, and resolve operations only apply to -physical devices included in the device mask. -Subpass dependencies only apply to the physical devices in the device mask. +In addition, commands transitioning to the next subpass in the render pass +instance and commands ending the render pass instance, and, accordingly +render pass attachment load, store, and resolve operations and subpass +dependencies corresponding to the render pass instance, are executed on the +physical devices included in the device mask provided here. If pname:deviceRenderAreaCount is not zero, then the elements of pname:pDeviceRenderAreas override the value of diff --git a/chapters/synchronization.txt b/chapters/synchronization.txt index 62d5ee98..80564652 100644 --- a/chapters/synchronization.txt +++ b/chapters/synchronization.txt @@ -608,6 +608,9 @@ order: * ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT * ename:VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV * ename:VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV +ifdef::VK_NV_shading_rate_image[] + * ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV +endif::VK_NV_shading_rate_image[] * ename:VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT * ename:VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT * ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT diff --git a/chapters/textures.txt b/chapters/textures.txt index 5ff5ec5b..33eded68 100644 --- a/chapters/textures.txt +++ b/chapters/textures.txt @@ -1934,8 +1934,9 @@ d_{lo} & = min( d_{hi} + 1, q ) \\ \end{aligned} ++++++++++++++++++++++++ -[eq]#{delta}# is the fractional value used for <> between levels. +[eq]#{delta}# is the fractional value, quantized to the number of +<>, used for +<> between levels. [[textures-normalized-to-unnormalized]] diff --git a/include/vulkan/vulkan_core.h b/include/vulkan/vulkan_core.h index a7780a0f..f7d69ade 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 88 +#define VK_HEADER_VERSION 89 #define VK_NULL_HANDLE 0 diff --git a/vkspec.txt b/vkspec.txt index ed9ff9ce..bf0b0688 100644 --- a/vkspec.txt +++ b/vkspec.txt @@ -2,8 +2,12 @@ // Creative Commons Attribution 4.0 International License; see // http://creativecommons.org/licenses/by/4.0/ +// The mysterious :regtitle: attribute is explained in +// http://discuss.asciidoctor.org/How-to-add-markup-to-author-information-in-document-title-td6488.html + = Vulkan^®^ {revnumber} - A Specification {apititle} -The Khronos^®^ Vulkan Working Group +:regtitle: pass:q,r[^®^] +The Khronos{regtitle} Vulkan Working Group :data-uri: :icons: font :toc2: diff --git a/xml/reg.py b/xml/reg.py index c9f92db3..5d25bcae 100755 --- a/xml/reg.py +++ b/xml/reg.py @@ -502,12 +502,17 @@ class Registry: # Construct a "validextensionstructs" list for parent structures # based on "structextends" tags in child structures + disabled_types = [] + for disabled_ext in self.reg.findall('extensions/extension[@supported="disabled"]'): + for type in disabled_ext.findall("*/type"): + disabled_types.append(type.get('name')) for type in self.reg.findall('types/type'): - parentStructs = type.get('structextends') - if (parentStructs != None): - for parent in parentStructs.split(','): - # self.gen.logMsg('diag', type.get('name'), 'extends', parent) - self.validextensionstructs[parent].append(type.get('name')) + if type.get('name') not in disabled_types: + parentStructs = type.get('structextends') + if (parentStructs != None): + for parent in parentStructs.split(','): + # self.gen.logMsg('diag', type.get('name'), 'extends', parent) + self.validextensionstructs[parent].append(type.get('name')) # Sort the lists so they don't depend on the XML order for parent in self.validextensionstructs: self.validextensionstructs[parent].sort() diff --git a/xml/vk.xml b/xml/vk.xml index 5158f534..4f31e0be 100644 --- a/xml/vk.xml +++ b/xml/vk.xml @@ -150,7 +150,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 88 +#define VK_HEADER_VERSION 89 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -6931,7 +6931,7 @@ server. const VkAllocationCallbacks* pAllocator VkPipeline* pPipelines - + VkResult vkGetImageDrmFormatModifierPropertiesEXT VkDevice device VkImage image @@ -10076,5 +10076,23 @@ server. + + + + + + + + + + + + + + + + + +