Change log for June 10, 2018 Vulkan 1.1.77 spec update:

* Update release number to 77.

Public Issues:

  * Remove redundant asciidoctor ifdef in slink:VkDeviceCreateInfo valid
    usage statement (public pull request 718).

Internal Issues:

  * Require that the returned slink:VkMemoryRequirements::pname:alignment
    reflect the minimum alignment requirements for the buffer's usages, and
    make dynamic offset alignment valid usage more explicit for
    flink:vkBindBufferMemory and flink:vkCmdBindDescriptorSets (internal
    issue 1170).
  * Explicitly state that objects of type code:OpTypeImage,
    code:OpTypeSampler, and code:OpTypeSampledImage must not be stored to in
    the <<spirvenv-module-validation, Validation Rules within a Module>>
    section (internal issue 1262).
  * Clarify rules about validating descriptor set/binding against storage
    class and descriptor type in the <<spirvenv-module-validation,
    Validation Rules within a Module>> section, and add an anchor for and
    references to the <<interfaces-resources-storage-class-correspondence,
    Shader Resource and Storage Class Correspondence>> table (internal issue
    1266).
  * Use correct spelling of SPIR-V decoration code:NonWritable in several
    places (internal issue 1298).

Other Issues:

  * Update specification links to files in the old
    KhronosGroup/Vulkan-LoaderAndValidationLayers repository with
    corresponding links into the new repositories that replace it.
  * Move validity requirement for slink:VkSamplerCreateInfo into the valid
    usage block instead of the body text, and give it a VUID.
  * Use the full name of the "`style guide`" in a reference in the
    description of slink:vkGetPhysicalDeviceProperties, update the
    <<vulkan-styleguide, link to that document>>, and use the the full name
    in the registry index page.
This commit is contained in:
Jon Leech 2018-06-10 19:43:40 -07:00
parent 1329718aba
commit 0d5f92c7fa
19 changed files with 62 additions and 70 deletions

View File

@ -106,7 +106,7 @@ VERBOSE =
# $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 76
PATCHVERSION = 77
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else

View File

@ -72,8 +72,7 @@ The example code for the this extension (like the `<<VK_KHR_surface>>` and
`VK_GOOGLE_display_timing` extensions) is contained in the cube demo that is
shipped with the official Khronos SDK, and is being kept up-to-date in that
location (see:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.c
).
https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c ).
====
=== Version History

View File

@ -237,7 +237,7 @@ extensions was removed from the appendix after revision 1.0.43.
The display enumeration example code was ported to the cube demo that is
shipped with the official Khronos SDK, and is being kept up-to-date in that
location (see:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.c).
https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c).
====
=== Version History

View File

@ -96,7 +96,7 @@ extensions was removed from the appendix after revision 1.0.43.
The display swapchain creation example code was ported to the cube demo that
is shipped with the official Khronos SDK, and is being kept up-to-date in
that location (see:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.c).
https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c).
====
=== Version History

View File

@ -72,7 +72,7 @@ The example code for the `VK_KHR_surface` and `<<VK_KHR_swapchain>>`
extensions was removed from the appendix after revision 1.0.29.
This WSI example code was ported to the cube demo that is shipped with the
official Khronos SDK, and is being kept up-to-date in that location (see:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.c).
https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c).
====
=== Issues

View File

@ -466,7 +466,7 @@ The example code for the `<<VK_KHR_surface>>` and `VK_KHR_swapchain`
extensions was removed from the appendix after revision 1.0.29.
This WSI example code was ported to the cube demo that is shipped with the
official Khronos SDK, and is being kept up-to-date in that location (see:
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/cube.c).
https://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c).
====
=== Version History

11
appendices/spirvenv.txt Normal file → Executable file
View File

@ -387,7 +387,7 @@ endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
entry points must: declare code:OriginUpperLeft.
* The code:PixelCenterInteger execution mode must: not be used.
Pixels are always centered at half-integer coordinates.
* Images
* Images and Samplers
** code:OpTypeImage must: declare a scalar 32-bit float or 32-bit integer
type for the "`Sampled Type`".
(code:RelaxedPrecision can: be applied to a sampling instruction and to
@ -403,7 +403,7 @@ endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
<<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
is not enabled and an code:OpTypeImage has "`Image Format`" operand of
code:Unknown, any variables created with the given type must be
decorated with code:NonWriteable.
decorated with code:NonWritable.
** code:OpImageQuerySizeLod, and code:OpImageQueryLevels must: only
consume an "`Image`" operand whose type has its "`Sampled`" operand set
to 1.
@ -412,6 +412,9 @@ endif::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]
used, must: be a vector that was formed with constant 0 for the [eq]#u#
and [eq]#v# components.
** The "`Depth`" operand of code:OpTypeImage is ignored.
** Objects of types code:OpTypeImage, code:OpTypeSampler,
code:OpTypeSampledImage, and arrays of these types must: not be stored
to or modified.
* Decorations
** The code:GLSLShared and code:GLSLPacked decorations must: not be used.
** The code:Flat, code:NoPerspective, code:Sample, and code:Centroid
@ -441,6 +444,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_16bit_storage[]
https://www.khronos.org/registry/spir-v/extensions/KHR/SPV_KHR_16bit_storage.html[`SPV_KHR_16bit_storage`]
SPIR-V extension.
endif::VK_VERSION_1_1,VK_KHR_16bit_storage[]
** code:DescriptorSet and code:Binding decorations must: obey the
constraints on storage class, type, and descriptor type described in
<<interfaces-resources-setandbinding,DescriptorSet and Binding
Assignment>>
* code:OpTypeRuntimeArray must: only be used for:
** the last member of an code:OpTypeStruct
ifdef::VK_VERSION_1_1,VK_KHR_storage_buffer_storage_class[]

View File

@ -32,8 +32,9 @@ corresponding to different resources or usage.
The following sections describe the API definitions of each descriptor type.
The mapping of each type to SPIR-V is listed in the
<<interfaces-resources-correspondence, Shader Resource and Descriptor Type
Correspondence and Shader Resource and Storage Class Correspondence>> tables
in the <<interfaces, Shader Interfaces>> chapter.
Correspondence>> and <<interfaces-resources-storage-class-correspondence
Shader Resource and Storage Class Correspondence>> tables in the
<<interfaces, Shader Interfaces>> chapter.
[[descriptorsets-storageimage]]
@ -3258,9 +3259,16 @@ descriptor set.
* [[VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361]]
pname:pipelineBindPoint must: be supported by the pname:commandBuffer's
parent sname:VkCommandPool's queue family
* [[VUID-vkCmdBindDescriptorSets-pDynamicOffsets-00362]]
Each element of pname:pDynamicOffsets must: satisfy the required
alignment for the corresponding descriptor binding's descriptor type
* [[VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971]]
Each element of pname:pDynamicOffsets which corresponds to a descriptor
binding with type ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC must:
be a multiple of
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
* [[VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972]]
Each element of pname:pDynamicOffsets which corresponds to a descriptor
binding with type ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC must:
be a multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
****
include::../validity/protos/vkCmdBindDescriptorSets.txt[]

View File

@ -149,9 +149,9 @@ If the vendor has a https://pcisig.com/membership/member-companies[PCI
vendor ID], the low 16 bits of pname:vendorID must: contain that PCI vendor
ID, and the remaining bits must: be set to zero.
Otherwise, the value returned must: be a valid Khronos vendor ID, obtained
as described in the <<vulkan-styleguide,Vulkan Documentation and
Extensions>> document in the section "`Registering a Vendor ID with
Khronos`".
as described in the <<vulkan-styleguide,Vulkan Documentation and Extensions:
Procedures and Conventions>> document in the section "`Registering a Vendor
ID with Khronos`".
Khronos vendor IDs are allocated starting at 0x10000, to distinguish them
from the PCI vendor ID namespace.

View File

@ -53,7 +53,7 @@ This is generally discouraged, as it increases the probability of
incompatibilities with new extensions.
The validation layers wrap handles in order to track the proper use and
destruction of each object.
See the <<LoaderAndValidationLayers, "`Vulkan Loader Specification and
See the <<LoaderAndLayerInterface, "`Vulkan Loader Specification and
Architecture Overview`">> document for additional information.
[open,refpage='vkEnumerateInstanceLayerProperties',desc='Returns up to requested number of global layer properties',type='protos']
@ -220,7 +220,7 @@ extension authors should: add support for their extensions to the Khronos
validation layers.
This is especially important for new commands whose parameters have been
wrapped by the validation layers.
See the <<LoaderAndValidationLayers, "`Vulkan Loader Specification and
See the <<LoaderAndLayerInterface, "`Vulkan Loader Specification and
Architecture Overview`">> document for additional information.
[NOTE]

4
chapters/features.txt Normal file → Executable file
View File

@ -521,7 +521,7 @@ additional supported properties of individual formats.
tessellation, and geometry shader stages.
If this feature is not enabled, all storage image, storage texel
buffers, and storage buffer variables used by these stages in shader
modules must: be decorated with the code:NonWriteable decoration (or the
modules must: be decorated with the code:NonWritable decoration (or the
code:readonly memory qualifier in GLSL).
* [[features-features-fragmentStoresAndAtomics]]
pname:fragmentStoresAndAtomics specifies whether storage buffers and
@ -529,7 +529,7 @@ additional supported properties of individual formats.
stage.
If this feature is not enabled, all storage image, storage texel
buffers, and storage buffer variables used by the fragment stage in
shader modules must: be decorated with the code:NonWriteable decoration
shader modules must: be decorated with the code:NonWritable decoration
(or the code:readonly memory qualifier in GLSL).
* [[features-features-shaderTessellationAndGeometryPointSize]]
pname:shaderTessellationAndGeometryPointSize specifies whether the

View File

@ -337,7 +337,7 @@ determine the version of Vulkan.
Implicit layers must: be disabled if they do not support a version at least
as high as pname:apiVersion.
See the <<LoaderAndValidationLayers, "Vulkan Loader Specification and
See the <<LoaderAndLayerInterface, "Vulkan Loader Specification and
Architecture Overview">> document for additional information.
[NOTE]

View File

@ -564,15 +564,6 @@ Variables identified with a storage class of code:UniformConstant and a
decoration of code:InputAttachmentIndex must: be declared as described in
<<interfaces-inputattachment,Fragment Input Attachment Interface>>.
Each shader variable in the descriptor set interface must: be of a type that
corresponds to the pname:descriptorType in the descriptor set layout binding
that the variable is assigned to, as described in
<<interfaces-resources-setandbinding, DescriptorSet and Binding
Assignment>>.
See <<interfaces-resources-correspondence,Shader Resource and Descriptor
Type Correspondence>> for the relationship between shader types and
descriptor types.
SPIR-V variables decorated with a descriptor set and binding that identify a
<<descriptorsets-combinedimagesampler, combined image sampler descriptor>>
can: have a type of code:OpTypeImage, code:OpTypeSampler (code:Sampled=1),
@ -669,6 +660,7 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
| input attachment | ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
|====
[[interfaces-resources-storage-class-correspondence]]
.Shader Resource and Storage Class Correspondence
[width="100%",cols="<21%,<22%,<27%,<30%",options="header"]
|====
@ -762,6 +754,10 @@ pipeline layout must: contain a descriptor set layout binding in that
descriptor set layout and for that binding number, and that binding's
pname:stageFlags must: include the appropriate elink:VkShaderStageFlagBits
for that stage.
The variable must: be of a valid resource type determined by its SPIR-V type
and storage class, as defined in
<<interfaces-resources-storage-class-correspondence,Shader Resource and
Storage Class Correspondence>>.
The descriptor set layout binding must: be of a corresponding descriptor
type, as defined in <<interfaces-resources-correspondence,Shader Resource
and Descriptor Type Correspondence>>.

View File

@ -142,10 +142,10 @@ February 10, 2016.
[[vulkan-styleguide]] J. Leech and T. Hector, _Vulkan Documentation and
Extensions: Procedures and Conventions_,
https://www.khronos.org/registry/vulkan/, July 11, 2016
https://www.khronos.org/registry/vulkan/specs/1.1/styleguide.html
[[LoaderAndValidationLayers]]
[[LoaderAndLayerInterface]]
_Vulkan Loader Specification and Architecture Overview_,
https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md,
https://github.com/KhronosGroup/Vulkan-Loader/blob/master/loader/LoaderAndLayerInterface.md,
August, 2016.

View File

@ -2985,6 +2985,19 @@ endif::VK_VERSION_1_1,VK_KHR_external_memory[]
created with the same combination of values for the pname:usage and
pname:flags members in the sname:VkBufferCreateInfo structure passed to
fname:vkCreateBuffer.
* The pname:alignment member satisfies the buffer descriptor offset
alignment requirements associated with the sname:VkBuffer's pname:usage:
** If pname:usage included
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:alignment must:
be an integer multiple of
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment.
** If pname:usage included ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
pname:alignment must: be an integer multiple of
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment.
** If pname:usage included ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
pname:alignment must: be an integer multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment.
* For images created with a color format, the pname:memoryTypeBits member
is identical for all sname:VkImage objects created with the same
combination of values for the pname:tiling member, the
@ -3381,22 +3394,6 @@ endif::VK_VERSION_1_1,VK_KHR_bind_memory2[]
flags
* [[VUID-vkBindBufferMemory-memoryOffset-01031]]
pname:memoryOffset must: be less than the size of pname:memory
* [[VUID-vkBindBufferMemory-buffer-01032]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must:
be a multiple of
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* [[VUID-vkBindBufferMemory-buffer-01033]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a
multiple of
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
* [[VUID-vkBindBufferMemory-buffer-01034]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a
multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* [[VUID-vkBindBufferMemory-memory-01035]]
pname:memory must: have been allocated using one of the memory types
allowed in the pname:memoryTypeBits member of the
@ -3522,22 +3519,6 @@ endif::VK_KHR_bind_memory2[]
flags
* [[VUID-VkBindBufferMemoryInfo-memoryOffset-01595]]
pname:memoryOffset must: be less than the size of pname:memory
* [[VUID-VkBindBufferMemoryInfo-buffer-01596]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must:
be a multiple of
sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
* [[VUID-VkBindBufferMemoryInfo-buffer-01597]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a
multiple of
sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
* [[VUID-VkBindBufferMemoryInfo-buffer-01598]]
If pname:buffer was created with the
ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a
multiple of
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* [[VUID-VkBindBufferMemoryInfo-memory-01599]]
pname:memory must: have been allocated using one of the memory types
allowed in the pname:memoryTypeBits member of the

View File

@ -82,7 +82,6 @@ include::../api/structs/VkSamplerCreateInfo.txt[]
* pname:minLod and pname:maxLod are the values used to clamp the computed
LOD value, as described in the <<textures-level-of-detail-operation,
Level-of-Detail Operation>> section.
pname:maxLod must: be greater than or equal to pname:minLod.
* pname:borderColor is a elink:VkBorderColor value specifying the
predefined border color to use.
* [[samplers-unnormalizedCoordinates]] pname:unnormalizedCoordinates
@ -163,6 +162,8 @@ pname:maxSamplerAllocationCount limit.
* [[VUID-VkSamplerCreateInfo-mipLodBias-01069]]
The absolute value of pname:mipLodBias must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxSamplerLodBias
* [[VUID-VkSamplerCreateInfo-maxLod-01973]]
pname:maxLod must: be greater than or equal to pname:minLod
* [[VUID-VkSamplerCreateInfo-anisotropyEnable-01070]]
If the <<features-features-samplerAnisotropy,anisotropic sampling>>
feature is not enabled, pname:anisotropyEnable must: be ename:VK_FALSE

View File

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

View File

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

View File

@ -153,7 +153,7 @@ server.
<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>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 76</type>
#define <name>VK_HEADER_VERSION</name> 77</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>