Skip to content

Commit 9fd8fd5

Browse files
committed
Change log for October 19, 2020 Vulkan 1.2.158 spec update:
* Update release number to 158 for this update. Internal Issues: * Clarify that linear filtering can be used with comparison sampling in valid usage statements for dispatched draw commands (internal issue 2365). * Add valid usage statement for flink:vkGetQueryPoolResults requiring pname:stride to be large enough for a single performance query result (internal issue 2380). * Move input attachment imageLayout to valid usage reference section, and refer to the <<attachment-type-imagelayout>> section to reduce complexity of valid usage statement (internal merge request 4117). * Update issues list for `<<VK_QCOM_render_pass_transform>>` (internal merge request 4175). * Add valid usage statement for slink:VkPipelineColorBlendStateCreateInfo::pname:attachmentCount (public Vulkan-ValidationLayers issue 2197). New Extensions: * `<<VK_KHR_fragment_shading_rate>>` * `<<VK_KHR_shader_terminate_invocation>>`
1 parent fa50015 commit 9fd8fd5

36 files changed

+3815
-186
lines changed

ChangeLog.txt

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,35 @@ public pull requests that have been accepted.
1111

1212
-----------------------------------------------------
1313

14+
Change log for October 19, 2020 Vulkan 1.2.158 spec update:
15+
16+
* Update release number to 158 for this update.
17+
18+
Internal Issues:
19+
20+
* Clarify that linear filtering can be used with comparison sampling
21+
in valid usage statements for dispatched draw commands
22+
(internal issue 2365).
23+
* Add valid usage statement for flink:vkGetQueryPoolResults requiring
24+
pname:stride to be large enough for a single performance query result
25+
(internal issue 2380).
26+
* Move input attachment imageLayout to valid usage reference section,
27+
and refer to the <<attachment-type-imagelayout>> section
28+
to reduce complexity of valid usage statement
29+
(internal merge request 4117).
30+
* Update issues list for `<<VK_QCOM_render_pass_transform>>`
31+
(internal merge request 4175).
32+
* Add valid usage statement for
33+
slink:VkPipelineColorBlendStateCreateInfo::pname:attachmentCount (public
34+
Vulkan-ValidationLayers issue 2197).
35+
36+
New Extensions:
37+
38+
* `<<VK_KHR_fragment_shading_rate>>`
39+
* `<<VK_KHR_shader_terminate_invocation>>`
40+
41+
-----------------------------------------------------
42+
1443
Change log for October 12, 2020 Vulkan 1.2.157 spec update:
1544

1645
* Update release number to 157 for this update.
@@ -29,7 +58,7 @@ Github Issues:
2958
(public issue 1374).
3059
* Add slink:VkBufferImageCopy valid usage statement for
3160
ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT
32-
pname:aspectMask values (public issue 2113).
61+
pname:aspectMask values (public Vulkan-ValidationLayers issue 2113).
3362

3463
Internal Issues:
3564

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ VERBOSE =
109109
# ADOCOPTS options for asciidoc->HTML5 output
110110

111111
NOTEOPTS = -a editing-notes -a implementation-guide
112-
PATCHVERSION = 157
112+
PATCHVERSION = 158
113113
ifneq (,$(findstring VK_VERSION_1_2,$(VERSIONS)))
114114
SPECREVISION = 1.2.$(PATCHVERSION)
115115
else
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// Copyright (c) 2017-2020 Khronos Group.
2+
//
3+
// SPDX-License-Identifier: CC-BY-4.0
4+
5+
include::{generated}/meta/{refprefix}VK_KHR_fragment_shading_rate.txt[]
6+
7+
=== Other Extension Metadata
8+
9+
*Last Modified Date*::
10+
2020-05-06
11+
*Interactions and External Dependencies*::
12+
- This extension requires
13+
{spirv}/KHR/SPV_KHR_fragment_shading_rate.html[`SPV_KHR_fragment_shading_rate`].
14+
*Contributors*::
15+
- Tobias Hector, AMD
16+
- Guennadi Riguer, AMD
17+
- Matthaeus Chajdas, AMD
18+
- Pat Brown, Nvidia
19+
- Matthew Netsch, Qualcomm
20+
- Slawomir Grajewski, Intel
21+
- Jan-Harald Fredriksen, Arm
22+
- Jeff Bolz, Nvidia
23+
- Contributors to the VK_NV_shading_rate_image specification
24+
- Contributors to the VK_EXT_fragment_density_map specification
25+
26+
=== Description
27+
28+
This extension adds the ability to change the rate at which fragments are
29+
shaded.
30+
Rather than the usual single fragment invocation for each pixel covered by a
31+
primitive, multiple pixels can be shaded by a single fragment shader
32+
invocation.
33+
34+
Up to three methods are available to the application to change the fragment
35+
shading rate:
36+
37+
- <<primsrast-fragment-shading-rate-pipeline>>, which allows the
38+
specification of a rate per-draw.
39+
- <<primsrast-fragment-shading-rate-primitive>>, which allows the
40+
specification of a rate per primitive, specified during shading.
41+
- <<primsrast-fragment-shading-rate-attachment>>, which allows the
42+
specification of a rate per-region of the framebuffer, specified in a
43+
specialized image attachment.
44+
45+
Additionally, these rates can all be specified and combined in order to
46+
adjust the overall detail in the image at each point.
47+
48+
This functionality can be used to focus shading efforts where higher levels
49+
of detail are needed in some parts of a scene compared to others.
50+
This can be particularly useful in high resolution rendering, or for XR
51+
contexts.
52+
53+
This extension also adds support for the `SPV_KHR_fragment_shading_rate`
54+
extension which enables setting the
55+
<<primsrast-fragment-shading-rate-primitive, primitive fragment shading
56+
rate>>, and allows querying the final shading rate from a fragment shader.
57+
58+
include::{generated}/interfaces/VK_KHR_fragment_shading_rate.txt[]
59+
60+
=== Version History
61+
62+
* Revision 1, 2020-05-06 (Tobias Hector)
63+
- Initial revision
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Copyright (c) 2020 The Khronos Group Inc.
2+
//
3+
// SPDX-License-Identifier: CC-BY-4.0
4+
5+
include::{generated}/meta/{refprefix}VK_KHR_shader_terminate_invocation.txt[]
6+
7+
*Last Modified Date*::
8+
2020-08-11
9+
*IP Status*::
10+
No known IP claims.
11+
*Interactions and External Dependencies*::
12+
- Requires the
13+
{spirv}/KHR/SPV_KHR_terminate_invocation.html[`SPV_KHR_terminate_invocation`]
14+
SPIR-V extension.
15+
*Contributors*::
16+
- Alan Baker, Google
17+
- Jeff Bolz, NVIDIA
18+
- Jesse Hall, Google
19+
- Ralph Potter, Samsung
20+
- Tom Olson, Arm
21+
22+
=== Description
23+
24+
This extension adds Vulkan support for the
25+
{spirv}/KHR/SPV_KHR_terminate_invocation.html[`SPV_KHR_terminate_invocation`]
26+
SPIR-V extension.
27+
That SPIR-V extension provides a new instruction,
28+
code:OpTerminateInvocation, which causes a shader invocation to immediately
29+
terminate and sets the coverage of shaded samples to `0`; only previously
30+
executed instructions will have observable effects.
31+
The code:OpTerminateInvocation instruction, along with the
32+
code:OpDemoteToHelperInvocation instruction from the
33+
<<VK_EXT_shader_demote_to_helper_invocation>> extension, together replace
34+
the code:OpKill instruction, which could behave like either of these
35+
instructions.
36+
code:OpTerminateInvocation provides the behavior required by the GLSL
37+
code:discard statement, and should be used when available by GLSL compilers
38+
and applications that need the GLSL code:discard behavior.
39+
40+
include::{generated}/interfaces/VK_KHR_shader_terminate_invocation.txt[]
41+
42+
=== Version History
43+
44+
* Revision 1, 2020-08-11 (Jesse Hall)

appendices/VK_QCOM_render_pass_transform.txt

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ include::{generated}/meta/{refprefix}VK_QCOM_render_pass_transform.txt[]
77
=== Other Extension Metadata
88

99
*Last Modified Date*::
10-
2020-02-05
10+
2020-10-15
1111
*Interactions and External Dependencies*::
1212
- This extension requires `apiext:VK_KHR_swapchain`
1313
- This extension interacts with `apiext:VK_EXT_fragment_density_map`
@@ -83,23 +83,55 @@ The following is changed with this extension:
8383
include::{generated}/interfaces/VK_QCOM_render_pass_transform.txt[]
8484

8585
=== Issues
86-
87-
1) Should the extension support only rotations (e.g. 90, 180, 270-degrees),
86+
1) Some early Adreno drivers (October 2019 through March 2020) advertised
87+
support for this extension but expected VK_STRUCTURE_TYPE values different
88+
from those in the vukan headers.
89+
To cover all Adreno devices on the market, applications need to detect the
90+
driver version and use the appropriate VK_STRUCTURE_TYPE values from the
91+
table below.
92+
93+
The driver version reported in VkPhysicalDeviceProperties.driverVersion is a
94+
code:uint32_t type.
95+
You can decode the code:uint32_t value into a major.minor.patch version as
96+
shown below:
97+
[source,c]
98+
---------------------------------------------------
99+
uint32_t major = ((driverVersion) >> 22);
100+
uint32_t minor = ((driverVersion) >> 12) & 0x3ff);
101+
uint32_t patch = ((driverVersion) & 0xfff);
102+
---------------------------------------------------
103+
104+
If the Adreno major.minor.patch version is greater than or equal to to
105+
512.469.0, then simply use the VK_STRUCTURE_TYPE values as defined in
106+
vulkan_core.h.
107+
If the version is less than or equal to to 512.468.0, then use the alternate
108+
values for the two VK_STRUCTURE_TYPEs in the table below.
109+
110+
.fname:Adreno Driver Requirements
111+
[width="80%",options="header"]
112+
|====
113+
| 2+| Adreno Driver Version
114+
| | 512.468.0 and earlier | 512.469.0 and later
115+
|VK_STRUCTURE_TYPE_ RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM | 1000282000 | 1000282001
116+
|VK_STRUCTURE_TYPE_ COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM| 1000282001 | 1000282000
117+
|====
118+
119+
2) Should the extension support only rotations (e.g. 90, 180, 270-degrees),
88120
or also mirror transforms (e.g. vertical flips)? Mobile use-cases only
89121
require rotation.
90122
Other display systems such as projectors might require a flipped transform.
91123

92124
*RESOLVED*: In this version of the extension, the functionality is
93125
restricted to 90, 180, and 270-degree rotations to address mobile use-cases.
94126

95-
2) How does this extension interact with VK_EXT_fragment_density_map?
127+
3) How does this extension interact with VK_EXT_fragment_density_map?
96128

97129
*RESOLVED* Some implementations may not be able to support a render pass
98130
that enables both renderpass transform and fragment density maps.
99131
For simplicity, this extension disallows enabling both features within a
100132
single render pass.
101133

102-
3) What should this extension be named?
134+
4) What should this extension be named?
103135

104136
We considered names such as "rotated_rendering", "pre_rotation" and others.
105137
Since the functionality is limited to a render pass, it seemed the name

appendices/glossary.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1418,12 +1418,14 @@ Shader Module::
14181418
Shader Stage::
14191419
A stage of the graphics or compute pipeline that executes shader code.
14201420

1421-
ifdef::VK_NV_shading_rate_image[]
1421+
ifdef::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
14221422
[[glossary-shading-rate]]
14231423
Shading Rate::
14241424
The ratio of the number of fragment shader invocations generated in a
14251425
fully covered framebuffer region to the size (in pixels) of that region.
1426+
endif::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
14261427

1428+
ifdef::VK_NV_shading_rate_image[]
14271429
[[glossary-shading-rate-image]]
14281430
Shading Rate Image::
14291431
An image used to establish the shading rate for a framebuffer region,

appendices/spirvenv.txt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,11 @@ ifdef::VK_EXT_shader_demote_to_helper_invocation[]
347347
[[spirvenv-capabilities-table-demote]]
348348
| code:DemoteToHelperInvocationEXT | <<features-shaderDemoteToHelperInvocation,pname:shaderDemoteToHelperInvocation>>
349349
endif::VK_EXT_shader_demote_to_helper_invocation[]
350+
ifdef::VK_KHR_fragment_shading_rate[]
351+
| code:FragmentShadingRateKHR | <<features-pipelineFragmentShadingRate,pname:pipelineFragmentShadingRate>>,
352+
<<features-primitiveFragmentShadingRate,pname:primitiveFragmentShadingRate>>,
353+
<<features-attachmentFragmentShadingRate,pname:attachmentFragmentShadingRate>>
354+
endif::VK_KHR_fragment_shading_rate[]
350355
|====
351356

352357
The application must: not pass a SPIR-V module containing any of the
@@ -550,6 +555,12 @@ endif::VK_KHR_shader_non_semantic_info[]
550555
ifdef::VK_EXT_shader_image_atomic_int64[]
551556
| code:SPV_EXT_shader_image_int64 | `<<VK_EXT_shader_image_atomic_int64>>`
552557
endif::VK_EXT_shader_image_atomic_int64[]
558+
ifdef::VK_KHR_fragment_shading_rate[]
559+
| code:SPV_KHR_fragment_shading_rate | `<<VK_KHR_fragment_shading_rate>>`
560+
endif::VK_KHR_fragment_shading_rate[]
561+
ifdef::VK_KHR_shader_terminate_invocation[]
562+
| code:SPV_KHR_terminate_invocation | `<<VK_KHR_shader_terminate_invocation>>`
563+
endif::VK_KHR_shader_terminate_invocation[]
553564
|====
554565

555566
[[spirvenv-module-validation]]
@@ -1149,6 +1160,39 @@ endif::VK_EXT_shader_atomic_float[]
11491160
<<shaders-scope-subgroup, subgroup scope>> must: not be used if the
11501161
shader stage is not in <<limits-subgroupSupportedStages,
11511162
subgroupSupportedStages>>.
1163+
* The first element of the code:Offset operand of code:InterpolateAtOffset
1164+
must: be greater than or equal to:
1165+
{empty}:: [eq]#frag~width~ {times} <<limits-minInterpolationOffset,
1166+
pname:minInterpolationOffset>>#
1167+
1168+
+
1169+
where [eq]#frag~width~# is the width of the current fragment in pixels.
1170+
* The first element of the code:Offset operand of code:InterpolateAtOffset
1171+
must: be less than or equal to:
1172+
{empty}:: [eq]#frag~width~ {times} (<<limits-maxInterpolationOffset,
1173+
pname:maxInterpolationOffset>> {plus} ULP ) - ULP#
1174+
1175+
+
1176+
where [eq]#frag~width~# is the width of the current fragment in pixels and
1177+
[eq]#ULP = 1 /
1178+
2^<<limits-subPixelInterpolationOffsetBits,pname:subPixelInterpolationOffsetBits>>^#.
1179+
* The second element of the code:Offset operand of
1180+
code:InterpolateAtOffset must: be greater than or equal to:
1181+
{empty}:: [eq]#frag~height~ {times} <<limits-minInterpolationOffset,
1182+
pname:minInterpolationOffset>>#
1183+
1184+
+
1185+
where [eq]#frag~height~# is the height of the current fragment in pixels.
1186+
* The second element of the code:Offset operand of
1187+
code:InterpolateAtOffset must: be less than or equal to:
1188+
{empty}:: [eq]#frag~height~ {times} (<<limits-maxInterpolationOffset,
1189+
pname:maxInterpolationOffset>> {plus} ULP ) - ULP#
1190+
1191+
+
1192+
where [eq]#frag~height~# is the height of the current fragment in pixels and
1193+
[eq]#ULP = 1 /
1194+
2^<<limits-subPixelInterpolationOffsetBits,pname:subPixelInterpolationOffsetBits>>^#.
1195+
11521196

11531197
[[spirvenv-precision-operation]]
11541198
== Precision and Operation of SPIR-V Instructions

chapters/capabilities.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -919,9 +919,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
919919
* pname:format is one of those listed in
920920
<<formats-requiring-sampler-ycbcr-conversion>>
921921
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
922-
ifdef::VK_NV_shading_rate_image[]
923-
* pname:usage contains ename:VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
924-
endif::VK_NV_shading_rate_image[]
922+
ifdef::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
923+
* pname:usage contains
924+
ename:VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
925+
endif::VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image[]
925926
ifdef::VK_EXT_fragment_density_map[]
926927
* pname:usage contains ename:VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
927928
endif::VK_EXT_fragment_density_map[]

chapters/commonvalidity/draw_common.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,16 @@ endif::VK_NV_scissor_exclusive[]
133133
class>> as the pipeline
134134
slink:VkPipelineInputAssemblyStateCreateInfo::pname:topology state
135135
endif::VK_EXT_extended_dynamic_state[]
136+
ifdef::VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state[]
137+
* [[VUID-{refpage}-primitiveFragmentShadingRateWithMultipleViewports-04552]]
138+
If the <<limits-primitiveFragmentShadingRateWithMultipleViewports,
139+
pname:primitiveFragmentShadingRateWithMultipleViewports>> limit is not
140+
supported, the bound graphics pipeline was created with the
141+
ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT dynamic state enabled,
142+
and any of the shader stages of the bound graphics pipeline write to the
143+
code:PrimitiveShadingRateKHR built-in, then
144+
flink:vkCmdSetViewportWithCountEXT must: have been called in the current
145+
command buffer prior to this draw command, and the pname:viewportCount
146+
parameter of fname:vkCmdSetViewportWithCountEXT must: be `1`
147+
endif::VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state[]
136148
// Common Valid Usage

chapters/commonvalidity/draw_dispatch_common.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
// Common Valid Usage
66
// Common to all dispatch and drawing commands
7-
* [[VUID-{refpage}-None-02690]]
8-
If a sname:VkImageView is sampled with ename:VK_FILTER_LINEAR as a
9-
result of this command, then the image view's
7+
* [[VUID-{refpage}-magFilter-04553]]
8+
If a slink:VkSampler created with pname:magFilter or pname:minFilter
9+
equal to ename:VK_FILTER_LINEAR and pname:compareEnable equal to
10+
ename:VK_FALSE is used to sample a slink:VkImageView as a result of this
11+
command, then the image view's
1012
<<resources-image-view-format-features,format features>> must: contain
1113
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
1214
* [[VUID-{refpage}-None-02691]]

0 commit comments

Comments
 (0)