Skip to content

Commit

Permalink
Change log for March 29, 2022 Vulkan 1.3.210 spec update:
Browse files Browse the repository at this point in the history
  * Update release number to 210 for this update.

Public Issues:

  * Clarify that descriptors are not referenced for unused
    ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT descriptors unless
    dynamically used (public issue 1794).
  * Remove "`If renderpass is NULL`" from slink:VkFramebufferCreateInfo
    valid usage statements (public issue 1800).

Internal Issues:

  * Add valid usage statements to slink:VkAttachmentDescription and
    slink:VkAttachmentDescription2 for the cases when pname:loadOp is or
    pname:stencilLoadOp is ename:VK_ATTACHMENT_LOAD_OP_LOAD and
    pname:initialLayout is ename:VK_IMAGE_LAYOUT_UNDEFINED, and when
    pname:format is ename:VK_FORMAT_UNDEFINED (internal issue 2349).
  * Add valid usage statements to slink:VkRenderPassMultiviewCreateInfo and
    slink:VkSubpassDescription2 to respect <<limits-maxMultiviewViewCount,
    pname:maxMultiviewViewCount>> (internal issue 2511).
  * Clarify definition of <<shaders-staticuse, static use instructions>>
    (internal issue 2639).
  * Fix typo pname:pRanges -> pname:pRegions in common validity statements
    for copy image commands (internal issue 3052).
  * Update valid usage statement for build acceleration structure common VUs
    to allow inactive instances (internal merge request 5116).
  * Require <<features-colorWriteEnable, pname:colorWriteEnable>> for
    apiext:VK_EXT_color_write_enable in the <<features-requirements, Feature
    Requirements>> section.
  * Better specify when depth/stencil must be written in
    slink:VkPipelineShaderStageCreateInfo valid usage statements.

New Extensions:

  * apiext:VK_EXT_graphics_pipeline_library
  * apiext:VK_EXT_primitives_generated_query
  • Loading branch information
oddhack committed Mar 29, 2022
1 parent fff6557 commit 45af5eb
Show file tree
Hide file tree
Showing 31 changed files with 2,554 additions and 397 deletions.
2 changes: 1 addition & 1 deletion .reuse/dep5
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Copyright: 2020-2022 The Khronos Group Inc.
License: Apache-2.0

Files: copyright-spec.txt
Copyright: 2014-2022 The Khronos Group, Inc
Copyright: 2014-2022 The Khronos Group Inc
License: LicenseRef-KhronosSpecCopyright

Files: scripts/asciidoctor-chunker/*
Expand Down
41 changes: 41 additions & 0 deletions ChangeLog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,47 @@ public pull requests that have been accepted.

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

Change log for March 29, 2022 Vulkan 1.3.210 spec update:

* Update release number to 210 for this update.

Public Issues:

* Clarify that descriptors are not referenced for unused
ename:VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT descriptors unless
dynamically used (public issue 1794).
* Remove "`If renderpass is NULL`" from slink:VkFramebufferCreateInfo
valid usage statements (public issue 1800).

Internal Issues:

* Add valid usage statements to slink:VkAttachmentDescription and
slink:VkAttachmentDescription2 for the cases when pname:loadOp is or
pname:stencilLoadOp is ename:VK_ATTACHMENT_LOAD_OP_LOAD and
pname:initialLayout is ename:VK_IMAGE_LAYOUT_UNDEFINED, and when
pname:format is ename:VK_FORMAT_UNDEFINED (internal issue 2349).
* Add valid usage statements to slink:VkRenderPassMultiviewCreateInfo and
slink:VkSubpassDescription2 to respect <<limits-maxMultiviewViewCount,
pname:maxMultiviewViewCount>> (internal issue 2511).
* Clarify definition of <<shaders-staticuse, static use instructions>>
(internal issue 2639).
* Fix typo pname:pRanges -> pname:pRegions in common validity statements
for copy image commands (internal issue 3052).
* Update valid usage statement for build acceleration structure common VUs
to allow inactive instances (internal merge request 5116).
* Require <<features-colorWriteEnable, pname:colorWriteEnable>> for
apiext:VK_EXT_color_write_enable in the <<features-requirements, Feature
Requirements>> section.
* Better specify when depth/stencil must be written in
slink:VkPipelineShaderStageCreateInfo valid usage statements.

New Extensions:

* apiext:VK_EXT_graphics_pipeline_library
* apiext:VK_EXT_primitives_generated_query

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

Change log for March 23, 2022 Vulkan 1.3.209 spec update:

* Update release number to 209 for this update.
Expand Down
4 changes: 3 additions & 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 = 209
PATCHVERSION = 210

ifneq (,$(findstring VK_VERSION_1_3,$(VERSIONS)))
SPECMINOR = 3
Expand Down Expand Up @@ -162,6 +162,7 @@ SPECREMARK = from git branch: $(shell echo `git symbolic-ref --short HEAD 2> /de
# Some of the attributes used in building all spec documents:
# chapters - absolute path to chapter sources
# appendices - absolute path to appendix sources
# proposals - absolute path to proposal sources
# images - absolute path to images
# generated - absolute path to generated sources
# refprefix - controls which generated extension metafiles are
Expand All @@ -175,6 +176,7 @@ ATTRIBOPTS = -a revnumber="$(SPECREVISION)" \
-a imageopts="$(IMAGEOPTS)" \
-a config=$(CURDIR)/config \
-a appendices=$(CURDIR)/appendices \
-a proposals=$(CURDIR)/proposals \
-a chapters=$(CURDIR)/chapters \
-a images=$(IMAGEPATH) \
-a generated=$(GENERATED) \
Expand Down
2 changes: 1 addition & 1 deletion appendices/VK_EXT_color_write_enable.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2020 The Khronos Group Inc.
// Copyright 2020-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

Expand Down
41 changes: 41 additions & 0 deletions appendices/VK_EXT_graphics_pipeline_library.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// Copyright 2021-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
2021-08-17
*Contributors*::
- Tobias Hector, AMD
- Chris Glover, Google
- Jeff Leger, Qualcomm
- Jan-Harald Fredriksen, Arm
- Piers Daniell, NVidia
- Boris Zanin, Mobica
- Krzysztof Niski, NVidia
- Dan Ginsburg, Valve
- Sebastian Aaltonen, Unity
- Arseny Kapoulkine, Roblox
- Calle Lejdfors, Ubisoft
- Tiago Rodrigues, Ubisoft
- Francois Duranleau, Gameloft


=== Description

This extension allows the separate compilation of four distinct parts of
graphics pipelines, with the intent of allowing faster pipeline loading for
applications reusing the same shaders or state in multiple pipelines.
Each part can be independently compiled into a graphics pipeline library,
with a final link step required to create an executable pipeline that can be
bound to a command buffer.

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

=== Version History

* Revision 1, 2021-08-17 (Tobias Hector)
- Initial draft.
77 changes: 77 additions & 0 deletions appendices/VK_EXT_primitives_generated_query.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// Copyright (c) 2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
2022-01-24
*Contributors*::
- Shahbaz Youssefi, Google
- Piers Daniell, NVIDIA
- Jason Ekstrand, Collabora
- Jan-Harald Fredriksen, Arm

=== Description

This extension adds support for a new query type to match OpenGL's
`GL_PRIMITIVES_GENERATED` to support layering.

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

=== Version History

* Revision 1, 2021-06-23 (Shahbaz Youssefi)
- Internal revisions

=== Issues

1) Can the query from `VK_EXT_transform_feedback` be used instead?

*RESOLVED*: No.
While the query from VK_EXT_transform_feedback can produce the same results
as in this extension, it is only available while transform feedback is
active.
The OpenGL `GL_PRIMITIVES_GENERATED` query is independent from transform
feedback.
Emulation through artificial transform feedback is unnecessarily
inefficient.

2) Can `VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT` be used
instead?

*RESOLVED*: It could, but we prefer the extension for simplicity.
Vulkan requires that only one query be active at a time.
If both the `GL_PRIMITIVES_GENERATED` and the
`GL_CLIPPING_INPUT_PRIMITIVES_ARB` queries need to be simultaneously
enabled, emulation of both through
`VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT` is inconvenient.

3) On some hardware, this query cannot be implemented if
sname:VkPipelineRasterizationStateCreateInfo::pname:rasterizerDiscardEnable
is enabled.
How will this be handled?

*RESOLVED*: A feature flag is exposed by this extension for this.
On said hardware, the GL implementation disables rasterizer-discard and
achieves the same effect through other means.
It will not be able to do the same in Vulkan due to lack of state
information.
A feature flag is exposed by this extension so the OpenGL implementation on
top of Vulkan would be able to implement a similar workaround.

4) On some hardware, this query cannot be implemented for non-zero query
indices.
How will this be handled?

*RESOLVED*: A feature flag is exposed by this extension for this.
If this feature is not present, the query from `VK_EXT_transform_feedback`
can be used to the same effect.

5) How is the interaction of this extension with
`transformFeedbackRasterizationStreamSelect` handled?

*RESOLVED*: Disallowed for non-zero streams.
In OpenGL, the rasterization stream is always stream zero.
2 changes: 1 addition & 1 deletion appendices/VK_EXT_shader_atomic_float2.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2018-2020 The Khronos Group Inc.
// Copyright 2018-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

Expand Down
2 changes: 1 addition & 1 deletion appendices/VK_KHR_portability_enumeration.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2021 The Khronos Group, Inc.
// Copyright 2021-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

Expand Down
2 changes: 1 addition & 1 deletion appendices/VK_KHR_shader_integer_dot_product.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2019-2020 Khronos Group.
// Copyright 2019-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

Expand Down
2 changes: 1 addition & 1 deletion appendices/VK_KHR_synchronization2.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2020 Khronos Group.
// Copyright 2020-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

Expand Down
2 changes: 1 addition & 1 deletion appendices/roadmap.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2015-2022 The Khronos Group, Inc.
// Copyright 2015-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

Expand Down
10 changes: 10 additions & 0 deletions chapters/VK_EXT_debug_utils.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,16 @@ calling fname:vkSetDebugUtilsObjectNameEXT again with a new string.
If pname:pObjectName is either `NULL` or an empty string, then any
previously set name is removed.

ifdef::VK_EXT_graphics_pipeline_library[]
The <<features-graphicsPipelineLibrary, pname:graphicsPipelineLibrary>>
feature allows the specification of pipelines without the creation of
slink:VkShaderModule objects beforehand.
In order to continue to allow naming these shaders independently,
sname:VkDebugUtilsObjectNameInfoEXT can: be included in the pname:pNext
chain of slink:VkPipelineShaderStageCreateInfo, which associates a static
name with that particular shader.
endif::VK_EXT_graphics_pipeline_library[]

.Valid Usage
****
* [[VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589]]
Expand Down
24 changes: 0 additions & 24 deletions chapters/VK_EXT_pipeline_creation_feedback/pipelines.txt
Original file line number Diff line number Diff line change
Expand Up @@ -66,30 +66,6 @@ When chained to slink:VkComputePipelineCreateInfo, the first element of
pname:pPipelineStageCreationFeedbacks corresponds to
slink:VkComputePipelineCreateInfo::pname:stage.

.Valid Usage
****
* [[VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02668]]
When chained to slink:VkGraphicsPipelineCreateInfo,
slink:VkPipelineCreationFeedback::pname:pipelineStageCreationFeedbackCount
must: equal slink:VkGraphicsPipelineCreateInfo::pname:stageCount
* [[VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02669]]
When chained to slink:VkComputePipelineCreateInfo,
slink:VkPipelineCreationFeedback::pname:pipelineStageCreationFeedbackCount
must: equal 1
ifdef::VK_KHR_ray_tracing_pipeline[]
* [[VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02670]]
When chained to slink:VkRayTracingPipelineCreateInfoKHR,
slink:VkPipelineCreationFeedback::pname:pipelineStageCreationFeedbackCount
must: equal slink:VkRayTracingPipelineCreateInfoKHR::pname:stageCount
endif::VK_KHR_ray_tracing_pipeline[]
ifdef::VK_NV_ray_tracing[]
* [[VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02969]]
When chained to slink:VkRayTracingPipelineCreateInfoNV,
slink:VkPipelineCreationFeedback::pname:pipelineStageCreationFeedbackCount
must: equal slink:VkRayTracingPipelineCreateInfoNV::pname:stageCount
endif::VK_NV_ray_tracing[]
****

include::{generated}/validity/structs/VkPipelineCreationFeedbackCreateInfo.txt[]
--

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,12 @@
pname:geometry.instances.data.deviceAddress is the address of a
non-sparse buffer then it must: be bound completely and contiguously to
a single slink:VkDeviceMemory object
* [[VUID-{refpage}-pInfos-03815]]
* [[VUID-{refpage}-pInfos-06707]]
For any element of pname:pInfos[i].pname:pGeometries or
pname:pInfos[i].pname:ppGeometries with a pname:geometryType of
ename:VK_GEOMETRY_TYPE_INSTANCES_KHR, each
slink:VkAccelerationStructureInstanceKHR::pname:accelerationStructureReference
value in pname:geometry.instances.data.deviceAddress must: be a valid
device address containing a value obtained from
flink:vkGetAccelerationStructureDeviceAddressKHR
flink:vkGetAccelerationStructureDeviceAddressKHR or `0`
// Common Valid Usage
8 changes: 4 additions & 4 deletions chapters/commonvalidity/copy_image_common.txt
Original file line number Diff line number Diff line change
Expand Up @@ -323,28 +323,28 @@ ifndef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[]
endif::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[]
ifdef::VK_VERSION_1_2,VK_EXT_separate_stencil_usage[]
* [[VUID-{refpage}-aspect-06662]]
If the pname:aspect member of any element of pname:pRanges includes any
If the pname:aspect member of any element of pname:pRegions includes any
flag other than ename:VK_IMAGE_ASPECT_STENCIL_BIT or pname:srcImage was
not created with <<VkImageStencilUsageCreateInfo,separate stencil
usage>>, ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT must: have been included
in the slink:VkImageCreateInfo::pname:usage used to create
pname:srcImage
* [[VUID-{refpage}-aspect-06663]]
If the pname:aspect member of any element of pname:pRanges includes any
If the pname:aspect member of any element of pname:pRegions includes any
flag other than ename:VK_IMAGE_ASPECT_STENCIL_BIT or pname:dstImage was
not created with <<VkImageStencilUsageCreateInfo,separate stencil
usage>>, ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT must: have been included
in the slink:VkImageCreateInfo::pname:usage used to create
pname:dstImage
* [[VUID-{refpage}-aspect-06664]]
If the pname:aspect member of any element of pname:pRanges includes
If the pname:aspect member of any element of pname:pRegions includes
ename:VK_IMAGE_ASPECT_STENCIL_BIT, and pname:srcImage was created with
<<VkImageStencilUsageCreateInfo,separate stencil usage>>,
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT must: have been included in the
slink:VkImageStencilUsageCreateInfo::pname:stencilUsage used to create
pname:srcImage
* [[VUID-{refpage}-aspect-06665]]
If the pname:aspect member of any element of pname:pRanges includes
If the pname:aspect member of any element of pname:pRegions includes
ename:VK_IMAGE_ASPECT_STENCIL_BIT, and pname:dstImage was created with
<<VkImageStencilUsageCreateInfo,separate stencil usage>>,
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT must: have been included in the
Expand Down
17 changes: 17 additions & 0 deletions chapters/commonvalidity/draw_common.txt
Original file line number Diff line number Diff line change
Expand Up @@ -382,4 +382,21 @@ ifdef::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
equal to dlink:VK_NULL_HANDLE
endif::VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples[]
endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[]
ifdef::VK_EXT_primitives_generated_query[]
* [[VUID-{refpage}-primitivesGeneratedQueryWithRasterizerDiscard-06708]]
If the <<features-primitivesGeneratedQueryWithRasterizerDiscard,
pname:primitivesGeneratedQueryWithRasterizerDiscard>> feature is not
enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is
active, <<primsrast-discard,rasterization discard>> must: not be
enabled.
ifdef::VK_EXT_transform_feedback[]
* [[VUID-{refpage}-primitivesGeneratedQueryWithNonZeroStreams-06709]]
If the <<features-primitivesGeneratedQueryWithNonZeroStreams,
pname:primitivesGeneratedQueryWithNonZeroStreams>> feature is not
enabled and the ename:VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT query is
active, the bound graphics pipeline must: not have been created with a
non-zero value in
sname:VkPipelineRasterizationStateStreamCreateInfoEXT::pname:rasterizationStream.
endif::VK_EXT_transform_feedback[]
endif::VK_EXT_primitives_generated_query[]
// Common Valid Usage
Loading

0 comments on commit 45af5eb

Please sign in to comment.