Skip to content

Commit

Permalink
Change log for April 5, 2022 Vulkan 1.3.211 spec update:
Browse files Browse the repository at this point in the history
  * Update release number to 211 for this update.

Public Issues:

  * Clarify dynamic offset with ename:VK_WHOLE_SIZE including new
    <<buffer-info-effective-range>> language (public issue 1546).
  * Relax depth copy requirement in common copy image valid usage statement
    00153 to ename:VK_IMAGE_TYPE_3D only and clarify copying depth slices
    for slink:VkImageCopy (public issue 1804).
  * Avoid a chain of enumerant aliases in `vk.xml` by aliasing
    ename:VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR directly to
    ename:VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT (public issue 1814).
  * Fix structure name containing pname:compareMask value in
    flink:vkCmdSetStencilCompareMask (public pull request 1806).
  * Fix miiscellaneous minor markup issues (public pull request 1810).
  * Simplify <<fundamentals-api-name-aliases, typo alias example>> to refer
    to aliases in the core API rather than extensions (public pull request
    1811).
  * Fix order of swapchain vs device destruction in
    flink:vkCreateSwapchainKHR (public pull request 1817).
  * Minor fix for VK_EXT_graphics_pipeline_library proposal vertex shader
    sample code (public pull request 1819).

Internal Issues:

  * Clarify timestamps write when the stage is done for
    flink:vkCmdWriteTimestamp and flink:vkCmdWriteTimestamp2 (internal issue
    2287).
  * Add pname:samplerFilterMinmax feature valid usage statement to
    slink:VkSamplerCreateInfo (internal issu 2747).
  * Add success and error codes to `vk.xml` for flink:vkWaitForPresentKHR
    (internal issue 2822).
  * Add footnote to flink:vkGetDeviceProcAddr suggesting, but not requiring
    returning `NULL` for core commands beyond the version supported by the
    implementation (internal issue 3002).
  * Fix valid usage statement for slink:VkImageFormatListCreateInfo when the
    image is created with
    ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT (internal issue
    3032).
  * Disallow binding ray tracing pipelines to protected command buffers in
    flink:vkCmdBindPipeline (internal issue 3034).
  * Update valid usage statements for interaction of
    flink:vkGetRayTracingShaderGroupHandlesKHR and
    flink:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR with
    apiext:VK_KHR_pipeline_library (internal issue 3040).
  * Add capability flags to report support to disable transform skip and use
    B frame in L1 reference list for the provisional
    apiext:VK_EXT_video_encode_h265.txt extension (internal issue 3050).
  * Update description of
    slink:VkPipelineShaderStageCreateInfo::pname:module and add valid usage
    for modules being optional when apiext:VK_EXT_graphics_pipelin_library
    is supported (internal issue 3059).
  * Remove redundant slink:VkVideoEncodeInfoKHR and
    slink:VkVideoDecodeInfoKHR pname:codedOffset / pname:codedExtent
    parameters from the provisional video extensions (internal issue 3062).
  * Fix "`code:VkDescriptorSetLayout`" typo in
    flink:vkCmdBindDescriptorSets.

New Extensions:

  * apiext:VK_EXT_image_2d_view_of_3d
  • Loading branch information
oddhack committed Apr 5, 2022
1 parent 39496ef commit 2a31e99
Show file tree
Hide file tree
Showing 24 changed files with 529 additions and 128 deletions.
67 changes: 67 additions & 0 deletions ChangeLog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,73 @@ on Github are done as single large patches at the release point, collecting
together the resolution of many Khronos internal issues, along with any
public pull requests that have been accepted.

-----------------------------------------------------

Change log for April 5, 2022 Vulkan 1.3.211 spec update:

* Update release number to 211 for this update.

Public Issues:

* Clarify dynamic offset with ename:VK_WHOLE_SIZE including new
<<buffer-info-effective-range>> language (public issue 1546).
* Relax depth copy requirement in common copy image valid usage statement
00153 to ename:VK_IMAGE_TYPE_3D only and clarify copying depth slices
for slink:VkImageCopy (public issue 1804).
* Avoid a chain of enumerant aliases in `vk.xml` by aliasing
ename:VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR directly to
ename:VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT (public issue 1814).
* Fix structure name containing pname:compareMask value in
flink:vkCmdSetStencilCompareMask (public pull request 1806).
* Fix miiscellaneous minor markup issues (public pull request 1810).
* Simplify <<fundamentals-api-name-aliases, typo alias example>> to refer
to aliases in the core API rather than extensions (public pull request
1811).
* Fix order of swapchain vs device destruction in
flink:vkCreateSwapchainKHR (public pull request 1817).
* Minor fix for VK_EXT_graphics_pipeline_library proposal vertex shader
sample code (public pull request 1819).

Internal Issues:

* Clarify timestamps write when the stage is done for
flink:vkCmdWriteTimestamp and flink:vkCmdWriteTimestamp2 (internal issue
2287).
* Add pname:samplerFilterMinmax feature valid usage statement to
slink:VkSamplerCreateInfo (internal issu 2747).
* Add success and error codes to `vk.xml` for flink:vkWaitForPresentKHR
(internal issue 2822).
* Add footnote to flink:vkGetDeviceProcAddr suggesting, but not requiring
returning `NULL` for core commands beyond the version supported by the
implementation (internal issue 3002).
* Fix valid usage statement for slink:VkImageFormatListCreateInfo when the
image is created with
ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT (internal issue
3032).
* Disallow binding ray tracing pipelines to protected command buffers in
flink:vkCmdBindPipeline (internal issue 3034).
* Update valid usage statements for interaction of
flink:vkGetRayTracingShaderGroupHandlesKHR and
flink:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR with
apiext:VK_KHR_pipeline_library (internal issue 3040).
* Add capability flags to report support to disable transform skip and use
B frame in L1 reference list for the provisional
apiext:VK_EXT_video_encode_h265.txt extension (internal issue 3050).
* Update description of
slink:VkPipelineShaderStageCreateInfo::pname:module and add valid usage
for modules being optional when apiext:VK_EXT_graphics_pipelin_library
is supported (internal issue 3059).
* Remove redundant slink:VkVideoEncodeInfoKHR and
slink:VkVideoDecodeInfoKHR pname:codedOffset / pname:codedExtent
parameters from the provisional video extensions (internal issue 3062).
* Fix "`code:VkDescriptorSetLayout`" typo in
flink:vkCmdBindDescriptorSets.

New Extensions:

* apiext:VK_EXT_image_2d_view_of_3d


-----------------------------------------------------

Change log for March 29, 2022 Vulkan 1.3.210 spec update:
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output

NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 210
PATCHVERSION = 211

ifneq (,$(findstring VK_VERSION_1_3,$(VERSIONS)))
SPECMINOR = 3
Expand Down
37 changes: 37 additions & 0 deletions appendices/VK_EXT_image_2d_view_of_3d.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright 2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_image_2d_view_of_3d.txt[]

=== Other Extension Metadata

*Last Modified Date*::
2022-02-22
*IP Status*::
No known IP claims.
*Contributors*::
- Mike Blumenkrantz, Valve
- Piers Daniell, NVIDIA
- Spencer Fricke, Samsung
- Ricardo Garcia, Igalia
- Graeme Leese, Broadcom
- Ralph Potter, Samsung
- Stu Smith, AMD
- Shahbaz Youssefi, Google
- Alex Walters, Imagination

=== Description

This extension allows a single slice of a 3D image to be used as a 2D view
in image descriptors, matching both the functionality of glBindImageTexture
in OpenGL with the `layer` parameter set to true and 2D view binding
provided by the extension EGL_KHR_gl_texture_3D_image.
It is primarily intended to support GL emulation.

include::{generated}/interfaces/VK_EXT_image_2d_view_of_3d.txt[]

=== Version History

* Revision 1, 2022-03-25 (Mike Blumenkrantz)
- Internal revisions
4 changes: 3 additions & 1 deletion appendices/VK_EXT_video_decode_h264.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ include::{generated}/meta/{refprefix}VK_EXT_video_decode_h264.txt[]
=== Other Extension Metadata

*Last Modified Date*::
2022-03-16
2022-03-31
*IP Status*::
No known IP claims.
*Contributors*::
Expand Down Expand Up @@ -40,3 +40,5 @@ include::{generated}/interfaces/VK_EXT_video_decode_h264.txt[]
- Relocate Std header version reporting/requesting from this extension
to VK_KHR_video_queue extension.
- Remove the now empty VkVideoDecodeH264SessionCreateInfoEXT.
* Revision 5, 2022-03-31 (Ahmed Abdelkhalek)
- Use type StdVideoH264Level for VkVideoDecodeH264Capabilities.maxLevel
4 changes: 3 additions & 1 deletion appendices/VK_EXT_video_decode_h265.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ include::{generated}/meta/{refprefix}VK_EXT_video_decode_h265.txt[]
=== Other Extension Metadata

*Last Modified Date*::
2022-03-16
2022-03-31
*IP Status*::
No known IP claims.
*Contributors*::
Expand All @@ -31,3 +31,5 @@ include::{generated}/interfaces/VK_EXT_video_decode_h265.txt[]
- Relocate Std header version reporting/requesting from this extension
to VK_KHR_video_queue extension.
- Remove the now empty VkVideoDecodeH265SessionCreateInfoEXT.
* Revision 3, 2022-03-31 (Ahmed Abdelkhalek)
- Use type StdVideoH265Level for VkVideoDecodeH265Capabilities.maxLevel
5 changes: 4 additions & 1 deletion appendices/VK_EXT_video_encode_h265.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ include::{generated}/meta/{refprefix}VK_EXT_video_encode_h265.txt[]
=== Other Extension Metadata

*Last Modified Date*::
2022-03-16
2022-03-24
*IP Status*::
No known IP claims.
*Contributors*::
Expand Down Expand Up @@ -48,3 +48,6 @@ include::{generated}/interfaces/VK_EXT_video_encode_h265.txt[]
- Relocate Std header version reporting/requesting from this extension
to VK_KHR_video_queue extension.
- Remove the now empty VkVideoEncodeH265SessionCreateInfoEXT.
* Revision 7, 2022-03-24 (Ahmed Abdelkhalek)
- Add capability flags to report support to disable transform skip and
support to use B frame in L1 reference list.
4 changes: 3 additions & 1 deletion appendices/VK_KHR_video_decode_queue.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ include::{generated}/meta/{refprefix}VK_KHR_video_decode_queue.txt[]
=== Other Extension Metadata

*Last Modified Date*::
2022-02-25
2022-03-31
*IP Status*::
No known IP claims.
*Contributors*::
Expand Down Expand Up @@ -37,3 +37,5 @@ include::{generated}/interfaces/VK_KHR_video_decode_queue.txt[]
- Add VkVideoDecodeCapabilitiesKHR with new flags to report support for
decode DPB and output coinciding in the same image, or in distinct
images.
* Revision 4, 2022-03-31 (Ahmed Abdelkhalek)
- Remove redundant VkVideoDecodeInfoKHR.coded{Offset|Extent}
4 changes: 3 additions & 1 deletion appendices/VK_KHR_video_encode_queue.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ include::{generated}/meta/{refprefix}VK_KHR_video_encode_queue.txt[]
=== Other Extension Metadata

*Last Modified Date*::
2022-02-10
2022-03-31
*IP Status*::
No known IP claims.
*Contributors*::
Expand Down Expand Up @@ -40,3 +40,5 @@ include::{generated}/interfaces/VK_KHR_video_encode_queue.txt[]
- Add interaction with `apiext:VK_KHR_format_feature_flags2` to `vk.xml`
* Revision 4, 2022-02-10 (Ahmed Abdelkhalek)
- Updates to encode capability interface
* Revision 5, 2022-03-31 (Ahmed Abdelkhalek)
- Remove redundant VkVideoEncodeInfoKHR.codedExtent
6 changes: 4 additions & 2 deletions chapters/commonvalidity/copy_image_common.txt
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,8 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
element of pname:pRegions, pname:srcOffset.y must: be `0` and
pname:extent.height must: be `1`
* [[VUID-{refpage}-srcOffset-00147]]
For each element of pname:pRegions, pname:srcOffset.z and
If pname:srcImage is of type ename:VK_IMAGE_TYPE_3D, then for each
element of pname:pRegions, pname:srcOffset.z and
[eq]#(pname:extent.depth {plus} pname:srcOffset.z)# must: both be
greater than or equal to `0` and less than or equal to the depth of the
specified pname:srcSubresource of pname:srcImage
Expand Down Expand Up @@ -265,7 +266,8 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
element of pname:pRegions, pname:dstOffset.y must: be `0` and
pname:extent.height must: be `1`
* [[VUID-{refpage}-dstOffset-00153]]
For each element of pname:pRegions, pname:dstOffset.z and
If pname:dstImage is of type ename:VK_IMAGE_TYPE_3D, then for each
element of pname:pRegions, pname:dstOffset.z and
[eq]#(pname:extent.depth {plus} pname:dstOffset.z)# must: both be
greater than or equal to `0` and less than or equal to the depth of the
specified pname:dstSubresource of pname:dstImage
Expand Down
4 changes: 3 additions & 1 deletion chapters/copies.txt
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,9 @@ pname:dstSubresource and copying pname:layerCount layers.
Image data can: be copied between images with different image types.
If one image is ename:VK_IMAGE_TYPE_3D and the other image is
ename:VK_IMAGE_TYPE_2D with multiple layers, then each slice is copied to or
from a different layer.
from a different layer; pname:depth slices in the 3D image correspond to
pname:layerCount layers in the 2D image, with an effective pname:depth of
`1` used for the 2D image.
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
ifndef::VK_VERSION_1_1,VK_KHR_maintenance1[]
Copies are done layer by layer starting with pname:baseArrayLayer member of
Expand Down
69 changes: 54 additions & 15 deletions chapters/descriptorsets.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3269,14 +3269,16 @@ endif::VK_VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkWriteDescriptorSet-descriptorType-00332]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, the pname:range member
of each element of pname:pBufferInfo, or the effective range if
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
of each element of pname:pBufferInfo, or the
<<buffer-info-effective-range,effective range>> if pname:range is
ename:VK_WHOLE_SIZE, must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxUniformBufferRange
* [[VUID-VkWriteDescriptorSet-descriptorType-00333]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER or
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:range member
of each element of pname:pBufferInfo, or the effective range if
pname:range is ename:VK_WHOLE_SIZE, must: be less than or equal to
of each element of pname:pBufferInfo, or the
<<buffer-info-effective-range,effective range>> if pname:range is
ename:VK_WHOLE_SIZE, must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxStorageBufferRange
* [[VUID-VkWriteDescriptorSet-descriptorType-00334]]
If pname:descriptorType is
Expand Down Expand Up @@ -3326,6 +3328,15 @@ endif::VK_VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, the
pname:imageView member of each element of pname:pImageInfo must: have
been created with ename:VK_IMAGE_USAGE_STORAGE_BIT set
ifdef::VK_EXT_image_2d_view_of_3d[]
* [[VUID-VkWriteDescriptorSet-descriptorType-06710]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, or
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, each pname:imageView
member of each element of pname:pImageInfo that is a 2D image view
created from a 3D image must: have been created from an image created
with ename:VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT set
endif::VK_EXT_image_2d_view_of_3d[]
* [[VUID-VkWriteDescriptorSet-descriptorType-02752]]
If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER, then
pname:dstSet must: not have been allocated with a layout that included
Expand Down Expand Up @@ -3461,14 +3472,14 @@ the buffer resource.
* pname:range is the size in bytes that is used for this descriptor
update, or ename:VK_WHOLE_SIZE to use the range from pname:offset to the
end of the buffer.

[NOTE]
.Note
====
When setting pname:range to ename:VK_WHOLE_SIZE, the effective range must:
not be larger than the maximum range for the descriptor type
(<<limits-maxUniformBufferRange, pname:maxUniformBufferRange>> or
<<limits-maxStorageBufferRange, pname:maxStorageBufferRange>>).
When setting pname:range to ename:VK_WHOLE_SIZE, the
<<buffer-info-effective-range,effective range>> must: not be larger than the
maximum range for the descriptor type (<<limits-maxUniformBufferRange,
pname:maxUniformBufferRange>> or <<limits-maxStorageBufferRange,
pname:maxStorageBufferRange>>).
This means that ename:VK_WHOLE_SIZE is not typically useful in the common
case where uniform buffer descriptors are suballocated from a buffer that is
much larger than pname:maxUniformBufferRange.
Expand All @@ -3479,6 +3490,11 @@ ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC descriptor types,
pname:offset is the base offset from which the dynamic offset is applied and
pname:range is the static size used for all dynamic offsets.

[[buffer-info-effective-range]]
When pname:range is ename:VK_WHOLE_SIZE the effective range is calculated at
flink:vkUpdateDescriptorSets is by taking the size of pname:buffer minus the
pname:offset.

.Valid Usage
****
* [[VUID-VkDescriptorBufferInfo-offset-00340]]
Expand Down Expand Up @@ -3535,9 +3551,26 @@ described above) are ignored.
.Valid Usage
****
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
* [[VUID-VkDescriptorImageInfo-imageView-00343]]
pname:imageView must: not be 2D or 2D array image view created from a 3D
ifndef::VK_EXT_image_2d_view_of_3d[]
* [[VUID-VkDescriptorImageInfo-imageView-06711]]
pname:imageView must: not be 2D image view created from a 3D image
endif::VK_EXT_image_2d_view_of_3d[]
* [[VUID-VkDescriptorImageInfo-imageView-06712]]
pname:imageView must: not be a 2D array image view created from a 3D
image
ifdef::VK_EXT_image_2d_view_of_3d[]
* [[VUID-VkDescriptorImageInfo-descriptorType-06713]]
If the <<features-image2DViewOf3D,image2DViewOf3D>> feature is not
enabled and pname:descriptorType is
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE then pname:imageView must: not be
a 2D view created from a 3D image
* [[VUID-VkDescriptorImageInfo-descriptorType-06714]]
If the <<features-sampler2DViewOf3D,sampler2DViewOf3D>> feature is not
enabled and pname:descriptorType is
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE or
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER then pname:imageView
must: not be a 2D view created from a 3D image
endif::VK_EXT_image_2d_view_of_3d[]
endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
* [[VUID-VkDescriptorImageInfo-imageView-01976]]
If pname:imageView is created from a depth/stencil image, the
Expand Down Expand Up @@ -4387,6 +4420,7 @@ array, elements are in order.
pname:dynamicOffsetCount must: equal the total number of dynamic descriptors
in the sets being bound.

[[dynamic-effective-offset]]
The effective offset used for dynamic uniform and storage buffer bindings is
the sum of the relative offset taken from pname:pDynamicOffsets, and the
base address of the buffer plus base offset in the descriptor set.
Expand Down Expand Up @@ -4454,9 +4488,14 @@ descriptor set.
sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979]]
For each dynamic uniform or storage buffer binding in
pname:pDescriptorSets, the sum of the effective offset, as defined
above, and the range of the binding must: be less than or equal to the
size of the buffer
pname:pDescriptorSets, the sum of the <<dynamic-effective-offset,
effective offset>> and the range of the binding must: be less than or
equal to the size of the buffer
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-06715]]
For each dynamic uniform or storage buffer binding in
pname:pDescriptorSets, if the range was set with ename:VK_WHOLE_SIZE
then pname:pDynamicOffsets which corresponds to the descriptor binding
must: be 0
ifdef::VK_VALVE_mutable_descriptor_type[]
* [[VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616]]
Each element of pname:pDescriptorSets must: not have been allocated from
Expand All @@ -4472,7 +4511,7 @@ ifdef::VK_EXT_graphics_pipeline_library[]
* [[VUID-vkCmdBindDescriptorSets-layout-06564]]
If pname:layout was not created with
ename:VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT, each element
of pname:pDescriptorSets must: be a valid slink:VkDescriptorSetLayout
of pname:pDescriptorSets must: be a valid slink:VkDescriptorSet
endif::VK_EXT_graphics_pipeline_library[]
****

Expand Down
Loading

0 comments on commit 2a31e99

Please sign in to comment.