Skip to content

Commit

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

  * Add explicit <require> tag to XML for
    VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR in VK_KHR_pipeline_binary (public
    pull request 2423).
  * Minor wording change to avoid ambiguity of
    <<synchronization-semaphores-waiting, "`the act of waiting`">> (public
    pull request 2418).

Internal Issues

  * Deprecate VK_COLOR_SPACE_DOLBYVISION_EXT from
    VK_EXT_swapchain_colorspace and add a NOTE to VkColorSpaceKHR explaining
    why (internal issue 3884).
  * Fix markup in registry schema document to move video tag descriptions to
    the proper place and avoid mis-grouping of other tag descriptions
    (internal issue 3978).
  * Remove structextends="VkPipelineCreateInfoKHR" XML attributes from
    VkCreate*PipelineCreateInfo structs that were erroneously added with
    VK_KHR_pipeline_binaries (internal issue 3979).
  * Add vkCreateRayTracingPipelinesKHR VU and update VkPipelineCreateInfoKHR
    VU 09604 to disallow pipeline binaries with VK_NV_ray_tracing (internal
    merge request 6849).

New Extensions

  * VK_KHR_compute_shader_derivatives
  • Loading branch information
oddhack committed Aug 30, 2024
1 parent ccd0659 commit 8e435de
Show file tree
Hide file tree
Showing 15 changed files with 421 additions and 125 deletions.
32 changes: 32 additions & 0 deletions ChangeLog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,38 @@ appears frequently in the change log.

'''

Change log for August 30, 2024 Vulkan 1.3.295 spec update:

Public Issues

* Add explicit <require> tag to XML for
VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR in VK_KHR_pipeline_binary (public
pull request 2423).
* Minor wording change to avoid ambiguity of
<<synchronization-semaphores-waiting, "`the act of waiting`">> (public
pull request 2418).

Internal Issues

* Deprecate VK_COLOR_SPACE_DOLBYVISION_EXT from
VK_EXT_swapchain_colorspace and add a NOTE to VkColorSpaceKHR explaining
why (internal issue 3884).
* Fix markup in registry schema document to move video tag descriptions to
the proper place and avoid mis-grouping of other tag descriptions
(internal issue 3978).
* Remove structextends="VkPipelineCreateInfoKHR" XML attributes from
VkCreate*PipelineCreateInfo structs that were erroneously added with
VK_KHR_pipeline_binaries (internal issue 3979).
* Add vkCreateRayTracingPipelinesKHR VU and update VkPipelineCreateInfoKHR
VU 09604 to disallow pipeline binaries with VK_NV_ray_tracing (internal
merge request 6849).

New Extensions

* VK_KHR_compute_shader_derivatives

'''

Change log for August 23, 2024 Vulkan 1.3.294 spec update:

Public 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 = 294
PATCHVERSION = 295
BASEOPTS =

ifneq (,$(findstring VKSC_VERSION_1_0,$(VERSIONS)))
Expand Down
71 changes: 71 additions & 0 deletions appendices/VK_KHR_compute_shader_derivatives.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
// Copyright 2020-2024 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
2024-06-26
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- This extension requires
{spirv}/KHR/SPV_KHR_compute_shader_derivatives.html[`SPV_KHR_compute_shader_derivatives`]
- This extension provides API support for
{GLSLregistry}/khr/GLSL_KHR_compute_shader_derivatives.txt[`GL_KHR_compute_shader_derivatives`]
*Contributors*::
- Jean-Noe Morissette, Epic Games
- Daniel Koch, NVIDIA
- Pat Brown, NVIDIA
- Stu Smith, AMD
- Jan-Harald Fredriksen, Arm
- Tobias Hector, AMD
- Ralph Potter, Samsung
- Pan Gao, Huawei
- Samuel (Sheng-Wen) Huang, MediaTek
- Graeme Leese, Broadcom
- Hans-Kristian Arntzen, Valve
- Matthew Netsh, Qualcomm

=== Description

This extension adds Vulkan support for the
{spirv}/KHR/SPV_KHR_compute_shader_derivatives.html[`SPV_KHR_compute_shader_derivatives`]
SPIR-V extension.

The SPIR-V extension provides two new execution modes, both of which allow
execution models with defined workgroups to use built-ins that evaluate
derivatives explicitly or implicitly.
Derivatives will be computed via differencing over a 2x2 group of shader
invocations.
The code:DerivativeGroupQuadsKHR execution mode assembles shader invocations
into 2x2 groups, where each group has x and y coordinates of the local
invocation ID of the form (2m+{0,1}, 2n+{0,1}).
The code:DerivativeGroupLinearKHR execution mode assembles shader
invocations into 2x2 groups, where each group has local invocation index
values of the form 4m+{0,1,2,3}.

The new execution modes are supported in compute shaders and optionally (see
<<limits-meshAndTaskShaderDerivatives, meshAndTaskShaderDerivatives>>) in
mesh and task shaders.

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

=== New SPIR-V Capability

* <<spirvenv-capabilities-table-ComputeDerivativeGroupQuadsKHR,
code:ComputeDerivativeGroupQuadsKHR>>
* <<spirvenv-capabilities-table-ComputeDerivativeGroupLinearKHR,
code:ComputeDerivativeGroupLinearKHR>>

=== Examples

None.

=== Version History

* Revision 1, 2023-02-27 (Jean-Noe Morissette)
** Initial draft
** Add properties and clarify mesh and task support (Daniel Koch)
12 changes: 6 additions & 6 deletions appendices/glossary.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -412,12 +412,12 @@ Depth/Stencil Resolve Attachment::
endif::VK_VERSION_1_2,VK_KHR_depth_stencil_resolve[]

Derivative Group::
A set of fragment
ifdef::VK_NV_compute_shader_derivatives[]
or compute
endif::VK_NV_compute_shader_derivatives[]
shader invocations that cooperate to compute derivatives, including
implicit derivatives for sampled image operations.
A set of
ifdef::VK_KHR_compute_shader_derivatives,VK_NV_compute_shader_derivatives[compute,]
ifdef::VK_KHR_compute_shader_derivatives[mesh, task,]
ifdef::VK_KHR_compute_shader_derivatives,VK_NV_compute_shader_derivatives[or]
fragment shader invocations that cooperate to compute derivatives,
including implicit derivatives for sampled image operations.

Descriptor::
Information about a resource or resource view written into a descriptor
Expand Down
17 changes: 16 additions & 1 deletion appendices/spirvenv.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,14 @@ or knowledge of runtime information, such as enabled features.
For compute shaders using the code:DerivativeGroupLinearNV execution
mode, the product of the dimensions of the local workgroup size must: be
a multiple of four
* [[VUID-{refpage}-DerivativeGroupQuadsKHR-10151]]
For compute, mesh, or task shaders using the
code:DerivativeGroupQuadsKHR execution mode, the first two dimensions of
the local workgroup size must: be a multiple of two
* [[VUID-{refpage}-DerivativeGroupLinearKHR-10152]]
For compute, mesh, or task shaders using the
code:DerivativeGroupLinearKHR execution mode, the product of the
dimensions of the local workgroup size must: be a multiple of four
* [[VUID-{refpage}-OpGroupNonUniformBallotBitCount-04685]]
If code:OpGroupNonUniformBallotBitCount is used, the group operation
must: be limited to code:Reduce, code:InclusiveScan, or
Expand Down Expand Up @@ -980,7 +988,6 @@ ifdef::VK_VERSION_1_1[]
buffer, the storage texel buffer through which that memory is accessed
must: be dynamically uniform within the invocation group
endif::VK_VERSION_1_1[]
* [[VUID-{refpage}-NonUniform-06274]]
* [[VUID-{refpage}-None-10148]]
If an instruction accesses memory through any resource,
ifdef::VK_VERSION_1_1[]
Expand Down Expand Up @@ -2255,6 +2262,14 @@ endif::VK_KHR_shader_subgroup_rotate[]
If <<limits-protectedNoFault, pname:protectedNoFault>> is not supported,
the {StorageClass} of the code:PhysicalStorageBuffer must: not be used
if the buffer being accessed is <<memory-protected-memory,protected>>
ifdef::VK_KHR_compute_shader_derivatives[]
* [[VUID-{refpage}-meshAndTaskShaderDerivatives-10153]]
If <<limits-meshAndTaskShaderDerivatives,
pname:meshAndTaskShaderDerivatives>> is ename:VK_FALSE, the
code:DerivativeGroupLinearKHR and code:DerivativeGroupQuadsKHR execution
modes must: not be used in the code:MeshEXT, code:MeshNV, code:TaskEXT,
or code:TaskNV {ExecutionModel}
endif::VK_KHR_compute_shader_derivatives[]
****
--

Expand Down
22 changes: 16 additions & 6 deletions chapters/VK_KHR_surface/wsi.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -1302,11 +1302,6 @@ ifdef::VK_EXT_swapchain_colorspace[]
* ename:VK_COLOR_SPACE_HDR10_ST2084_EXT specifies support for the images
in HDR10 (BT2020) color space, encoded according to SMPTE ST2084
Perceptual Quantizer (PQ) specification.
* ename:VK_COLOR_SPACE_DOLBYVISION_EXT specifies support for the images in
Dolby Vision (BT2020) color space, encoded according to SMPTE ST2084
Perceptual Quantizer (PQ) specification.
The presentation engine is expected to use Dolby's proprietary
techniques to display the image.
* ename:VK_COLOR_SPACE_HDR10_HLG_EXT specifies support for the images in
HDR10 (BT2020) color space, encoded according to the Hybrid Log Gamma
(HLG) specification.
Expand All @@ -1332,6 +1327,8 @@ ifdef::hidden[]
* elink:VkColorSpaceKHR (deprecated aliases)
** etext:VK_COLORSPACE_SRGB_NONLINEAR_KHR <<SCID-8>>
** etext:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT <<SCID-8>>
* elink:VkColorSpaceKHR (not well-defined)
** ename:VK_COLOR_SPACE_DOLBYVISION_EXT <<SCID-8>>
// end::scremoved[]
endif::hidden[]
endif::VKSC_VERSION_1_0[]
Expand Down Expand Up @@ -1361,6 +1358,20 @@ endif::VKSC_VERSION_1_0[]

[NOTE]
====
In older versions of the `apiext:VK_EXT_swapchain_colorspace` extension,
ename:VK_COLOR_SPACE_DOLBYVISION_EXT was exposed.
The intent was to indicate the presentation engine shall decode an image
using the SMPTE ST 2084 Perceptual Quantizer (PQ) EOTF, and then apply a
proprietary OOTF to process the image.
However, Dolby Vision profile 8.4 describes an encoding using the Hybrid Log
Gamma (HLG) OETF, and there is no swapchain extension for signaling Dolby
Vision metadata to be used by a proprietary OOTF.
This enum is deprecated but is maintained for backwards compatibility.
====

[NOTE]
.Note
====
For a traditional "`Linear`" or non-gamma transfer function color space use
ename:VK_COLOR_SPACE_PASS_THROUGH_EXT.
====
Expand Down Expand Up @@ -1392,7 +1403,6 @@ the following color spaces:
| sRGB | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | sRGB
| extended sRGB | 0.640, 0.330 | 0.300, 0.600 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | scRGB
| HDR10_ST2084 | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084 PQ
| DOLBYVISION | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | ST2084 PQ
| HDR10_HLG | 0.708, 0.292 | 0.170, 0.797 | 0.131, 0.046 | 0.3127, 0.3290 (D65) | HLG
| Adobe RGB | 0.640, 0.330 | 0.210, 0.710 | 0.150, 0.060 | 0.3127, 0.3290 (D65) | Adobe RGB
|====
Expand Down
27 changes: 19 additions & 8 deletions chapters/features.adoc
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -2525,13 +2525,19 @@ include::{generated}/validity/structs/VkPhysicalDeviceCornerSampledImageFeatures
--
endif::VK_NV_corner_sampled_image[]

ifdef::VK_NV_compute_shader_derivatives[]
[open,refpage='VkPhysicalDeviceComputeShaderDerivativesFeaturesNV',desc='Structure describing compute shader derivative features that can be supported by an implementation',type='structs']
ifdef::VK_KHR_compute_shader_derivatives,VK_NV_compute_shader_derivatives[]
[open,refpage='VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR',desc='Structure describing compute shader derivative features that can be supported by an implementation',type='structs',alias="VkPhysicalDeviceComputeShaderDerivativesFeaturesNV"]
--
The sname:VkPhysicalDeviceComputeShaderDerivativesFeaturesNV structure is
The sname:VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR structure is
defined as:

include::{generated}/api/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.adoc[]

ifdef::VK_NV_compute_shader_derivatives[]
or the equivalent

include::{generated}/api/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.adoc[]
endif::VK_NV_compute_shader_derivatives[]

This structure describes the following features:

Expand All @@ -2540,19 +2546,19 @@ This structure describes the following features:
structure.
* [[features-computeDerivativeGroupQuads]]
pname:computeDerivativeGroupQuads indicates that the implementation
supports the code:ComputeDerivativeGroupQuadsNV SPIR-V capability.
supports the code:ComputeDerivativeGroupQuadsKHR SPIR-V capability.
* [[features-computeDerivativeGroupLinear]]
pname:computeDerivativeGroupLinear indicates that the implementation
supports the code:ComputeDerivativeGroupLinearNV SPIR-V capability.
supports the code:ComputeDerivativeGroupLinearKHR SPIR-V capability.

See <<shaders-scope-quad, Quad shader scope>> for more information.

:refpage: VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures.
:refpage: VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.
include::{chapters}/features.adoc[tag=features]

include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesNV.adoc[]
include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.adoc[]
--
endif::VK_NV_compute_shader_derivatives[]
endif::VK_KHR_compute_shader_derivatives,VK_NV_compute_shader_derivatives[]

ifdef::VK_KHR_fragment_shader_barycentric[]
[open,refpage='VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR',desc='Structure describing barycentric support in fragment shaders that can be supported by an implementation',type='structs']
Expand Down Expand Up @@ -8113,6 +8119,11 @@ ifdef::VK_KHR_shader_float16_int8[]
<<features-shaderInt8,pname:shaderInt8>> if
`apiext:VK_KHR_shader_float16_int8` is supported.
endif::VK_KHR_shader_float16_int8[]
ifdef::VK_KHR_compute_shader_derivatives[]
* <<features-computeDerivativeGroupLinear,
pname:computeDerivativeGroupLinear>>, if the
`apiext:VK_KHR_compute_shader_derivatives` extension is supported.
endif::VK_KHR_compute_shader_derivatives[]

ifdef::VKSC_VERSION_1_0[]
ifdef::hidden[]
Expand Down
24 changes: 24 additions & 0 deletions chapters/limits.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4866,6 +4866,30 @@ include::{generated}/validity/structs/VkPhysicalDeviceRenderPassStripedPropertie

endif::VK_ARM_render_pass_striped[]

ifdef::VK_KHR_compute_shader_derivatives[]
[open,refpage='VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR',desc='Structure describing compute shader derivative operations supported by an implementation',type='structs']
--
The sname:VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR structure is
defined as:

include::{generated}/api/structs/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.adoc[]

The members of the
sname:VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR structure
describe the following:

* [[limits-meshAndTaskShaderDerivatives]]
pname:meshAndTaskShaderDerivatives indicates whether the mesh and task
shader stages support the code:ComputeDerivativeGroupQuadsKHR and
code:ComputeDerivativeGroupLinearKHR SPIR-V capabilities.

:refpage: VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR
include::{chapters}/limits.adoc[tag=limits_desc]

include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.adoc[]
--
endif::VK_KHR_compute_shader_derivatives[]

ifdef::VK_EXT_map_memory_placed[]
[open,refpage='VkPhysicalDeviceMapMemoryPlacedPropertiesEXT',desc='Structure describing the alignment requirements of placed memory maps for a physical device',type='structs']
--
Expand Down
10 changes: 6 additions & 4 deletions chapters/pipelines.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6043,6 +6043,10 @@ endif::VKSC_VERSION_1_0[]
****
include::{chapters}/commonvalidity/create_ray_tracing_pipelines_common.adoc[]
include::{chapters}/commonvalidity/pipeline_create_common.adoc[]
* [[VUID-vkCreateRayTracingPipelinesNV-pNext-10150]]
If a slink:VkPipelineCreateFlags2CreateInfoKHR structure is included in
the pname:pNext chain of any element of pname:pCreateInfos,
ename:VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR flag must: not be set
****
ifdef::VKSC_VERSION_1_0[]
ifdef::hidden[]
Expand Down Expand Up @@ -8188,7 +8192,6 @@ include::{generated}/api/structs/VkPipelineCreateInfoKHR.adoc[]
pname:pNext must: be pointer to a valid instance of
slink:VkGraphicsPipelineCreateInfo,
ifdef::VK_AMDX_shader_enqueue[slink:VkExecutionGraphPipelineCreateInfoAMDX,]
ifdef::VK_NV_ray_tracing[slink:VkRayTracingPipelineCreateInfoNV,]
ifdef::VK_KHR_ray_tracing_pipeline[slink:VkRayTracingPipelineCreateInfoKHR,]
or slink:VkComputePipelineCreateInfo
****
Expand Down Expand Up @@ -8226,9 +8229,8 @@ include::{generated}/validity/structs/VkPipelineBinaryKeyKHR.adoc[]

[open,refpage='VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR',desc='Maximum length of binary key',type='consts']
--
ename:VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR is the length in bytes of a
binary key, as returned in
slink:VkPipelineBinaryKeyKHR::pname:keySize.
ename:VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR is the length in bytes of a binary
key, as returned in slink:VkPipelineBinaryKeyKHR::pname:keySize.

include::{generated}/api/enums/VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR.adoc[]
--
Expand Down
Loading

0 comments on commit 8e435de

Please sign in to comment.