Skip to content

Commit

Permalink
Change log for December 8, 2023 Vulkan 1.3.273 spec update:
Browse files Browse the repository at this point in the history
Github Issues

  * Add missing `bitwidth` attribute for
    elink:VkPhysicalDeviceSchedulingControlsFlagBitsARM (public issue 2277).

Internal Issues

  * Use the new <<glossary-pipeline-trace-ray, pipeline trace ray>> term to
    refer to trace ray instructions, instead of the too-specific
    code:OpTraceRayKHR (internal issue 3284).
  * Improve description of <<pipelines-multiple, multiple pipeline
    creation>>, refer to it from each ftext:vkCreate*Pipelines command, and
    add style guide language to follow this pattern for future multiple
    creation commands (internal issue 3707).
  * Add common blit image and copy image VU that copying an image with the
    same subresource must: be ename:VK_IMAGE_LAYOUT_GENERAL or
    ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR (internal MR 6143).
  * Markup improvements and correct use of normative must: for
    flink:vkGetPhysicalDeviceOpticalFlowImageFormatsNV (internal MR 6315).
  * Refer to "`shader calls`" in the <<memory-model, Memory Model>> chapter
    refers to them as such, rather than "`invocation repacks`" (internal MR
    6316).
  * Make some flink:vkAcquireImageANDROID parameters `optional` in XML
    (internal MR 6325).

New Extensions

  * apiext:VK_KHR_calibrated_timestamps
  * apiext:VK_KHR_vertex_attribute_divisor
  • Loading branch information
oddhack committed Dec 8, 2023
1 parent 6bfb45c commit f8d7612
Show file tree
Hide file tree
Showing 45 changed files with 810 additions and 316 deletions.
4 changes: 2 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ hpp-generate:

# Regenerate Rust bindings (Ash crate)
ash-generate:
image: khronosgroup/docker-images@sha256:9e0beda7d46d7a2f72526bac80b4ccb7a860486b09f00d513e24c6676fdd8de1
image: khronosgroup/docker-images@sha256:cf554c9cf5d0322e022f0be32efad9bff44ada4b32653bfdc8033cba22972fa2
stage: build
needs:
- spec-generate # For the full include/ directory
Expand Down Expand Up @@ -230,7 +230,7 @@ hpp-compile:

# Build-test Rust bindings (Ash crate)
ash-compile:
image: khronosgroup/docker-images@sha256:9e0beda7d46d7a2f72526bac80b4ccb7a860486b09f00d513e24c6676fdd8de1
image: khronosgroup/docker-images@sha256:cf554c9cf5d0322e022f0be32efad9bff44ada4b32653bfdc8033cba22972fa2
stage: test
needs:
- ash-generate
Expand Down
38 changes: 36 additions & 2 deletions ChangeLog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,40 @@ appears frequently in the change log.

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

Change log for December 8, 2023 Vulkan 1.3.273 spec update:

Github Issues

* Add missing `bitwidth` attribute for
elink:VkPhysicalDeviceSchedulingControlsFlagBitsARM (public issue 2277).

Internal Issues

* Use the new <<glossary-pipeline-trace-ray, pipeline trace ray>> term to
refer to trace ray instructions, instead of the too-specific
code:OpTraceRayKHR (internal issue 3284).
* Improve description of <<pipelines-multiple, multiple pipeline
creation>>, refer to it from each ftext:vkCreate*Pipelines command, and
add style guide language to follow this pattern for future multiple
creation commands (internal issue 3707).
* Add common blit image and copy image VU that copying an image with the
same subresource must: be ename:VK_IMAGE_LAYOUT_GENERAL or
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR (internal MR 6143).
* Markup improvements and correct use of normative must: for
flink:vkGetPhysicalDeviceOpticalFlowImageFormatsNV (internal MR 6315).
* Refer to "`shader calls`" in the <<memory-model, Memory Model>> chapter
refers to them as such, rather than "`invocation repacks`" (internal MR
6316).
* Make some flink:vkAcquireImageANDROID parameters `optional` in XML
(internal MR 6325).

New Extensions

* apiext:VK_KHR_calibrated_timestamps
* apiext:VK_KHR_vertex_attribute_divisor

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

Change log for December 1, 2023 Vulkan 1.3.272 spec update:

Internal Issues
Expand Down Expand Up @@ -355,7 +389,7 @@ Github Issues
specifications (public issue 2193).
* Explicitly state that VkDeviceOrHostAddressConstKHR is also ignored
(public PR 2205).
* Fix parameter typo "`cordinates`" and correct markup (public PR 2206).
* Fix parameter typo "`coordinates`" and correct markup (public PR 2206).
* Cleanup slink:VkGraphicspipelineCreateInfo VUs for code:PointSize in the
context of apiext:VK_KHR_maintenance5 (public Vulkan-ValidationLayers
issue 6382).
Expand Down Expand Up @@ -3516,7 +3550,7 @@ Internal Issues:
VU 06271 (internal issue 2917).
* Use etext:VK_VERSION_m_n instead of etext:VK_API_VERSION_m_n in
`<spirvcapability>` and `<spirvextension>` XML tags for consistency with
other version / extension reqiurements. Note that there is a possibility
other version / extension requirements. Note that there is a possibility
of this change affecting downstream consumers of the XML (internal issue
2896).
* Add refpage cross-reference from slink:VkSwapchainKHR to
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output

NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 272
PATCHVERSION = 273
BASEOPTS =

ifneq (,$(findstring VKSC_VERSION_1_0,$(VERSIONS)))
Expand Down
7 changes: 7 additions & 0 deletions appendices/VK_EXT_calibrated_timestamps.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@ include::{generated}/meta/{refprefix}VK_EXT_calibrated_timestamps.adoc[]
This extension provides an interface to query calibrated timestamps obtained
quasi simultaneously from two time domains.

=== Promotion to `VK_KHR_calibrated_timestamps`

All functionality in this extension is included in
`apiext:VK_KHR_calibrated_timestamps`, with the suffix changed to KHR.
The original enum names are still available as aliases of the KHR
functionality.

include::{generated}/interfaces/VK_EXT_calibrated_timestamps.adoc[]

=== Version History
Expand Down
2 changes: 1 addition & 1 deletion appendices/VK_EXT_pipeline_library_group_handles.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ include::{generated}/meta/{refprefix}VK_EXT_pipeline_library_group_handles.adoc[
When using pipeline libraries in ray tracing pipelines, a library might get
linked into different pipelines in an incremental way.
An application can have a strategy where a ray tracing pipeline is comprised
of N pipeline libraries and is later augumented by creating a new pipeline
of N pipeline libraries and is later augmented by creating a new pipeline
with N + 1 libraries.
Without this extension, all group handles must be re-queried as the group
handle is tied to the pipeline, not the library.
Expand Down
31 changes: 31 additions & 0 deletions appendices/VK_KHR_calibrated_timestamps.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright 2018-2023 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_KHR_calibrated_timestamps.adoc[]

=== Other Extension Metadata

*Last Modified Date*::
2023-07-12
*IP Status*::
No known IP claims.
*Contributors*::
- Matthaeus G. Chajdas, AMD
- Alan Harrison, AMD
- Derrick Owens, AMD
- Daniel Rakos, RasterGrid
- Faith Ekstrand, Intel
- Keith Packard, Valve

=== Description

This extension provides an interface to query calibrated timestamps obtained
quasi simultaneously from two time domains.

include::{generated}/interfaces/VK_KHR_calibrated_timestamps.adoc[]

=== Version History

* Revision 1, 2023-07-12 (Daniel Rakos)
** Initial draft.
4 changes: 2 additions & 2 deletions appendices/VK_KHR_draw_indirect_count.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ include::{generated}/meta/{refprefix}VK_KHR_draw_indirect_count.adoc[]

=== Description

This extension is based off the `apiext:VK_AMD_draw_indirect_count`
This extension is based on the `apiext:VK_AMD_draw_indirect_count`
extension.
This extension allows an application to source the number of draws for
indirect drawing calls from a buffer.
Expand All @@ -45,4 +45,4 @@ include::{generated}/interfaces/VK_KHR_draw_indirect_count.adoc[]
=== Version History

* Revision 1, 2017-08-25 (Piers Daniell)
** Initial draft based off VK_AMD_draw_indirect_count
** Initial draft based on VK_AMD_draw_indirect_count
2 changes: 1 addition & 1 deletion appendices/VK_KHR_external_memory.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ transfer any information between the exporting and importing instances and
APIs other than that required to share the data contained in the memory
objects explicitly shared.
As specific examples, data from previously freed memory objects that used
the same underlying physical memory, and data from memory obects using
the same underlying physical memory, and data from memory objects using
adjacent physical memory must not be visible to applications importing an
exported memory object.

Expand Down
31 changes: 31 additions & 0 deletions appendices/VK_KHR_vertex_attribute_divisor.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Copyright 2017-2023 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_KHR_vertex_attribute_divisor.adoc[]

=== Other Extension Metadata

*Last Modified Date*::
2023-09-20
*IP Status*::
No known IP claims.
*Contributors*::
- Shahbaz Youssefi, Google
- Contributors to `apiext:VK_EXT_vertex_attribute_divisor`

=== Description

This extension is based on the `apiext:VK_EXT_vertex_attribute_divisor`
extension.
The only difference is the new property pname:supportsNonZeroFirstInstance,
which indicates support for non-zero values in pname:firstInstance.
This allows the extension to be supported on implementations that have
traditionally only supported OpenGL ES.

include::{generated}/interfaces/VK_KHR_vertex_attribute_divisor.adoc[]

=== Version History

* Revision 1, 2023-09-20 (Shahbaz Youssefi)
** First Version, based on `apiext:VK_EXT_vertex_attribute_divisor`
2 changes: 1 addition & 1 deletion appendices/VK_NV_inherited_viewport_scissor.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ the dynamic viewport and scissor state from a primary command buffer, or a
previous secondary command buffer executed within the same
flink:vkCmdExecuteCommands call.
It addresses a frequent scenario in applications that deal with window
resizing and want to improve utilization of re-usable secondary command
resizing and want to improve utilization of reusable secondary command
buffers.
The functionality is provided through
slink:VkCommandBufferInheritanceViewportScissorInfoNV.
Expand Down
29 changes: 23 additions & 6 deletions appendices/glossary.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1007,7 +1007,7 @@ Invocation Group::

ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
Invocation Repack Instruction::
A ray tracing shader call <<ray-tracing-repack,instruction>> where the
A ray tracing <<ray-tracing-repack,instruction>> where the
implementation may: change the set of invocations that are executing.
endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]

Expand Down Expand Up @@ -1329,14 +1329,31 @@ Pipeline Identifier::
endif::VKSC_VERSION_1_0[]

ifdef::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]
[[glossary-pipeline-trace-ray]]
Pipeline Trace Ray Instruction::
A ray tracing instruction which traces a ray into an acceleration
structure when using ray tracing pipelines.
One of
ifdef::VK_NV_ray_tracing[code:OpTraceNV,]
ifdef::VK_NV_ray_tracing_motion_blur[code:OpTraceRayMotionNV, code:OpTraceMotionNV,]
ifdef::VK_KHR_ray_tracing_pipeline[code:OpTraceRayKHR]
.
One of:

ifdef::VK_NV_ray_tracing[]
* code:OpTraceNV
endif::VK_NV_ray_tracing[]
ifdef::VK_KHR_ray_tracing_pipeline[]
* code:OpTraceRayKHR
endif::VK_KHR_ray_tracing_pipeline[]
ifdef::VK_NV_ray_tracing_motion_blur[]
* code:OpTraceRayMotionNV
ifdef::VK_NV_ray_tracing[]
* code:OpTraceMotionNV
endif::VK_NV_ray_tracing[]
endif::VK_NV_ray_tracing_motion_blur[]
ifdef::VK_NV_ray_tracing_invocation_reorder[]
* code:OpHitObjectTraceRayNV
ifdef::VK_NV_ray_tracing_motion_blur[]
* code:OpHitObjectTraceRayMotionNV
endif::VK_NV_ray_tracing_motion_blur[]
endif::VK_NV_ray_tracing_invocation_reorder[]

endif::VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing[]

pname:pNext Chain::
Expand Down
6 changes: 3 additions & 3 deletions appendices/memorymodel.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ Shader-call-related is an equivalence relation on invocations defined as the
symmetric and transitive closure of:

* A is shader-call-related to B if A is created by an
<<ray-tracing-repack,invocation repack>> instruction executed by B.
<<ray-tracing-shader-call,shader call>> instruction executed by B.


[[shader-call-order]]
Expand All @@ -188,11 +188,11 @@ executed by invocations that are shader-call-related:
* (Program order): If dynamic instance A is program-ordered before B, then
A is shader-call-ordered before B.
* (Shader call entry): If A is a dynamic instance of an
<<ray-tracing-repack,invocation repack>> instruction and B is a dynamic
<<ray-tracing-shader-call,shader call>> instruction and B is a dynamic
instance executed by an invocation that is created by A, then A is
shader-call-ordered before B.
* (Shader call exit): If A is a dynamic instance of an
<<ray-tracing-repack,invocation repack>> instruction, B is the next
<<ray-tracing-shader-call,shader call>> instruction, B is the next
dynamic instance executed by the same invocation, and C is a dynamic
instance executed by an invocation that is created by A, then C is
shader-call-ordered before B.
Expand Down
2 changes: 1 addition & 1 deletion chapters/VK_NV_device_generated_commands/generation.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,7 @@ include::{generated}/validity/protos/vkCmdPreprocessGeneratedCommandsNV.adoc[]

ifdef::VK_NV_device_generated_commands_compute[]
The bound descriptor sets and push constants that will be used with indirect
command generation for the compute piplines must: already be specified at
command generation for the compute pipelines must: already be specified at
the time of preprocessing commands with
flink:vkCmdPreprocessGeneratedCommandsNV.
They must: not change until the execution of indirect commands is submitted
Expand Down
4 changes: 3 additions & 1 deletion chapters/VK_NV_optical_flow/optical_flow.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,18 @@ properties supported, at most pname:pFormatCount values will be written to
pname:pImageFormatProperties, and ename:VK_INCOMPLETE will be returned
instead of ename:VK_SUCCESS, to indicate that not all the available values
were returned.

Before creating an image to be used as a optical flow frame, obtain the
supported image creation parameters by querying with
flink:vkGetPhysicalDeviceFormatProperties2 and
flink:vkGetPhysicalDeviceImageFormatProperties2 using one of the reported
formats and adding slink:VkOpticalFlowImageFormatInfoNV to the pname:pNext
chain of slink:VkPhysicalDeviceImageFormatInfo2.

When querying the parameters with
flink:vkGetPhysicalDeviceImageFormatProperties2 for images used for optical
flow operations, the slink:VkOpticalFlowImageFormatInfoNV::pname:usage field
should contain one or more of the bits defined in
must: contain one or more of the bits defined in
elink:VkOpticalFlowUsageFlagBitsNV.

include::{generated}/validity/protos/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.adoc[]
Expand Down
24 changes: 16 additions & 8 deletions chapters/capabilities.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ endif::VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities[]
ifdef::VK_VERSION_1_1,VK_KHR_external_fence_capabilities[]
* <<capabilities-fence, Optional Fence Capabilities>>
endif::VK_VERSION_1_1,VK_KHR_external_fence_capabilities[]
ifdef::VK_EXT_calibrated_timestamps[]
ifdef::VK_KHR_calibrated_timestamps,VK_EXT_calibrated_timestamps[]
* <<features-timestamp-calibration, Timestamp Calibration Capabilities>>
endif::VK_EXT_calibrated_timestamps[]
endif::VK_KHR_calibrated_timestamps,VK_EXT_calibrated_timestamps[]


[[capabilities-image]]
Expand Down Expand Up @@ -1756,25 +1756,33 @@ zero or more elink:VkExternalFenceFeatureFlagBits.
endif::VK_VERSION_1_1,VK_KHR_external_fence_capabilities[]


ifdef::VK_EXT_calibrated_timestamps[]
ifdef::VK_KHR_calibrated_timestamps,VK_EXT_calibrated_timestamps[]
[[features-timestamp-calibration]]
== Timestamp Calibration Capabilities

[open,refpage='vkGetPhysicalDeviceCalibrateableTimeDomainsEXT',desc='Query calibrateable time domains',type='protos']
[open,refpage='vkGetPhysicalDeviceCalibrateableTimeDomainsKHR',desc='Query calibrateable time domains',type='protos',alias='vkGetPhysicalDeviceCalibrateableTimeDomainsEXT']
--
:refpage: vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
:refpage: vkGetPhysicalDeviceCalibrateableTimeDomainsKHR

To query the set of time domains for which a physical device supports
timestamp calibration, call:

ifdef::VK_KHR_calibrated_timestamps[]
include::{generated}/api/protos/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.adoc[]
endif::VK_KHR_calibrated_timestamps[]

ifdef::VK_KHR_calibrated_timestamps+VK_EXT_calibrated_timestamps[or the equivalent command]

ifdef::VK_EXT_calibrated_timestamps[]
include::{generated}/api/protos/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.adoc[]
endif::VK_EXT_calibrated_timestamps[]

* pname:physicalDevice is the physical device from which to query the set
of calibrateable time domains.
* pname:pTimeDomainCount is a pointer to an integer related to the number
of calibrateable time domains available or queried, as described below.
* pname:pTimeDomains is either `NULL` or a pointer to an array of
elink:VkTimeDomainEXT values, indicating the supported calibrateable
elink:VkTimeDomainKHR values, indicating the supported calibrateable
time domains.

If pname:pTimeDomains is `NULL`, then the number of calibrateable time
Expand All @@ -1792,9 +1800,9 @@ time domains were returned.

include::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[]

include::{generated}/validity/protos/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.adoc[]
include::{generated}/validity/protos/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.adoc[]
--
endif::VK_EXT_calibrated_timestamps[]
endif::VK_KHR_calibrated_timestamps,VK_EXT_calibrated_timestamps[]

ifdef::VK_KHR_object_refresh[]
include::{chapters}/VK_KHR_object_refresh/capabilities.adoc[]
Expand Down
9 changes: 9 additions & 0 deletions chapters/commonvalidity/blit_image_common.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ ifdef::VK_KHR_shared_presentable_image[]
pname:srcImageLayout must: be ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or
ename:VK_IMAGE_LAYOUT_GENERAL
endif::VK_KHR_shared_presentable_image[]
* [[VUID-{refpage}-srcImage-09459]]
If pname:srcImage and pname:dstImage are the same, and an elements of
pname:pRegions contains the pname:srcSubresource and
pname:dstSubresource with matching pname:mipLevel and overlapping array
layers, then the pname:srcImageLayout and pname:dstImageLayout must: be
ename:VK_IMAGE_LAYOUT_GENERAL
ifdef::VK_KHR_shared_presentable_image[]
or ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
endif::VK_KHR_shared_presentable_image[]
* [[VUID-{refpage}-dstImage-02000]]
The <<resources-image-format-features,format features>> of
Expand Down
9 changes: 9 additions & 0 deletions chapters/commonvalidity/copy_image_common.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@ ifdef::VK_KHR_shared_presentable_image[]
endif::VK_KHR_shared_presentable_image[]
ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_GENERAL
* [[VUID-{refpage}-srcImage-09460]]
If pname:srcImage and pname:dstImage are the same, and any elements of
pname:pRegions contains the pname:srcSubresource and
pname:dstSubresource with matching pname:mipLevel and overlapping array
layers, then the pname:srcImageLayout and pname:dstImageLayout must: be
ename:VK_IMAGE_LAYOUT_GENERAL
ifdef::VK_KHR_shared_presentable_image[]
or ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
endif::VK_KHR_shared_presentable_image[]
ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[]
* [[VUID-{refpage}-dstImage-01996]]
The <<resources-image-format-features,format features>> of
Expand Down
Loading

0 comments on commit f8d7612

Please sign in to comment.