Skip to content

Commit

Permalink
Change log for May 24, 2022 Vulkan 1.3.215 spec update:
Browse files Browse the repository at this point in the history
  * Update release number to 215 for this update.

Public Issues:

  * Fix markup error to make slink:VkImageResolve2 appear right after
    slink:VkImageResolve, rather than appearing in the next section (public
    pull request 1856).

Internal Issues:

  * Allow slink:VkDescriptorPoolCreateInfo::pname:poolSizeCount to be `0` in
    `vk.xml` (internal issue #2974).
  * Add valid usage statements to flink:vkCmdExecuteCommands requiring that
    the depth or stencil format in
    slink:VkCommandBufferInheritanceRenderingInfo must be
    ename:VK_FORMAT_UNDEFINED if a `NULL` attachment is used
    (internal issue 3016).
  * Remove (incomplete) list of SPIR-V decorations from intro of interface
    matching chapter (internal issue 3043).
  * Add valid usage statement disallowing
    VkImageDrmFormatModifierExplicitCreateInfoEXT in the pname:pNext chain
    of slink:VkDeviceImageMemoryRequirementsKHR (internal issue #3051).
  * Add missing references to flink:vkQueueSubmit2 in the
    <<synchronization-fences-signaling>> and
    <<synchronization-semaphores-signaling, Semaphore Signaling>> sections
    (internal issue #3077).
  * Clarify that pipeline libraries can link against other libraries
    following the description of slink:VkPipelineLibraryCreateInfoKHR
    (internal issue #3083).
  * Fix suffix of some SPIR-V tokens to `AMD` for
    apiext:VK_AMD_shader_early_and_late_fragment_tests (internal merge
    request #5199).

New Extensions:

  * apiext:VK_KHR_fragment_shader_barycentric
  • Loading branch information
oddhack committed May 24, 2022
1 parent e1c0a06 commit 9b55621
Show file tree
Hide file tree
Showing 19 changed files with 503 additions and 135 deletions.
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 May 24, 2022 Vulkan 1.3.215 spec update:

* Update release number to 215 for this update.

Public Issues:

* Fix markup error to make slink:VkImageResolve2 appear right after
slink:VkImageResolve, rather than appearing in the next section (public
pull request 1856).

Internal Issues:

* Allow slink:VkDescriptorPoolCreateInfo::pname:poolSizeCount to be `0` in
`vk.xml` (internal issue #2974).
* Add valid usage statements to flink:vkCmdExecuteCommands requiring that
the depth or stencil format in
slink:VkCommandBufferInheritanceRenderingInfo must be
ename:VK_FORMAT_UNDEFINED if a `NULL` attachment is used
(internal issue 3016).
* Remove (incomplete) list of SPIR-V decorations from intro of interface
matching chapter (internal issue 3043).
* Add valid usage statement disallowing
VkImageDrmFormatModifierExplicitCreateInfoEXT in the pname:pNext chain
of slink:VkDeviceImageMemoryRequirementsKHR (internal issue #3051).
* Add missing references to flink:vkQueueSubmit2 in the
<<synchronization-fences-signaling>> and
<<synchronization-semaphores-signaling, Semaphore Signaling>> sections
(internal issue #3077).
* Clarify that pipeline libraries can link against other libraries
following the description of slink:VkPipelineLibraryCreateInfoKHR
(internal issue #3083).
* Fix suffix of some SPIR-V tokens to `AMD` for
apiext:VK_AMD_shader_early_and_late_fragment_tests (internal merge
request #5199).

New Extensions:

* apiext:VK_KHR_fragment_shader_barycentric

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

Change log for May 17, 2022 Vulkan 1.3.214 spec update:

* Update release number to 214 for this 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 = 214
PATCHVERSION = 215

ifneq (,$(findstring VK_VERSION_1_3,$(VERSIONS)))
SPECMINOR = 3
Expand Down
2 changes: 1 addition & 1 deletion appendices/VK_AMD_shader_early_and_late_fragment_tests.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ include::{generated}/meta/{refprefix}VK_AMD_shader_early_and_late_fragment_tests
This extension adds support for the
{spirv}/AMD/SPV_AMD_shader_early_and_late_fragment_tests.html[`SPV_AMD_shader_early_and_late_fragment_tests`]
extension, allowing shaders to explicitly opt in to allowing both early
_and_ late fragment tests with the code:EarlyAndLateFragmentTestsEXT
_and_ late fragment tests with the code:EarlyAndLateFragmentTestsAMD
execution mode.

ifdef::VK_EXT_shader_stencil_export[]
Expand Down
80 changes: 80 additions & 0 deletions appendices/VK_KHR_fragment_shader_barycentric.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
// Copyright 2018-2022 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

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

=== Other Extension Metadata

*Last Modified Date*::
2022-03-10
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- This extension requires
{spirv}/KHR/SPV_KHR_fragment_shader_barycentric.html[`SPV_KHR_fragment_shader_barycentric`]
- This extension provides API support for
https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_fragment_shader_barycentric.txt[`GL_EXT_fragment_shader_barycentric`]
*Contributors*::
- Stu Smith, AMD
- Tobias Hector, AMD
- Graeme Leese, Broadcom
- Jan-Harald Fredriksen, Arm
- Slawek Grajewski, Intel
- Pat Brown, NVIDIA
- Hans-Kristian Arntzen, Valve
- Contributors to the VK_NV_fragment_shader_barycentric specification


=== Description

This extension is based on the `<<VK_NV_fragment_shader_barycentric>>`
extension, and adds support for the following SPIR-V extension in Vulkan:

* {spirv}/KHR/SPV_KHR_fragment_shader_barycentric.html[`SPV_KHR_fragment_shader_barycentric`]

The extension provides access to three additional fragment shader variable
decorations in SPIR-V:

* code:PerVertexKHR, which indicates that a fragment shader input will not
have interpolated values, but instead must be accessed with an extra
array index that identifies one of the vertices of the primitive
producing the fragment
* code:BaryCoordKHR, which indicates that the variable is a
three-component floating-point vector holding barycentric weights for
the fragment produced using perspective interpolation
* code:BaryCoordNoPerspKHR, which indicates that the variable is a
three-component floating-point vector holding barycentric weights for
the fragment produced using linear interpolation

When using GLSL source-based shader languages, the following variables from
`GL_EXT_fragment_shader_barycentric` map to these SPIR-V built-in
decorations:

* `in vec3 gl_BaryCoordEXT;` -> code:BaryCoordKHR
* `in vec3 gl_BaryCoordNoPerspEXT;` -> code:BaryCoordNoPerspKHR

GLSL variables declared using the code:pervertexEXT GLSL qualifier are
expected to be decorated with code:PerVertexKHR in SPIR-V.

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

=== New Built-In Variables

* <<interfaces-builtin-variables-barycoordkhr,code:BaryCoordKHR>>
* <<interfaces-builtin-variables-barycoordnoperspkhr,code:BaryCoordNoPerspKHR>>

=== New SPIR-V Decorations

* <<shaders-interpolation-decorations-pervertexkhr,code:PerVertexKHR>>

=== New SPIR-V Capabilities

* <<spirvenv-capabilities-table-FragmentBarycentricKHR,code:FragmentBarycentricKHR>>

=== Issues

=== Version History

* Revision 1, 2022-03-10 (Stu Smith)
- Initial revision
13 changes: 9 additions & 4 deletions appendices/VK_NV_fragment_shader_barycentric.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,20 +49,25 @@ decorations:
GLSL variables declared using the code:__pervertexNV GLSL qualifier are
expected to be decorated with code:PerVertexNV in SPIR-V.

=== Promotion to `VK_KHR_fragment_shader_barycentric`

All functionality in this extension is included in
`<<VK_KHR_fragment_shader_barycentric>>`, with the suffix changed to KHR.

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

=== New Built-In Variables

* <<interfaces-builtin-variables-barycoordnv,code:BaryCoordNV>>
* <<interfaces-builtin-variables-barycoordnoperspnv,code:BaryCoordNoPerspNV>>
* <<interfaces-builtin-variables-barycoordkhr,code:BaryCoordNV>>
* <<interfaces-builtin-variables-barycoordnoperspkhr,code:BaryCoordNoPerspNV>>

=== New SPIR-V Decorations

* <<shaders-interpolation-decorations-pervertexnv,code:PerVertexNV>>
* <<shaders-interpolation-decorations-pervertexkhr,code:PerVertexNV>>

=== New SPIR-V Capabilities

* <<spirvenv-capabilities-table-FragmentBarycentricNV,code:FragmentBarycentricNV>>
* <<spirvenv-capabilities-table-FragmentBarycentricKHR,code:FragmentBarycentricNV>>

=== Issues

Expand Down
8 changes: 8 additions & 0 deletions appendices/spirvenv.txt
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,9 @@ endif::VK_VERSION_1_1[]
The code:Flat, code:NoPerspective, code:Sample, and code:Centroid
decorations must: not be used on variables with the code:Input storage
class in a vertex shader
* [[VUID-{refpage}-PerVertexKHR-06777]]
The code:PerVertexKHR decoration must: only be used on variables with
the code:Input storage class in a fragment shader
* [[VUID-{refpage}-Flat-04744]]
Any variable with integer or double-precision floating-point type and
with code:Input storage class in a fragment shader, must: be decorated
Expand Down Expand Up @@ -547,6 +550,11 @@ endif::VK_VERSION_1_1[]
storage class must: correspond to an entry in
<<interfaces-resources-storage-class-correspondence, Shader Resource and
Storage Class Correspondence>>
ifdef::VK_NV_fragment_shader_barycentric,VK_KHR_fragment_shader_barycentric[]
* [[VUID-{refpage}-Input-06778]]
Variables with a storage class of code:Input in a fragment shader stage
that are decorated with code:perVertexKHR must: be declared as arrays
endif::VK_NV_fragment_shader_barycentric,VK_KHR_fragment_shader_barycentric[]
****
--

Expand Down
22 changes: 22 additions & 0 deletions chapters/cmdbuffers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2613,6 +2613,28 @@ endif::VK_EXT_sample_locations[]
slink:VkCommandBufferBeginInfo::pname:pInheritanceInfo used to begin
recording each element of pname:pCommandBuffers must: be equal to the
format used to create that image view
* [[VUID-vkCmdExecuteCommands-pDepthAttachment-06774]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance begun with flink:vkCmdBeginRendering and the
slink:VkRenderingInfo::pname:pDepthAttachment->imageView parameter to
flink:vkCmdBeginRendering was dlink:VK_NULL_HANDLE, the value of the
pname:depthAttachmentFormat member of the
slink:VkCommandBufferInheritanceRenderingInfo structure included in the
pname:pNext chain of
slink:VkCommandBufferBeginInfo::pname:pInheritanceInfo used to begin
recording each element of pname:pCommandBuffers must: be
ename:VK_FORMAT_UNDEFINED
* [[VUID-vkCmdExecuteCommands-pStencilAttachment-06775]]
If fname:vkCmdExecuteCommands is being called within a render pass
instance begun with flink:vkCmdBeginRendering and the
slink:VkRenderingInfo::pname:pStencilAttachment->imageView parameter to
flink:vkCmdBeginRendering was dlink:VK_NULL_HANDLE, the value of the
pname:stencilAttachmentFormat member of the
slink:VkCommandBufferInheritanceRenderingInfo structure included in the
pname:pNext chain of
slink:VkCommandBufferBeginInfo::pname:pInheritanceInfo used to begin
recording each element of pname:pCommandBuffers must: be
ename:VK_FORMAT_UNDEFINED
ifdef::VK_KHR_multiview,VK_VERSION_1_1[]
* [[VUID-vkCmdExecuteCommands-viewMask-06031]]
If fname:vkCmdExecuteCommands is being called within a render pass
Expand Down
6 changes: 3 additions & 3 deletions chapters/descriptorsets.txt
Original file line number Diff line number Diff line change
Expand Up @@ -402,9 +402,9 @@ for a given descriptor binding.
Implementations are not expected to keep track of the active descriptor
type, and it should be considered a C-like union type.

A mutable descriptor type is not considered as efficient in terms of
run-time performance as using a non-mutable descriptor type, and
applications are not encouraged to use them outside API layering efforts.
A mutable descriptor type is not considered as efficient in terms of runtime
performance as using a non-mutable descriptor type, and applications are not
encouraged to use them outside API layering efforts.
Mutable descriptor types can be more efficient if the alternative is using
many different descriptors to emulate mutable descriptor types.
====
Expand Down
36 changes: 21 additions & 15 deletions chapters/features.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2288,34 +2288,40 @@ include::{generated}/validity/structs/VkPhysicalDeviceComputeShaderDerivativesFe
--
endif::VK_NV_compute_shader_derivatives[]

ifdef::VK_NV_fragment_shader_barycentric[]
[open,refpage='VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV',desc='Structure describing barycentric support in fragment shaders that can be supported by an implementation',type='structs']
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']
--
The sname:VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV structure is
The sname:VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR structure is
defined as:

include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.txt[]

ifdef::VK_NV_fragment_shader_barycentric[]
or the equivalent

include::{generated}/api/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.txt[]
endif::VK_NV_fragment_shader_barycentric[]

This structure describes the following feature:

* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* [[features-fragmentShaderBarycentric]] pname:fragmentShaderBarycentric
indicates that the implementation supports the code:BaryCoordNV and
code:BaryCoordNoPerspNV SPIR-V fragment shader built-ins and supports
the code:PerVertexNV SPIR-V decoration on fragment shader input
indicates that the implementation supports the code:BaryCoordKHR and
code:BaryCoordNoPerspKHR SPIR-V fragment shader built-ins and supports
the code:PerVertexKHR SPIR-V decoration on fragment shader input
variables.

See <<primsrast-barycentric,Barycentric Interpolation>> for more
information.

:refpage: VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV
:refpage: VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR
include::{chapters}/features.txt[tag=features]

include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV.txt[]
include::{generated}/validity/structs/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.txt[]
--
endif::VK_NV_fragment_shader_barycentric[]
endif::VK_KHR_fragment_shader_barycentric[]

ifdef::VK_NV_shader_image_footprint[]
[open,refpage='VkPhysicalDeviceShaderImageFootprintFeaturesNV',desc='Structure describing shader image footprint features that can be supported by an implementation',type='structs']
Expand Down Expand Up @@ -5214,12 +5220,12 @@ endif::VK_EXT_image_compression_control[]


ifdef::VK_AMD_shader_early_and_late_fragment_tests[]
[open,refpage='VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesEXT',desc='Structure describing whether early and late fragment tests can be supported by an implementation',type='structs']
[open,refpage='VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD',desc='Structure describing whether early and late fragment tests can be supported by an implementation',type='structs']
--
The sname:VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesEXT
The sname:VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
structure is defined as:

include::{generated}/api/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesEXT.txt[]
include::{generated}/api/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.txt[]

This structure describes the following feature:

Expand All @@ -5228,13 +5234,13 @@ This structure describes the following feature:
structure.
* [[features-shaderEarlyAndLateFragmentTests]]
pname:shaderEarlyAndLateFragmentTests indicates whether the
implementation supports the code:EarlyAndLateFragmentTestsEXT
implementation supports the code:EarlyAndLateFragmentTestsAMD
code:Execution code:Mode.

:refpage: VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesEXT
:refpage: VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD
include::{chapters}/features.txt[tag=features]

include::{generated}/validity/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesEXT.txt[]
include::{generated}/validity/structs/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.txt[]
--
endif::VK_AMD_shader_early_and_late_fragment_tests[]

Expand Down
18 changes: 9 additions & 9 deletions chapters/fragops.txt
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ after <<fragops-samplecount, sample counting>>.

ifdef::VK_AMD_shader_early_and_late_fragment_tests[]
If the <<fragops-shader, fragment shader>> declares the
code:EarlyAndLateFragmentTestsEXT execution mode, and does not declare the
code:EarlyAndLateFragmentTestsAMD execution mode, and does not declare the
ifdef::VK_EXT_shader_stencil_export[]
code:StencilRefReplacingEXT or
endif::VK_EXT_shader_stencil_export[]
Expand All @@ -91,29 +91,29 @@ after <<fragops-samplecount, sample counting>>.
ifdef::VK_EXT_shader_stencil_export[]
For a pipeline with the following properties:

* the fragment shader either specifies code:EarlyAndLateFragmentTestsEXT
* the fragment shader either specifies code:EarlyAndLateFragmentTestsAMD
or does not write to storage resources;
* the fragment shader specifies the code:StencilRefReplacingEXT execution
mode;
* either
** the fragment shader specifies the code:StencilRefUnchangedFrontEXT
** the fragment shader specifies the code:StencilRefUnchangedFrontAMD
execution mode;
** the fragment shader specifies the code:StencilRefGreaterFrontEXT
** the fragment shader specifies the code:StencilRefGreaterFrontAMD
execution mode and the pipeline uses a
slink:VkPipelineDepthStencilStateCreateInfo::pname:front.compareOp of
ename:VK_COMPARE_OP_GREATER or ename:VK_COMPARE_OP_GREATER_OR_EQUAL; or
** the fragment shader specifies the code:StencilRefLessFrontEXT execution
** the fragment shader specifies the code:StencilRefLessFrontAMD execution
mode and the pipeline uses a
slink:VkPipelineDepthStencilStateCreateInfo::pname:front.compareOp of
ename:VK_COMPARE_OP_LESS or ename:VK_COMPARE_OP_LESS_OR_EQUAL; and
* either
** the fragment shader specifies the code:StencilRefUnchangedBackEXT
** the fragment shader specifies the code:StencilRefUnchangedBackAMD
execution mode;
** the fragment shader specifies the code:StencilRefGreaterBackEXT
** the fragment shader specifies the code:StencilRefGreaterBackAMD
execution mode and the pipeline uses a
slink:VkPipelineDepthStencilStateCreateInfo::pname:back.compareOp of
ename:VK_COMPARE_OP_GREATER or ename:VK_COMPARE_OP_GREATER_OR_EQUAL; or
** the fragment shader specifies the code:StencilRefLessBackEXT execution
** the fragment shader specifies the code:StencilRefLessBackAMD execution
mode and the pipeline uses a
slink:VkPipelineDepthStencilStateCreateInfo::pname:back.compareOp of
ename:VK_COMPARE_OP_LESS or ename:VK_COMPARE_OP_LESS_OR_EQUAL
Expand All @@ -131,7 +131,7 @@ For a pipeline with the following properties:

* the fragment shader
ifdef::VK_AMD_shader_early_and_late_fragment_tests[]
either specifies code:EarlyAndLateFragmentTestsEXT or
either specifies code:EarlyAndLateFragmentTestsAMD or
endif::VK_AMD_shader_early_and_late_fragment_tests[]
does not write to storage resources;
* the fragment shader specifies the code:DepthReplacing execution mode;
Expand Down
Loading

0 comments on commit 9b55621

Please sign in to comment.