Skip to content

Commit

Permalink
Change log for August 16, 2024 Vulkan 1.3.293 spec update:
Browse files Browse the repository at this point in the history
Public Issues

  * Fix reference to VkPhysicalDeviceLimits::maxMemoryAllocationCount in
    VkMemoryAllocateInfo (public issue 2398).
  * Improve vkWriteMicromapsPropertiesEXT VUs 07573 and 07574, and remove
    incomplete VU 07575 (public issue 2399).
  * Fix markup in vkGetPhysicalDeviceDisplayPropertiesKHR so
    VkDisplayPropertiesKHR is formatted as a link (public issue 2401).
  * Merge multiple equivalent require blocks in XML and add a script to
    detect them (public pull request 2404).

Internal Issues

  * Refactor and clarify a NOTE in VkSparseMemoryBind (internal issue 3938).
  * Require VK_EXT_sample_locations for vkCmdSetSampleLocationsEXT in common
    draw VU 06666 (internal issue 3944).
  * Update `scripts/extdependency.py` to compute version dependencies, and
    use this in the `makeSpec` script instead of a hardcoded list of version
    tokens required for the requested API version (internal MR 6823).
  * Add glossary entries for basic video coding block types (internal merge
    request 6765).
  * Add depthBoundsTestEnable language to the <<features-depthBounds,
    depthBounds>> feature description (internal merge request 6806).
  * Clarify VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT to better explain
    exactly what it is disabling (internal merge request 6812).
  * Fix VkLayerSettingEXT spec language and VU for VK_EXT_layer_settings
    (internal merge request 6817).
  * Use consistent wording to describe features including removal of
    un-needed "`set to`" when referring to a value that is not being set
    (internal merge request 6831).

New Extensions

  * VK_NV_command_buffer_inheritance
  • Loading branch information
oddhack committed Aug 16, 2024
1 parent 8f60e57 commit 59dc3a3
Show file tree
Hide file tree
Showing 27 changed files with 449 additions and 99 deletions.
12 changes: 6 additions & 6 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
# We now refer to the container by its SHA instead of the name, to prevent
# caching problems when updating the image.
# container: khronosgroup/docker-images:asciidoctor-spec.20240726
container: khronosgroup/docker-images@sha256:5e021da240f12121f064d2135e06320c021ac231c9ae8abbf6205b6130deb58b
container: khronosgroup/docker-images@sha256:089687083ceb36483a3917389e4278718ab19c594099634f5dd80e22540c960f

steps:
- uses: actions/checkout@v4
Expand All @@ -32,7 +32,7 @@ jobs:
terminology-check:
name: Run various checker scripts on the spec and XML sources
runs-on: ubuntu-latest
container: khronosgroup/docker-images@sha256:5e021da240f12121f064d2135e06320c021ac231c9ae8abbf6205b6130deb58b
container: khronosgroup/docker-images@sha256:089687083ceb36483a3917389e4278718ab19c594099634f5dd80e22540c960f

steps:
- uses: actions/checkout@v4
Expand All @@ -48,7 +48,7 @@ jobs:
spec-toolchain:
name: Build a test spec and check against expectation, to make sure the spec toolchain works as expected
runs-on: ubuntu-latest
container: khronosgroup/docker-images@sha256:5e021da240f12121f064d2135e06320c021ac231c9ae8abbf6205b6130deb58b
container: khronosgroup/docker-images@sha256:089687083ceb36483a3917389e4278718ab19c594099634f5dd80e22540c960f

steps:
- uses: actions/checkout@v4
Expand All @@ -57,7 +57,7 @@ jobs:
spec-core:
name: Build the core-only spec, to try and catch ifdef errors in extension markup
runs-on: ubuntu-latest
container: khronosgroup/docker-images@sha256:5e021da240f12121f064d2135e06320c021ac231c9ae8abbf6205b6130deb58b
container: khronosgroup/docker-images@sha256:089687083ceb36483a3917389e4278718ab19c594099634f5dd80e22540c960f

steps:
- uses: actions/checkout@v4
Expand All @@ -66,7 +66,7 @@ jobs:
spec-generate:
name: Build the vulkan specification and generate any associated files (such as vulkan.h)
runs-on: ubuntu-latest
container: khronosgroup/docker-images@sha256:5e021da240f12121f064d2135e06320c021ac231c9ae8abbf6205b6130deb58b
container: khronosgroup/docker-images@sha256:089687083ceb36483a3917389e4278718ab19c594099634f5dd80e22540c960f

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -194,7 +194,7 @@ jobs:
cts-framework-tests:
name: Run Vulkan CTS framework tests to validate against XML changes
runs-on: ubuntu-latest
container: khronosgroup/docker-images@sha256:5e021da240f12121f064d2135e06320c021ac231c9ae8abbf6205b6130deb58b
container: khronosgroup/docker-images@sha256:089687083ceb36483a3917389e4278718ab19c594099634f5dd80e22540c960f
continue-on-error: true

steps:
Expand Down
4 changes: 2 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
# All stages use the same Docker image, so there are no prerequisites
# Refer to the container by its SHA instead of the name, to prevent
# caching problems when updating the image.
# image: khronosgroup/docker-images:asciidoctor-spec.20240726
image: khronosgroup/docker-images@sha256:5e021da240f12121f064d2135e06320c021ac231c9ae8abbf6205b6130deb58b
# image: khronosgroup/docker-images:asciidoctor-spec.20240727
image: khronosgroup/docker-images@sha256:089687083ceb36483a3917389e4278718ab19c594099634f5dd80e22540c960f

# Specify which gitlab runner to use
default:
Expand Down
78 changes: 78 additions & 0 deletions ChangeLog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,84 @@ appears frequently in the change log.

'''

Change log for August 16, 2024 Vulkan 1.3.293 spec update:

Public Issues

* Fix reference to VkPhysicalDeviceLimits::maxMemoryAllocationCount in
VkMemoryAllocateInfo (public issue 2398).
* Improve vkWriteMicromapsPropertiesEXT VUs 07573 and 07574, and remove
incomplete VU 07575 (public issue 2399).
* Fix markup in vkGetPhysicalDeviceDisplayPropertiesKHR so
VkDisplayPropertiesKHR is formatted as a link (public issue 2401).
* Merge multiple equivalent require blocks in XML and add a script to
detect them (public pull request 2404).

Internal Issues

* Refactor and clarify a NOTE in VkSparseMemoryBind (internal issue 3938).
* Require VK_EXT_sample_locations for vkCmdSetSampleLocationsEXT in common
draw VU 06666 (internal issue 3944).
* Update `scripts/extdependency.py` to compute version dependencies, and
use this in the `makeSpec` script instead of a hardcoded list of version
tokens required for the requested API version (internal MR 6823).
* Add glossary entries for basic video coding block types (internal merge
request 6765).
* Add depthBoundsTestEnable language to the <<features-depthBounds,
depthBounds>> feature description (internal merge request 6806).
* Clarify VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT to better explain
exactly what it is disabling (internal merge request 6812).
* Fix VkLayerSettingEXT spec language and VU for VK_EXT_layer_settings
(internal merge request 6817).
* Use consistent wording to describe features including removal of
un-needed "`set to`" when referring to a value that is not being set
(internal merge request 6831).

New Extensions

* VK_NV_command_buffer_inheritance

'''

Change log for August 16, 2024 Vulkan 1.3.293 spec update:

Public Issues

* Fix reference to VkPhysicalDeviceLimits::maxMemoryAllocationCount in
VkMemoryAllocateInfo (public issue 2398).
* Improve vkWriteMicromapsPropertiesEXT VUs 07573 and 07574, and remove
incomplete VU 07575 (public issue 2399).
* Fix markup in vkGetPhysicalDeviceDisplayPropertiesKHR so
VkDisplayPropertiesKHR is formatted as a link (public issue 2401).
* Merge multiple equivalent require blocks in XML and add a script to
detect them (public pull request 2404).

Internal Issues

* Refactor and clarify a NOTE in VkSparseMemoryBind (internal issue 3938).
* Require VK_EXT_sample_locations for vkCmdSetSampleLocationsEXT in common
draw VU 06666 (internal issue 3944).
* Update `scripts/extdependency.py` to compute version dependencies, and
use this in the `makeSpec` script instead of a hardcoded list of version
tokens required for the requested API version (internal MR 6823).
* Add glossary entries for basic video coding block types (internal merge
request 6765).
* Add depthBoundsTestEnable language to the <<features-depthBounds,
depthBounds>> feature description (internal merge request 6806).
* Clarify VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT to better explain
exactly what it is disabling (internal merge request 6812).
* Fix VkLayerSettingEXT spec language and VU for VK_EXT_layer_settings
(internal merge request 6817).
* Use consistent wording to describe features including removal of
un-needed "`set to`" when referring to a value that is not being set
(internal merge request 6831).

New Extensions

* VK_NV_command_buffer_inheritance

'''

Change log for July 26, 2024 Vulkan 1.3.292 spec update:

Internal Issues
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output

NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 292
PATCHVERSION = 293
BASEOPTS =

ifneq (,$(findstring VKSC_VERSION_1_0,$(VERSIONS)))
Expand Down
20 changes: 11 additions & 9 deletions appendices/VK_EXT_layer_settings.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,19 @@ flink:vkCreateInstance.
The structure contains an array of slink:VkLayerSettingEXT structure values
that configure specific features of layers.

[NOTE]
====
The `apiext:VK_EXT_layer_settings` extension subsumes all the functionality
provided in the `apiext:VK_EXT_validation_flags` extension and the
`apiext:VK_EXT_validation_features` extension.
====

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

=== Example

`VK_EXT_layer_settings` is implemented by the Vulkan Profiles layer.
One example usage of `VK_EXT_layer_settings` is as implemented by the Vulkan
Profiles layer.

It allows the profiles layer tests used by the profiles layer C.I.
to programmatically configure the layer for each test without affecting the
Expand Down Expand Up @@ -85,14 +95,6 @@ inst_create_info.pNext = &layer_settings_create_info;
vkCreateInstance(&inst_create_info, nullptr, &_instances);
----

[NOTE]
====
The `apiext:VK_EXT_layer_settings` extension subsumes all the functionality
provided in the `apiext:VK_EXT_validation_flags` extension and the
`apiext:VK_EXT_validation_features` extension.
====

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

=== Issues

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

include::{generated}/meta/{refprefix}VK_NV_command_buffer_inheritance.adoc[]
=== Other Extension Metadata

*Last Modified Date*::
2024-02-15
*IP Status*::
No known IP claims.
*Contributors*::
- Piers Daniell, NVIDIA
- Daniel Story, Nintendo

=== Description

This extension allows applications to take advantage of the graphics and
compute state that remains valid in the queue between executions of
submitted command buffers.
This works across both primary and secondary command buffers.

The state inherited includes the previously bound pipeline state, previously
bound shader objects, previously bound vertex and index buffers, previously
bound descriptor sets and push constants, and all previously set dynamic
state.

This extension relaxes the requirement that all that state needs to be bound
and set after begin command buffer and before the next draw or dispatch.

By not having to set state that has been inherited applications can save
both CPU and GPU cycles by not having to set state redundantly, and also
have improved flexibility when reusing secondary command buffers.

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

=== Issues

1) How can the validation layer know when state is valid at draw or dispatch
time if it is inherited at execution time?

*RESOLVED*: Validation of invalid state at draw and dispatch time cannot be
done while recording those commands.
Instead the validation layer will need to keep track of any unset state when
draw and dispatch commands are recorded, but not report an error at that
time.
It should also keep track of what state is valid at the end of each recorded
command buffer.
When secondary command buffer execution is recorded the validation layer can
update its unset state tracking for that command buffer, and also for draw
and dispatch commands recorded after execution of the secondary as they will
inherit state from the executed secondary.
This can be done recursively so every recorded primary command buffer has a
final tally of any unset state used at draw and dispatch time.
Finally when the primary is submitted to the queue the validation layer will
know the previous primaries submitted to the queue and will know if there is
any unset state used and can report the error then.

=== Version History

* Revision 1, 2024-02-15 (Lujin Wang)
** Internal revisions
39 changes: 39 additions & 0 deletions appendices/glossary.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,19 @@ Clip Distance::
Clip Volume::
The intersection of the view volume with all clip half-spaces.

ifdef::VK_KHR_video_queue[]
Coding Block (Video)::
An element of a video picture, comprising a rectangular block of texel
values that are coded as a single unit in video coding.
Video coding blocks have a corresponding coding block size (width and
height) defining the dimensions of these elements in units of texels.
These dimensions are usually codec-specific and a single video
compression standard may: support more than one coding block type and
size.
Video compression standards may: use multiple coding block types to
organize coding blocks of different kinds and sizes into hierarchies.
endif::VK_KHR_video_queue[]

Color Attachment::
A subpass attachment point, or image view, that is the target of
fragment color outputs and blending.
Expand Down Expand Up @@ -1016,11 +1029,28 @@ Instance (Resource)::
Each such replicated resource is an instance of the resource.
endif::VK_VERSION_1_1,VK_KHR_device_group[]

ifdef::VK_KHR_video_queue[]
Inter Block (Video)::
A video coding block that uses inter prediction.

Inter Prediction (Video)::
Sample prediction derived from reference picture samples or metadata.
endif::VK_KHR_video_queue[]

Internal Synchronization::
A type of synchronization required: of the implementation, where
parameters not defined to be externally synchronized may: require
internal mutexing to avoid multithreaded race conditions.

ifdef::VK_KHR_video_queue[]
Intra Block (Video)::
A video coding block that only uses intra prediction.

Intra Prediction (Video)::
Sample prediction that is not derived from reference picture samples or
metadata.
endif::VK_KHR_video_queue[]

Invocation (Shader)::
A single execution of an entry point in a SPIR-V module.
For example, a single vertex's execution of a vertex shader or a single
Expand Down Expand Up @@ -1303,6 +1333,15 @@ Physical-Device-Level Object::
Physical device objects.
For example, slink:VkPhysicalDevice is a physical-device-level object.

ifdef::VK_KHR_video_queue[]
Picture Partition (Video)::
Collective term that refers to a subregion of a video picture resource
that may: be decoded or encoded independently according to the
partitioning scheme defined in the corresponding video compression
standard.
Picture partitions may: be non-rectangular.
endif::VK_KHR_video_queue[]

Pipeline::
An object controlling how graphics or compute work is executed on the
device.
Expand Down
19 changes: 14 additions & 5 deletions chapters/VK_EXT_layer_settings.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ include::{generated}/api/structs/VkLayerSettingsCreateInfoEXT.adoc[]
structure.
* pname:settingCount is the number of settings to configure.
* pname:pSettings is a pointer to an array of pname:settingCount
slink:VkLayerSettingEXT values specifying the setting to be configured.
slink:VkLayerSettingEXT values specifying the settings to be configured.

include::{generated}/validity/structs/VkLayerSettingsCreateInfoEXT.adoc[]
--
Expand All @@ -33,17 +33,26 @@ include::{generated}/api/structs/VkLayerSettingEXT.adoc[]
the layer to configure the setting from.
* pname:pSettingName is a pointer to a null-terminated UTF-8 string naming
the setting to configure.
Unknown pname:pSettingName by the layer are ignored.
Values of pname:pSettingName that are unknown to the layer are ignored.
* pname:type is a elink:VkLayerSettingTypeEXT value specifying the type of
the pname:pValues values.
* pname:count is the number of values used to configure the layer setting.
* pname:pValues is a pointer to an array of pname:count values of the type
indicated by pname:type to configure the layer setting.
* pname:valueCount is the number of values used to configure the layer
setting.
* pname:pValues is a pointer to an array of pname:valueCount values of the
type indicated by pname:type to configure the layer setting.

When multiple slink:VkLayerSettingsCreateInfoEXT structures are chained and
the same pname:pSettingName is referenced for the same pname:pLayerName, the
value of the first reference of the layer setting is used.

.Valid Usage
****
* [[VUID-VkLayerSettingEXT-valueCount-10070]]
If pname:valueCount is not `0`, pname:pValues must: be a valid pointer
to an array of pname:valueCount values of the type indicated by
pname:type
****

include::{generated}/validity/structs/VkLayerSettingEXT.adoc[]
--

Expand Down
16 changes: 8 additions & 8 deletions chapters/VK_EXT_opacity_micromap/micromaps.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1068,16 +1068,16 @@ flink:vkCmdWriteMicromapsPropertiesEXT but is executed by the host.
.Valid Usage
****
include::{chapters}/commonvalidity/write_micromap_properties_common.adoc[]
* [[VUID-vkWriteMicromapsPropertiesEXT-queryType-07573]]
* [[VUID-vkWriteMicromapsPropertiesEXT-queryType-10071]]
If pname:queryType is
ename:VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT, then pname:stride
must: be a multiple of the size of basetype:VkDeviceSize
* [[VUID-vkWriteMicromapsPropertiesEXT-queryType-07574]]
If pname:queryType is
ename:VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT, then pname:pData
must: point to a basetype:VkDeviceSize
* [[VUID-vkWriteMicromapsPropertiesEXT-queryType-07575]]
ename:VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT or
ename:VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT then pname:stride must:
be a multiple of the size of basetype:VkDeviceSize
* [[VUID-vkWriteMicromapsPropertiesEXT-queryType-10072]]
If pname:queryType is
ename:VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT or
ename:VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT then pname:pData must:
point to a basetype:VkDeviceSize
* [[VUID-vkWriteMicromapsPropertiesEXT-dataSize-07576]]
pname:dataSize must: be greater than or equal to
[eq]#pname:micromapCount*pname:stride#
Expand Down
Loading

0 comments on commit 59dc3a3

Please sign in to comment.