From b97259786d817bfda38a3b0374782949011e51db Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Fri, 14 Oct 2016 04:31:51 -0700 Subject: [PATCH] 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 <> (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 <> 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). --- ChangeLog.txt | 39 ++++++++ doc/specs/vulkan/Makefile | 2 +- doc/specs/vulkan/appendices/glossary.txt | 9 ++ .../vulkan/chapters/VK_EXT_debug_report.txt | 2 +- .../platformCreateSurface_android.txt | 5 - .../vulkan/chapters/VK_KHR_swapchain/wsi.txt | 8 +- doc/specs/vulkan/chapters/cmdbuffers.txt | 4 +- doc/specs/vulkan/chapters/copies.txt | 91 ++++++++++++++----- doc/specs/vulkan/chapters/drawing.txt | 48 ++++++++++ doc/specs/vulkan/chapters/features.txt | 9 +- doc/specs/vulkan/chapters/fundamentals.txt | 3 +- doc/specs/vulkan/chapters/interfaces.txt | 2 +- doc/specs/vulkan/chapters/pipelines.txt | 4 +- doc/specs/vulkan/chapters/renderpass.txt | 3 + doc/specs/vulkan/chapters/resources.txt | 7 +- doc/specs/vulkan/chapters/sparsemem.txt | 2 +- src/spec/vk.xml | 2 +- src/vulkan/vulkan.h | 2 +- 18 files changed, 196 insertions(+), 46 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index b03859bf..152d0513 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1481,3 +1481,42 @@ Internal Issues: * Modify the <> language to allow multisampled depth-stencil images (internal issue 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 + <> (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 <> 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). diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index 185d4948..7d2e8762 100644 --- a/doc/specs/vulkan/Makefile +++ b/doc/specs/vulkan/Makefile @@ -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.30 +SPECREVISION = 1.0.31 SPECREMARK = # Spec targets diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt index 379ac718..840d778a 100644 --- a/doc/specs/vulkan/appendices/glossary.txt +++ b/doc/specs/vulkan/appendices/glossary.txt @@ -272,6 +272,15 @@ Dynamic Uniform Buffer:: A uniform buffer whose offset is specified each time the uniform buffer is bound to a command buffer via a descriptor set. +Dynamically Uniform:: + See _Dynamically Uniform_ in section 2.2 ``Terms'' of the + <>. + +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:: A layer enabled by the application by adding it to the enabled layer list in flink:vkCreateInstance or flink:vkCreateDevice. diff --git a/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt b/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt index 116f442e..e9e364ea 100644 --- a/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt +++ b/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt @@ -49,7 +49,7 @@ include::../api/structs/VkDebugReportCallbackCreateInfoEXT.txt[] 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[] * ename:VK_DEBUG_REPORT_ERROR_BIT_EXT indicates an error that may cause diff --git a/doc/specs/vulkan/chapters/VK_KHR_android_surface/platformCreateSurface_android.txt b/doc/specs/vulkan/chapters/VK_KHR_android_surface/platformCreateSurface_android.txt index baabff70..50240340 100644 --- a/doc/specs/vulkan/chapters/VK_KHR_android_surface/platformCreateSurface_android.txt +++ b/doc/specs/vulkan/chapters/VK_KHR_android_surface/platformCreateSurface_android.txt @@ -62,10 +62,5 @@ include::../../api/structs/VkAndroidSurfaceCreateInfoKHR.txt[] * pname:window is a pointer to the code:ANativeWindow to associate the surface with. -.Valid Usage -**** - * pname:window must: not be in a connected state -**** - include::../../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[] diff --git a/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt b/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt index 976031c0..946749eb 100644 --- a/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt +++ b/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt @@ -14,6 +14,7 @@ surfaces) is displayed at a time, but multiple images can: be queued for presentation. An application renders to the image, and then queues the image for presentation to the surface. + A native window cannot: be associated with more than one swapchain at a time. 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 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 in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR @@ -260,6 +258,10 @@ following sname:VkImageCreateInfo parameters: The sname:VkSurfaceKHR associated with a swapchain must: not be 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 fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical device was lost. diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt index 33e9c2a9..ffcf9906 100644 --- a/doc/specs/vulkan/chapters/cmdbuffers.txt +++ b/doc/specs/vulkan/chapters/cmdbuffers.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 pname:renderPass 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 diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt index 42c7f8c3..fc0f21e8 100644 --- a/doc/specs/vulkan/chapters/copies.txt +++ b/doc/specs/vulkan/chapters/copies.txt @@ -157,7 +157,7 @@ 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 texel size in bytes is the same +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. @@ -165,8 +165,8 @@ Depth/stencil formats must: match exactly. fname:vkCmdCopyImage allows copying between size-compatible compressed and uncompressed internal formats. -Formats are size-compatible if the texel size of the uncompressed format is -equal to the compressed texel block size in bytes 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 @@ -276,10 +276,6 @@ include::../api/structs/VkImageCopy.txt[] data. * pname:extent is the size in texels of the source image to copy in 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 **** @@ -302,18 +298,30 @@ include::../api/structs/VkImageCopy.txt[] * 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`. * If the calling command's pname:srcImage is a compressed format image: ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block @@ -487,10 +495,6 @@ include::../api/structs/VkBufferImageCopy.txt[] sub-region of the source or destination image data. * pname:imageExtent is the size in texels of the image to copy in 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 uses a layout that is a (mostly) tightly packed representation of the depth @@ -532,7 +536,7 @@ destination image. .Valid Usage **** * 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:bufferRowLength must: be `0`, or greater than or equal to the pname:width member of pname:imageExtent @@ -544,9 +548,18 @@ destination image. * 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 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: both be greater than or equal to `0` and less than or equal to the image 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 image: ** pname:bufferRowLength must: be a multiple of the compressed texel block @@ -597,9 +610,9 @@ imageHeight = region->bufferImageHeight; if (imageHeight == 0) imageHeight = region->imageExtent.height; -texelSize = ; +elementSize = ; -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}. --------------------------------------------------- @@ -889,18 +902,30 @@ the specified source and destination regions. * 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 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 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[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 * 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 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 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[0].z must: be `0` and pname:dstOffset[1].z must: be `1`. **** 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. pname:extent is the size in texels of the source image to resolve in 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 of pname:srcSubresource for the source and pname:dstSubresource for the @@ -1006,10 +1027,6 @@ include::../api/structs/VkImageResolve.txt[] data. * pname:extent is the size in texels of the source image to resolve in 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 **** @@ -1022,6 +1039,36 @@ include::../api/structs/VkImageResolve.txt[] pname:baseArrayLayer and pname:layerCount members of both pname:srcSubresource and pname:dstSubresource must: be `0` and `1`, 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[] diff --git a/doc/specs/vulkan/chapters/drawing.txt b/doc/specs/vulkan/chapters/drawing.txt index f52715c7..3aa69bc0 100644 --- a/doc/specs/vulkan/chapters/drawing.txt +++ b/doc/specs/vulkan/chapters/drawing.txt @@ -473,6 +473,14 @@ The assembled primitives execute the currently bound graphics pipeline. .Valid Usage **** + * The current render pass must: be <> + 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 currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have been bound to _n_ at @@ -600,6 +608,14 @@ The assembled primitives execute the currently bound graphics pipeline. .Valid Usage **** + * The current render pass must: be <> + 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 currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor 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 sname:VkDrawIndirectCommand structures accessed by this command must: be code:0 + * The current render pass must: be <> + 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 currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor 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 sname:VkDrawIndirectCommand structures accessed by this command must: be code:0 + * The current render pass must: be <> + 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 currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor 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 sname:VkDrawIndexedIndirectCommand structures accessed by this command must: be code:0 + * The current render pass must: be <> + 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 currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor 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 sname:VkDrawIndexedIndirectCommand structures accessed by this command must: be code:0 + * The current render pass must: be <> + 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 currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor set must: have been bound to _n_ at diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index a5df7470..4894a196 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -491,7 +491,7 @@ properties of individual formats. code:StorageImageWriteWithoutFormat capability. * [[features-features-shaderUniformBufferArrayDynamicIndexing]] 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. If this feature is not enabled, resources with a descriptor type of 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. Depth/stencil formats have more relaxed requirements as discussed <>. +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 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 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]] === Allowed Extent Values Based On Image Type diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt index a10dd08c..66239ca4 100644 --- a/doc/specs/vulkan/chapters/fundamentals.txt +++ b/doc/specs/vulkan/chapters/fundamentals.txt @@ -860,7 +860,8 @@ endif::VK_KHR_swapchain[] ifdef::VK_KHR_surface[] * 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 - 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[] ifdef::VK_KHR_swapchain[] * ename:VK_ERROR_OUT_OF_DATE_KHR A surface has changed in such a way that diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index 9ea5a780..0e7c0c80 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -414,7 +414,7 @@ not cause the space required for that variable to extend outside the range [eq]#[0, pname:maxPushConstantsSize)#. 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]] diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index c361204e..4534a09f 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -381,12 +381,12 @@ include::../api/structs/VkGraphicsPipelineCreateInfo.txt[] * pname:layout is the description of binding locations used by both the pipeline and descriptor sets used with the pipeline. * 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 provided. See <> for more 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. * pname:basePipelineHandle is a pipeline to derive from. * pname:basePipelineIndex is an index into the pname:pCreateInfos diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt index 4ec386e6..b2cd803f 100644 --- a/doc/specs/vulkan/chapters/renderpass.txt +++ b/doc/specs/vulkan/chapters/renderpass.txt @@ -1104,6 +1104,9 @@ pass. in pname:renderPass that specifies a pname:loadOp (or pname:stencilLoadOp, if the attachment has a depth/stencil format) of ename:VK_ATTACHMENT_LOAD_OP_CLEAR + * pname:renderPass must: be <> + with the pname:renderPass member of the sname:VkFramebufferCreateInfo + structure specified when creating pname:framebuffer. **** include::../validity/structs/VkRenderPassBeginInfo.txt[] diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt index c7352705..b6881b2a 100644 --- a/doc/specs/vulkan/chapters/resources.txt +++ b/doc/specs/vulkan/chapters/resources.txt @@ -291,7 +291,7 @@ include::../api/structs/VkBufferViewCreateInfo.txt[] * If pname:range is not equal to ename:VK_WHOLE_SIZE: ** pname:range must: be greater than `0` ** 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 sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements ** 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 this structure) * 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 + this structure) * 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 ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:tiling must: be @@ -955,7 +954,7 @@ image subresource has address: [source,c] --------------------------------------------------- // (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 diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt index cdbc0f07..600333c9 100644 --- a/doc/specs/vulkan/chapters/sparsemem.txt +++ b/doc/specs/vulkan/chapters/sparsemem.txt @@ -104,7 +104,7 @@ pname:sparseResidency4Samples, pname:sparseResidency8Samples, and pname:sparseResidency16Samples. -- ** 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. Additional formats may: also be supported and can: be queried via flink:vkGetPhysicalDeviceSparseImageFormatProperties. diff --git a/src/spec/vk.xml b/src/spec/vk.xml index b2d9cb0a..7fcb2ebc 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -104,7 +104,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0) // Version of this file -#define VK_HEADER_VERSION 30 +#define VK_HEADER_VERSION 31 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index 8c20531d..0cad6bf9 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -43,7 +43,7 @@ extern "C" { #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 30 +#define VK_HEADER_VERSION 31 #define VK_NULL_HANDLE 0