Skip to content

Commit a096096

Browse files
committed
Change log for September 28, 2021 Vulkan 1.2.194 spec update:
* Update release number to 194 for this update. Github Issues: * Add missing `len` attribute to slink:VkCuModuleCreateInfoNVX::pname:pData (public merge request 1646). * Refer to dynamic state consistently from ftext:vkCmdSet* commands, and link to the definition of dynamic state (public issue 1428, but with expanded scope beyond the actual ask in that issue). Internal Issues: * Fix incorrect member name in slink:VkRenderPassCreateInfo valid usage statement 02515 (internal issue 2484). * Fix XML dependency for `<<VK_NV_device_generated_commands>>` (internal issue 2818). * Add packed formats from `<<VK_KHR_sampler_ycbcr_conversion>>`` to the <<formats-packed, table of packed formats>> and improve description of packed format naming conventions (internal merge request 4798). New Extensions * `<<VK_FUCHSIA_buffer_collection>>`
1 parent b1b9113 commit a096096

File tree

19 files changed

+1486
-291
lines changed

19 files changed

+1486
-291
lines changed

ChangeLog.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,34 @@ public pull requests that have been accepted.
1111

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

14+
Change log for September 28, 2021 Vulkan 1.2.194 spec update:
15+
16+
* Update release number to 194 for this update.
17+
18+
Github Issues:
19+
20+
* Add missing `len` attribute to
21+
slink:VkCuModuleCreateInfoNVX::pname:pData (public merge request 1646).
22+
* Refer to dynamic state consistently from ftext:vkCmdSet* commands, and
23+
link to the definition of dynamic state (public issue 1428, but with
24+
expanded scope beyond the actual ask in that issue).
25+
26+
Internal Issues:
27+
28+
* Fix incorrect member name in slink:VkRenderPassCreateInfo valid usage
29+
statement 02515 (internal issue 2484).
30+
* Fix XML dependency for `<<VK_NV_device_generated_commands>>` (internal
31+
issue 2818).
32+
* Add packed formats from `<<VK_KHR_sampler_ycbcr_conversion>>`` to the
33+
<<formats-packed, table of packed formats>> and improve description of
34+
packed format naming conventions (internal merge request 4798).
35+
36+
New Extensions
37+
38+
* `<<VK_FUCHSIA_buffer_collection>>`
39+
40+
-----------------------------------------------------
41+
1442
Change log for September 21, 2021 Vulkan 1.2.193 spec update:
1543

1644
* Update release number to 193 for this update.

Makefile

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

122122
NOTEOPTS = -a editing-notes -a implementation-guide
123-
PATCHVERSION = 193
123+
PATCHVERSION = 194
124124

125125
ifneq (,$(findstring VK_VERSION_1_2,$(VERSIONS)))
126126
SPECMINOR = 2
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// Copyright 2021 The Khronos Group, Inc.
2+
//
3+
// SPDX-License-Identifier: CC-BY-4.0
4+
5+
include::{generated}/meta/{refprefix}VK_FUCHSIA_buffer_collection.txt[]
6+
7+
=== Other Extension Metadata
8+
9+
*Last Modified Date*::
10+
2021-09-23
11+
*IP Status*::
12+
No known IP claims.
13+
*Contributors*::
14+
- Craig Stout, Google
15+
- John Bauman, Google
16+
- John Rosasco, Google
17+
18+
=== Description
19+
A buffer collection is a collection of one or more buffers which were
20+
allocated together as a group and which all have the same properties.
21+
These properties describe the buffers’ internal representation such as its
22+
dimensions and memory layout.
23+
This ensures that all of the buffers can be used interchangeably by tasks
24+
that require swapping among multiple buffers, such as double-buffered
25+
graphics rendering.
26+
27+
By sharing such a collection of buffers between components, communication
28+
about buffer lifecycle can be made much simpler and more efficient.
29+
For example, when a content producer finishes writing to a buffer, it can
30+
message the consumer of the buffer with the buffer index, rather than
31+
passing a handle to the shared memory.
32+
33+
On Fuchsia, the Sysmem service uses buffer collections as a core construct
34+
in its design.
35+
VK_FUCHSIA_buffer_collection is the Vulkan extension that allows Vulkan
36+
applications to interoperate with the Sysmem service on Fuchsia.
37+
38+
include::{generated}/interfaces/VK_FUCHSIA_buffer_collection.txt[]
39+
40+
=== Issues
41+
42+
1) When configuring a slink:VkImageConstraintsInfoFUCHSIA structure for
43+
constraint setting, should a NULL pname:pFormatConstraints parameter be
44+
allowed ?
45+
46+
*RESOLVED*: No.
47+
Specifying a NULL pname:pFormatConstraints results in logical complexity of
48+
interpreting the relationship between the
49+
slink:VkImageCreateInfo::pname:usage settings of the elements of the
50+
pname:pImageCreateInfos array and the implied or desired
51+
tlink:VkFormatFeatureFlags.
52+
53+
The explicit requirement for pname:pFormatConstraints to be non-NULL
54+
simplifies the implied logic of the implementation and expectations for the
55+
Vulkan application.
56+
57+
=== Version History
58+
59+
* Revision 2, 2021-09-23 (John Rosasco)
60+
- Review passes
61+
* Revision 1, 2021-03-09 (John Rosasco)
62+
- Initial revision

chapters/VK_NV_clip_space_w_scaling/vertexpostproc.txt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,10 @@ this structure to the pname:pNext chain of a
3939
sname:VkPipelineViewportStateCreateInfo structure and setting the graphics
4040
pipeline state with flink:vkCreateGraphicsPipelines.
4141

42-
[open,refpage='vkCmdSetViewportWScalingNV',desc='Set the viewport W scaling on a command buffer',type='protos']
42+
[open,refpage='vkCmdSetViewportWScalingNV',desc='Set the viewport W scaling dynamically for a command buffer',type='protos']
4343
--
44-
If the bound pipeline state object was not created with the
45-
ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, viewport
46-
*W* scaling parameters are specified using the pname:pViewportWScalings
47-
member of slink:VkPipelineViewportWScalingStateCreateInfoNV in the pipeline
48-
state object.
49-
If the pipeline state object was created with the
50-
ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV dynamic state enabled, the
51-
viewport transformation parameters are dynamically set and changed with the
52-
command:
44+
To <<pipelines-dynamic-state, dynamically set>> the viewport *W* scaling
45+
parameters, call:
5346

5447
include::{generated}/api/protos/vkCmdSetViewportWScalingNV.txt[]
5548

@@ -67,6 +60,14 @@ pname:pViewportWScalings replace the current state for the viewport index
6760
[eq]#pname:firstViewport {plus} i#, for [eq]#i# in [eq]#[0,
6861
pname:viewportCount)#.
6962

63+
This command sets the viewport *W* scaling for subsequent drawing commands
64+
when the graphics pipeline is created with
65+
ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV set in
66+
slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates.
67+
Otherwise, this state is specified by the
68+
slink:VkPipelineViewportWScalingStateCreateInfoNV::pname:pViewportWScalings
69+
values used to create the currently active pipeline.
70+
7071
.Valid Usage
7172
****
7273
* [[VUID-vkCmdSetViewportWScalingNV-firstViewport-01324]]

chapters/commonvalidity/bind_buffer_common.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,12 @@ ifdef::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
110110
must: have been allocated with the
111111
ename:VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT bit set
112112
endif::VK_VERSION_1_2,VK_KHR_buffer_device_address[]
113+
ifdef::VK_FUCHSIA_buffer_collection[]
114+
* [[VUID-{refpage}-buffer-06408]]
115+
If pname:buffer was created with
116+
slink:VkBufferCollectionBufferCreateInfoFUCHSIA chained to
117+
slink:VkBufferCreateInfo::pname:pNext, pname:memory must: be allocated
118+
with a slink:VkImportMemoryBufferCollectionFUCHSIA chained to
119+
slink:VkMemoryAllocateInfo::pname:pNext
120+
endif::VK_FUCHSIA_buffer_collection[]
113121
// Common Valid Usage

chapters/drawing.txt

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ a mask, but is currently reserved for future use.
132132
--
133133

134134
ifdef::VK_EXT_extended_dynamic_state2[]
135-
[open,refpage='vkCmdSetPrimitiveRestartEnableEXT',desc='Control whether a special vertex index value is treated as restarting the assembly of primitives',type='protos']
135+
[open,refpage='vkCmdSetPrimitiveRestartEnableEXT',desc='Set primitive assembly restart state dynamically for a command buffer',type='protos']
136136
--
137-
To dynamically control whether a special vertex index value is treated as
138-
restarting the assembly of primitives:
137+
To <<pipelines-dynamic-state, dynamically control>> whether a special vertex
138+
index value is treated as restarting the assembly of primitives, call:
139139

140140
include::{generated}/api/protos/vkCmdSetPrimitiveRestartEnableEXT.txt[]
141141

@@ -146,9 +146,13 @@ include::{generated}/api/protos/vkCmdSetPrimitiveRestartEnableEXT.txt[]
146146
It behaves in the same way as
147147
sname:VkPipelineInputAssemblyStateCreateInfo::pname:primitiveRestartEnable
148148

149-
This command sets the state for a given draw when the graphics pipeline is
150-
created with ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT set in
149+
This command sets the primitive restart enable for subsequent drawing
150+
commands when the graphics pipeline is created with
151+
ename:VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT set in
151152
slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates.
153+
Otherwise, this state is specified by the
154+
slink:VkPipelineInputAssemblyStateCreateInfo::pname:primitiveRestartEnable
155+
value used to create the currently active pipeline.
152156

153157
.Valid Usage
154158
****
@@ -265,20 +269,24 @@ topology.
265269
--
266270

267271
ifdef::VK_EXT_extended_dynamic_state[]
268-
[open,refpage='vkCmdSetPrimitiveTopologyEXT',desc='Set the primitive topology state',type='protos']
272+
[open,refpage='vkCmdSetPrimitiveTopologyEXT',desc='Set primitive topology state dynamically for a command buffer',type='protos']
269273
--
270-
The primitive topology is specified by the
271-
slink:VkPipelineInputAssemblyStateCreateInfo::pname:topology property of the
272-
currently active pipeline, if the pipeline was not created with
273-
ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT enabled.
274-
275-
Otherwise, the primitive topology is set by calling:
274+
To <<pipelines-dynamic-state, dynamically set>> primitive topology, call:
276275

277276
include::{generated}/api/protos/vkCmdSetPrimitiveTopologyEXT.txt[]
278277

279278
* pname:commandBuffer is the command buffer into which the command will be
280279
recorded.
281-
* pname:topology specifies the primitive topology to use for drawing.
280+
* pname:primitiveTopology specifies the primitive topology to use for
281+
drawing.
282+
283+
This command sets the primitive topology for subsequent drawing commands
284+
when the graphics pipeline is created with
285+
ename:VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT set in
286+
slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates.
287+
Otherwise, this state is specified by the
288+
slink:VkPipelineInputAssemblyStateCreateInfo::pname:topology value used to
289+
create the currently active pipeline.
282290

283291
.Valid Usage
284292
****
@@ -334,7 +342,7 @@ image::{images}/primitive_topology_point_list.svg[align="center",opts="{imageopt
334342
[[drawing-line-lists]]
335343
=== Line Lists
336344

337-
When the pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, each
345+
When the primitive topology is ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST, each
338346
consecutive pair of vertices defines a single line primitive, according to
339347
the equation:
340348

@@ -366,9 +374,9 @@ endif::VK_EXT_provoking_vertex[]
366374
[[drawing-line-strips]]
367375
=== Line Strips
368376

369-
When the pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, one line
370-
primitive is defined by each vertex and the following vertex, according to
371-
the equation:
377+
When the primitive topology is ename:VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, one
378+
line primitive is defined by each vertex and the following vertex, according
379+
to the equation:
372380

373381
{empty}:: [eq]#p~i~ = {v~i~, v~i+1~}#
374382

@@ -398,8 +406,8 @@ endif::VK_EXT_provoking_vertex[]
398406
[[drawing-triangle-lists]]
399407
=== Triangle Lists
400408

401-
When the pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, each
402-
consecutive set of three vertices defines a single triangle primitive,
409+
When the primitive topology is ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
410+
each consecutive set of three vertices defines a single triangle primitive,
403411
according to the equation:
404412

405413
{empty}:: [eq]#p~i~ = {v~3i~, v~3i+1~, v~3i+2~}#
@@ -430,8 +438,8 @@ endif::VK_EXT_provoking_vertex[]
430438
[[drawing-triangle-strips]]
431439
=== Triangle Strips
432440

433-
When the pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, one
434-
triangle primitive is defined by each vertex and the two vertices that
441+
When the primitive topology is ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
442+
one triangle primitive is defined by each vertex and the two vertices that
435443
follow it, according to the equation:
436444

437445
{empty}:: [eq]#p~i~ = {v~i~, v~i+(1+i%2)~, v~i+(2-i%2)~}#
@@ -469,7 +477,7 @@ that the winding order is consistent throughout the strip.
469477
[[drawing-triangle-fans]]
470478
=== Triangle Fans
471479

472-
When the pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
480+
When the primitive topology is ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
473481
triangle primitives are defined around a shared common vertex, according to
474482
the equation:
475483

@@ -512,7 +520,7 @@ endif::VK_KHR_portability_subset[]
512520
[[drawing-line-lists-with-adjacency]]
513521
=== Line Lists With Adjacency
514522

515-
When the pname:topology is
523+
When the primitive topology is
516524
ename:VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, each consecutive set
517525
of four vertices defines a single line primitive with adjacency, according
518526
to the equation:
@@ -549,7 +557,7 @@ endif::VK_EXT_provoking_vertex[]
549557
[[drawing-line-strips-with-adjacency]]
550558
=== Line Strips With Adjacency
551559

552-
When the pname:topology is
560+
When the primitive topology is
553561
ename:VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, one line primitive
554562
with adjacency is defined by each vertex and the following vertex, according
555563
to the equation:
@@ -586,7 +594,7 @@ endif::VK_EXT_provoking_vertex[]
586594
[[drawing-triangle-lists-with-adjacency]]
587595
=== Triangle Lists With Adjacency
588596

589-
When the pname:topology is
597+
When the primitive topology is
590598
ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, each consecutive
591599
set of six vertices defines a single triangle primitive with adjacency,
592600
according to the equations:
@@ -624,7 +632,7 @@ endif::VK_EXT_provoking_vertex[]
624632
[[drawing-triangle-strips-with-adjacency]]
625633
=== Triangle Strips With Adjacency
626634

627-
When the pname:topology is
635+
When the primitive topology is
628636
ename:VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, one triangle
629637
primitive with adjacency is defined by each vertex and the following 5
630638
vertices.
@@ -684,7 +692,7 @@ endif::VK_EXT_provoking_vertex[]
684692
[[drawing-patch-lists]]
685693
=== Patch Lists
686694

687-
When the pname:topology is ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, each
695+
When the primitive topology is ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, each
688696
consecutive set of [eq]#m# vertices defines a single patch primitive,
689697
according to the equation:
690698

chapters/formats.txt

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,8 +1399,8 @@ endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
13991399

14001400
For the purposes of address alignment when accessing buffer memory
14011401
containing vertex attribute or texel data, the following formats are
1402-
considered _packed_ - whole texels or attributes are stored in bitfields of
1403-
a single 8-, 16-, or 32-bit fundamental data type.
1402+
considered _packed_ - components of the texels or attributes are stored in
1403+
bitfields packed into one or more 8-, 16-, or 32-bit fundamental data type.
14041404

14051405
* <<formats-packed-8-bit,Packed into 8-bit data types>>:
14061406
** ename:VK_FORMAT_R4G4_UNORM_PACK8
@@ -1419,6 +1419,26 @@ endif::VK_EXT_4444_formats[]
14191419
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
14201420
** ename:VK_FORMAT_R10X6_UNORM_PACK16
14211421
** ename:VK_FORMAT_R12X4_UNORM_PACK16
1422+
** ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16
1423+
** ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16
1424+
** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
1425+
** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
1426+
** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
1427+
** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
1428+
** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
1429+
** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
1430+
** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
1431+
** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
1432+
** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
1433+
** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
1434+
** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT
1435+
** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT
1436+
** ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
1437+
** ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
1438+
** ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
1439+
** ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
1440+
** ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
1441+
** ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
14221442
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
14231443
* <<formats-packed-32-bit,Packed into 32-bit data types>>:
14241444
** ename:VK_FORMAT_A8B8G8R8_UNORM_PACK32
@@ -1480,11 +1500,11 @@ An X indicates a component that is unused, but may: be present for padding.
14801500
|====
14811501

14821502
The suffix etext:_PACKnn indicates that the format is packed into an
1483-
underlying type with nn bits.
1503+
underlying type with etext:nn bits.
14841504
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
14851505
The suffix etext:_mPACKnn is a short-hand that indicates that the format has
1486-
several components (which may or may not be stored in separate _planes_)
1487-
that are each packed into an underlying type with nn bits.
1506+
etext:m groups of components (which may or may not be stored in separate
1507+
_planes_) that are each packed into an underlying type with etext:nn bits.
14881508
endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
14891509

14901510
The suffix etext:_BLOCK indicates that the format is a block-compressed
@@ -2552,6 +2572,8 @@ ifdef::VK_KHR_video_encode_queue[]
25522572
<<video-encode-operations,video encode operations>>
25532573
endif::VK_KHR_video_encode_queue[]
25542574

2575+
[[buffer-compatible-format-features]]
2576+
25552577
The following bits may: be set in pname:bufferFeatures, specifying that the
25562578
features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer
25572579
views>> created with the queried

0 commit comments

Comments
 (0)