Skip to content

Commit ce3204c

Browse files
committed
Change log for April 1, 2016 Vulkan 1.0.8 spec update:
* Bump API patch number and header version number to 8 for this update. Github Issues: * Specify in the validity language for flink:vkBeginCommandBuffer that pname:commandBuffer mustnot: currently be pending execution (public issue 96). * Describe depth comparison using the correct temporary variable names in the <<textures-depth-compare-operation,Depth Compare Operation>> section (public issue 100). * Clarify the order of descriptor update operations in the flink:vkUpdateDescriptorSets command (public issue 115). * Specify in the VK_KHR_swapchain extension that flink:vkAcquireNextImageKHR's pname:semaphore and pname:fence parameters cannot both be sname:VK_NULL_HANDLE (partly addresses, but does not fully close, public issue 117 / internal issue 246). * Change reference to the "lifetime" of a Vulkan command to "duration", and define the "duration" term (public issue 135). * Added valid usage language for slink:VkImageLayout to require both pname:height and pname:depth to be 1 for 1D images and pname:depth to be 1 for 2D images (public issue 137). * Fix SPIR-V example code in the <<descriptorsets-inputattachment,Input Attachment>> section to properly decorate the code:InputAttachmentIndex (public issue 139). * Fix reference to nonexistent pname:imageInfo in the description of flink:VkWriteDescriptorSet to refer to pname:pImageInfo (public issue 140). Internal Issues: * Link to the fixed-function vertex chapter from the drawing chapter (internal issue flutter#110) * Fix typo in slink:VkImageCreateInfo validity language: ptext:maxExtent.sampleCounts -> pname:sampleCounts (internal issue 249). * Explain why the non-core token etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR is used in the example in the <<synchronization-semaphores,Semaphores>> section (internal issue 251). * Attempt to clarify in the VK_KHR_android_surface extension's <<platformQuerySupport_android,Android Platform Support>> section that there is no Android-specific WSI query, and why (internal issue 252). Other Commits: * Add missing language about ename:VK_INCOMPLETE being returned from array queries when the passed array is too short, in the VK_KHR_display, VK_KHR_swapchain, and VK_KHR_surface extensions.
1 parent 8c3c9b4 commit ce3204c

File tree

13 files changed

+129
-34
lines changed

13 files changed

+129
-34
lines changed

ChangeLog.txt

+55
Original file line numberDiff line numberDiff line change
@@ -359,3 +359,58 @@ Other Commits:
359359

360360
* Fix ref page build to generate .3 targets in the right output
361361
directory.
362+
363+
-----------------------------------------------------
364+
365+
Change log for April 1, 2016 Vulkan 1.0.8 spec update:
366+
367+
* Bump API patch number and header version number to 8 for this
368+
update.
369+
370+
Github Issues:
371+
372+
* Specify in the validity language for flink:vkBeginCommandBuffer that
373+
pname:commandBuffer mustnot: currently be pending execution (public
374+
issue 96).
375+
* Describe depth comparison using the correct temporary variable names
376+
in the <<textures-depth-compare-operation,Depth Compare Operation>>
377+
section (public issue 100).
378+
* Clarify the order of descriptor update operations in the
379+
flink:vkUpdateDescriptorSets command (public issue 115).
380+
* Specify in the VK_KHR_swapchain extension that
381+
flink:vkAcquireNextImageKHR's pname:semaphore and pname:fence
382+
parameters cannot both be sname:VK_NULL_HANDLE (partly addresses,
383+
but does not fully close, public issue 117 / internal issue 246).
384+
* Change reference to the "lifetime" of a Vulkan command to
385+
"duration", and define the "duration" term (public issue 135).
386+
* Added valid usage language for slink:VkImageLayout to require both
387+
pname:height and pname:depth to be 1 for 1D images and pname:depth
388+
to be 1 for 2D images (public issue 137).
389+
* Fix SPIR-V example code in the
390+
<<descriptorsets-inputattachment,Input Attachment>> section to
391+
properly decorate the code:InputAttachmentIndex (public issue 139).
392+
* Fix reference to nonexistent pname:imageInfo in the description of
393+
flink:VkWriteDescriptorSet to refer to pname:pImageInfo (public
394+
issue 140).
395+
396+
Internal Issues:
397+
398+
* Link to the fixed-function vertex chapter from the drawing chapter
399+
(internal issue #110)
400+
* Fix typo in slink:VkImageCreateInfo validity language:
401+
ptext:maxExtent.sampleCounts -> pname:sampleCounts (internal issue
402+
249).
403+
* Explain why the non-core token etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
404+
is used in the example in the
405+
<<synchronization-semaphores,Semaphores>> section (internal issue
406+
251).
407+
* Attempt to clarify in the VK_KHR_android_surface extension's
408+
<<platformQuerySupport_android,Android Platform Support>> section
409+
that there is no Android-specific WSI query, and why (internal issue
410+
252).
411+
412+
Other Commits:
413+
414+
* Add missing language about ename:VK_INCOMPLETE being returned from
415+
array queries when the passed array is too short, in the
416+
VK_KHR_display, VK_KHR_swapchain, and VK_KHR_surface extensions.

doc/specs/vulkan/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
126126
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
127127
# A generated included file with the spec version, date, and git commit
128128
SPECVERSION = specversion.txt
129-
SPECREVISION = 1.0.7
129+
SPECREVISION = 1.0.8
130130
SPECREMARK =
131131

132132
# Spec targets

doc/specs/vulkan/appendices/glossary.txt

+4
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,10 @@ Drawing Commands::
228228
flink:vkCmdDraw, flink:vkCmdDrawIndexed, flink:vkCmdDrawIndirect, and
229229
flink:vkCmdDrawIndexedIndirect.
230230

231+
Duration (Command)::
232+
The _duration_ of a {apiname} command refers to the interval between
233+
calling the command and its return to the caller.
234+
231235
Dynamic Storage Buffer::
232236
A storage buffer whose offset is specified each time the storage buffer
233237
is bound to a command buffer via a descriptor set.

doc/specs/vulkan/chapters/descriptorsets.txt

+12-5
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,7 @@ layout (input_attachment_index=i, set=m, binding=n) uniform subpassInput myInput
514514
OpName %9 "myInputAttachment"
515515
OpDecorate %9 DescriptorSet m
516516
OpDecorate %9 Binding n
517+
OpDecorate %9 InputAttachmentIndex i
517518
%2 = OpTypeVoid
518519
%3 = OpTypeFunction %2
519520
%6 = OpTypeFloat 32
@@ -1247,6 +1248,11 @@ include::../protos/vkUpdateDescriptorSets.txt[]
12471248
slink:VkCopyDescriptorSet structures describing the descriptor sets to
12481249
copy between.
12491250

1251+
The operations described by pname:pDescriptorWrites are performed first,
1252+
followed by the operations described by pname:pDescriptorCopies. Within
1253+
each array, the operations are performed in the order they appear in the
1254+
array.
1255+
12501256
include::../validity/protos/vkUpdateDescriptorSets.txt[]
12511257

12521258
Each element in the pname:pDescriptorWrites array describes an operation
@@ -1293,7 +1299,8 @@ ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
12931299
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, or
12941300
ename:VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, the pname:pBufferInfo array
12951301
will be used to update the descriptors, and other arrays will be ignored.
1296-
Each entry is of type sname:VkDescriptorBufferInfo and is defined as:
1302+
Each element of pname:pBufferInfo is of type sname:VkDescriptorBufferInfo
1303+
and is defined as:
12971304

12981305
include::../structs/VkDescriptorBufferInfo.txt[]
12991306

@@ -1321,10 +1328,10 @@ If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_SAMPLER,
13211328
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
13221329
ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
13231330
ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or
1324-
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the members in pname:pImageInfo
1325-
array will be used to update the descriptors, and other arrays will be
1326-
ignored. pname:imageInfo is of type sname:VkDescriptorImageInfo and is
1327-
defined as:
1331+
ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, the elements of the
1332+
pname:pImageInfo array will be used to update the descriptors, and other
1333+
arrays will be ignored. Each element of pname:pImageInfo is of type
1334+
sname:VkDescriptorImageInfo and is defined as:
13281335

13291336
include::../structs/VkDescriptorImageInfo.txt[]
13301337

doc/specs/vulkan/chapters/drawing.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,10 @@ Drawing commands fall roughly into two categories:
360360

361361
* Non-indexed drawing (fname:vkCmdDraw and fname:vkCmdDrawIndirect)
362362
commands present a sequential code:vertexIndex to the vertex shader. The
363-
sequential index is generated automatically by the device.
363+
sequential index is generated automatically by the device (see
364+
<<fxvertex,Fixed-Function Vertex Processing>> for details on both
365+
specifying the vertex attributes indexed by code:vertexIndex, as well as
366+
binding vertex buffers containing those attributes to a command buffer).
364367
* Indexed drawing commands (fname:vkCmdDrawIndexed and
365368
fname:vkCmdDrawIndexedIndirect) read index values from an _index buffer_ and use
366369
this to compute the code:vertexIndex value for the vertex shader.

doc/specs/vulkan/chapters/fundamentals.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -397,7 +397,7 @@ can: be destroyed:
397397

398398

399399
[[fundamentals-commandsyntax]]
400-
== Command Syntax
400+
== Command Syntax and Duration
401401

402402
The Specification describes {apiname} commands as functions or procedures
403403
using C99 syntax. Language bindings for other languages such as C++ and
@@ -438,6 +438,9 @@ and/or outside a render pass, and in one or more of the supported queue
438438
types. These restrictions are documented together with the definition of
439439
each such command.
440440

441+
The _duration_ of a {apiname} command refers to the interval between calling
442+
the command and its return to the caller.
443+
441444

442445
[[fundamentals-threadingbehavior]]
443446
== Threading Behavior

doc/specs/vulkan/chapters/memory.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ parameter and takes a value of type elink:VkSystemAllocationScope:
160160
include::../enums/VkSystemAllocationScope.txt[]
161161

162162
* ename:VK_SYSTEM_ALLOCATION_SCOPE_COMMAND - The allocation is scoped to
163-
the lifetime of the {apiname} command.
163+
the duration of the {apiname} command.
164164
* ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT - The allocation is scoped to
165165
the lifetime of the {apiname} object that is being created or used.
166166
* ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE - The allocation is scoped to the

doc/specs/vulkan/chapters/synchronization.txt

+7-3
Original file line numberDiff line numberDiff line change
@@ -281,11 +281,11 @@ operation. For example, a sname:VkImageMemoryBarrier could use:
281281
* pname:dstStageMask = ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
282282
* pname:dstAccessMask = ename:VK_ACCESS_COLOR_ATTACHMENT_READ_BIT |
283283
ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT.
284-
* pname:oldLayout = ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
284+
* pname:oldLayout = etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
285285
* pname:newLayout = ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
286286

287-
Alternately, pname:oldLayout can: be ename:VK_IMAGE_LAYOUT_UNDEFINED, if
288-
the image's contents need not be preserved.
287+
Alternately, pname:oldLayout can: be ename:VK_IMAGE_LAYOUT_UNDEFINED, if the
288+
image's contents need not be preserved.
289289

290290
This barrier accomplishes a dependency chain between previous presentation
291291
operations and subsequent color attachment output operations, with the
@@ -296,6 +296,10 @@ semaphore wait stalls the
296296
ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT stage, then there is a
297297
dependency from that same stage to itself with the layout transition
298298
performed in between.
299+
300+
(The primary use case for this example is with the presentation extensions,
301+
thus the etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR token is used even though it
302+
is not defined in the core {apiname} specification.)
299303
====
300304

301305
When a queue signals or waits upon a semaphore, certain

doc/specs/vulkan/chapters/textures.txt

+19-18
Original file line numberDiff line numberDiff line change
@@ -611,38 +611,39 @@ the value of the sparse unbound texel is undefined.
611611
[[textures-depth-compare-operation]]
612612
=== Depth Compare Operation
613613

614-
If the image view's format is depth and the operation is a code:Dref
615-
instruction, a depth comparison is performed. The initial value of the
616-
result latexmath:[$r$] is latexmath:[$0.0$], which is replaced with
617-
latexmath:[$1.0$] if the result of the compare operation is
618-
latexmath:[$true$]. The compare operation is selected by the pname:compareOp
614+
If the image view has a depth/stencil format, the depth component is
615+
selected by the pname:aspectMask, and the operation is a code:Dref
616+
instruction, a depth comparison is performed. The value of the
617+
result latexmath:[$D$] is latexmath:[$1.0$] if the result of the
618+
compare operation is latexmath:[$true$], and latexmath:[$0.0$]
619+
otherwise. The compare operation is selected by the pname:compareOp
619620
member of the sampler.
620621

621622
[latexmath]
622623
+++++++++++++++++++
623624
\begin{align*}
624-
r & = 0.0 & \textrm{initial value} \\
625-
r & = 1.0
625+
D & = 1.0 &
626626
\begin{cases}
627-
D_{ref} \leq D_{t} & \textrm{for LEQUAL} \\
628-
D_{ref} \geq D_{t} & \textrm{for GEQUAL} \\
629-
D_{ref} < D_{t} & \textrm{for LESS} \\
630-
D_{ref} > D_{t} & \textrm{for GREATER} \\
631-
D_{ref} = D_{t} & \textrm{for EQUAL} \\
632-
D_{ref} \neq D_{t} & \textrm{for NOTEQUAL} \\
633-
true & \textrm{for ALWAYS} \\
634-
false & \textrm{for NEVER}
635-
\end{cases}
627+
D_{ref} \leq D & \textrm{for LEQUAL} \\
628+
D_{ref} \geq D & \textrm{for GEQUAL} \\
629+
D_{ref} < D & \textrm{for LESS} \\
630+
D_{ref} > D & \textrm{for GREATER} \\
631+
D_{ref} = D & \textrm{for EQUAL} \\
632+
D_{ref} \neq D & \textrm{for NOTEQUAL} \\
633+
true & \textrm{for ALWAYS} \\
634+
false & \textrm{for NEVER}
635+
\end{cases} \\
636+
D & = 0.0 & \textrm{otherwise}
636637
\end{align*}
637638
+++++++++++++++++++
638639

639-
where:
640+
where, in the depth comparison:
640641

641642
[latexmath]
642643
+++++++++++++++++++
643644
\begin{align*}
644645
& D_{ref} = shaderOp.D_{ref} & \textrm{(from optional SPIR-V operand)} \\
645-
& D_{t} & \textrm{texel depth value}
646+
& D & \textrm{texel depth value}
646647
\end{align*}
647648
+++++++++++++++++++
648649

doc/specs/vulkan/validity/protos/vkBeginCommandBuffer.txt

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ endif::doctype-manpage[]
1010
* pname:commandBuffer must: be a valid sname:VkCommandBuffer handle
1111
* pname:pBeginInfo must: be a pointer to a valid sname:VkCommandBufferBeginInfo structure
1212
* pname:commandBuffer mustnot: be in the recording state
13+
* pname:commandBuffer mustnot: currently be pending execution
1314
* If pname:commandBuffer was allocated from a sname:VkCommandPool which did not have the ename:VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT flag set, pname:commandBuffer must: be in the initial state.
1415
* If pname:commandBuffer is a secondary command buffer, the pname:pInheritanceInfo member of pname:pBeginInfo must: be a valid sname:VkCommandBufferInheritanceInfo structure
1516
* If pname:commandBuffer is a secondary command buffer and either the pname:occlusionQueryEnable member of the pname:pInheritanceInfo member of pname:pBeginInfo is ename:VK_FALSE, or the precise occlusion queries feature is not enabled, the pname:queryFlags member of the pname:pInheritanceInfo member pname:pBeginInfo mustnot: contain ename:VK_QUERY_CONTROL_PRECISE_BIT

doc/specs/vulkan/validity/structs/VkImageCreateInfo.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ endif::doctype-manpage[]
2929
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:extent.width and pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimensionCube, or sname:VkImageFormatProperties::pname:maxExtent.width/height (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
3030
* If pname:imageType is ename:VK_IMAGE_TYPE_2D and pname:flags contains ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:extent.width and pname:extent.height must: be equal
3131
* If pname:imageType is ename:VK_IMAGE_TYPE_3D, pname:extent.width, pname:extent.height and pname:extent.depth must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, or sname:VkImageFormatProperties::pname:maxExtent.width/height/depth (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
32+
* If pname:imageType is ename:VK_IMAGE_TYPE_1D, both pname:extent.height and pname:extent.depth must: be `1`
33+
* If pname:imageType is ename:VK_IMAGE_TYPE_2D, pname:extent.depth must: be `1`
3234
* pname:mipLevels must: be less than or equal to latexmath:[$\lfloor\log_2(\max(\mathit{extent.width}, \mathit{extent.height}, \mathit{extent.depth}))\rfloor + 1$]
3335
* If any of pname:extent.width, pname:extent.height or pname:extent.depth are greater than the equivalently named members of sname:VkPhysicalDeviceLimits::pname:maxImageDimension3D, pname:mipLevels must: be less than or equal to sname:VkImageFormatProperties::pname:maxMipLevels (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure)
3436
* pname:arrayLayers must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, or sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure) - whichever is higher
35-
* pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:maxExtent.sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure
37+
* pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:sampleCounts returned by flink:vkGetPhysicalDeviceProperties, or sname:VkImageFormatProperties::pname:sampleCounts returned by fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage and pname:flags equal to those in this structure
3638
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.width must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferWidth
3739
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT or ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, pname:extent.height must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxFramebufferHeight
3840
* If pname:usage includes ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:samples must: be a bit value that is set in sname:VkPhysicalDeviceLimits::pname:maxFramebufferColorSamples

0 commit comments

Comments
 (0)