diff --git a/ChangeLog.txt b/ChangeLog.txt index 152d0513..fdc9f809 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -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 + 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 <> + 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). + diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index 7d2e8762..5ffca396 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.31 +SPECREVISION = 1.0.32 SPECREMARK = # Spec targets diff --git a/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt b/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt index e9e364ea..6b495088 100644 --- a/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt +++ b/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt @@ -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[] diff --git a/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt b/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt index 946749eb..95f8bd0f 100644 --- a/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt +++ b/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.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 <> 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 +<> 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 +<>. +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 diff --git a/doc/specs/vulkan/chapters/clears.txt b/doc/specs/vulkan/chapters/clears.txt index 1f88cbe8..04cbf57e 100644 --- a/doc/specs/vulkan/chapters/clears.txt +++ b/doc/specs/vulkan/chapters/clears.txt @@ -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[] diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt index ffcf9906..3f8fbaee 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 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 diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt index fc0f21e8..eaca79c0 100644 --- a/doc/specs/vulkan/chapters/copies.txt +++ b/doc/specs/vulkan/chapters/copies.txt @@ -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[] diff --git a/doc/specs/vulkan/chapters/descriptorsets.txt b/doc/specs/vulkan/chapters/descriptorsets.txt index a0bc8e68..1713f95a 100644 --- a/doc/specs/vulkan/chapters/descriptorsets.txt +++ b/doc/specs/vulkan/chapters/descriptorsets.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 diff --git a/doc/specs/vulkan/chapters/drawing.txt b/doc/specs/vulkan/chapters/drawing.txt index 3aa69bc0..f1f0e180 100644 --- a/doc/specs/vulkan/chapters/drawing.txt +++ b/doc/specs/vulkan/chapters/drawing.txt @@ -474,8 +474,9 @@ 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 + 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 <> - 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 <> - 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 <> - 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 <> - 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 <> - 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 diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index 4894a196..2d086a50 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -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]] diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index 0e7c0c80..bc438864 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -789,14 +789,14 @@ The code:ClipDistance decoration must: be used only within vertex, fragment, tessellation control, tessellation evaluation, and geometry shaders. + In vertex shaders, any variable decorated with code:ClipDistance must: be -declared using the output storage class. +declared using the code:Output storage class. + In fragment shaders, any variable decorated with code:ClipDistance must: be -declared using the input storage class. +declared using the code:Input storage class. + In tessellation control, tessellation evaluation, or geometry shaders, any variable decorated with code:ClipDistance must: not be in a storage class -other than input or output. +other than code:Input or code:Output. + Any variable decorated with code:ClipDistance must: be declared as an array of 32-bit floating-point values. @@ -831,10 +831,10 @@ The code:CullDistance decoration must: be used only within vertex, fragment, tessellation control, tessellation evaluation, and geometry shaders. + In vertex shaders, any variable decorated with code:CullDistance must: be -declared using the output storage class. +declared using the code:Output storage class. + In fragment shaders, any variable decorated with code:CullDistance must: be -declared using the input storage class. +declared using the code:Input storage class. + In tessellation control, tessellation evaluation, or geometry shaders, any variable decorated with code:CullDistance must: not be declared in a storage @@ -880,8 +880,8 @@ The [eq]#w# component is the interpolated latexmath:[$\frac{1}{w}$]. + The code:FragCoord decoration must: be used only within fragment shaders. + -The variable decorated with code:FragCoord must: be declared using the input -storage class. +The variable decorated with code:FragCoord must: be declared using the +code:Input storage class. + The code:Centroid interpolation decoration is ignored on code:FragCoord. + @@ -906,7 +906,7 @@ that path. The code:FragDepth decoration must: be used only within fragment shaders. + The variable decorated with code:FragDepth must: be declared using the -output storage class. +code:Output storage class. + The variable decorated with code:FragDepth must: be declared as a scalar 32-bit floating-point value. @@ -922,7 +922,7 @@ fragment is considered to be part of a back-facing primitive. The code:FrontFacing decoration must: be used only within fragment shaders. + The variable decorated with code:FrontFacing must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:FrontFacing must: be declared as a boolean. @@ -938,7 +938,7 @@ The code:GlobalInvocationId decoration must: be used only within compute shaders. + The variable decorated with code:GlobalInvocationId must: be declared using -the input storage class. +the code:Input storage class. + The variable decorated with code:GlobalInvocationId must: be declared as a three-component vector of 32-bit integers. @@ -957,7 +957,7 @@ The code:HelperInvocation decoration must: be used only within fragment shaders. + The variable decorated with code:HelperInvocation must: be declared using -the input storage class. +the code:Input storage class. + The variable decorated with code:HelperInvocation must: be declared as a boolean. @@ -986,7 +986,7 @@ The code:InvocationId decoration must: be used only within tessellation control and geometry shaders. + The variable decorated with code:InvocationId must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:InvocationId must: be declared as a scalar 32-bit integer. @@ -1004,7 +1004,7 @@ flink:vkCmdDrawIndexedIndirect. The code:InstanceIndex decoration must: be used only within vertex shaders. + The variable decorated with code:InstanceIndex must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:InstanceIndex must: be declared as a scalar 32-bit integer. @@ -1030,10 +1030,10 @@ The code:Layer decoration must: be used only within geometry and fragment shaders. + In a geometry shader, any variable decorated with code:Layer must: be -declared using the output storage class. +declared using the code:Output storage class. + In a fragment shader, any variable decorated with code:Layer must: be -declared using the input storage class. +declared using the code:Input storage class. + Any variable decorated with code:Layer must: be declared as a scalar 32-bit integer. @@ -1050,7 +1050,7 @@ The code:LocalInvocationId decoration must: be used only within compute shaders. + The variable decorated with code:LocalInvocationId must: be declared using -the input storage class. +the code:Input storage class. + The variable decorated with code:LocalInvocationId must: be declared as a three-component vector of 32-bit integers. @@ -1078,7 +1078,7 @@ structure read through a call to flink:vkCmdDispatchIndirect. The code:NumWorkgroups decoration must: be used only within compute shaders. + The variable decorated with code:NumWorkgroups must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:NumWorkgroups must: be declared as a three-component vector of 32-bit integers. @@ -1096,9 +1096,9 @@ The code:PatchVertices decoration must: be used only within tessellation control and tessellation evaluation shaders. + The variable decorated with code:PatchVertices must: be declared using the -input storage class. +code:Input storage class. + -The variable decorated with code:PatchVertices must: be declared as scalar +The variable decorated with code:PatchVertices must: be declared as a scalar 32-bit integer. code:PointCoord:: @@ -1115,7 +1115,7 @@ value. The code:PointCoord decoration must: be used only within fragment shaders. + The variable decorated with code:PointCoord must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:PointCoord must: be declared as two-component vector of 32-bit floating-point values. @@ -1139,11 +1139,11 @@ The code:PointSize decoration must: be used only within vertex, tessellation control, tessellation evaluation, and geometry shaders. + In a vertex shader, any variable decorated with code:PointSize must: be -declared using the output storage class. +declared using the code:Output storage class. + In a tessellation control, tessellation evaluation, or geometry shader, any variable decorated with code:PointSize must: be declared using either the -input or output storage class. +code:Input or code:Output storage class. + Any variable decorated with code:PointSize must: be declared as a scalar 32-bit floating-point value. @@ -1151,7 +1151,7 @@ Any variable decorated with code:PointSize must: be declared as a scalar [NOTE] .Note ==== -When code:PointSize decorates a variable in the input storage class, it +When code:PointSize decorates a variable in the code:Input storage class, it contains the data written to the output variable decorated with code:PointSize from the previous shader stage. ==== @@ -1168,7 +1168,7 @@ The code:Position decoration must: be used only within vertex, tessellation control, tessellation evaluation, and geometry shaders. + In a vertex shader, any variable decorated with code:Position must: be -declared using the output storage class. +declared using the code:Output storage class. + In a tessellation control, tessellation evaluation, or geometry shader, any variable decorated with code:Position must: not be declared in a storage @@ -1180,7 +1180,7 @@ four-component vector of 32-bit floating-point values. [NOTE] .Note ==== -When code:Position decorates a variable in the input storage class, it +When code:Position decorates a variable in the code:Input storage class, it contains the data written to the output variable decorated with code:Position from the previous shader stage. ==== @@ -1211,14 +1211,18 @@ paths. The code:PrimitiveId decoration must: be used only within fragment, tessellation control, tessellation evaluation, and geometry shaders. + -In a fragment, tessellation control or tessellation evaluation shader, any -variable decorated with code:PrimitiveId must: be declared using the output +In a tessellation control or tessellation evaluation shader, any variable +decorated with code:PrimitiveId must: be declared using the code:Output storage class. + In a geometry shader, any variable decorated with code:PrimitiveId must: be -declared using either the input or output storage class. +declared using either the code:Input or code:Output storage class. + -Any variable decorated with code:PrimitiveId must: be declared as scalar +In a fragment shader, any variable decorated with code:PrimitiveId must: be +declared using the code:Input storage class, and either the code:Geometry or +code:Tessellation capability must also be declared. ++ +Any variable decorated with code:PrimitiveId must: be declared as a scalar 32-bit integer. [NOTE] @@ -1242,8 +1246,8 @@ use that fragment shader. + The code:SampleId decoration must: be used only within fragment shaders. + -The variable decorated with code:SampleId must: be declared using the input -storage class. +The variable decorated with code:SampleId must: be declared using the +code:Input storage class. + The variable decorated with code:SampleId must: be declared as a scalar 32-bit integer. @@ -1254,9 +1258,9 @@ Decorating a variable with the code:SampleMask built-in decoration will make any variable contain the sample coverage mask for the current fragment shader invocation. + -A variable in the input storage class decorated with code:SampleMask will -contain a bitmask of the set of samples covered by the primitive generating -the fragment during rasterization. +A variable in the code:Input storage class decorated with code:SampleMask +will contain a bitmask of the set of samples covered by the primitive +generating the fragment during rasterization. It has a sample bit set if and only if the sample is considered covered for this fragment shader invocation. code:SampleMask[] is an array of integers. @@ -1270,10 +1274,10 @@ to the invocation. In this case, the bit corresponding to each covered sample will be set in exactly one fragment shader invocation. + -A variable in the output storage class decorated with code:SampleMask is an -array of integers forming a bit array in a manner similar an input variable -decorated with code:SampleMask, but where each bit represents coverage as -computed by the shader. +A variable in the code:Output storage class decorated with code:SampleMask +is an array of integers forming a bit array in a manner similar an input +variable decorated with code:SampleMask, but where each bit represents +coverage as computed by the shader. Modifying the sample mask by writing zero to a bit of code:SampleMask causes the sample to be considered uncovered. However, setting sample mask bits to one will never enable samples not @@ -1296,7 +1300,7 @@ the processing of a fragment. The code:SampleMask decoration must: be used only within fragment shaders. + Any variable decorated with code:SampleMask must: be declared using either -the input or output storage class. +the code:Input or code:Output storage class. + Any variable decorated with code:SampleMask must: be declared as an array of 32-bit integers. @@ -1316,7 +1320,7 @@ The code:SamplePosition decoration must: be used only within fragment shaders. + The variable decorated with code:SamplePosition must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:SamplePosition must: be declared as a two-component vector of 32-bit floating-point values. @@ -1334,8 +1338,8 @@ component is always zero. The code:TessCoord decoration must: be used only within tessellation evaluation shaders. + -The variable decorated with code:TessCoord must: be declared using the input -storage class. +The variable decorated with code:TessCoord must: be declared using the +code:Input storage class. + The variable decorated with code:TessCoord must: be declared as three-component vector of 32-bit floating-point values. @@ -1360,10 +1364,10 @@ The code:TessLevelOuter decoration must: be used only within tessellation control and tessellation evaluation shaders. + In a tessellation control shader, any variable decorated with -code:TessLevelOuter must: be declared using the output storage class. +code:TessLevelOuter must: be declared using the code:Output storage class. + In a tessellation evaluation shader, any variable decorated with -code:TessLevelOuter must: be declared using the input storage class. +code:TessLevelOuter must: be declared using the code:Input storage class. + Any variable decorated with code:TessLevelOuter must: be declared as an array of size four, containing 32-bit floating-point values. @@ -1388,10 +1392,10 @@ The code:TessLevelInner decoration must: be used only within tessellation control and tessellation evaluation shaders. + In a tessellation control shader, any variable decorated with -code:TessLevelInner must: be declared using the output storage class. +code:TessLevelInner must: be declared using the code:Output storage class. + In a tessellation evaluation shader, any variable decorated with -code:TessLevelInner must: be declared using the input storage class. +code:TessLevelInner must: be declared using the code:Input storage class. + Any variable decorated with code:TessLevelInner must: be declared as an array of size two, containing 32-bit floating-point values. @@ -1413,7 +1417,7 @@ flink:vkCmdDrawIndexedIndirect. The code:VertexIndex decoration must: be used only within vertex shaders. + The variable decorated with code:VertexIndex must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:VertexIndex must: be declared as a scalar 32-bit integer. @@ -1448,10 +1452,10 @@ The code:ViewportIndex decoration must: be used only within geometry and fragment shaders. + In a geometry shader, any variable decorated with code:ViewportIndex must: -be declared using the output storage class. +be declared using the code:Output storage class. + In a fragment shader, any variable decorated with code:ViewportIndex must: -be declared using the input storage class. +be declared using the code:Input storage class. + Any variable decorated with code:ViewportIndex must: be declared as a scalar 32-bit integer. @@ -1468,7 +1472,7 @@ structure read through a call to flink:vkCmdDispatchIndirect. The code:WorkgroupId decoration must: be used only within compute shaders. + The variable decorated with code:WorkgroupId must: be declared using the -input storage class. +code:Input storage class. + The variable decorated with code:WorkgroupId must: be declared as a three-component vector of 32-bit integers. diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index 4534a09f..f45ac8f0 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -381,8 +381,8 @@ 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 must: only be - used with an instance of any render pass compatible with the one + 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. @@ -1087,6 +1087,9 @@ slink:VkSpecializationMapEntry. be less than pname:dataSize * For any given element of pname:pMapEntries, pname:size must: be less than or equal to pname:dataSize minus pname:offset + * If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer + to an array of pname:mapEntryCount valid sname:VkSpecializationMapEntry + structures **** include::../validity/structs/VkSpecializationInfo.txt[] diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt index b2cd803f..72012443 100644 --- a/doc/specs/vulkan/chapters/renderpass.txt +++ b/doc/specs/vulkan/chapters/renderpass.txt @@ -1104,8 +1104,11 @@ 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 + * If pname:clearValueCount is not `0`, pname:pClearValues must: be a + pointer to an array of pname:clearValueCount valid sname:VkClearValue + unions + * pname:renderPass must: be <> with + the pname:renderPass member of the sname:VkFramebufferCreateInfo structure specified when creating pname:framebuffer. **** diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt index b6881b2a..a1e0904b 100644 --- a/doc/specs/vulkan/chapters/resources.txt +++ b/doc/specs/vulkan/chapters/resources.txt @@ -291,8 +291,8 @@ 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 element size of pname:format, must: be - less than or equal to + ** 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 the size of pname:buffer @@ -519,6 +519,8 @@ flink:vkGetPhysicalDeviceImageFormatProperties. fname:vkGetPhysicalDeviceImageFormatProperties with pname:format, pname:type, pname:tiling, pname:usage, and pname:flags equal to those in this structure) + * If pname:imageType is ename:VK_IMAGE_TYPE_3D, pname:arrayLayers must: be + `1`. * 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 @@ -2037,6 +2039,12 @@ an ownership transfer in the same way as for a resource that was just created, however doing so means any contents written by other queue families or via incompatible aliases are undefined. +Ranges of buffers and image subresources of image objects created using +ename:VK_SHARING_MODE_CONCURRENT must: only be accessed by queues from the +queue families specified through the pname:queueFamilyIndexCount and +pname:pQueueFamilyIndices members of the corresponding create info +structures. + // refEnd VkSharingMode diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt index 600333c9..c649cec4 100644 --- a/doc/specs/vulkan/chapters/sparsemem.txt +++ b/doc/specs/vulkan/chapters/sparsemem.txt @@ -104,8 +104,8 @@ 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 element size - that non-sparse usage supports. + 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. ename:VK_IMAGE_TILING_LINEAR tiling is not supported. diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt index 4f5b5150..1c8ae0ed 100644 --- a/doc/specs/vulkan/chapters/synchronization.txt +++ b/doc/specs/vulkan/chapters/synchronization.txt @@ -365,7 +365,7 @@ prevent other work from overlapping with the presentation operation. For example, a sname:VkImageMemoryBarrier could use: * pname:srcStageMask = ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT - * pname:srcAccessMask = ename:VK_ACCESS_MEMORY_READ_BIT + * pname:srcAccessMask = 0 * pname:dstStageMask = ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT * pname:dstAccessMask = ename:VK_ACCESS_COLOR_ATTACHMENT_READ_BIT | ename:VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT. diff --git a/doc/specs/vulkan/chapters/textures.txt b/doc/specs/vulkan/chapters/textures.txt index 1836cc3e..b83a3922 100644 --- a/doc/specs/vulkan/chapters/textures.txt +++ b/doc/specs/vulkan/chapters/textures.txt @@ -124,7 +124,7 @@ n is the sample index and is taken from the code:Sample image operand. For all coordinate types, unused coordinates are assigned a value of zero. [[textures-texel-coordinate-systems-diagrams]] -image::images/vulkantexture0.png[Title="Texel Coordinate Systems", align="left", scaledwidth="80%"] +image::images/vulkantexture0.png[align="center",title="Texel Coordinate Systems",{fullimagewidth}] The Texel Coordinate Systems - For the example shown of an 8x4 texel two dimensional image. @@ -154,7 +154,7 @@ dimensional image. four texels selected by the offset are [eq]#i~0~j'~0~#, [eq]#i~1~j'~0~#, [eq]#i~0~j'~1~#, and [eq]#i~1~j'~1~#. -image::images/vulkantexture1.png[Title="Texel Coordinate Systems", align="left", scaledwidth="80%"] +image::images/vulkantexture1.png[align="center",title="Texel Coordinate Systems",{fullimagewidth}] The Texel Coordinate Systems - For the example shown of an 8x4 texel two dimensional image. @@ -826,7 +826,7 @@ SPIR-V derivative instructions include code:OpDPdx, code:OpDPdy, code:OpDPdxFine, code:OpDPdyFine, code:OpDPdxCoarse, and code:OpDPdyCoarse. Derivative instructions are only available in a fragment shader. -image::images/vulkantexture2.png[Title="Implicit derivatives",align="left", scaledwidth="50%"] +image::images/vulkantexture2.png[align="center",title="Implicit Derivatives",{fullimagewidth}] Derivatives are computed as if there is a 2x2 neighborhood of fragments for each fragment shader invocation. diff --git a/doc/specs/vulkan/chapters/vertexpostproc.txt b/doc/specs/vulkan/chapters/vertexpostproc.txt index 7833d226..20b8fd61 100644 --- a/doc/specs/vulkan/chapters/vertexpostproc.txt +++ b/doc/specs/vulkan/chapters/vertexpostproc.txt @@ -380,6 +380,8 @@ replace the current state for the viewport index [eq]#pname:firstViewport sname:VkPhysicalDeviceLimits::pname:maxViewports * The sum of pname:firstViewport and pname:viewportCount must: be between `1` and sname:VkPhysicalDeviceLimits::pname:maxViewports, inclusive + * pname:pViewports must: be a pointer to an array of pname:viewportCount + valid sname:VkViewport structures **** include::../validity/protos/vkCmdSetViewport.txt[] diff --git a/src/spec/hostsyncgenerator.py b/src/spec/hostsyncgenerator.py index 772719e9..c982ca93 100644 --- a/src/spec/hostsyncgenerator.py +++ b/src/spec/hostsyncgenerator.py @@ -188,10 +188,6 @@ class HostSynchronizationOutputGenerator(OutputGenerator): # Command generation def genCmd(self, cmdinfo, name): OutputGenerator.genCmd(self, cmdinfo, name) - # - # Get all thh parameters - params = cmdinfo.elem.findall('param') - usages = cmdinfo.elem.findall('validity/usage') self.makeThreadSafetyBlocks(cmdinfo.elem, 'param') diff --git a/src/spec/registry.rnc b/src/spec/registry.rnc index 9146668e..c1eb68cb 100644 --- a/src/spec/registry.rnc +++ b/src/spec/registry.rnc @@ -150,8 +150,7 @@ Type = element type { element name { text }, element enum { EnumName } ? } - } * , - Validity ? + } * ) ) } @@ -295,8 +294,7 @@ Command = element command { } ? & element implicitexternsyncparams { element param { text } * - } ? & - Validity ? + } ? ) } @@ -320,20 +318,12 @@ Feature = element feature { element require { ProfileName ? , Comment ? , - InterfaceElement *, - element usage { - attribute struct { text } *, - attribute command { text } *, - text } * + InterfaceElement * } | element remove { ProfileName ? , Comment ? , - InterfaceElement *, - element usage { - attribute struct { text } *, - attribute command { text } *, - text } * + InterfaceElement * } ) * } @@ -375,21 +365,13 @@ Extension = element extension { attribute api { text } ? , ProfileName ? , Comment ? , - InterfaceElement *, - element usage { - attribute struct { text } *, - attribute command { text } *, - text } * + InterfaceElement * } | element remove { attribute api { text } ? , ProfileName ? , Comment ? , - InterfaceElement *, - element usage { - attribute struct { text } *, - attribute command { text } *, - text } * + InterfaceElement * } ) * } @@ -409,13 +391,6 @@ InterfaceElement = Comment ? } -# Defines validation text for the Vulkan spec and reference pages. -# Consists of multiple tags, each containing arbitrary -# asciidoc text. -Validity = element validity { - element usage { text } * -} - # Integers are allowed to be either decimal or C-hex (0x[0-9A-F]+), but # XML Schema types don't seem to support hex notation, so we use this # as a placeholder. diff --git a/src/spec/registry.txt b/src/spec/registry.txt index e62a6ea7..2fe48368 100644 --- a/src/spec/registry.txt +++ b/src/spec/registry.txt @@ -351,9 +351,7 @@ If the attr:category tag has the values +struct+ or +union+, the type is a C structure or union, respectively. In this case, the attr:name attribute must be provided, and the contents of the tag:type tag are a series of tag:member tags defining the members of the aggregate type, in -order, followed by an optional tag:validity tag including asciidoc -validation language for the structure contents. - +order. ==== Structure member (tag:member) tags @@ -381,9 +379,7 @@ member. +VK_NULL_HANDLE+ (for handles), 0 (for bitmasks), or 0 for values that are the size of an array in the same structure. If the member is a pointer to one of those types, multiple values may be provided, - separated by commas - one for each pointer indirection. Note that - this only affects automatic validity statements - explicit - statements remain unchanged. + separated by commas - one for each pointer indirection. * attr:noautovalidity - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. @@ -401,19 +397,6 @@ contain two semantic tags: * The tag:name tag is required, and contains the struct/union member name being described. -==== Validation (tag:validity) tags - -The tag:validity tag, if present defines valid use cases and values for -structure members. - - -==== Contents of tag:validity tags - -Each tag:validity tag contains zero or more tag:usage tags. Each -tag:usage tag is intended to represent a specific validation requirement -for the structure and include arbitrary asciidoc text describing that -requirement. - === All other types @@ -666,8 +649,6 @@ command (function). * tag:param elements for each command parameter follow, defining its name and type, as described below. If a command takes no arguments, it has no tag:param tags. - * An optional tag:validity tag including asciidoc validation language - for the command parameters. Following these elements, the remaining elements in a tag:command tag are optional and may be in any order: @@ -737,18 +718,29 @@ members. +VK_NULL_HANDLE+ (for handles), 0 (for bitmasks), or 0 for values that are the size of an array in the same command. If the member is a pointer to one of those types, multiple values may be provided, - separated by commas - one for each pointer indirection. Note that - this only affects automatic validity statements - explicit - statements remain unchanged. + separated by commas - one for each pointer indirection. * attr:noautovalidity - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. - * attr:externsync - optional. A boolean string, which must have the - value +"true"+ if present, indicating that this parameter (e.g. the - object a handle refers to, or the contents of an array a pointer - refers to) is modified by the command, and is not protected against - modification in multiple app threads. Parameters which do not have - this attribute are assumed to not require external synchronization. + * attr:externsync - optional. A value of +"true"+ indicates that this + parameter (e.g. the object a handle refers to, or the contents of an + array a pointer refers to) is modified by the command, and is not + protected against modification in multiple app threads. If only certain + members of an object or elements of an array are modified, multiple + strings may be provided, separated by commas. Each string describes a + member which is modified. For example, the +vkQueueSubmit+ command + includes attr:externsync attributes for the +pSubmits+ array indicating + that only specific members of each element of the array are modified: ++ +-- +[source,{basebackend@docbook:c++:cpp}] +-------------------------------------- + const VkSubmitInfo* pSubmits +-------------------------------------- + +Parameters which do not have an attr:externsync attribute are assumed to not +require external synchronization. +-- === Contents of tag:param tags @@ -787,20 +779,6 @@ VkResult vkCreateInstance( -------------------------------------- -[[tag-command:validity]] -== Parameter validation (tag:validity) tags - -The tag:validity tag, if present defines valid use cases and values for -command parameters - -=== Contents of tag:validity tags - -Each tag:validity tag contains zero or more tag:usage tags. Each -tag:usage tag is intended to represent a specific validation requirement -for the command, and contains arbitrary asciidoc text describing that -requirement. - - [[tag-feature]] = API Features and Versions (tag:feature tag) @@ -989,12 +967,12 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( = Required and Removed Interfaces (tag:require and tag:remove tags) A tag:require block defines a set of interfaces (types, enumerants and -commands) and additional validity statements 'required' by a tag:feature -or tag:extension. A tag:remove block defines a set of interfaces or -validity statements 'removed' by a tag:feature. This is primarily for +commands) 'required' by a tag:feature +or tag:extension. A tag:remove block defines a set of interfaces +'removed' by a tag:feature. This is primarily for future profiles of an API which may choose to deprecate and/or remove -some interfaces - or for profiles or extensions to remove validity -statements. Extensions should never remove interfaces, although this +some interfaces. +Extensions should never remove interfaces, although this usage is allowed by the schema). Except for the tag name and behavior, the contents of tag:require and tag:remove tags are identical. @@ -1083,18 +1061,6 @@ content, but contains elements: * attr:name - required. Name of the type. * attr:comment - optional. Arbitrary string (unused). -=== Usage Tags - -tag:usage specifies a required (or removed) validity statement for a -tag:validity block belonging to a tag:proto or tag:type block. Validity -is more likely to be removed by extensions than other items. One of -struct or command must be present. - - * attr:struct - optional. Name of the structure this validity is added - to (or removed from). - * attr:comment - optional. Name of the command this validity is added - to (or removed from). - [[tag-required:examples]] == Examples of Extension Enumerants @@ -1756,6 +1722,8 @@ files and Python scripts are logged in Github history. [[changelog]] = Change Log + * 2016-09-27 - remove tag:validity and tag:usage tags, since these + explicit usage statements have been moved to the specification source. * 2016-08-26 - Update for the single-branch model. * 2016-07-28 - Add attr:type and attr:requires attributes to tag:extension tags. diff --git a/src/spec/validitygenerator.py b/src/spec/validitygenerator.py index 422088bd..0f3a5865 100644 --- a/src/spec/validitygenerator.py +++ b/src/spec/validitygenerator.py @@ -73,7 +73,7 @@ class ValidityOutputGenerator(OutputGenerator): # directory - subdirectory to put file in # basename - base name of the file # contents - contents of the file (Asciidoc boilerplate aside) - def writeInclude(self, directory, basename, validity, usages, threadsafety, commandpropertiesentry, successcodes, errorcodes): + def writeInclude(self, directory, basename, validity, threadsafety, commandpropertiesentry, successcodes, errorcodes): # Create subdirectory, if needed directory = self.genOpts.directory + '/' + directory self.makeDir(directory) @@ -139,19 +139,6 @@ class ValidityOutputGenerator(OutputGenerator): fp.close() - # Create plain-text validity include - interim measure - if usages and len(usages) > 0: - filename = self.genOpts.directory + '/' + basename + '.txt' - self.logMsg('diag', '# Generating plain-text include file:', filename) - fp = open(filename, 'w') - - # Add each plain-text tag - if usages: - for usage in usages: - write('* ' + usage, file=fp) - - fp.close() - # # Check if the parameter passed in is a pointer def paramIsPointer(self, param): @@ -465,10 +452,6 @@ class ValidityOutputGenerator(OutputGenerator): struct = self.registry.tree.find("types/type[@name='" + structname + "']") params = struct.findall('member') - validity = struct.find('validity') - - if validity is not None: - return False for param in params: paramname = param.find('name') @@ -716,7 +699,7 @@ class ValidityOutputGenerator(OutputGenerator): # # Generate all the valid usage information for a given struct or command - def makeValidUsageStatements(self, cmd, blockname, params, usages): + def makeValidUsageStatements(self, cmd, blockname, params): # Start the asciidoc block for this asciidoc = '' @@ -869,10 +852,6 @@ class ValidityOutputGenerator(OutputGenerator): # Find the common ancestor of all objects referenced in this command asciidoc += self.makeAsciiDocHandlesCommonAncestor(handles, params) - # Include the plain-text validation language from the usages[] array - if len(usages) > 0: - asciidoc += 'include::../' + blockname + '.txt[]\n' - # In case there's nothing to report, return None if asciidoc == '': return None @@ -991,23 +970,14 @@ class ValidityOutputGenerator(OutputGenerator): # # Get all the parameters params = cmdinfo.elem.findall('param') - usageelements = cmdinfo.elem.findall('validity/usage') - usages = [] - for usage in usageelements: - usages.append(usage.text) - for usage in cmdinfo.additionalValidity: - usages.append(usage.text) - for usage in cmdinfo.removedValidity: - usages.remove(usage.text) - - validity = self.makeValidUsageStatements(cmdinfo.elem, name, params, usages) + validity = self.makeValidUsageStatements(cmdinfo.elem, name, params) threadsafety = self.makeThreadSafetyBlock(cmdinfo.elem, 'param') commandpropertiesentry = self.makeCommandPropertiesTableEntry(cmdinfo.elem, name) successcodes = self.makeSuccessCodes(cmdinfo.elem, name) errorcodes = self.makeErrorCodes(cmdinfo.elem, name) - self.writeInclude('protos', name, validity, usages, threadsafety, commandpropertiesentry, successcodes, errorcodes) + self.writeInclude('protos', name, validity, threadsafety, commandpropertiesentry, successcodes, errorcodes) # # Struct Generation @@ -1018,23 +988,13 @@ class ValidityOutputGenerator(OutputGenerator): if typeinfo.elem.attrib.get('returnedonly') is None: params = typeinfo.elem.findall('member') - usageelements = typeinfo.elem.findall('validity/usage') - usages = [] - - for usage in usageelements: - usages.append(usage.text) - for usage in typeinfo.additionalValidity: - usages.append(usage.text) - for usage in typeinfo.removedValidity: - usages.remove(usage.text) - - validity = self.makeValidUsageStatements(typeinfo.elem, typename, params, usages) + validity = self.makeValidUsageStatements(typeinfo.elem, typename, params) threadsafety = self.makeThreadSafetyBlock(typeinfo.elem, 'member') - self.writeInclude('structs', typename, validity, usages, threadsafety, None, None, None) + self.writeInclude('structs', typename, validity, threadsafety, None, None, None) else: # Still generate files for return only structs, in case this state changes later - self.writeInclude('structs', typename, None, None, None, None, None, None) + self.writeInclude('structs', typename, None, None, None, None, None) # # Group (e.g. C "enum" type) generation. diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 7fcb2ebc..8b622b4e 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 31 +#define VK_HEADER_VERSION 32 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -414,8 +414,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. float height float minDepth float maxDepth - - VkOffset2D offset @@ -465,8 +463,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const char* pEngineName uint32_t engineVersion uint32_t apiVersion - - void* pUserData @@ -475,8 +471,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. PFN_vkFreeFunction pfnFree PFN_vkInternalAllocationNotification pfnInternalAllocation PFN_vkInternalFreeNotification pfnInternalFree - - VkStructureType sType @@ -485,8 +479,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t queueFamilyIndex uint32_t queueCount const float* pQueuePriorities - - VkStructureType sType @@ -499,8 +491,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t enabledExtensionCount const char* const* ppEnabledExtensionNames const VkPhysicalDeviceFeatures* pEnabledFeatures - - VkStructureType sType @@ -511,8 +501,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const char* const* ppEnabledLayerNames uint32_t enabledExtensionCount const char* const* ppEnabledExtensionNames - - VkQueueFlags queueFlags @@ -531,8 +519,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const void* pNext VkDeviceSize allocationSize uint32_t memoryTypeIndex - - VkDeviceSize size @@ -565,8 +551,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceMemory memory VkDeviceSize offset VkDeviceSize size - - VkFormatFeatureFlags linearTilingFeatures @@ -584,8 +568,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBuffer buffer VkDeviceSize offset VkDeviceSize range - - VkSampler sampler @@ -603,8 +585,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkDescriptorImageInfo* pImageInfo const VkDescriptorBufferInfo* pBufferInfo const VkBufferView* pTexelBufferView - - VkStructureType sType @@ -616,8 +596,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t dstBinding uint32_t dstArrayElement uint32_t descriptorCount - - VkStructureType sType @@ -628,8 +606,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkSharingMode sharingMode uint32_t queueFamilyIndexCount const uint32_t* pQueueFamilyIndices - - VkStructureType sType @@ -644,16 +620,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageAspectFlags aspectMask uint32_t mipLevel uint32_t arrayLayer - - VkImageAspectFlags aspectMask uint32_t mipLevel uint32_t baseArrayLayer uint32_t layerCount - - VkImageAspectFlags aspectMask @@ -661,8 +633,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t levelCount uint32_t baseArrayLayer uint32_t layerCount - - VkStructureType sType @@ -680,8 +650,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBuffer buffer VkDeviceSize offset VkDeviceSize size - - VkStructureType sType @@ -694,8 +662,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t dstQueueFamilyIndex VkImage image VkImageSubresourceRange subresourceRange - - VkStructureType sType @@ -713,8 +679,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t queueFamilyIndexCount const uint32_t* pQueueFamilyIndices VkImageLayout initialLayout - - VkDeviceSize offset @@ -732,8 +696,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkFormat format VkComponentMapping components VkImageSubresourceRange subresourceRange - - VkDeviceSize srcOffset @@ -746,8 +708,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceMemory memory VkDeviceSize memoryOffset VkSparseMemoryBindFlagsflags - - VkImageSubresource subresource @@ -756,8 +716,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceMemory memory VkDeviceSize memoryOffset VkSparseMemoryBindFlagsflags - - VkBuffer buffer @@ -768,8 +726,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImage image uint32_t bindCount const VkSparseMemoryBind* pBinds - - VkImage image @@ -802,8 +758,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkOffset3D srcOffsets[2] VkImageSubresourceLayers dstSubresource VkOffset3D dstOffsets[2] - - VkDeviceSize bufferOffset @@ -812,8 +766,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageSubresourceLayers imageSubresource VkOffset3D imageOffset VkExtent3D imageExtent - - VkImageSubresourceLayers srcSubresource @@ -821,8 +773,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageSubresourceLayers dstSubresource VkOffset3D dstOffset VkExtent3D extent - - VkStructureType sType @@ -830,8 +780,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkShaderModuleCreateFlags flags size_t codeSize const uint32_t* pCode - - uint32_t binding @@ -839,8 +787,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t descriptorCount VkShaderStageFlags stageFlags const VkSampler* pImmutableSamplers - - VkStructureType sType @@ -852,8 +798,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDescriptorType type uint32_t descriptorCount - - VkStructureType sType @@ -862,8 +806,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t maxSets uint32_t poolSizeCount const VkDescriptorPoolSize* pPoolSizes - - VkStructureType sType @@ -871,23 +813,17 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDescriptorPool descriptorPool uint32_t descriptorSetCount const VkDescriptorSetLayout* pSetLayouts - - uint32_t constantID uint32_t offset size_t size - - uint32_t mapEntryCount - const VkSpecializationMapEntry* pMapEntries + const VkSpecializationMapEntry* pMapEntries size_t dataSize const void* pData - - VkStructureType sType @@ -897,8 +833,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkShaderModule module const char* pName const VkSpecializationInfo* pSpecializationInfo - - VkStructureType sType @@ -908,23 +842,17 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPipelineLayout layout VkPipeline basePipelineHandle int32_t basePipelineIndex - - uint32_t binding uint32_t stride VkVertexInputRate inputRate - - uint32_t location uint32_t binding VkFormat format uint32_t offset - - VkStructureType sType @@ -934,8 +862,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkVertexInputBindingDescription* pVertexBindingDescriptions uint32_t vertexAttributeDescriptionCount const VkVertexInputAttributeDescription* pVertexAttributeDescriptions - - VkStructureType sType @@ -943,16 +869,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPipelineInputAssemblyStateCreateFlags flags VkPrimitiveTopology topology VkBool32 primitiveRestartEnable - - VkStructureType sType const void* pNext VkPipelineTessellationStateCreateFlags flags uint32_t patchControlPoints - - VkStructureType sType @@ -962,8 +884,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkViewport* pViewports uint32_t scissorCount const VkRect2D* pScissors - - VkStructureType sType @@ -979,8 +899,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. float depthBiasClamp float depthBiasSlopeFactor float lineWidth - - VkStructureType sType @@ -992,8 +910,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkSampleMask* pSampleMask VkBool32 alphaToCoverageEnable VkBool32 alphaToOneEnable - - VkBool32 blendEnable @@ -1004,8 +920,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBlendFactor dstAlphaBlendFactor VkBlendOp alphaBlendOp VkColorComponentFlags colorWriteMask - - VkStructureType sType @@ -1016,8 +930,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t attachmentCount const VkPipelineColorBlendAttachmentState* pAttachments float blendConstants[4] - - VkStructureType sType @@ -1048,8 +960,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkStencilOpState back float minDepthBounds float maxDepthBounds - - VkStructureType sType @@ -1071,8 +981,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t subpass VkPipeline basePipelineHandle int32_t basePipelineIndex - - VkStructureType sType @@ -1080,15 +988,11 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPipelineCacheCreateFlags flags size_t initialDataSize const void* pInitialData - - VkShaderStageFlags stageFlags uint32_t offset uint32_t size - - VkStructureType sType @@ -1098,8 +1002,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkDescriptorSetLayout* pSetLayouts uint32_t pushConstantRangeCount const VkPushConstantRange* pPushConstantRanges - - VkStructureType sType @@ -1120,16 +1022,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. float maxLod VkBorderColor borderColor VkBool32 unnormalizedCoordinates - - VkStructureType sType const void* pNext VkCommandPoolCreateFlags flags uint32_t queueFamilyIndex - - VkStructureType sType @@ -1137,8 +1035,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkCommandPool commandPool VkCommandBufferLevel level uint32_t commandBufferCount - - VkStructureType sType @@ -1149,16 +1045,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBool32 occlusionQueryEnable VkQueryControlFlags queryFlags VkQueryPipelineStatisticFlags pipelineStatistics - - VkStructureType sType const void* pNext VkCommandBufferUsageFlags flags const VkCommandBufferInheritanceInfo* pInheritanceInfo - - VkStructureType sType @@ -1167,9 +1059,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkFramebuffer framebuffer VkRect2D renderArea uint32_t clearValueCount - const VkClearValue* pClearValues - - + const VkClearValue* pClearValues float float32[4] @@ -1179,8 +1069,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. float depth uint32_t stencil - - VkClearColorValue color @@ -1190,8 +1078,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageAspectFlags aspectMask uint32_t colorAttachment VkClearValue clearValue - - VkAttachmentDescriptionFlags flags @@ -1203,14 +1089,10 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkAttachmentStoreOp stencilStoreOp VkImageLayout initialLayout VkImageLayout finalLayout - - uint32_t attachment VkImageLayout layout - - VkSubpassDescriptionFlags flags @@ -1223,8 +1105,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkAttachmentReference* pDepthStencilAttachment uint32_t preserveAttachmentCount const uint32_t* pPreserveAttachments - - uint32_t srcSubpass @@ -1234,8 +1114,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkAccessFlags srcAccessMask VkAccessFlags dstAccessMask VkDependencyFlags dependencyFlags - - VkStructureType sType @@ -1247,8 +1125,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkSubpassDescription* pSubpasses uint32_t dependencyCount const VkSubpassDependency* pDependencies - - VkStructureType sType @@ -1316,8 +1192,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBool32 sparseResidencyAliased VkBool32 variableMultisampleRate VkBool32 inheritedQueries - - VkBool32 residencyStandard2DBlockShape @@ -1455,8 +1329,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkQueryType queryType uint32_t queryCount VkQueryPipelineStatisticFlags pipelineStatistics - - VkStructureType sType @@ -1468,16 +1340,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t width uint32_t height uint32_t layers - - uint32_t vertexCount uint32_t instanceCount uint32_t firstVertex uint32_t firstInstance - - uint32_t indexCount @@ -1485,15 +1353,11 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t firstIndex int32_t vertexOffset uint32_t firstInstance - - uint32_t x uint32_t y uint32_t z - - VkStructureType sType @@ -1505,8 +1369,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkCommandBuffer* pCommandBuffers uint32_t signalSemaphoreCount const VkSemaphore* pSignalSemaphores - - @@ -1535,8 +1397,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const void* pNext VkDisplayModeCreateFlagsKHR flags VkDisplayModeParametersKHR parameters - - VkDisplayPlaneAlphaFlagsKHR supportedAlpha @@ -1560,8 +1420,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. float globalAlpha VkDisplayPlaneAlphaFlagBitsKHR alphaMode VkExtent2D imageExtent - - VkStructureType sType @@ -1569,8 +1427,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkRect2D srcRect VkRect2D dstRect VkBool32 persistent - - uint32_t minImageCount @@ -1589,8 +1445,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const void* pNext VkAndroidSurfaceCreateFlagsKHR flags ANativeWindow* window - - VkStructureType sType @@ -1650,8 +1504,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPresentModeKHR presentMode VkBool32 clipped VkSwapchainKHR oldSwapchain - - VkStructureType sType @@ -1662,8 +1514,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkSwapchainKHR* pSwapchains const uint32_t* pImageIndices VkResult* pResults - - VkStructureType sType @@ -1709,23 +1559,17 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkStructureType sType const void* pNext VkBool32 dedicatedAllocation - - VkStructureType sType const void* pNext VkBool32 dedicatedAllocation - - VkStructureType sType const void* pNext VkImage image VkBuffer buffer - - VkImageFormatProperties imageFormatProperties @@ -2603,8 +2447,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. void vkDestroyInstance VkInstance instance const VkAllocationCallbacks* pAllocator - - VkResult vkEnumeratePhysicalDevices @@ -2670,8 +2512,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. void vkDestroyDevice VkDevice device const VkAllocationCallbacks* pAllocator - - VkResult vkEnumerateInstanceLayerProperties @@ -2683,8 +2523,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const char* pLayerName uint32_t* pPropertyCount VkExtensionProperties* pProperties - - VkResult vkEnumerateDeviceLayerProperties @@ -2698,8 +2536,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const char* pLayerName uint32_t* pPropertyCount VkExtensionProperties* pProperties - - void vkGetDeviceQueue @@ -2707,8 +2543,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t queueFamilyIndex uint32_t queueIndex VkQueue* pQueue - - VkResult vkQueueSubmit @@ -2716,8 +2550,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t submitCount const VkSubmitInfo* pSubmits VkFence fence - - VkResult vkQueueWaitIdle @@ -2736,16 +2568,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkMemoryAllocateInfo* pAllocateInfo const VkAllocationCallbacks* pAllocator VkDeviceMemory* pMemory - - void vkFreeMemory VkDevice device VkDeviceMemory memory const VkAllocationCallbacks* pAllocator - - VkResult vkMapMemory @@ -2755,15 +2583,11 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize size VkMemoryMapFlags flags void** ppData - - void vkUnmapMemory VkDevice device VkDeviceMemory memory - - VkResult vkFlushMappedMemoryRanges @@ -2782,8 +2606,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkDeviceMemory memory VkDeviceSize* pCommittedMemoryInBytes - - void vkGetBufferMemoryRequirements @@ -2797,8 +2619,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBuffer buffer VkDeviceMemory memory VkDeviceSize memoryOffset - - void vkGetImageMemoryRequirements @@ -2812,8 +2632,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImage image VkDeviceMemory memory VkDeviceSize memoryOffset - - void vkGetImageSparseMemoryRequirements @@ -2832,8 +2650,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageTiling tiling uint32_t* pPropertyCount VkSparseImageFormatProperties* pProperties - - VkResult vkQueueBindSparse @@ -2841,8 +2657,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t bindInfoCount const VkBindSparseInfo* pBindInfo VkFence fence - - VkResult vkCreateFence @@ -2856,16 +2670,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkFence fence const VkAllocationCallbacks* pAllocator - - VkResult vkResetFences VkDevice device uint32_t fenceCount const VkFence* pFences - - VkResult vkGetFenceStatus @@ -2892,8 +2702,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkSemaphore semaphore const VkAllocationCallbacks* pAllocator - - VkResult vkCreateEvent @@ -2907,8 +2715,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkEvent event const VkAllocationCallbacks* pAllocator - - VkResult vkGetEventStatus @@ -2924,8 +2730,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkResult vkResetEvent VkDevice device VkEvent event - - VkResult vkCreateQueryPool @@ -2939,8 +2743,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkQueryPool queryPool const VkAllocationCallbacks* pAllocator - - VkResult vkGetQueryPoolResults @@ -2952,8 +2754,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. void* pData VkDeviceSize stride VkQueryResultFlags flags - - VkResult vkCreateBuffer @@ -2961,16 +2761,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkBufferCreateInfo* pCreateInfo const VkAllocationCallbacks* pAllocator VkBuffer* pBuffer - - void vkDestroyBuffer VkDevice device VkBuffer buffer const VkAllocationCallbacks* pAllocator - - VkResult vkCreateBufferView @@ -2984,8 +2780,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkBufferView bufferView const VkAllocationCallbacks* pAllocator - - VkResult vkCreateImage @@ -2993,16 +2787,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkImageCreateInfo* pCreateInfo const VkAllocationCallbacks* pAllocator VkImage* pImage - - void vkDestroyImage VkDevice device VkImage image const VkAllocationCallbacks* pAllocator - - void vkGetImageSubresourceLayout @@ -3010,8 +2800,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImage image const VkImageSubresource* pSubresource VkSubresourceLayout* pLayout - - VkResult vkCreateImageView @@ -3025,8 +2813,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkImageView imageView const VkAllocationCallbacks* pAllocator - - VkResult vkCreateShaderModule @@ -3040,8 +2826,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkShaderModule shaderModule const VkAllocationCallbacks* pAllocator - - VkResult vkCreatePipelineCache @@ -3055,8 +2839,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkPipelineCache pipelineCache const VkAllocationCallbacks* pAllocator - - VkResult vkGetPipelineCacheData @@ -3071,8 +2853,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPipelineCache dstCache uint32_t srcCacheCount const VkPipelineCache* pSrcCaches - - VkResult vkCreateGraphicsPipelines @@ -3082,8 +2862,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkGraphicsPipelineCreateInfo* pCreateInfos const VkAllocationCallbacks* pAllocator VkPipeline* pPipelines - - VkResult vkCreateComputePipelines @@ -3093,16 +2871,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkComputePipelineCreateInfo* pCreateInfos const VkAllocationCallbacks* pAllocator VkPipeline* pPipelines - - void vkDestroyPipeline VkDevice device VkPipeline pipeline const VkAllocationCallbacks* pAllocator - - VkResult vkCreatePipelineLayout @@ -3116,8 +2890,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkPipelineLayout pipelineLayout const VkAllocationCallbacks* pAllocator - - VkResult vkCreateSampler @@ -3131,8 +2903,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkSampler sampler const VkAllocationCallbacks* pAllocator - - VkResult vkCreateDescriptorSetLayout @@ -3146,8 +2916,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkDescriptorSetLayout descriptorSetLayout const VkAllocationCallbacks* pAllocator - - VkResult vkCreateDescriptorPool @@ -3161,8 +2929,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkDescriptorPool descriptorPool const VkAllocationCallbacks* pAllocator - - VkResult vkResetDescriptorPool @@ -3172,8 +2938,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. any sname:VkDescriptorSet objects allocated from pname:descriptorPool - - VkResult vkAllocateDescriptorSets @@ -3187,8 +2951,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDescriptorPool descriptorPool uint32_t descriptorSetCount const VkDescriptorSet* pDescriptorSets - - void vkUpdateDescriptorSets @@ -3210,8 +2972,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkFramebuffer framebuffer const VkAllocationCallbacks* pAllocator - - VkResult vkCreateRenderPass @@ -3225,8 +2985,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkRenderPass renderPass const VkAllocationCallbacks* pAllocator - - void vkGetRenderAreaGranularity @@ -3246,16 +3004,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkCommandPool commandPool const VkAllocationCallbacks* pAllocator - - VkResult vkResetCommandPool VkDevice device VkCommandPool commandPool VkCommandPoolResetFlags flags - - VkResult vkAllocateCommandBuffers @@ -3269,45 +3023,33 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkCommandPool commandPool uint32_t commandBufferCount const VkCommandBuffer* pCommandBuffers - - VkResult vkBeginCommandBuffer VkCommandBuffer commandBuffer const VkCommandBufferBeginInfo* pBeginInfo - - VkResult vkEndCommandBuffer VkCommandBuffer commandBuffer - - VkResult vkResetCommandBuffer VkCommandBuffer commandBuffer VkCommandBufferResetFlags flags - - void vkCmdBindPipeline VkCommandBuffer commandBuffer VkPipelineBindPoint pipelineBindPoint VkPipeline pipeline - - void vkCmdSetViewport VkCommandBuffer commandBuffer uint32_t firstViewport uint32_t viewportCount - const VkViewport* pViewports - - + const VkViewport* pViewports void vkCmdSetScissor @@ -3315,15 +3057,11 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t firstScissor uint32_t scissorCount const VkRect2D* pScissors - - void vkCmdSetLineWidth VkCommandBuffer commandBuffer float lineWidth - - void vkCmdSetDepthBias @@ -3331,47 +3069,35 @@ maintained in the master branch of the Khronos Vulkan GitHub project. float depthBiasConstantFactor float depthBiasClamp float depthBiasSlopeFactor - - void vkCmdSetBlendConstants VkCommandBuffer commandBuffer const float blendConstants[4] - - void vkCmdSetDepthBounds VkCommandBuffer commandBuffer float minDepthBounds float maxDepthBounds - - void vkCmdSetStencilCompareMask VkCommandBuffer commandBuffer VkStencilFaceFlags faceMask uint32_t compareMask - - void vkCmdSetStencilWriteMask VkCommandBuffer commandBuffer VkStencilFaceFlags faceMask uint32_t writeMask - - void vkCmdSetStencilReference VkCommandBuffer commandBuffer VkStencilFaceFlags faceMask uint32_t reference - - void vkCmdBindDescriptorSets @@ -3383,8 +3109,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkDescriptorSet* pDescriptorSets uint32_t dynamicOffsetCount const uint32_t* pDynamicOffsets - - void vkCmdBindIndexBuffer @@ -3392,8 +3116,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBuffer buffer VkDeviceSize offset VkIndexType indexType - - void vkCmdBindVertexBuffers @@ -3402,8 +3124,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t bindingCount const VkBuffer* pBuffers const VkDeviceSize* pOffsets - - void vkCmdDraw @@ -3412,8 +3132,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t instanceCount uint32_t firstVertex uint32_t firstInstance - - void vkCmdDrawIndexed @@ -3423,8 +3141,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t firstIndex int32_t vertexOffset uint32_t firstInstance - - void vkCmdDrawIndirect @@ -3433,8 +3149,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize offset uint32_t drawCount uint32_t stride - - void vkCmdDrawIndexedIndirect @@ -3443,8 +3157,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize offset uint32_t drawCount uint32_t stride - - void vkCmdDispatch @@ -3452,16 +3164,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t x uint32_t y uint32_t z - - void vkCmdDispatchIndirect VkCommandBuffer commandBuffer VkBuffer buffer VkDeviceSize offset - - void vkCmdCopyBuffer @@ -3470,8 +3178,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBuffer dstBuffer uint32_t regionCount const VkBufferCopy* pRegions - - void vkCmdCopyImage @@ -3482,8 +3188,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageLayout dstImageLayout uint32_t regionCount const VkImageCopy* pRegions - - void vkCmdBlitImage @@ -3495,8 +3199,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t regionCount const VkImageBlit* pRegions VkFilter filter - - void vkCmdCopyBufferToImage @@ -3506,8 +3208,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageLayout dstImageLayout uint32_t regionCount const VkBufferImageCopy* pRegions - - void vkCmdCopyImageToBuffer @@ -3517,8 +3217,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBuffer dstBuffer uint32_t regionCount const VkBufferImageCopy* pRegions - - void vkCmdUpdateBuffer @@ -3527,8 +3225,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize dstOffset VkDeviceSize dataSize const void* pData - - void vkCmdFillBuffer @@ -3537,8 +3233,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize dstOffset VkDeviceSize size uint32_t data - - void vkCmdClearColorImage @@ -3548,8 +3242,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkClearColorValue* pColor uint32_t rangeCount const VkImageSubresourceRange* pRanges - - void vkCmdClearDepthStencilImage @@ -3559,8 +3251,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkClearDepthStencilValue* pDepthStencil uint32_t rangeCount const VkImageSubresourceRange* pRanges - - void vkCmdClearAttachments @@ -3569,8 +3259,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkClearAttachment* pAttachments uint32_t rectCount const VkClearRect* pRects - - void vkCmdResolveImage @@ -3581,24 +3269,18 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkImageLayout dstImageLayout uint32_t regionCount const VkImageResolve* pRegions - - void vkCmdSetEvent VkCommandBuffer commandBuffer VkEvent event VkPipelineStageFlags stageMask - - void vkCmdResetEvent VkCommandBuffer commandBuffer VkEvent event VkPipelineStageFlags stageMask - - void vkCmdWaitEvents @@ -3613,8 +3295,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. const VkBufferMemoryBarrier* pBufferMemoryBarriers uint32_t imageMemoryBarrierCount const VkImageMemoryBarrier* pImageMemoryBarriers - - void vkCmdPipelineBarrier @@ -3635,16 +3315,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkQueryPool queryPool uint32_t query VkQueryControlFlags flags - - void vkCmdEndQuery VkCommandBuffer commandBuffer VkQueryPool queryPool uint32_t query - - void vkCmdResetQueryPool @@ -3652,8 +3328,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkQueryPool queryPool uint32_t firstQuery uint32_t queryCount - - void vkCmdWriteTimestamp @@ -3661,8 +3335,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPipelineStageFlagBits pipelineStage VkQueryPool queryPool uint32_t query - - void vkCmdCopyQueryPoolResults @@ -3674,8 +3346,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize dstOffset VkDeviceSize stride VkQueryResultFlags flags - - void vkCmdPushConstants @@ -3685,37 +3355,27 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t offset uint32_t size const void* pValues - - void vkCmdBeginRenderPass VkCommandBuffer commandBuffer const VkRenderPassBeginInfo* pRenderPassBegin VkSubpassContents contents - - void vkCmdNextSubpass VkCommandBuffer commandBuffer VkSubpassContents contents - - void vkCmdEndRenderPass VkCommandBuffer commandBuffer - - void vkCmdExecuteCommands VkCommandBuffer commandBuffer uint32_t commandBufferCount const VkCommandBuffer* pCommandBuffers - - VkResult vkCreateAndroidSurfaceKHR @@ -3742,8 +3402,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t planeIndex uint32_t* pDisplayCount VkDisplayKHR* pDisplays - - VkResult vkGetDisplayModePropertiesKHR @@ -3794,16 +3452,12 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPhysicalDevice physicalDevice uint32_t queueFamilyIndex MirConnection* connection - - void vkDestroySurfaceKHR VkInstance instance VkSurfaceKHR surface const VkAllocationCallbacks* pAllocator - - VkResult vkGetPhysicalDeviceSurfaceSupportKHR @@ -3811,8 +3465,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t queueFamilyIndex VkSurfaceKHR surface VkBool32* pSupported - - VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR @@ -3846,8 +3498,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDevice device VkSwapchainKHR swapchain const VkAllocationCallbacks* pAllocator - - VkResult vkGetSwapchainImagesKHR @@ -3864,15 +3514,11 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkSemaphore semaphore VkFence fence uint32_t* pImageIndex - - VkResult vkQueuePresentKHR VkQueue queue const VkPresentInfoKHR* pPresentInfo - - VkResult vkCreateWaylandSurfaceKHR @@ -3886,8 +3532,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkPhysicalDevice physicalDevice uint32_t queueFamilyIndex struct wl_display* display - - VkResult vkCreateWin32SurfaceKHR @@ -3900,8 +3544,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR VkPhysicalDevice physicalDevice uint32_t queueFamilyIndex - - VkResult vkCreateXlibSurfaceKHR @@ -3916,8 +3558,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t queueFamilyIndex Display* dpy VisualID visualID - - VkResult vkCreateXcbSurfaceKHR @@ -3932,8 +3572,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. uint32_t queueFamilyIndex xcb_connection_t* connection xcb_visualid_t visual_id - - VkResult vkCreateDebugReportCallbackEXT @@ -3947,8 +3585,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkInstance instance VkDebugReportCallbackEXT callback const VkAllocationCallbacks* pAllocator - - void vkDebugReportMessageEXT @@ -3960,22 +3596,16 @@ maintained in the master branch of the Khronos Vulkan GitHub project. int32_t messageCode const char* pLayerPrefix const char* pMessage - - VkResult vkDebugMarkerSetObjectNameEXT VkDevice device VkDebugMarkerObjectNameInfoEXT* pNameInfo - - VkResult vkDebugMarkerSetObjectTagEXT VkDevice device VkDebugMarkerObjectTagInfoEXT* pTagInfo - - void vkCmdDebugMarkerBeginEXT @@ -3985,8 +3615,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. void vkCmdDebugMarkerEndEXT VkCommandBuffer commandBuffer - - void vkCmdDebugMarkerInsertEXT @@ -4010,8 +3638,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceMemory memory VkExternalMemoryHandleTypeFlagsNV handleType HANDLE* pHandle - - void vkCmdDrawIndirectCountAMD @@ -4022,8 +3648,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize countBufferOffset uint32_t maxDrawCount uint32_t stride - - void vkCmdDrawIndexedIndirectCountAMD @@ -4034,8 +3658,6 @@ maintained in the master branch of the Khronos Vulkan GitHub project. VkDeviceSize countBufferOffset uint32_t maxDrawCount uint32_t stride - - @@ -4588,7 +4210,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project. - + @@ -4600,7 +4222,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project. - + @@ -4823,5 +4445,89 @@ maintained in the master branch of the Khronos Vulkan GitHub project. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index 0cad6bf9..694527c3 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 31 +#define VK_HEADER_VERSION 32 #define VK_NULL_HANDLE 0 @@ -4000,7 +4000,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( #endif #define VK_AMD_negative_viewport_height 1 -#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 0 +#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" @@ -4010,7 +4010,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( #define VK_AMD_shader_ballot 1 -#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 0 +#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 #define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"