Change log for October 21, 2018 Vulkan 1.1.89 spec update:

* Update release number to 89.

Public Issues:

  * Clarify the reference to <<features-limits-mipmapPrecisionBits, mipmap
    precision bits>> in the <<textures-image-level-selection, Image Level(s)
    Selection>> section (public issue 660).
  * Update <<debugging-object-types,VkObjectType and Vulkan Handle
    Relationship>> 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 <<memory-model-availability-visibility-semantics, Availability and
    Visibility Semantics>> section (public issue 823).
  * Add missing shading_rate_image bit from mesh pipeline list in the
    <<synchronization-pipeline-stages-types>> 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 <<interfaces-resources-pushconst, Push Constant
    Interface>> 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.
This commit is contained in:
Jon Leech 2018-10-21 06:08:41 -07:00
parent 93d65eb125
commit 8d6a7b23a7
16 changed files with 110 additions and 43 deletions

View File

@ -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 <<features-limits-mipmapPrecisionBits, mipmap
precision bits>> in the <<textures-image-level-selection, Image Level(s)
Selection>> section (public issue 660).
* Update <<debugging-object-types,VkObjectType and Vulkan Handle
Relationship>> 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 <<memory-model-availability-visibility-semantics, Availability and
Visibility Semantics>> section (public issue 823).
* Add missing shading_rate_image bit from mesh pipeline list in the
<<synchronization-pipeline-stages-types>> 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 <<interfaces-resources-pushconst, Push Constant
Interface>> 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: Change log for October 13, 2018 Vulkan 1.1.88 spec update:
* Update release number to 88. * Update release number to 88.

View File

@ -112,7 +112,7 @@ VERBOSE =
# EXTRAATTRIBS sets additional attributes, if passed to make # EXTRAATTRIBS sets additional attributes, if passed to make
# ADOCOPTS options for asciidoc->HTML5 output # ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 88 PATCHVERSION = 89
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS))) ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION) SPECREVISION = 1.1.$(PATCHVERSION)
else else

View File

@ -128,7 +128,7 @@ multiview enabled.
*RESOLVED*: There is a new query type *RESOLVED*: There is a new query type
ename:VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT. 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 numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
stream output from the last vertex processing stage. stream output from the last vertex processing stage.
The vertex stream output queried is zero by default, but can be specified The vertex stream output queried is zero by default, but can be specified

View File

@ -124,8 +124,8 @@ aligned regions and may require updates to four separate footprint image
texels. texels.
In this case, the implementation will return an anchor coordinate pointing In this case, the implementation will return an anchor coordinate pointing
at the lower right footprint image texel and an offset will identify how 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 many "`columns`" and "`rows`" of the returned 8x8 mask correspond to
texels to the left and above the anchor texel. 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 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 spatially as follows, where each 4x4 block is assigned a bit number that
matches its bit number in the footprint image texels: matches its bit number in the footprint image texels:

View File

@ -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 NOTE: Happens-before is not transitive, but each of program-order and
inter-thread-happens-before<SC> are transitive. inter-thread-happens-before<SC> are transitive.
These can be thought of as covering the "`single-threaded`" case and the 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 "`multi-threaded`" case, and it's not necessary (and not valid) to form
between the two. chains between the two.
[[memory-model-availability-visibility]] [[memory-model-availability-visibility]]
== Availability and 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 instruction's storage class semantics, and all memory locations, and whose
destination scope is a set of memory domains selected as specified below. destination scope is a set of memory domains selected as specified below.
The implicit availability operation is program-ordered between the barrier 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 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 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 includes agent A and all references in the storage classes in that
instruction's storage class semantics, and all memory locations. instruction's storage class semantics, and all memory locations.
The implicit visibility operation is program-ordered between the barrier or 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 The memory domains are selected based on the memory scope of the instruction
as follows: as follows:

View File

@ -1578,7 +1578,13 @@ endif::VK_KHR_device_group[]
* pname:deviceMask is the new value of the current device mask. * pname:deviceMask is the new value of the current device mask.
pname:deviceMask is used to filter out subsequent commands from executing on 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 .Valid Usage
**** ****

View File

@ -127,9 +127,8 @@ lines are the adjacent vertices that are accessible in a geometry shader.
[NOTE] [NOTE]
.Note .Note
==== ====
The terminology "`vertex [eq]#i#`" means "`the vertex with The terminology "`vertex [eq]#i#`" means "`the vertex with index [eq]#i# in
index [eq]#i# in the ordered list of vertices defining this the ordered list of vertices defining this primitive`".
primitive`".
==== ====
[NOTE] [NOTE]

View File

@ -2299,15 +2299,6 @@ endif::VK_EXT_descriptor_indexing[]
get snapped to when determining the contribution from each mip level to get snapped to when determining the contribution from each mip level to
the mip filtered results. the mip filtered results.
[eq]#2^pname:mipmapPrecisionBits^# is the actual number of divisions. [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]] * [[features-limits-maxDrawIndexedIndexValue]]
pname:maxDrawIndexedIndexValue is the maximum index value that can: be pname:maxDrawIndexedIndexValue is the maximum index value that can: be
used for indexed draw calls when using 32-bit indices. used for indexed draw calls when using 32-bit indices.

View File

@ -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 code:Location and code:Component decoration and match in type and
decoration, except that <<shaders-interpolation-decorations,interpolation decoration, except that <<shaders-interpolation-decorations,interpolation
decorations>> are not required: to match. decorations>> 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 code:XfbBuffer, code:XfbStride, code:Offset, and code:Stream are also not
required to match for the purposes of interface matching. 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 For the purposes of interface matching, variables declared without a
code:Component decoration are considered to have a code:Component decoration code:Component decoration are considered to have a code:Component decoration
of zero. of zero.
@ -484,17 +484,17 @@ They must: be:
There must: be no more than one push constant block statically used per There must: be no more than one push constant block statically used per
shader entry point. shader entry point.
Each variable in a push constant block must: be placed at an code:Offset Each statically used member of a push constant block must: be placed at an
such that the entire constant value is entirely contained within the code:Offset such that the entire member is entirely contained within the
slink:VkPushConstantRange for each code:OpEntryPoint that uses it, and the slink:VkPushConstantRange for each code:OpEntryPoint that uses it, and the
pname:stageFlags for that range must: specify the appropriate pname:stageFlags for that range must: specify the appropriate
elink:VkShaderStageFlagBits for that stage. elink:VkShaderStageFlagBits for that stage.
The code:Offset decoration for any variable in a push constant block must: The code:Offset decoration for any member of a push constant block must: not
not cause the space required for that variable to extend outside the range cause the space required for that member to extend outside the range
[eq]#[0, pname:maxPushConstantsSize)#. [eq]#[0, pname:maxPushConstantsSize)#.
Any variable in a push constant block that is declared as an array must: Any member of a push constant block that is declared as an array must: only
only be accessed with _dynamically uniform_ indices. be accessed with _dynamically uniform_ indices.
[[interfaces-resources-descset]] [[interfaces-resources-descset]]

View File

@ -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 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 the render pass instance, and the initial device mask when the render pass
instance begins. instance begins.
Render pass attachment load, store, and resolve operations only apply to In addition, commands transitioning to the next subpass in the render pass
physical devices included in the device mask. instance and commands ending the render pass instance, and, accordingly
Subpass dependencies only apply to the physical devices in the device mask. 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 If pname:deviceRenderAreaCount is not zero, then the elements of
pname:pDeviceRenderAreas override the value of pname:pDeviceRenderAreas override the value of

View File

@ -608,6 +608,9 @@ order:
* ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT * ename:VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
* ename:VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV * ename:VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
* ename:VK_PIPELINE_STAGE_MESH_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_EARLY_FRAGMENT_TESTS_BIT
* ename:VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT * ename:VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
* ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT * ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT

View File

@ -1934,8 +1934,9 @@ d_{lo} & = min( d_{hi} + 1, q ) \\
\end{aligned} \end{aligned}
++++++++++++++++++++++++ ++++++++++++++++++++++++
[eq]#{delta}# is the fractional value used for <<textures-texel-filtering, [eq]#{delta}# is the fractional value, quantized to the number of
linear filtering>> between levels. <<features-limits-mipmapPrecisionBits,mipmap precision bits>>, used for
<<textures-texel-filtering, linear filtering>> between levels.
[[textures-normalized-to-unnormalized]] [[textures-normalized-to-unnormalized]]

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file // Version of this file
#define VK_HEADER_VERSION 88 #define VK_HEADER_VERSION 89
#define VK_NULL_HANDLE 0 #define VK_NULL_HANDLE 0

View File

@ -2,8 +2,12 @@
// Creative Commons Attribution 4.0 International License; see // Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/ // 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} = Vulkan^®^ {revnumber} - A Specification {apititle}
The Khronos^®^ Vulkan Working Group :regtitle: pass:q,r[^®^]
The Khronos{regtitle} Vulkan Working Group
:data-uri: :data-uri:
:icons: font :icons: font
:toc2: :toc2:

View File

@ -502,12 +502,17 @@ class Registry:
# Construct a "validextensionstructs" list for parent structures # Construct a "validextensionstructs" list for parent structures
# based on "structextends" tags in child 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'): for type in self.reg.findall('types/type'):
parentStructs = type.get('structextends') if type.get('name') not in disabled_types:
if (parentStructs != None): parentStructs = type.get('structextends')
for parent in parentStructs.split(','): if (parentStructs != None):
# self.gen.logMsg('diag', type.get('name'), 'extends', parent) for parent in parentStructs.split(','):
self.validextensionstructs[parent].append(type.get('name')) # 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 # Sort the lists so they don't depend on the XML order
for parent in self.validextensionstructs: for parent in self.validextensionstructs:
self.validextensionstructs[parent].sort() self.validextensionstructs[parent].sort()

View File

@ -150,7 +150,7 @@ server.
<type category="define">// Vulkan 1.1 version number <type category="define">// Vulkan 1.1 version number
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type> #define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file <type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 88</type> #define <name>VK_HEADER_VERSION</name> 89</type>
<type category="define"> <type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -6931,7 +6931,7 @@ server.
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param> <param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param> <param len="createInfoCount"><type>VkPipeline</type>* <name>pPipelines</name></param>
</command> </command>
<command> <command successcodes="VK_SUCCESS">
<proto><type>VkResult</type> <name>vkGetImageDrmFormatModifierPropertiesEXT</name></proto> <proto><type>VkResult</type> <name>vkGetImageDrmFormatModifierPropertiesEXT</name></proto>
<param><type>VkDevice</type> <name>device</name></param> <param><type>VkDevice</type> <name>device</name></param>
<param><type>VkImage</type> <name>image</name></param> <param><type>VkImage</type> <name>image</name></param>
@ -10076,5 +10076,23 @@ server.
<enum value="&quot;VK_KHR_extension_240&quot;" name="VK_KHR_EXTENSION_240_EXTENSION_NAME"/> <enum value="&quot;VK_KHR_extension_240&quot;" name="VK_KHR_EXTENSION_240_EXTENSION_NAME"/>
</require> </require>
</extension> </extension>
<extension name="VK_NV_extension_241" number="241" author="NVIDIA" contact="Nuno Subtil @nsubtil" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_241_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_241&quot;" name="VK_NV_EXTENSION_241_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_NV_extension_242" number="242" author="NVIDIA" contact="Nuno Subtil @nsubtil" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_242_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_242&quot;" name="VK_NV_EXTENSION_242_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_INTEL_extension_243" number="243" author="INTEL" contact="Slawek Grajewski @sgrajewski" supported="disabled">
<require>
<enum value="0" name="VK_INTEL_EXTENSION_243_SPEC_VERSION"/>
<enum value="&quot;VK_INTEL_extension_243&quot;" name="VK_INTEL_EXTENSION_243_EXTENSION_NAME"/>
</require>
</extension>
</extensions> </extensions>
</registry> </registry>