Skip to content
Permalink
Browse files

Change log for October 25, 2016 Vulkan 1.0.32 spec update:

  * Bump API patch number and header version number to 32 for this update.

Github Issues:

  * Add automatic visibility operations to the presentation engineE when
    doing a queue present in flink:vkAcquireNextImageKHR. Removed all
    references to MEMORY_READ that referenced WSI - they no longer make
    sense (some aspects of public issues 128, 131, 132, 261, and 298).
  * Document valid non-boolean +externsync+ attribute values for <param>
    tags in +vk.xml+ (public issue 265).
  * Add valid usage to slink:VkImageCreateInfo requiring that
    pname:arrayLayers be 1 for images of type ename:VK_IMAGE_TYPE_3D
    (public issue 319).
  * Add missing captions to figures in the <<textures,Image Operations>>
    chapter (public issue 334).
  * Clarify WSI interaction with exclusive sharing mode (public issue
    344).
  * Added explicit language clarifying the allowed queue usage of
    resources created with ename:VK_SHARING_MODE_CONCURRENT (public
    issue 386).
  * Require that the
    slink:VkDescriptorSetLayoutCreateInfo::pname:binding members of the
    pname:pBindings array passed to
    flink:vkDescriptorSetLayoutCreateInfo all be distinct (public issue
    391).

Internal Issues:

  * Remove empty validity blocks from +vk.xml+ and suppressed broken
    validity statements and added missing statements to explicit
    validity. Doesn't affect output, other than some statements
    appearing in another block now (internal issue 513).
  • Loading branch information...
oddhack committed Oct 25, 2016
1 parent b972597 commit 368b08a7b2add6db489d0af766bd74854e1c87d4
@@ -1520,3 +1520,41 @@ Internal Issues:
* Tag usages of ``dynamically uniform'' as glossary terms and add a
glossary entry pointing to the SPIR-V Specification's definition of the
term (internal issue 531).

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

Change log for October 25, 2016 Vulkan 1.0.32 spec update:

* Bump API patch number and header version number to 32 for this update.

Github Issues:

* Add automatic visibility operations to the presentation engineE when
doing a queue present in flink:vkAcquireNextImageKHR. Removed all
references to MEMORY_READ that referenced WSI - they no longer make
sense (some aspects of public issues 128, 131, 132, 261, and 298).
* Document valid non-boolean +externsync+ attribute values for <param>
tags in +vk.xml+ (public issue 265).
* Add valid usage to slink:VkImageCreateInfo requiring that
pname:arrayLayers be 1 for images of type ename:VK_IMAGE_TYPE_3D
(public issue 319).
* Add missing captions to figures in the <<textures,Image Operations>>
chapter (public issue 334).
* Clarify WSI interaction with exclusive sharing mode (public issue
344).
* Added explicit language clarifying the allowed queue usage of
resources created with ename:VK_SHARING_MODE_CONCURRENT (public
issue 386).
* Require that the
slink:VkDescriptorSetLayoutCreateInfo::pname:binding members of the
pname:pBindings array passed to
flink:vkDescriptorSetLayoutCreateInfo all be distinct (public issue
391).

Internal Issues:

* Remove empty validity blocks from +vk.xml+ and suppressed broken
validity statements and added missing statements to explicit
validity. Doesn't affect output, other than some statements
appearing in another block now (internal issue 513).

@@ -160,7 +160,7 @@ GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker
COMMONDOCS = $(CHAPTERS) $(GENINCLUDE) $(GENDEPENDS)
# A generated included file containing the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0.31
SPECREVISION = 1.0.32
SPECREMARK =

# Spec targets
@@ -164,14 +164,9 @@ registered.

.Valid Usage
****
* pname:instance must: be a valid sname:VkInstance handle
* pname:flags must: be a combination of one or more of
sname:VkDebugReportFlagBitsEXT
* pname:objType must: be one of sname:VkDebugReportObjectTypeEXT,
ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`
* pname:object may: be a Vulkan object
* pname:pLayerPrefix must: be a `NULL` terminated string
* pname:pMsg must: be a `NULL` terminated string
* pname:pMessage must: be a `NULL` terminated string
****

include::../validity/protos/vkDebugReportMessageEXT.txt[]
@@ -534,9 +534,6 @@ The fname:vkCmdWaitEvents or fname:vkCmdPipelineBarrier used to transition
the image away from ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout must: have
pname:dstStageMask and pname:dstAccessMask parameters set based on the next
use of the image.
The pname:srcAccessMask must: include ename:VK_ACCESS_MEMORY_READ_BIT to
ensure that all prior reads by the presentation engine are complete before
the image layout transition occurs.
The application must: use
<<synchronization-implicit-ordering-hostwrites,implicit ordering
guarantees>> and
@@ -567,6 +564,19 @@ still be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout if it was
previously presented, or in the ename:VK_IMAGE_LAYOUT_UNDEFINED layout if
this is the first time it has been acquired.

[NOTE]
.Note
====
Exclusive ownership of presentable images corresponding to a swapchain
created with ename:VK_SHARING_MODE_EXCLUSIVE as defined in
<<resources-sharing,Resource Sharing>> is not altered by a call to
fname:vkAcquireNextImageKHR.
That means upon the first acquisition from such a swapchain presentable
images are not owned by any queue family, while at subsequent acquisitions
the presentable images remain owned by the queue family the image was
previously presented on.
====

The possible return values for fname:vkAcquireNextImageKHR() depend on the
pname:timeout provided:

@@ -612,16 +622,18 @@ image sizes, a ename:VK_ERROR_OUT_OF_DATE_KHR error will be returned.

Before an application can: present an image, the image's layout must: be
transitioned to the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout.
The fname:vkCmdWaitEvents or fname:vkCmdPipelineBarrier that perform the
transition must: have pname:srcStageMask and pname:srcAccessMask parameters
set based on the preceding use of the image.
The pname:dstAccessMask must: include ename:VK_ACCESS_MEMORY_READ_BIT
indicating all prior accesses indicated in pname:srcAccessMask from stages
in pname:srcStageMask are to be made available to reads by the presentation
engine.
Any value of pname:dstStageMask is valid, but should: be set to
ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT to avoid delaying subsequent
commands that do not access the image.

.Note
[NOTE]
====
When transitioning the image to ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, there
is no need to delay subsequent processing, or perform any visibility
operations (as flink:vkQueuePresentKHR performs automatic visibility
operations).
To achieve this, the pname:dstAccessMask member of the
slink:VkImageMemoryBarrier should: be set to `0`, and the pname:dstStageMask
parameter should: be set to ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT.
====

// refBegin vkQueuePresentKHR - Queue an image for presentation

@@ -649,6 +661,15 @@ ifdef::VK_KHR_display_swapchain[]
endif::VK_KHR_display_swapchain[]
****

Any writes to memory backing the images referenced by the
pname:pImageIndices and pname:pSwapchains members of pname:pPresentInfo,
that are available before flink:VkQueuePresentKHR is executed, are
automatically made visible to the read access performed by the presentation
engine.
This automatic visibility operation for an image happens-after the semaphore
signal operation, and happens-before the presentation engine accesses the
image.

include::../../validity/protos/vkQueuePresentKHR.txt[]

// refBegin VkPresentInfoKHR - Structure describing parameters of a queue presentation
@@ -701,7 +722,11 @@ endif::VK_KHR_display_swapchain[]

fname:vkQueuePresentKHR, releases the acquisition of the images referenced
by pname:imageIndices.
A presented images must: not be used again before it has been reacquired
The queue family corresponding to the queue fname:vkQueuePresentKHR is
executed on must: have ownership of the presented images as defined in
<<resource-sharing,Resource Sharing>>.
fname:vkQueuePresentKHR does not alter the queue family ownership, but the
presented images must: not be used again before they have been reacquired
using fname:vkAcquireNextImageKHR.

The processing of the presentation happens in issue order with other queue
@@ -208,6 +208,7 @@ described for flink:vkCreateRenderPass.
not include ename:VK_IMAGE_ASPECT_DEPTH_BIT or
ename:VK_IMAGE_ASPECT_STENCIL_BIT
* pname:aspectMask must: not include ename:VK_IMAGE_ASPECT_METADATA_BIT
* pname:clearValue must: be a valid sname:VkClearValue union
****

include::../validity/structs/VkClearAttachment.txt[]
@@ -288,6 +289,12 @@ This union is used where part of the API requires either color or
depth/stencil clear values, depending on the attachment, and defines the
initial clear values in the slink:VkRenderPassBeginInfo structure.

.Valid Usage
****
* pname:depthStencil must: be a valid sname:VkClearDepthStencilValue
structure
****

include::../validity/structs/VkClearValue.txt[]


@@ -425,8 +425,8 @@ include::../api/structs/VkCommandBufferInheritanceInfo.txt[]
compatible>> with and can: be executed within.
If the sname:VkCommandBuffer will not be executed within a render pass
instance, pname:renderPass is ignored.
* pname:subpass is the index of the subpass within the render pass instance
that the sname:VkCommandBuffer will be executed within.
* pname:subpass is the index of the subpass within the render pass
instance that the sname:VkCommandBuffer will be executed within.
If the sname:VkCommandBuffer will not be executed within a render pass
instance, pname:subpass is ignored.
* pname:framebuffer optionally refers to the sname:VkFramebuffer object
@@ -157,16 +157,17 @@ pname:layerCount layers are copied to the destination image.

[[copies-images-format-compatibility]]
The formats of pname:srcImage and pname:dstImage must: be compatible.
Formats are considered compatible if their element size is the same
between both formats.
Formats are considered compatible if their element size is the same between
both formats.
For example, ename:VK_FORMAT_R8G8B8A8_UNORM is compatible with
ename:VK_FORMAT_R32_UINT because both texels are 4 bytes in size.
Depth/stencil formats must: match exactly.

fname:vkCmdCopyImage allows copying between size-compatible compressed and
uncompressed internal formats.
Formats are size-compatible if the element size of the uncompressed format is
equal to the element size (compressed texel block size) of the compressed format.
Formats are size-compatible if the element size of the uncompressed format
is equal to the element size (compressed texel block size) of the compressed
format.
Such a copy does not perform on-the-fly compression or decompression.
When copying from an uncompressed format to a compressed format, each texel
of uncompressed data of the source image is copied as a raw value to the
@@ -558,8 +559,8 @@ destination image.
** If the calling command's pname:srcImage (flink:vkCmdCopyImageToBuffer)
or pname:dstImage (flink:vkCmdCopyBufferToImage) is of type
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
pname:imageOffset.z must: be `0` and
pname:imageExtent.depth must: be `1`.
pname:imageOffset.z must: be `0` and pname:imageExtent.depth must: be
`1`.
* If the calling command's sname:VkImage parameter is a compressed format
image:
** pname:bufferRowLength must: be a multiple of the compressed texel block
@@ -910,7 +911,8 @@ the specified source and destination regions.
subresource depth
** If the calling command's pname:srcImage is of type
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
pname:srcOffset[0].z must: be `0` and pname:srcOffset[1].z must: be `1`.
pname:srcOffset[0].z must: be `0` and pname:srcOffset[1].z must: be
`1`.
* pname:dstOffset[0].pname:x and pname:dstOffset[1].pname:x must: both be
greater than or equal to `0` and less than or equal to the destination
image subresource width
@@ -925,7 +927,8 @@ the specified source and destination regions.
image subresource depth
** If the calling command's pname:dstImage is of type
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
pname:dstOffset[0].z must: be `0` and pname:dstOffset[1].z must: be `1`.
pname:dstOffset[0].z must: be `0` and pname:dstOffset[1].z must: be
`1`.
****

include::../validity/structs/VkImageBlit.txt[]
@@ -600,6 +600,12 @@ include::../api/structs/VkDescriptorSetLayoutCreateInfo.txt[]
* pname:pBindings is a pointer to an array of
slink:VkDescriptorSetLayoutBinding structures.

.Valid Usage
****
* The slink:VkDescriptorSetLayoutBinding::pname:binding members of the
elements of the pname:pBindings array must: each have different values.
****

include::../validity/structs/VkDescriptorSetLayoutCreateInfo.txt[]

// refBegin VkDescriptorSetLayoutBinding Structure specifying a descriptor set layout binding
@@ -652,10 +658,11 @@ graphics stages and the compute stage.
The above layout definition allows the descriptor bindings to be specified
sparsely such that not all binding numbers between 0 and the maximum binding
number need to be specified in the pname:pBindings array.
However, all binding numbers between 0 and the maximum binding number may:
consume memory in the descriptor set layout even if not all descriptor
bindings are used, though it should: not consume additional memory from the
descriptor pool.
However, all binding numbers between 0 and the maximum binding number in the
slink:VkDescriptorSetLayoutCreateInfo::pname:pBindings array may: consume
memory in the descriptor set layout even if not all descriptor bindings are
used, though it should: not consume additional memory from the descriptor
pool.

[NOTE]
.Note
@@ -474,8 +474,9 @@ The assembled primitives execute the currently bound graphics pipeline.
.Valid Usage
****
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@@ -609,8 +610,9 @@ The assembled primitives execute the currently bound graphics pipeline.
.Valid Usage
****
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@@ -746,8 +748,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
sname:VkDrawIndirectCommand structures accessed by this command must: be
code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@@ -919,8 +922,9 @@ located at pname:countBufferOffset and use this as the draw count.
sname:VkDrawIndirectCommand structures accessed by this command must: be
code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@@ -1047,8 +1051,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
sname:VkDrawIndexedIndirectCommand structures accessed by this command
must: be code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@@ -1227,8 +1232,9 @@ located at pname:countBufferOffset and use this as the draw count.
sname:VkDrawIndexedIndirectCommand structures accessed by this command
must: be code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@@ -3867,9 +3867,10 @@ limits in sname:VkPhysicalDeviceLimits as follows:
If multiple bits are set in pname:usage, pname:sampleCounts will be the
intersection of the per-usage values described above.

If none of the bits described above are set in pname:usage, then there
is no corresponding limit in sname:VkPhysicalDeviceLimits. In this case,
pname:sampleCounts must: include at least ename:VK_SAMPLE_COUNT_1_BIT.
If none of the bits described above are set in pname:usage, then there is no
corresponding limit in sname:VkPhysicalDeviceLimits.
In this case, pname:sampleCounts must: include at least
ename:VK_SAMPLE_COUNT_1_BIT.


[[features-extentperimagetype]]

0 comments on commit 368b08a

Please sign in to comment.
You can’t perform that action at this time.