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

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

Github Issues:

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

Internal Issues:

  * Remove empty validity blocks from +vk.xml+ and suppressed broken
    validity statements and added missing statements to explicit
    validity. Doesn't affect output, other than some statements
    appearing in another block now (internal issue 513).
This commit is contained in:
Jon Leech 2016-10-25 14:22:26 +09:00
parent b97259786d
commit 368b08a7b2
24 changed files with 349 additions and 642 deletions

View File

@ -1520,3 +1520,41 @@ Internal Issues:
* Tag usages of ``dynamically uniform'' as glossary terms and add a
glossary entry pointing to the SPIR-V Specification's definition of the
term (internal issue 531).
-----------------------------------------------------
Change log for October 25, 2016 Vulkan 1.0.32 spec update:
* Bump API patch number and header version number to 32 for this update.
Github Issues:
* Add automatic visibility operations to the presentation engineE when
doing a queue present in flink:vkAcquireNextImageKHR. Removed all
references to MEMORY_READ that referenced WSI - they no longer make
sense (some aspects of public issues 128, 131, 132, 261, and 298).
* Document valid non-boolean +externsync+ attribute values for <param>
tags in +vk.xml+ (public issue 265).
* Add valid usage to slink:VkImageCreateInfo requiring that
pname:arrayLayers be 1 for images of type ename:VK_IMAGE_TYPE_3D
(public issue 319).
* Add missing captions to figures in the <<textures,Image Operations>>
chapter (public issue 334).
* Clarify WSI interaction with exclusive sharing mode (public issue
344).
* Added explicit language clarifying the allowed queue usage of
resources created with ename:VK_SHARING_MODE_CONCURRENT (public
issue 386).
* Require that the
slink:VkDescriptorSetLayoutCreateInfo::pname:binding members of the
pname:pBindings array passed to
flink:vkDescriptorSetLayoutCreateInfo all be distinct (public issue
391).
Internal Issues:
* Remove empty validity blocks from +vk.xml+ and suppressed broken
validity statements and added missing statements to explicit
validity. Doesn't affect output, other than some statements
appearing in another block now (internal issue 513).

View File

@ -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

View File

@ -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[]

View File

@ -534,9 +534,6 @@ The fname:vkCmdWaitEvents or fname:vkCmdPipelineBarrier used to transition
the image away from ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout must: have
pname:dstStageMask and pname:dstAccessMask parameters set based on the next
use of the image.
The pname:srcAccessMask must: include ename:VK_ACCESS_MEMORY_READ_BIT to
ensure that all prior reads by the presentation engine are complete before
the image layout transition occurs.
The application must: use
<<synchronization-implicit-ordering-hostwrites,implicit ordering
guarantees>> and
@ -567,6 +564,19 @@ still be in the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout if it was
previously presented, or in the ename:VK_IMAGE_LAYOUT_UNDEFINED layout if
this is the first time it has been acquired.
[NOTE]
.Note
====
Exclusive ownership of presentable images corresponding to a swapchain
created with ename:VK_SHARING_MODE_EXCLUSIVE as defined in
<<resources-sharing,Resource Sharing>> is not altered by a call to
fname:vkAcquireNextImageKHR.
That means upon the first acquisition from such a swapchain presentable
images are not owned by any queue family, while at subsequent acquisitions
the presentable images remain owned by the queue family the image was
previously presented on.
====
The possible return values for fname:vkAcquireNextImageKHR() depend on the
pname:timeout provided:
@ -612,16 +622,18 @@ image sizes, a ename:VK_ERROR_OUT_OF_DATE_KHR error will be returned.
Before an application can: present an image, the image's layout must: be
transitioned to the ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR layout.
The fname:vkCmdWaitEvents or fname:vkCmdPipelineBarrier that perform the
transition must: have pname:srcStageMask and pname:srcAccessMask parameters
set based on the preceding use of the image.
The pname:dstAccessMask must: include ename:VK_ACCESS_MEMORY_READ_BIT
indicating all prior accesses indicated in pname:srcAccessMask from stages
in pname:srcStageMask are to be made available to reads by the presentation
engine.
Any value of pname:dstStageMask is valid, but should: be set to
ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT to avoid delaying subsequent
commands that do not access the image.
.Note
[NOTE]
====
When transitioning the image to ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, there
is no need to delay subsequent processing, or perform any visibility
operations (as flink:vkQueuePresentKHR performs automatic visibility
operations).
To achieve this, the pname:dstAccessMask member of the
slink:VkImageMemoryBarrier should: be set to `0`, and the pname:dstStageMask
parameter should: be set to ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT.
====
// refBegin vkQueuePresentKHR - Queue an image for presentation
@ -649,6 +661,15 @@ ifdef::VK_KHR_display_swapchain[]
endif::VK_KHR_display_swapchain[]
****
Any writes to memory backing the images referenced by the
pname:pImageIndices and pname:pSwapchains members of pname:pPresentInfo,
that are available before flink:VkQueuePresentKHR is executed, are
automatically made visible to the read access performed by the presentation
engine.
This automatic visibility operation for an image happens-after the semaphore
signal operation, and happens-before the presentation engine accesses the
image.
include::../../validity/protos/vkQueuePresentKHR.txt[]
// refBegin VkPresentInfoKHR - Structure describing parameters of a queue presentation
@ -701,7 +722,11 @@ endif::VK_KHR_display_swapchain[]
fname:vkQueuePresentKHR, releases the acquisition of the images referenced
by pname:imageIndices.
A presented images must: not be used again before it has been reacquired
The queue family corresponding to the queue fname:vkQueuePresentKHR is
executed on must: have ownership of the presented images as defined in
<<resource-sharing,Resource Sharing>>.
fname:vkQueuePresentKHR does not alter the queue family ownership, but the
presented images must: not be used again before they have been reacquired
using fname:vkAcquireNextImageKHR.
The processing of the presentation happens in issue order with other queue

View File

@ -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[]

View File

@ -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

View File

@ -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[]

View File

@ -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

View File

@ -474,8 +474,9 @@ The assembled primitives execute the currently bound graphics pipeline.
.Valid Usage
****
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@ -609,8 +610,9 @@ The assembled primitives execute the currently bound graphics pipeline.
.Valid Usage
****
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@ -746,8 +748,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
sname:VkDrawIndirectCommand structures accessed by this command must: be
code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@ -919,8 +922,9 @@ located at pname:countBufferOffset and use this as the draw count.
sname:VkDrawIndirectCommand structures accessed by this command must: be
code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@ -1047,8 +1051,9 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
sname:VkDrawIndexedIndirectCommand structures accessed by this command
must: be code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
@ -1227,8 +1232,9 @@ located at pname:countBufferOffset and use this as the draw count.
sname:VkDrawIndexedIndirectCommand structures accessed by this command
must: be code:0
* The current render pass must: be <<renderpass-compatibility,compatible>>
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
structure specified when creating the sname:VkPipeline currently bound to
with the pname:renderPass member of the
sname:VkGraphicsPipelineCreateInfo structure specified when creating the
sname:VkPipeline currently bound to
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
* The subpass index of the current render pass must: be equal to the
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure

View File

@ -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]]

View File

@ -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.

View File

@ -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 <<renderpass-compatibility,Render Pass Compatibility>> 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[]

View File

@ -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 <<renderpass-compatibility,compatible>>
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 <<renderpass-compatibility,compatible>> with
the pname:renderPass member of the sname:VkFramebufferCreateInfo
structure specified when creating pname:framebuffer.
****

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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[]

View File

@ -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')

View File

@ -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 <usage> 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.

View File

@ -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}]
--------------------------------------
<param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
--------------------------------------
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.

View File

@ -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 <usage> 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.

File diff suppressed because it is too large Load Diff

View File

@ -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"