Change log for October 14, 2016 Vulkan 1.0.31 spec update:

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

Github Issues:

  * Clarifying wording of slink:VkGraphicsPipelineCreateInfo parameters and
    adding Valid Usage statements on render pass compatibility to the
    <<drawing,drawing commands>> (public issue 375).
  * Replace 'texel size' with 'element size', and add a definition to the
    glossary (public issue 382).
  * Clarify the description of ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR to
    make it accurate, but still generic (non-exhaustive). Remove two Valid
    Usage statements describing error situations that will return
    ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR (public issue 387).
  * Fix refBegin tag for elink:VkDebugReportFlagBitsEXT (public issue 392).
  * The <<interfaces-builtin-variables,built-in variable>> code:PrimitiveId
    in a fragment shader needs the code:Input storage class (public issue
    393).

Internal Issues:

  * Unused ({y,z} and {height,depth} for 1D, z and depth for 2D) offsets
    must be 0 and unused extents must be 1. Added basic offset and extent
    valid usage for slink:VkImageResolve to match that of slink:VkImageCopy
    (internal issue 413).
  * Describe what flink:vkGetPhysicalDeviceImageFormatProperties returns for
    pname:sampleCounts when for pname:usage only includes transfer-related
    flags (internal issue 478).
  * Remove mention of
    slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers from the valid
    usage for slink:VkImageCreateInfo::pname:arrayLayers (internal issue
    520).
  * 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).
This commit is contained in:
Jon Leech 2016-10-14 04:31:51 -07:00
parent 49adf2575c
commit b97259786d
18 changed files with 196 additions and 46 deletions

View File

@ -1481,3 +1481,42 @@ Internal Issues:
* Modify the <<features-supported-sample-counts,Supported Sample Counts>> * Modify the <<features-supported-sample-counts,Supported Sample Counts>>
language to allow multisampled depth-stencil images (internal issue language to allow multisampled depth-stencil images (internal issue
521). 521).
-----------------------------------------------------
Change log for October 14, 2016 Vulkan 1.0.31 spec update:
* Bump API patch number and header version number to 31 for this update.
Github Issues:
* Clarifying wording of slink:VkGraphicsPipelineCreateInfo parameters and
adding Valid Usage statements on render pass compatibility to the
<<drawing,drawing commands>> (public issue 375).
* Replace 'texel size' with 'element size', and add a definition to the
glossary (public issue 382).
* Clarify the description of ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR to
make it accurate, but still generic (non-exhaustive). Remove two Valid
Usage statements describing error situations that will return
ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR (public issue 387).
* Fix refBegin tag for elink:VkDebugReportFlagBitsEXT (public issue 392).
* The <<interfaces-builtin-variables,built-in variable>> code:PrimitiveId
in a fragment shader needs the code:Input storage class (public issue
393).
Internal Issues:
* Unused ({y,z} and {height,depth} for 1D, z and depth for 2D) offsets
must be 0 and unused extents must be 1. Added basic offset and extent
valid usage for slink:VkImageResolve to match that of slink:VkImageCopy
(internal issue 413).
* Describe what flink:vkGetPhysicalDeviceImageFormatProperties returns for
pname:sampleCounts when for pname:usage only includes transfer-related
flags (internal issue 478).
* Remove mention of
slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers from the valid
usage for slink:VkImageCreateInfo::pname:arrayLayers (internal issue
520).
* 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).

View File

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

View File

@ -272,6 +272,15 @@ Dynamic Uniform Buffer::
A uniform buffer whose offset is specified each time the uniform buffer A uniform buffer whose offset is specified each time the uniform buffer
is bound to a command buffer via a descriptor set. is bound to a command buffer via a descriptor set.
Dynamically Uniform::
See _Dynamically Uniform_ in section 2.2 ``Terms'' of the
<<spirv-spec,Khronos SPIR-V Specification>>.
Element Size::
The size (in bytes) used to store one element of an uncompressed format
or the size (in bytes) used to store one block of a block-compressed
format.
Explicitly-Enabled Layer:: Explicitly-Enabled Layer::
A layer enabled by the application by adding it to the enabled layer A layer enabled by the application by adding it to the enabled layer
list in flink:vkCreateInstance or flink:vkCreateDevice. list in flink:vkCreateInstance or flink:vkCreateDevice.

View File

@ -49,7 +49,7 @@ include::../api/structs/VkDebugReportCallbackCreateInfoEXT.txt[]
Bits which can: be set include: Bits which can: be set include:
+ +
-- --
// refBegin VkDebugReportCallbackCreateInfoEXT Bitmask specifying events which cause a debug report callback // refBegin VkDebugReportFlagBitsEXT Bitmask specifying events which cause a debug report callback
include::../api/enums/VkDebugReportFlagBitsEXT.txt[] include::../api/enums/VkDebugReportFlagBitsEXT.txt[]
* ename:VK_DEBUG_REPORT_ERROR_BIT_EXT indicates an error that may cause * ename:VK_DEBUG_REPORT_ERROR_BIT_EXT indicates an error that may cause

View File

@ -62,10 +62,5 @@ include::../../api/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
* pname:window is a pointer to the code:ANativeWindow to associate the * pname:window is a pointer to the code:ANativeWindow to associate the
surface with. surface with.
.Valid Usage
****
* pname:window must: not be in a connected state
****
include::../../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[] include::../../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[]

View File

@ -14,6 +14,7 @@ surfaces) is displayed at a time, but multiple images can: be queued for
presentation. presentation.
An application renders to the image, and then queues the image for An application renders to the image, and then queues the image for
presentation to the surface. presentation to the surface.
A native window cannot: be associated with more than one swapchain at a A native window cannot: be associated with more than one swapchain at a
time. time.
Further, swapchains cannot: be created for native windows that have a Further, swapchains cannot: be created for native windows that have a
@ -182,9 +183,6 @@ effects that require them to run for all pixels in the presentable image.
**** ****
* pname:surface must: be a surface that is supported by the device as * pname:surface must: be a surface that is supported by the device as
determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR
* The native window referred to by pname:surface must: not already be
associated with a swapchain other than pname:oldSwapchain, or with a
non-Vulkan graphics API surface
* pname:minImageCount must: be greater than or equal to the value returned * pname:minImageCount must: be greater than or equal to the value returned
in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR
structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR
@ -260,6 +258,10 @@ following sname:VkImageCreateInfo parameters:
The sname:VkSurfaceKHR associated with a swapchain must: not be destroyed The sname:VkSurfaceKHR associated with a swapchain must: not be destroyed
until after the swapchain is destroyed. until after the swapchain is destroyed.
The native window referred to by pname:surface must: not already be
associated with a swapchain other than pname:oldSwapchain, or with a
non-Vulkan graphics API surface.
Like core functions, several WSI functions, including Like core functions, several WSI functions, including
fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical
device was lost. device was lost.

View File

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

View File

@ -157,7 +157,7 @@ pname:layerCount layers are copied to the destination image.
[[copies-images-format-compatibility]] [[copies-images-format-compatibility]]
The formats of pname:srcImage and pname:dstImage must: be compatible. The formats of pname:srcImage and pname:dstImage must: be compatible.
Formats are considered compatible if their texel size in bytes is the same Formats are considered compatible if their element size is the same
between both formats. between both formats.
For example, ename:VK_FORMAT_R8G8B8A8_UNORM is compatible with For example, ename:VK_FORMAT_R8G8B8A8_UNORM is compatible with
ename:VK_FORMAT_R32_UINT because both texels are 4 bytes in size. ename:VK_FORMAT_R32_UINT because both texels are 4 bytes in size.
@ -165,8 +165,8 @@ Depth/stencil formats must: match exactly.
fname:vkCmdCopyImage allows copying between size-compatible compressed and fname:vkCmdCopyImage allows copying between size-compatible compressed and
uncompressed internal formats. uncompressed internal formats.
Formats are size-compatible if the texel size of the uncompressed format is Formats are size-compatible if the element size of the uncompressed format is
equal to the compressed texel block size in bytes of the compressed format. 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. Such a copy does not perform on-the-fly compression or decompression.
When copying from an uncompressed format to a compressed format, each texel 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 of uncompressed data of the source image is copied as a raw value to the
@ -276,10 +276,6 @@ include::../api/structs/VkImageCopy.txt[]
data. data.
* pname:extent is the size in texels of the source image to copy in * pname:extent is the size in texels of the source image to copy in
pname:width, pname:height and pname:depth. pname:width, pname:height and pname:depth.
1D images use only pname:x and pname:width.
2D images use pname:x, pname:y, pname:width and pname:height.
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
pname:depth.
.Valid Usage .Valid Usage
**** ****
@ -302,18 +298,30 @@ include::../api/structs/VkImageCopy.txt[]
* pname:srcOffset.y and (pname:extent.height + pname:srcOffset.y) must: * pname:srcOffset.y and (pname:extent.height + pname:srcOffset.y) must:
both be greater than or equal to `0` and less than or equal to the both be greater than or equal to `0` and less than or equal to the
source image subresource height source image subresource height
** If the calling command's pname:srcImage is of type
ename:VK_IMAGE_TYPE_1D, then pname:srcOffset.y must: be `0` and
pname:extent.height must: be `1`.
* pname:srcOffset.z and (pname:extent.depth + pname:srcOffset.z) must: * pname:srcOffset.z and (pname:extent.depth + pname:srcOffset.z) must:
both be greater than or equal to `0` and less than or equal to the both be greater than or equal to `0` and less than or equal to the
source image subresource depth source image 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.z must: be `0` and pname:extent.depth must: be `1`.
* pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must: * pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must:
both be greater than or equal to `0` and less than or equal to the both be greater than or equal to `0` and less than or equal to the
destination image subresource width destination image subresource width
* pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: * pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must:
both be greater than or equal to `0` and less than or equal to the both be greater than or equal to `0` and less than or equal to the
destination image subresource height destination image subresource height
** If the calling command's pname:dstImage is of type
ename:VK_IMAGE_TYPE_1D, then pname:dstOffset.y must: be `0` and
pname:extent.height must: be `1`.
* pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: * pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must:
both be greater than or equal to `0` and less than or equal to the both be greater than or equal to `0` and less than or equal to the
destination image subresource depth destination 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.z must: be `0` and pname:extent.depth must: be `1`.
* If the calling command's pname:srcImage is a compressed format image: * If the calling command's pname:srcImage is a compressed format image:
** all members of pname:srcOffset must: be a multiple of the corresponding ** all members of pname:srcOffset must: be a multiple of the corresponding
dimensions of the compressed texel block dimensions of the compressed texel block
@ -487,10 +495,6 @@ include::../api/structs/VkBufferImageCopy.txt[]
sub-region of the source or destination image data. sub-region of the source or destination image data.
* pname:imageExtent is the size in texels of the image to copy in * pname:imageExtent is the size in texels of the image to copy in
pname:width, pname:height and pname:depth. pname:width, pname:height and pname:depth.
1D images use only pname:x and pname:width.
2D images use pname:x, pname:y, pname:width and pname:height.
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
pname:depth.
When copying to or from a depth or stencil aspect, the data in buffer memory When copying to or from a depth or stencil aspect, the data in buffer memory
uses a layout that is a (mostly) tightly packed representation of the depth uses a layout that is a (mostly) tightly packed representation of the depth
@ -532,7 +536,7 @@ destination image.
.Valid Usage .Valid Usage
**** ****
* pname:bufferOffset must: be a multiple of the calling command's * pname:bufferOffset must: be a multiple of the calling command's
sname:VkImage parameter's texel size sname:VkImage parameter's format's element size
* pname:bufferOffset must: be a multiple of `4` * pname:bufferOffset must: be a multiple of `4`
* pname:bufferRowLength must: be `0`, or greater than or equal to the * pname:bufferRowLength must: be `0`, or greater than or equal to the
pname:width member of pname:imageExtent pname:width member of pname:imageExtent
@ -544,9 +548,18 @@ destination image.
* pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: * pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must:
both be greater than or equal to `0` and less than or equal to the image both be greater than or equal to `0` and less than or equal to the image
subresource height subresource height
** If the calling command's pname:srcImage (flink:vkCmdCopyImageToBuffer)
or pname:dstImage (flink:vkCmdCopyBufferToImage) is of type
ename:VK_IMAGE_TYPE_1D, then pname:imageOffset.y must: be `0` and
pname:imageExtent.height must: be `1`.
* pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: * pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must:
both be greater than or equal to `0` and less than or equal to the image both be greater than or equal to `0` and less than or equal to the image
subresource depth subresource depth
** 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`.
* If the calling command's sname:VkImage parameter is a compressed format * If the calling command's sname:VkImage parameter is a compressed format
image: image:
** pname:bufferRowLength must: be a multiple of the compressed texel block ** pname:bufferRowLength must: be a multiple of the compressed texel block
@ -597,9 +610,9 @@ imageHeight = region->bufferImageHeight;
if (imageHeight == 0) if (imageHeight == 0)
imageHeight = region->imageExtent.height; imageHeight = region->imageExtent.height;
texelSize = <texel size taken from the src/dstImage>; elementSize = <element size of the format of the src/dstImage>;
address of (x,y,z) = region->bufferOffset + (((z * imageHeight) + y) * rowLength + x) * texelSize; address of (x,y,z) = region->bufferOffset + (((z * imageHeight) + y) * rowLength + x) * elementSize;
where x,y,z range from (0,0,0) to region->imageExtent.{width,height,depth}. where x,y,z range from (0,0,0) to region->imageExtent.{width,height,depth}.
--------------------------------------------------- ---------------------------------------------------
@ -889,18 +902,30 @@ the specified source and destination regions.
* pname:srcOffset[0].pname:y and pname:srcOffset[1].pname:y must: both be * pname:srcOffset[0].pname:y and pname:srcOffset[1].pname:y must: both be
greater than or equal to `0` and less than or equal to the source image greater than or equal to `0` and less than or equal to the source image
subresource height subresource height
** If the calling command's pname:srcImage is of type
ename:VK_IMAGE_TYPE_1D, then pname:srcOffset[0].y must: be `0` and
pname:srcOffset[1].y must: be `1`.
* pname:srcOffset[0].pname:z and pname:srcOffset[1].pname:z must: both be * pname:srcOffset[0].pname:z and pname:srcOffset[1].pname:z must: both be
greater than or equal to `0` and less than or equal to the source image greater than or equal to `0` and less than or equal to the source image
subresource depth 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:dstOffset[0].pname:x and pname:dstOffset[1].pname:x must: both be * 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 greater than or equal to `0` and less than or equal to the destination
image subresource width image subresource width
* pname:dstOffset[0].pname:y and pname:dstOffset[1].pname:y must: both be * pname:dstOffset[0].pname:y and pname:dstOffset[1].pname:y must: both be
greater than or equal to `0` and less than or equal to the destination greater than or equal to `0` and less than or equal to the destination
image subresource height image subresource height
** If the calling command's pname:dstImage is of type
ename:VK_IMAGE_TYPE_1D, then pname:dstOffset[0].y must: be `0` and
pname:dstOffset[1].y must: be `1`.
* pname:dstOffset[0].pname:z and pname:dstOffset[1].pname:z must: both be * pname:dstOffset[0].pname:z and pname:dstOffset[1].pname:z must: both be
greater than or equal to `0` and less than or equal to the destination greater than or equal to `0` and less than or equal to the destination
image subresource depth 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`.
**** ****
include::../validity/structs/VkImageBlit.txt[] include::../validity/structs/VkImageBlit.txt[]
@ -939,10 +964,6 @@ pname:srcOffset and pname:dstOffset select the initial x, y, and z offsets
in texels of the sub-regions of the source and destination image data. in texels of the sub-regions of the source and destination image data.
pname:extent is the size in texels of the source image to resolve in pname:extent is the size in texels of the source image to resolve in
pname:width, pname:height and pname:depth. pname:width, pname:height and pname:depth.
1D images use only pname:x and pname:width.
2D images use pname:x, pname:y, pname:width and pname:height.
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
pname:depth.
Resolves are done layer by layer starting with pname:baseArrayLayer member Resolves are done layer by layer starting with pname:baseArrayLayer member
of pname:srcSubresource for the source and pname:dstSubresource for the of pname:srcSubresource for the source and pname:dstSubresource for the
@ -1006,10 +1027,6 @@ include::../api/structs/VkImageResolve.txt[]
data. data.
* pname:extent is the size in texels of the source image to resolve in * pname:extent is the size in texels of the source image to resolve in
pname:width, pname:height and pname:depth. pname:width, pname:height and pname:depth.
1D images use only pname:x and pname:width.
2D images use pname:x, pname:y, pname:width and pname:height.
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
pname:depth.
.Valid Usage .Valid Usage
**** ****
@ -1022,6 +1039,36 @@ include::../api/structs/VkImageResolve.txt[]
pname:baseArrayLayer and pname:layerCount members of both pname:baseArrayLayer and pname:layerCount members of both
pname:srcSubresource and pname:dstSubresource must: be `0` and `1`, pname:srcSubresource and pname:dstSubresource must: be `0` and `1`,
respectively respectively
* pname:srcOffset.x and (pname:extent.width + pname:srcOffset.x) must:
both be greater than or equal to `0` and less than or equal to the
source image subresource width
* pname:srcOffset.y and (pname:extent.height + pname:srcOffset.y) must:
both be greater than or equal to `0` and less than or equal to the
source image subresource height
** If the calling command's pname:srcImage is of type
ename:VK_IMAGE_TYPE_1D, then pname:srcOffset.y must: be `0` and
pname:extent.height must: be `1`.
* pname:srcOffset.z and (pname:extent.depth + pname:srcOffset.z) must:
both be greater than or equal to `0` and less than or equal to the
source image 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.z must: be `0` and pname:extent.depth must: be `1`.
* pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must:
both be greater than or equal to `0` and less than or equal to the
destination image subresource width
* pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must:
both be greater than or equal to `0` and less than or equal to the
destination image subresource height
** If the calling command's pname:dstImage is of type
ename:VK_IMAGE_TYPE_1D, then pname:dstOffset.y must: be `0` and
pname:extent.height must: be `1`.
* pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must:
both be greater than or equal to `0` and less than or equal to the
destination 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.z must: be `0` and pname:extent.depth must: be `1`.
**** ****
include::../validity/structs/VkImageResolve.txt[] include::../validity/structs/VkImageResolve.txt[]

View File

@ -473,6 +473,14 @@ The assembled primitives execute the currently bound graphics pipeline.
.Valid Usage .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
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
specified when creating the sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* For each set _n_ that is statically used by the sname:VkPipeline * For each set _n_ that is statically used by the sname:VkPipeline
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
set must: have been bound to _n_ at set must: have been bound to _n_ at
@ -600,6 +608,14 @@ The assembled primitives execute the currently bound graphics pipeline.
.Valid Usage .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
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
specified when creating the sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* For each set _n_ that is statically used by the sname:VkPipeline * For each set _n_ that is statically used by the sname:VkPipeline
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
set must: have been bound to _n_ at set must: have been bound to _n_ at
@ -729,6 +745,14 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
feature is not enabled, all the pname:firstInstance members of the feature is not enabled, all the pname:firstInstance members of the
sname:VkDrawIndirectCommand structures accessed by this command must: be sname:VkDrawIndirectCommand structures accessed by this command must: be
code:0 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
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
specified when creating the sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* For each set _n_ that is statically used by the sname:VkPipeline * For each set _n_ that is statically used by the sname:VkPipeline
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
set must: have been bound to _n_ at set must: have been bound to _n_ at
@ -894,6 +918,14 @@ located at pname:countBufferOffset and use this as the draw count.
feature is not enabled, all the pname:firstInstance members of the feature is not enabled, all the pname:firstInstance members of the
sname:VkDrawIndirectCommand structures accessed by this command must: be sname:VkDrawIndirectCommand structures accessed by this command must: be
code:0 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
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
specified when creating the sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* For each set _n_ that is statically used by the sname:VkPipeline * For each set _n_ that is statically used by the sname:VkPipeline
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
set must: have been bound to _n_ at set must: have been bound to _n_ at
@ -1014,6 +1046,14 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
feature is not enabled, all the pname:firstInstance members of the feature is not enabled, all the pname:firstInstance members of the
sname:VkDrawIndexedIndirectCommand structures accessed by this command sname:VkDrawIndexedIndirectCommand structures accessed by this command
must: be code:0 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
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
specified when creating the sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* For each set _n_ that is statically used by the sname:VkPipeline * For each set _n_ that is statically used by the sname:VkPipeline
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
set must: have been bound to _n_ at set must: have been bound to _n_ at
@ -1186,6 +1226,14 @@ located at pname:countBufferOffset and use this as the draw count.
feature is not enabled, all the pname:firstInstance members of the feature is not enabled, all the pname:firstInstance members of the
sname:VkDrawIndexedIndirectCommand structures accessed by this command sname:VkDrawIndexedIndirectCommand structures accessed by this command
must: be code:0 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
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
specified when creating the sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* For each set _n_ that is statically used by the sname:VkPipeline * For each set _n_ that is statically used by the sname:VkPipeline
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
set must: have been bound to _n_ at set must: have been bound to _n_ at

View File

@ -491,7 +491,7 @@ properties of individual formats.
code:StorageImageWriteWithoutFormat capability. code:StorageImageWriteWithoutFormat capability.
* [[features-features-shaderUniformBufferArrayDynamicIndexing]] * [[features-features-shaderUniformBufferArrayDynamicIndexing]]
pname:shaderUniformBufferArrayDynamicIndexing indicates whether arrays pname:shaderUniformBufferArrayDynamicIndexing indicates whether arrays
of uniform buffers can: be indexed by dynamically uniform integer of uniform buffers can: be indexed by _dynamically uniform_ integer
expressions in shader code. expressions in shader code.
If this feature is not enabled, resources with a descriptor type of If this feature is not enabled, resources with a descriptor type of
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
@ -2721,6 +2721,9 @@ This means that promoting one format to another with more bits per component
and/or additional components must: not occur for color formats. and/or additional components must: not occur for color formats.
Depth/stencil formats have more relaxed requirements as discussed Depth/stencil formats have more relaxed requirements as discussed
<<features-formats-depth-stencil,below>>. <<features-formats-depth-stencil,below>>.
Each format has an _element size_, the number of bytes used to stored one
element or one compressed block, with the value of the element size listed
in slink:VkFormat.
The representation of non-packed formats is that the first component The representation of non-packed formats is that the first component
specified in the name of the format is in the lowest memory addresses and specified in the name of the format is in the lowest memory addresses and
@ -3864,6 +3867,10 @@ limits in sname:VkPhysicalDeviceLimits as follows:
If multiple bits are set in pname:usage, pname:sampleCounts will be the If multiple bits are set in pname:usage, pname:sampleCounts will be the
intersection of the per-usage values described above. 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.
[[features-extentperimagetype]] [[features-extentperimagetype]]
=== Allowed Extent Values Based On Image Type === Allowed Extent Values Based On Image Type

View File

@ -860,7 +860,8 @@ endif::VK_KHR_swapchain[]
ifdef::VK_KHR_surface[] ifdef::VK_KHR_surface[]
* ename:VK_ERROR_SURFACE_LOST_KHR A surface is no longer available. * ename:VK_ERROR_SURFACE_LOST_KHR A surface is no longer available.
* ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR The requested window is already * ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR The requested window is already
connected to a VkSurfaceKHR, or to some other non-Vulkan API. in use by Vulkan or another API in a manner which prevents it from being
used again.
endif::VK_KHR_surface[] endif::VK_KHR_surface[]
ifdef::VK_KHR_swapchain[] ifdef::VK_KHR_swapchain[]
* ename:VK_ERROR_OUT_OF_DATE_KHR A surface has changed in such a way that * ename:VK_ERROR_OUT_OF_DATE_KHR A surface has changed in such a way that

View File

@ -414,7 +414,7 @@ not cause the space required for that variable to extend outside the range
[eq]#[0, pname:maxPushConstantsSize)#. [eq]#[0, pname:maxPushConstantsSize)#.
Any variable in a push constant block that is declared as an array must: Any variable in a push constant block that is declared as an array must:
only be accessed with dynamically uniform indices. only be accessed with _dynamically uniform_ indices.
[[interfaces-resources-descset]] [[interfaces-resources-descset]]

View File

@ -381,12 +381,12 @@ include::../api/structs/VkGraphicsPipelineCreateInfo.txt[]
* pname:layout is the description of binding locations used by both the * pname:layout is the description of binding locations used by both the
pipeline and descriptor sets used with the pipeline. pipeline and descriptor sets used with the pipeline.
* pname:renderPass is a handle to a render pass object describing the * pname:renderPass is a handle to a render pass object describing the
environment in which the pipeline will be used; the pipeline can: be environment in which the pipeline will be used; the pipeline must: only be
used with an instance of any render pass compatible with the one used with an instance of any render pass compatible with the one
provided. provided.
See <<renderpass-compatibility,Render Pass Compatibility>> for more See <<renderpass-compatibility,Render Pass Compatibility>> for more
information. information.
* pname:subpass is the index of the subpass in pname:renderPass where this * pname:subpass is the index of the subpass in the render pass where this
pipeline will be used. pipeline will be used.
* pname:basePipelineHandle is a pipeline to derive from. * pname:basePipelineHandle is a pipeline to derive from.
* pname:basePipelineIndex is an index into the pname:pCreateInfos * pname:basePipelineIndex is an index into the pname:pCreateInfos

View File

@ -1104,6 +1104,9 @@ pass.
in pname:renderPass that specifies a pname:loadOp (or in pname:renderPass that specifies a pname:loadOp (or
pname:stencilLoadOp, if the attachment has a depth/stencil format) of pname:stencilLoadOp, if the attachment has a depth/stencil format) of
ename:VK_ATTACHMENT_LOAD_OP_CLEAR ename:VK_ATTACHMENT_LOAD_OP_CLEAR
* pname:renderPass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkFramebufferCreateInfo
structure specified when creating pname:framebuffer.
**** ****
include::../validity/structs/VkRenderPassBeginInfo.txt[] include::../validity/structs/VkRenderPassBeginInfo.txt[]

View File

@ -291,7 +291,7 @@ include::../api/structs/VkBufferViewCreateInfo.txt[]
* If pname:range is not equal to ename:VK_WHOLE_SIZE: * If pname:range is not equal to ename:VK_WHOLE_SIZE:
** pname:range must: be greater than `0` ** pname:range must: be greater than `0`
** pname:range must: be a multiple of the element size of pname:format ** pname:range must: be a multiple of the element size of pname:format
** pname:range divided by the size of an element of pname:format, must: be ** pname:range divided by the element size of pname:format, must: be
less than or equal to less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements
** the sum of pname:offset and pname:range must: be less than or equal to ** the sum of pname:offset and pname:range must: be less than or equal to
@ -515,11 +515,10 @@ flink:vkGetPhysicalDeviceImageFormatProperties.
pname:type, pname:tiling, pname:usage, and pname:flags equal to those in pname:type, pname:tiling, pname:usage, and pname:flags equal to those in
this structure) this structure)
* pname:arrayLayers must: be less than or equal to * pname:arrayLayers must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, or
sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by
fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, fname:vkGetPhysicalDeviceImageFormatProperties with pname:format,
pname:type, pname:tiling, pname:usage, and pname:flags equal to those in pname:type, pname:tiling, pname:usage, and pname:flags equal to those in
this structure) - whichever is higher this structure)
* If pname:samples is not ename:VK_SAMPLE_COUNT_1_BIT, pname:imageType * If pname:samples is not ename:VK_SAMPLE_COUNT_1_BIT, pname:imageType
must: be ename:VK_IMAGE_TYPE_2D, pname:flags must: not contain must: be ename:VK_IMAGE_TYPE_2D, pname:flags must: not contain
ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:tiling must: be ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:tiling must: be
@ -955,7 +954,7 @@ image subresource has address:
[source,c] [source,c]
--------------------------------------------------- ---------------------------------------------------
// (x,y,z,layer) are in texel coordinates // (x,y,z,layer) are in texel coordinates
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*texelSize + offset address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset
--------------------------------------------------- ---------------------------------------------------
For compressed formats, the pname:rowPitch is the number of bytes between For compressed formats, the pname:rowPitch is the number of bytes between

View File

@ -104,7 +104,7 @@ pname:sparseResidency4Samples, pname:sparseResidency8Samples, and
pname:sparseResidency16Samples. pname:sparseResidency16Samples.
-- --
** A sparse image created using ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT ** A sparse image created using ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
supports all non-compressed color formats with power-of-two texel size supports all non-compressed color formats with power-of-two element size
that non-sparse usage supports. that non-sparse usage supports.
Additional formats may: also be supported and can: be queried via Additional formats may: also be supported and can: be queried via
flink:vkGetPhysicalDeviceSparseImageFormatProperties. flink:vkGetPhysicalDeviceSparseImageFormatProperties.

View File

@ -104,7 +104,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
<type category="define">// Vulkan 1.0 version number <type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 --> #define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
<type category="define">// Version of this file <type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 30</type> #define <name>VK_HEADER_VERSION</name> 31</type>
<type category="define"> <type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> #define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>

View File

@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file // Version of this file
#define VK_HEADER_VERSION 30 #define VK_HEADER_VERSION 31
#define VK_NULL_HANDLE 0 #define VK_NULL_HANDLE 0