Change log for October 27, 2017 Vulkan 1.0.65 spec update:

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

Github Issues:

  * Replaced inaccurate "`pixel`" with "`texel`" or "`compressed texel
    block`" as appropriate in the <<sparsememory, Sparse Resources>> chapter
    (public issue 86).
  * Attempt to clarify security/integrity guarantees in the
    <<fundamentals-errors, Errors>> section (public issue 147).
  * Update the <<memory-device,Device Memory>> section with clarifications
    and markup fixes (public pull request 194).
  * Fix typo VkDeviceCreateInfo -> slink:VkDebugMarkerObjectNameInfoEXT in
    sample code for `VK_EXT_debug_marker` extension (public pull request
    227).
  * Clarified slink:VkFramebufferCreateInfo language regarding concurrent
    use of attachment resources during a render pass instance (public issue
    299).
  * Added overlap rules for destination regions in <<copies,copy commands>>.
    Also unified the sparse and non-sparse source-destination overlap rules,
    since the non-sparse rules were technically inaccurate in the face of
    aliasing in flink:vkBindMemory2 - the new rules are true regardless
    (public issue 317).
  * Clarified the <<features-features-samplerAnisotropy,
    pname:samplerAnisotropy feature>> to only affect the
    slink:VkSamplerCreateInfo::pname:anisotropyEnable value, and that
    pname:maxAnisotropy is ignored when pname:anisotropyEnable is VK_FALSE
    (public issue 503).
  * Clarify pointer valid usage statements to use "`valid pointer to valid
    _object_`" terminology and update the
    <<fundamentals-validusage-pointers,Valid Usage for Pointers>> section
    accordingly (public pull request 547).
  * Some operations that use integer coordinates can also accept a LOD to
    sample from. Add a description of that selection and the validity
    conditions in the new <<textures-integer-coordinate-operations, Integer
    Texel Coordinate Operations>> section (public issue 548).
  * Update stext:VkImageSubresource* valid usage statements (public pull
    request 550).
  * Added text tying ename:VK_OUT_OF_POOL_MEMORY error for
    flink:vkAllocateDescriptorSets to the number of descriptor types in the
    allocating pool. Removed redundant "`length`" text about number of
    descriptors returned (public issue 582).
  * Update slink:VkSwapchainCreateInfoKHR descriptions (public pull request
    585).
  * Update slink:VkPipelineViewportWScalingStateCreateInfoNV and related
    structures' valid usage statements (public pull request 587).
  * Change some dates to conform to ISO 8601 as specified in the style guide
    (public pull request 601).
  * Fix some math markup problems and be more consistent in use of asciidoc
    math markup (public pull request 602).

Internal Issues:

  * Clarified that attribute reads from incomplete vertex buffer elements
    are considered out of bounds accesses, in the
    slink:VkPhysicalDeviceFeatures and flink:vkCmdBindVertexBuffers.txt
    sections (internal issue 842).

Other Issues:

New Extensions:
This commit is contained in:
Jon Leech 2017-10-28 02:15:09 -07:00
parent 392384a31b
commit 0a1c49409f
25 changed files with 270 additions and 150 deletions

View File

@ -92,7 +92,7 @@ VERBOSE =
# $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
SPECREVISION = 1.0.64
SPECREVISION = 1.0.65
# Spell out ISO 8601 format as not all date commands support --rfc-3339
SPECDATE = $(shell echo `date -u "+%Y-%m-%d %TZ"`)

View File

@ -62,7 +62,7 @@ objects in error messages.
PFN_vkDebugMarkerSetObjectNameEXT pfnDebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)vkGetDeviceProcAddr(device, "vkDebugMarkerSetObjectNameEXT");
// Set a name on the image
const VkDeviceCreateInfo imageNameInfo =
const VkDebugMarkerObjectNameInfoEXT imageNameInfo =
{
VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, // sType
NULL, // pNext

View File

@ -23,7 +23,8 @@ allows application code to re-orient three-dimensional geometry with a view
the "Issues" section below.
along any of the *X*, *Y*, or *Z* axes.
If a perspective projection and depth buffering is required, [eq]#1/W#
buffering should be used, as described in the single-pass cubemap rendering example in
buffering should be used, as described in the single-pass cubemap rendering
example in
=== New Object Types

View File

@ -119,8 +119,8 @@ include::../../api/structs/VkSwapchainCreateInfoKHR.txt[]
application needs.
The implementation will either create the swapchain with at least that
many images, or it will fail to create the swapchain.
* pname:imageFormat is a elink:VkFormat value specifying the format
the swapchain image(s) will be created with.
* pname:imageFormat is a elink:VkFormat value specifying the format the
swapchain image(s) will be created with.
* pname:imageColorSpace is a slink:VkColorSpaceKHR value specifying the
way the swapchain interprets image data.
* pname:imageExtent is the size (in pixels) of the swapchain image(s).
@ -170,8 +170,8 @@ is minimized.
A swapchain's present mode determines how incoming present requests will
be processed and queued internally.
* pname:clipped indicates whether the Vulkan implementation is allowed to
discard rendering operations that affect regions of the surface that
are not visible.
discard rendering operations that affect regions of the surface that are
not visible.
** If set to ename:VK_TRUE, the presentable images associated with the
swapchain may: not own all of their pixels.
Pixels in the presentable images that correspond to regions of the
@ -180,9 +180,8 @@ is minimized.
back.
Pixel shaders may: not execute for these pixels, and thus any side
effects they would have had will not occur.
ename:VK_TRUE value does not guarantee any clipping
will occur, but allows more optimal presentation methods to be used on
some platforms.
ename:VK_TRUE value does not guarantee any clipping will occur, but
allows more optimal presentation methods to be used on some platforms.
** If set to ename:VK_FALSE, presentable images associated with the
swapchain will own all of the pixels they contain.
@ -201,16 +200,16 @@ effects that require them to run for all pixels in the presentable image.
also allows the application to still present any images that are already
acquired from it.
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
is not dlink:VK_NULL_HANDLE, pname:oldSwapchain is retired -- even if
creation of the new swapchain fails.
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that is
not dlink:VK_NULL_HANDLE, pname:oldSwapchain is retired -- even if creation
of the new swapchain fails.
The new swapchain is created in the non-retired state whether or not
pname:oldSwapchain is dlink:VK_NULL_HANDLE.
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that
is not dlink:VK_NULL_HANDLE, any images from pname:oldSwapchain that are
not acquired by the application may: be freed by the implementation,
which may: occur even if creation of the new swapchain fails.
Upon calling fname:vkCreateSwapchainKHR with a pname:oldSwapchain that is
not dlink:VK_NULL_HANDLE, any images from pname:oldSwapchain that are not
acquired by the application may: be freed by the implementation, which may:
occur even if creation of the new swapchain fails.
The application can: destroy pname:oldSwapchain to free all memory
associated with pname:oldSwapchain.

View File

@ -88,8 +88,9 @@ endif::VK_KHR_shared_presentable_image[]
elements of the pname:pRanges array must: each be less than the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
* For each slink:VkImageSubresourceRange element of pname:pRanges, if
the pname:levelCount member is not ename:VK_REMAINING_MIP_LEVELS, then
* [[VUID-vkCmdClearColorImage-pRanges-01692]]
For each slink:VkImageSubresourceRange element of pname:pRanges, if the
pname:levelCount member is not ename:VK_REMAINING_MIP_LEVELS, then
[eq]#pname:baseMipLevel {plus} pname:levelCount# must: be less than the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
@ -98,8 +99,9 @@ endif::VK_KHR_shared_presentable_image[]
elements of the pname:pRanges array must: each be less than the
pname:arrayLayers specified in slink:VkImageCreateInfo when pname:image
was created
* For each slink:VkImageSubresourceRange element of pname:pRanges, if
the pname:layerCount member is not ename:VK_REMAINING_ARRAY_LAYERS, then
* [[VUID-vkCmdClearColorImage-pRanges-01693]]
For each slink:VkImageSubresourceRange element of pname:pRanges, if the
pname:layerCount member is not ename:VK_REMAINING_ARRAY_LAYERS, then
[eq]#pname:baseArrayLayer {plus} pname:layerCount# must: be less than
the pname:arrayLayers specified in slink:VkImageCreateInfo when
pname:image was created
@ -170,8 +172,9 @@ endif::VK_KHR_maintenance1[]
elements of the pname:pRanges array must: each be less than the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
* For each slink:VkImageSubresourceRange element of pname:pRanges, if
the pname:levelCount member is not ename:VK_REMAINING_MIP_LEVELS, then
* [[VUID-vkCmdClearDepthStencilImage-pRanges-01694]]
For each slink:VkImageSubresourceRange element of pname:pRanges, if the
pname:levelCount member is not ename:VK_REMAINING_MIP_LEVELS, then
[eq]#pname:baseMipLevel {plus} pname:levelCount# must: be less than the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
@ -180,8 +183,9 @@ endif::VK_KHR_maintenance1[]
elements of the pname:pRanges array must: each be less than the
pname:arrayLayers specified in slink:VkImageCreateInfo when pname:image
was created
* For each slink:VkImageSubresourceRange element of pname:pRanges, if
the pname:layerCount member is not ename:VK_REMAINING_ARRAY_LAYERS, then
* [[VUID-vkCmdClearDepthStencilImage-pRanges-01695]]
For each slink:VkImageSubresourceRange element of pname:pRanges, if the
pname:layerCount member is not ename:VK_REMAINING_ARRAY_LAYERS, then
[eq]#pname:baseArrayLayer {plus} pname:layerCount# must: be less than
the pname:arrayLayers specified in slink:VkImageCreateInfo when
pname:image was created

View File

@ -20,15 +20,13 @@ fname:vkCmdResolveImage.
== Common Operation
Some rules for valid operation are common to all copy commands:
The following valid usage rules apply to all copy commands:
* Copy commands must: be recorded outside of a render pass instance.
* For non-sparse resources, the union of the source regions in a given
buffer or image must: not overlap the union of the destination regions
in the same buffer or image.
* For sparse resources, the set of bytes used by all the source regions
must: not intersect the set of bytes used by all the destination
regions.
* The set of all bytes bound to all the source regions must: not overlap
the set of all bytes bound to the destination regions.
* The set of all bytes bound to each destination region must: not overlap
the set of all bytes bound to another destination region.
* Copy regions must: be non-empty.
* Regions must: not extend outside the bounds of the buffer or image
level, except that regions of compressed images can: extend as far as
@ -436,17 +434,21 @@ ifdef::VK_KHR_sampler_ycbcr_conversion[]
endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-srcImage-00136]]
The sample count of pname:srcImage and pname:dstImage must: match
* The pname:srcSubresource.mipLevel member of each element of
* [[VUID-vkCmdCopyImage-srcSubresource-01696]]
The pname:srcSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:srcImage was created
* The pname:dstSubresource.mipLevel member of each element of
* [[VUID-vkCmdCopyImage-dstSubresource-01697]]
The pname:dstSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:dstImage was created
* The [eq]#pname:srcSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdCopyImage-srcSubresource-01698]]
The [eq]#pname:srcSubresource.baseArrayLayer {plus}
pname:srcSubresource.layerCount# of each element of pname:pRegions must:
be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:srcImage was created
* The [eq]#pname:dstSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdCopyImage-dstSubresource-01699]]
The [eq]#pname:dstSubresource.baseArrayLayer {plus}
pname:dstSubresource.layerCount# of each element of pname:pRegions must:
be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:dstImage was created
@ -718,7 +720,8 @@ include::../api/structs/VkImageSubresourceLayers.txt[]
ename:VK_IMAGE_ASPECT_STENCIL_BIT
* [[VUID-VkImageSubresourceLayers-aspectMask-00168]]
pname:aspectMask must: not contain ename:VK_IMAGE_ASPECT_METADATA_BIT
* pname:layerCount must: be greater than 0
* [[VUID-VkImageSubresourceLayers-layerCount-01700]]
pname:layerCount must: be greater than 0
****
include::../validity/structs/VkImageSubresourceLayers.txt[]
@ -826,10 +829,12 @@ ifdef::VK_KHR_shared_presentable_image[]
ename:VK_IMAGE_LAYOUT_GENERAL, or
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
endif::VK_KHR_shared_presentable_image[]
* The pname:imageSubresource.mipLevel member of each element of
* [[VUID-vkCmdCopyBufferToImage-imageSubresource-01701]]
The pname:imageSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:dstImage was created
* The [eq]#pname:imageSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdCopyBufferToImage-imageSubresource-01702]]
The [eq]#pname:imageSubresource.baseArrayLayer {plus}
pname:imageSubresource.layerCount# of each element of pname:pRegions
must: be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:dstImage was created
@ -934,10 +939,12 @@ endif::VK_KHR_shared_presentable_image[]
* [[VUID-vkCmdCopyImageToBuffer-dstBuffer-00192]]
If pname:dstBuffer is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
* The pname:imageSubresource.mipLevel member of each element of
* [[VUID-vkCmdCopyImageToBuffer-imageSubresource-01703]]
The pname:imageSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:srcImage was created
* The [eq]#pname:imageSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdCopyImageToBuffer-imageSubresource-01704]]
The [eq]#pname:imageSubresource.baseArrayLayer {plus}
pname:imageSubresource.layerCount# of each element of pname:pRegions
must: be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:srcImage was created
@ -1472,17 +1479,21 @@ ifdef::VK_IMG_filter_cubic[]
If pname:filter is ename:VK_FILTER_CUBIC_IMG, pname:srcImage must: have
a elink:VkImageType of ename:VK_IMAGE_TYPE_3D
endif::VK_IMG_filter_cubic[]
* The pname:srcSubresource.mipLevel member of each element of
* [[VUID-vkCmdBlitImage-srcSubresource-01705]]
The pname:srcSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:srcImage was created
* The pname:dstSubresource.mipLevel member of each element of
* [[VUID-vkCmdBlitImage-dstSubresource-01706]]
The pname:dstSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:dstImage was created
* The [eq]#pname:srcSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdBlitImage-srcSubresource-01707]]
The [eq]#pname:srcSubresource.baseArrayLayer {plus}
pname:srcSubresource.layerCount# of each element of pname:pRegions must:
be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:srcImage was created
* The [eq]#pname:dstSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdBlitImage-dstSubresource-01708]]
The [eq]#pname:dstSubresource.baseArrayLayer {plus}
pname:dstSubresource.layerCount# of each element of pname:pRegions must:
be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:dstImage was created
@ -1686,17 +1697,21 @@ endif::VK_KHR_shared_presentable_image[]
* [[VUID-vkCmdResolveImage-srcImage-01386]]
pname:srcImage and pname:dstImage must: have been created with the same
image format
* The pname:srcSubresource.mipLevel member of each element of
* [[VUID-vkCmdResolveImage-srcSubresource-01709]]
The pname:srcSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:srcImage was created
* The pname:dstSubresource.mipLevel member of each element of
* [[VUID-vkCmdResolveImage-dstSubresource-01710]]
The pname:dstSubresource.mipLevel member of each element of
pname:pRegions must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:dstImage was created
* The [eq]#pname:srcSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdResolveImage-srcSubresource-01711]]
The [eq]#pname:srcSubresource.baseArrayLayer {plus}
pname:srcSubresource.layerCount# of each element of pname:pRegions must:
be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:srcImage was created
* The [eq]#pname:dstSubresource.baseArrayLayer {plus}
* [[VUID-vkCmdResolveImage-dstSubresource-01712]]
The [eq]#pname:dstSubresource.baseArrayLayer {plus}
pname:dstSubresource.layerCount# of each element of pname:pRegions must:
be less than or equal to the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:dstImage was created

View File

@ -1535,8 +1535,6 @@ include::../api/protos/vkAllocateDescriptorSets.txt[]
allocation.
* pname:pDescriptorSets is a pointer to an array of sname:VkDescriptorSet
handles in which the resulting descriptor set objects are returned.
The array must: be at least the length specified by the
pname:descriptorSetCount member of pname:pAllocateInfo.
The allocated descriptor sets are returned in pname:pDescriptorSets.
@ -1555,6 +1553,16 @@ This means applications need not populate unused entries with dummy
descriptors.
ifdef::VK_KHR_maintenance1[]
If a call to fname:vkAllocateDescriptorSets would cause the total number of
descriptor sets allocated from the pool to exceed the value of
slink:VkDescriptorPoolCreateInfo::pname:maxSets used to create
pname:pAllocateInfo->pname:descriptorPool, then the allocation may: fail due
to lack of space in the descriptor pool.
Similarly, the allocation may: fail due to lack of space if the call to
fname:vkAllocateDescriptorSets would cause the number of any given
descriptor type to exceed the sum of all the pname:descriptorCount members
of each element of slink:VkDescriptorPoolCreateInfo::pname:pPoolSizes with a
pname:member equal to that type.
If the allocation fails due to no more space in the descriptor pool, and not
because of system or device memory exhaustion, then
ename:VK_ERROR_OUT_OF_POOL_MEMORY_KHR must: be returned.

View File

@ -210,13 +210,20 @@ used.
** Out-of-bounds atomics may: modify values within the memory range(s)
bound to the buffer, but must: not modify any other memory, and return
an undefined value.
** Vertex input attributes are considered out of bounds if the address of
the attribute plus the size of the attribute is greater than the size
of the bound buffer.
Further, if any vertex input attribute using a specific vertex input
binding is out of bounds, then all vertex input attributes using that
vertex input binding for that vertex shader invocation are considered
out of bounds.
** Vertex input attributes are considered out of bounds if the offset of
the attribute in the bound vertex buffer range plus the size of the
attribute is greater than either:
+
*** code:vertexBufferRangeSize, if [eq]#code:bindingStride == 0#; or
*** [eq]#(code:vertexBufferRangeSize - (code:vertexBufferRangeSize %
code:bindingStride))#
+
where code:vertexBufferRangeSize is the byte size of the memory range bound
to the vertex buffer binding and code:bindingStride is the byte stride of
the corresponding vertex input binding.
Further, if any vertex input attribute using a specific vertex input binding
is out of bounds, then all vertex input attributes using that vertex input
binding for that vertex shader invocation are considered out of bounds.
*** If a vertex input attribute is out of bounds, it will be assigned one
of the following values:
**** Values from anywhere within the memory range(s) bound to the buffer,
@ -372,8 +379,8 @@ used.
must: be 0.
* [[features-features-samplerAnisotropy]] pname:samplerAnisotropy
indicates whether anisotropic filtering is supported.
If this feature is not enabled, the pname:maxAnisotropy member of the
sname:VkSamplerCreateInfo structure must: be 1.0.
If this feature is not enabled, the pname:anisotropyEnable member of the
sname:VkSamplerCreateInfo structure must: be ename:VK_FALSE.
* [[features-features-textureCompressionETC2]]
pname:textureCompressionETC2 indicates whether all of the ETC2 and EAC
compressed texture formats are supported.

View File

@ -673,8 +673,24 @@ core layer to an application using the API incorrectly is undefined, and
may: include program termination.
However, implementations must: ensure that incorrect usage by an application
does not affect the integrity of the operating system, the Vulkan
implementation, or other Vulkan client applications in the system, and does
not allow one application to access data belonging to another application.
implementation, or other Vulkan client applications in the system.
In particular, any guarantees made by an operating system about whether
memory from one process can: be visible to another process or not must: not
be violated by a Vulkan implementation for *any memory allocation*.
Vulkan implementations are not required: to make additional security or
integrity guarantees beyond those provided by the OS unless explicitly
directed by the application's use of a particular feature or extension (e.g.
via <<features-features-robustBufferAccess, robust buffer access>>).
[NOTE]
.Note
====
For instance, if an operating system guarantees that data in all its memory
allocations are set to zero when newly allocated, the Vulkan implementation
must: make the same guarantees for any allocations it controls (e.g.
slink:VkDeviceMemory).
====
Applications can: request stronger robustness guarantees by enabling the
pname:robustBufferAccess feature as described in <<features>>.

View File

@ -451,11 +451,11 @@ include::../validity/protos/vkCmdBindVertexBuffers.txt[]
The address of each attribute for each code:vertexIndex and
code:instanceIndex is calculated as follows:
* Let attribDesc be the member of
* Let code:attribDesc be the member of
sname:VkPipelineVertexInputStateCreateInfo::pname:pVertexAttributeDescriptions
with sname:VkVertexInputAttributeDescription::pname:location equal to
the vertex input attribute number.
* Let bindingDesc be the member of
* Let code:bindingDesc be the member of
sname:VkPipelineVertexInputStateCreateInfo::pname:pVertexBindingDescriptions
with sname:VkVertexInputAttributeDescription::pname:binding equal to
attribDesc.binding.

View File

@ -1174,8 +1174,8 @@ The variable decorated with code:FragStencilRefEXT must: be declared as a
scalar integer value.
Only the least significant *s* bits of the integer value of the variable
decorated with code:FragStencilRefEXT are considered for stencil testing,
where *s* is the number of bits in the stencil framebuffer attachment,
and higher order bits are discarded.
where *s* is the number of bits in the stencil framebuffer attachment, and
higher order bits are discarded.
endif::VK_EXT_shader_stencil_export[]

View File

@ -446,9 +446,9 @@ endif::VK_EXT_validation_cache[]
[[memory-device]]
== Device Memory
_Device memory_ is memory that is visible to the device -- for example
the contents of the image or buffer objects, which can: be natively used by
the device.
_Device memory_ is memory that is visible to the device -- for example the
contents of the image or buffer objects, which can: be natively used by the
device.
Memory properties of a physical device describe the memory heaps and memory
types available.
@ -569,14 +569,12 @@ There is no ordering requirement between *X* and *Y* elements for the case
their pname:propertyFlags members are not in a subset relation.
That potentially allows more than one possible way to order the same set of
memory types.
Notice that the
<<memory-device-bitmask-list,list of all allowed memory property flag combinations>>
is written in the required order.
But if instead
ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT was before
Notice that the <<memory-device-bitmask-list,list of all allowed memory
property flag combinations>> is written in the required order.
But if instead ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT was before
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
the list would still be in the required order.
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, the list would still be in the
required order.
====
This ordering requirement enables applications to use a simple search loop
@ -805,12 +803,14 @@ the error ename:VK_ERROR_OUT_OF_DEVICE_MEMORY must: be returned.
.Valid Usage
****
* pname:pAllocateInfo\->pname:allocationSize must: be less than or equal
* [[VUID-vkAllocateMemory-pAllocateInfo-01713]]
pname:pAllocateInfo\->pname:allocationSize must: be less than or equal
to
slink:VkPhysicalDeviceMemoryProperties::pname:memoryHeaps[pname:pAllocateInfo\->pname:memoryTypeIndex].pname:size
as returned by flink:vkGetPhysicalDeviceMemoryProperties for the
slink:VkPhysicalDevice that pname:device was created from.
* pname:pAllocateInfo\->pname:memoryTypeIndex must: be less than
* [[VUID-vkAllocateMemory-pAllocateInfo-01714]]
pname:pAllocateInfo\->pname:memoryTypeIndex must: be less than
slink:VkPhysicalDeviceMemoryProperties::pname:memoryTypeCount as
returned by flink:vkGetPhysicalDeviceMemoryProperties for the
slink:VkPhysicalDevice that pname:device was created from.
@ -1631,8 +1631,8 @@ include::../api/protos/vkFreeMemory.txt[]
<<memory-allocation, Memory Allocation>> chapter.
Before freeing a memory object, an application must: ensure the memory
object is no longer in use by the device--for example by command buffers
in the _pending state_.
object is no longer in use by the device--for example by command buffers in
the _pending state_.
The memory can: remain bound to images or buffers at the time the memory
object is freed, but any further use of them (on host or device) for
anything other than destroying those objects will result in undefined

View File

@ -772,12 +772,13 @@ endif::VK_KHR_maintenance2[]
that is used by the pipeline must: be less than or equal to
sname:VkPhysicalDeviceLimits::pname:maxPerStageResources
ifdef::VK_NV_clip_space_w_scaling[]
* If no element of the pname:pDynamicStates member of pname:pDynamicState
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715]]
If no element of the pname:pDynamicStates member of pname:pDynamicState
is ename:VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, and the
pname:viewportWScalingEnable member of a
slink:VkPipelineViewportWScalingStateCreateInfoNV structure, chained to
the pname:pNext chain of pname:pViewportState, is ename:VK_TRUE,
the pname:pViewportWScalings member of the
the pname:pNext chain of pname:pViewportState, is ename:VK_TRUE, the
pname:pViewportWScalings member of the
slink:VkPipelineViewportWScalingStateCreateInfoNV must: be a pointer to
an array of
slink:VkPipelineViewportWScalingStateCreateInfoNV::pname:viewportCount

View File

@ -1458,16 +1458,20 @@ ifdef::VK_KHX_multiview[]
used.
endif::VK_KHX_multiview[]
Image subresources used as attachments must: not be accessed in any other
way for the duration of a render pass instance.
Applications must: ensure that all accesses to memory that backs image
subresources used as attachments in a given renderpass instance either
happen-before the <<renderpass-load-store-ops, load operations>> for those
attachments, or happen-after the <<renderpass-load-store-ops, store
operations>> for those attachments.
ifdef::VK_KHR_maintenance2[]
For depth/stencil attachments, they can: be used as both attachments and
non-attachments as long as the layout of the image subresource is
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR and the
non-attachment usage only accesses the depth aspect, or the layout of the
image subresource is
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR and the
non-attachment usage only accesses the stencil aspect.
For depth/stencil attachments, each aspect can: be used separately as
attachments and non-attachments as long as the non-attachment accesses are
also via an image subresource in either the
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR layout
or the ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
layout, and the attachment resource uses whichever of those two layouts the
image accesses do not.
Use of non-attachment aspects in this case is only well defined if the
attachment is used in the subpass where the non-attachment access is being
made, or the layout of the image subresource is constant throughout the

View File

@ -1343,10 +1343,12 @@ image.
* [[VUID-vkGetImageSubresourceLayout-aspectMask-00997]]
The pname:aspectMask member of pname:pSubresource must: only have a
single bit set
* The pname:mipLevel member of pname:pSubresource must: be less than the
* [[VUID-vkGetImageSubresourceLayout-mipLevel-01716]]
The pname:mipLevel member of pname:pSubresource must: be less than the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
* The pname:arrayLayer member of pname:pSubresource must: be less than the
* [[VUID-vkGetImageSubresourceLayout-arrayLayer-01717]]
The pname:arrayLayer member of pname:pSubresource must: be less than the
pname:arrayLayers specified in slink:VkImageCreateInfo when pname:image
was created
ifdef::VK_KHR_sampler_ycbcr_conversion[]
@ -2142,18 +2144,19 @@ endif::VK_KHR_maintenance1[]
pname:subresourceRange.baseMipLevel must: be less than the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
* If pname:subresourceRange.levelCount is not
ename:VK_REMAINING_MIP_LEVELS,
[eq]#pname:subresourceRange.baseMipLevel {plus}
pname:subresourceRange.levelCount# must: be less than or equal to the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
* [[VUID-VkImageViewCreateInfo-subresourceRange-01718]]
If pname:subresourceRange.levelCount is not
ename:VK_REMAINING_MIP_LEVELS, [eq]#pname:subresourceRange.baseMipLevel
{plus} pname:subresourceRange.levelCount# must: be less than or equal to
the pname:mipLevels specified in slink:VkImageCreateInfo when
pname:image was created
ifndef::VK_KHR_maintenance1[]
* [[VUID-VkImageViewCreateInfo-subresourceRange-01480]]
pname:subresourceRange.baseArrayLayer must: be less than the
pname:arrayLayers specified in slink:VkImageCreateInfo when pname:image
was created
* If pname:subresourceRange.layerCount is not
* [[VUID-VkImageViewCreateInfo-subresourceRange-01719]]
If pname:subresourceRange.layerCount is not
ename:VK_REMAINING_ARRAY_LAYERS,
[eq]#pname:subresourceRange.baseArrayLayer {plus}
pname:subresourceRange.layerCount# must: be less than or equal to the
@ -2417,10 +2420,12 @@ endif::VK_KHR_sampler_ycbcr_conversion[]
.Valid Usage
****
* If pname:levelCount is not ename:VK_REMAINING_MIP_LEVELS, it must:
be greater than `0`
* If pname:layerCount is not ename:VK_REMAINING_ARRAY_LAYERS, it must:
be greater than `0`
* [[VUID-VkImageSubresourceRange-levelCount-01720]]
If pname:levelCount is not ename:VK_REMAINING_MIP_LEVELS, it must: be
greater than `0`
* [[VUID-VkImageSubresourceRange-layerCount-01721]]
If pname:layerCount is not ename:VK_REMAINING_ARRAY_LAYERS, it must: be
greater than `0`
* [[VUID-VkImageSubresourceRange-aspectMask-01670]]
If pname:aspectMask includes ename:VK_IMAGE_ASPECT_COLOR_BIT, then it
must: not include any of ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,

View File

@ -68,7 +68,10 @@ include::../api/structs/VkSamplerCreateInfo.txt[]
enable anisotropic filtering, as described in the
<<textures-texel-anisotropic-filtering, Texel Anisotropic Filtering>>
section, or ename:VK_FALSE otherwise.
* pname:maxAnisotropy is the anisotropy value clamp.
* pname:maxAnisotropy is the anisotropy value clamp used by the sampler
when pname:anisotropyEnable is ename:VK_TRUE.
If pname:anisotropyEnable is ename:VK_FALSE, pname:maxAnisotropy is
ignored.
* pname:compareEnable is ename:VK_TRUE to enable comparison against a
reference value during lookups, or ename:VK_FALSE otherwise.
** Note: Some implementations will default to shader state if this member

View File

@ -131,7 +131,7 @@ ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT bits can: be thought of as a
linear region of address space.
In the sname:VkImage case if ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT is
not used, this linear region is entirely opaque, meaning that there is no
application-visible mapping between pixel location and memory offset.
application-visible mapping between texel location and memory offset.
Unless ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or
ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT are also used, the entire
@ -180,7 +180,7 @@ Applications can: use these types of images to control LOD based on total
memory consumption.
If memory pressure becomes an issue the application can: unbind and disable
specific mipmap levels of images without having to recreate resources or
modify pixel data of unaffected levels.
modify texel data of unaffected levels.
The application can: also use this functionality to access subregions of the
image in a "`megatexture`" fashion.
@ -282,7 +282,7 @@ image::images/sparseimage.svg[align="center", title="Sparse Image"]
In the absence of ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT and
ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, each array layer contains a
mip tail region containing pixel data for all mip levels smaller than the
mip tail region containing texel data for all mip levels smaller than the
sparse image block in any dimension.
Mip levels that are as large or larger than a sparse image block in all
@ -305,7 +305,8 @@ image::images/sparseimage_alignedmipsize.svg[align="center", title="Sparse Image
The mip tail regions are presented here in 2D arrays simply for figure size
reasons.
Each mip tail is logically a single array of sparse blocks with an
implementation-dependent mapping of pixels to sparse blocks.
implementation-dependent mapping of texels or compressed texel blocks to
sparse blocks.
====
When ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT is present the first
@ -324,7 +325,8 @@ image::images/sparseimage_alignedmipsize_singlemiptail.svg[align="center", title
The mip tail region is presented here in a 2D array simply for figure size
reasons.
It is logically a single array of sparse blocks with an
implementation-dependent mapping of pixels to sparse blocks.
implementation-dependent mapping of texels or compressed texel blocks to
sparse blocks.
====
When both ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT and
@ -337,13 +339,14 @@ from each of these flags are in effect.
Standard sparse image block shapes define a standard set of dimensions for
sparse image blocks that depend on the format of the image.
Layout of pixels within a sparse image block is implementation dependent.
Layout of texels or compressed texel blocks within a sparse image block is
implementation dependent.
All currently defined standard sparse image block shapes are 64 KB in size.
For block-compressed formats (e.g. ename:VK_FORMAT_BC5_UNORM_BLOCK), the
pixel size is the size of the compressed texel block (128-bit for etext:BC5)
thus the dimensions of the standard sparse image block shapes apply in terms
of compressed texel blocks.
texel size is the size of the compressed texel block (e.g. 128-bit for
etext:BC5) thus the dimensions of the standard sparse image block shapes
apply in terms of compressed texel blocks.
[NOTE]
.Note
@ -359,7 +362,7 @@ dimensions by the compressed texel block dimensions.
.Standard Sparse Image Block Shapes (Single Sample)
[options="header"]
|====
| PIXEL SIZE (bits) | Block Shape (2D) | Block Shape (3D)
| TEXEL SIZE (bits) | Block Shape (2D) | Block Shape (3D)
| *8-Bit* | 256 {times} 256 {times} 1 | 64 {times} 32 {times} 32
| *16-Bit* | 256 {times} 128 {times} 1 | 32 {times} 32 {times} 32
| *32-Bit* | 128 {times} 128 {times} 1 | 32 {times} 32 {times} 16
@ -371,7 +374,7 @@ dimensions by the compressed texel block dimensions.
.Standard Sparse Image Block Shapes (MSAA)
[options="header"]
|====
| PIXEL SIZE (bits)| Block Shape (2X) | Block Shape (4X) | Block Shape (8X) | Block Shape (16X)
| TEXEL SIZE (bits)| Block Shape (2X) | Block Shape (4X) | Block Shape (8X) | Block Shape (16X)
| *8-Bit* | 128 {times} 256 {times} 1 | 128 {times} 128 {times} 1 | 64 {times} 128 {times} 1 | 64 {times} 64 {times} 1
| *16-Bit* | 128 {times} 128 {times} 1 | 128 {times} 64 {times} 1 | 64 {times} 64 {times} 1 | 64 {times} 32 {times} 1
| *32-Bit* | 64 {times} 128 {times} 1 | 64 {times} 64 {times} 1 | 32 {times} 64 {times} 1 | 32 {times} 32 {times} 1
@ -436,14 +439,15 @@ image::images/sparseimage_multiaspect.svg[align="center",title="Multiple Aspect
The mip tail regions are presented here in 2D arrays simply for figure size
reasons.
Each mip tail is logically a single array of sparse blocks with an
implementation-dependent mapping of pixels to sparse blocks.
implementation-dependent mapping of texels or compressed texel blocks to
sparse blocks.
====
In the figure above the depth, stencil, and metadata aspects all have unique
sparse properties.
The per-pixel stencil data is [eq]#{onequarter}# the size of the depth data,
The per-texel stencil data is [eq]#{onequarter}# the size of the depth data,
hence the stencil sparse blocks include [eq]#4 {times}# the number of
pixels.
texels.
The sparse block size in bytes for all of the aspects is identical and
defined by sname:VkMemoryRequirements::pname:alignment.
@ -610,7 +614,7 @@ If the application always uses sname:VkSparseImageMemoryBindInfo to bind
memory for the non-tail mip levels, any holes that are present in the
resource size may: never be bound.
Since sname:VkSparseImageMemoryBindInfo uses pixel locations to determine
Since sname:VkSparseImageMemoryBindInfo uses texel locations to determine
which device virtual addresses to bind, it is impossible to bind device
virtual address holes with this operation.
====
@ -808,7 +812,7 @@ include::../api/enums/VkSparseImageFormatFlagBits.txt[]
* ename:VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT specifies that
the image uses non-standard sparse image block dimensions, and the
pname:imageGranularity values do not match the standard sparse image
block dimensions for the given pixel format.
block dimensions for the given format.
--
@ -829,7 +833,7 @@ include::../api/protos/vkGetPhysicalDeviceSparseImageFormatProperties.txt[]
sparse image capabilities.
* pname:format is the image format.
* pname:type is the dimensionality of image.
* pname:samples is the number of samples per pixel as defined in
* pname:samples is the number of samples per texel as defined in
elink:VkSampleCountFlagBits.
* pname:usage is a bitmask describing the intended usage of the image.
* pname:tiling is the tiling arrangement of the data elements in memory.
@ -919,7 +923,7 @@ include::../api/structs/VkPhysicalDeviceSparseImageFormatInfo2KHR.txt[]
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:format is the image format.
* pname:type is the dimensionality of image.
* pname:samples is the number of samples per pixel as defined in
* pname:samples is the number of samples per texel as defined in
elink:VkSampleCountFlagBits.
* pname:usage is a bitmask describing the intended usage of the image.
* pname:tiling is the tiling arrangement of the data elements in memory.
@ -1038,9 +1042,9 @@ include::../api/structs/VkSparseImageMemoryRequirements.txt[]
ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT
would be present.
* pname:formatProperties.imageGranularity describes the dimensions of a
single bindable sparse image block in pixel units.
single bindable sparse image block in texel units.
For aspect ename:VK_IMAGE_ASPECT_METADATA_BIT, all dimensions will be
zero pixels.
zero.
All metadata is located in the mip tail region.
* pname:formatProperties.flags is a bitmask of
elink:VkSparseImageFormatFlagBits:
@ -1054,7 +1058,7 @@ include::../api/structs/VkSparseImageMemoryRequirements.txt[]
image uses non-standard sparse image block dimensions.
The pname:formatProperties.imageGranularity values do not match the
standard sparse image block dimension corresponding to the image's
pixel format.
format.
* pname:imageMipTailFirstLod is the first mip level at which image
subresources are included in the mip tail region.
* pname:imageMipTailSize is the memory size (in bytes) of the mip tail
@ -1392,10 +1396,12 @@ include::../api/structs/VkSparseImageMemoryBindInfo.txt[]
.Valid Usage
****
* The pname:subresource.mipLevel member of each element of pname:pBinds
* [[VUID-VkSparseImageMemoryBindInfo-subresource-01722]]
The pname:subresource.mipLevel member of each element of pname:pBinds
must: be less than the pname:mipLevels specified in
slink:VkImageCreateInfo when pname:image was created
* The pname:subresource.arrayLayer member of each element of pname:pBinds
* [[VUID-VkSparseImageMemoryBindInfo-subresource-01723]]
The pname:subresource.arrayLayer member of each element of pname:pBinds
must: be less than the pname:arrayLayers specified in
slink:VkImageCreateInfo when pname:image was created
****

View File

@ -3788,17 +3788,18 @@ endif::VK_KHR_external_memory[]
pname:subresourceRange.baseMipLevel must: be less than the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
* If pname:subresourceRange.levelCount is not
ename:VK_REMAINING_MIP_LEVELS,
[eq]#pname:subresourceRange.baseMipLevel {plus}
pname:subresourceRange.levelCount# must: be less than or equal to the
pname:mipLevels specified in slink:VkImageCreateInfo when pname:image
was created
* [[VUID-VkImageMemoryBarrier-subresourceRange-01724]]
If pname:subresourceRange.levelCount is not
ename:VK_REMAINING_MIP_LEVELS, [eq]#pname:subresourceRange.baseMipLevel
{plus} pname:subresourceRange.levelCount# must: be less than or equal to
the pname:mipLevels specified in slink:VkImageCreateInfo when
pname:image was created
* [[VUID-VkImageMemoryBarrier-subresourceRange-01488]]
pname:subresourceRange.baseArrayLayer must: be less than the
pname:arrayLayers specified in slink:VkImageCreateInfo when pname:image
was created
* If pname:subresourceRange.layerCount is not
* [[VUID-VkImageMemoryBarrier-subresourceRange-01725]]
If pname:subresourceRange.layerCount is not
ename:VK_REMAINING_ARRAY_LAYERS,
[eq]#pname:subresourceRange.baseArrayLayer {plus}
pname:subresourceRange.layerCount# must: be less than or equal to the

View File

@ -1922,6 +1922,41 @@ offsets [eq]#({DeltaUpper}~i~, {DeltaUpper}~j~, {DeltaUpper}~k~)# are added
to [eq]#(i,j,k)# components of the integer texel coordinates.
[[textures-integer-coordinate-operations]]
== Integer Texel Coordinate Operations
ifdef::VK_AMD_shader_image_load_store_lod[]
Integer texel coordinate operations may: supply a LOD which texels are to be
read from or written to using the optional SPIR-V operand code:Lod.
endif::VK_AMD_shader_image_load_store_lod[]
ifndef::VK_AMD_shader_image_load_store_lod[]
The code:OpImageFetch and code:OpImageFetchSparse SPIR-V instructions may:
supply a LOD from which texels are to be fetched using the optional SPIR-V
operand code:Lod.
Other integer-coordinate operations must: not.
endif::VK_AMD_shader_image_load_store_lod[]
If the code:Lod is provided then it must: be an integer.
The image level selected is:
[latexmath]
++++++++++++++++++++++++
\begin{aligned}
d & = level_{base} +
\begin{cases}
Lod & \text{(from optional SPIR-V operand)} \\
0 & \text{otherwise}
\end{cases} \\
\end{aligned}
++++++++++++++++++++++++
If [eq]#d# does not lie in the range [eq]#[pname:baseMipLevel,
pname:baseMipLevel {plus} pname:levelCount)# then any values fetched are
ifndef::VK_AMD_shader_image_load_store_lod[undefined.]
ifdef::VK_AMD_shader_image_load_store_lod[]
undefined, and any writes are discarded.
endif::VK_AMD_shader_image_load_store_lod[]
[[textures-sample-operations]]
== Image Sample Operations

View File

@ -495,7 +495,8 @@ include::../api/structs/VkPipelineViewportStateCreateInfo.txt[]
* [[VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220]]
pname:scissorCount and pname:viewportCount must: be identical
ifdef::VK_NV_clip_space_w_scaling[]
* If the pname:viewportWScalingEnable member of a
* [[VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726]]
If the pname:viewportWScalingEnable member of a
slink:VkPipelineViewportWScalingStateCreateInfoNV structure chained to
the pname:pNext chain is ename:VK_TRUE, the pname:viewportCount member
of the slink:VkPipelineViewportWScalingStateCreateInfoNV structure must:

View File

@ -1,2 +1,2 @@
# The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 1690
startVUID = 1727

View File

@ -715,7 +715,8 @@ endif::editing-notes[]
[source,asciidoc,subs=attributes+]
----
* pname:flags is a bitmask indicating usage behavior for the pool and
command buffers allocated from it. Bits which can: be set include:
command buffers allocated from it.
Bits which can: be set include:
+
{blank}--
// refBegin VkCommandPoolCreateFlagBits - Bitmask specifying usage behavior for a command pool
@ -790,6 +791,11 @@ statements are not self-contained.
This would make it impossible to extract semantically meaningful
descriptions for each assigned <<appendix-vuid, Valid Usage ID Tag>>.
Be clear on the distinction between a "`valid pointer`" and a "`pointer to a
valid object`" when writing Valid Usage statements.
See the "`Valid Usage`" section of the Vulkan Specification, and
particularly the "`Valid Usage for Pointers`" section.
Explicit Valid Usage statements must be assigned Valid Usage ID tags before
publication.
This process is described in the <<appendix-vuid, Valid Usage ID Tags>>
@ -874,17 +880,20 @@ Attributes which can be set on the block are:
(command, structure, enumerant, handle, etc.) name. This attribute is
required.
* *desc* - short description / summary of the page, used in the page
title. This attribute is required.
title.
This attribute is required.
* *type* - type of the interface, which must match the directory name
following `api/` in the interface `include::` line within the block, and
must be one of `basetypes`, `defines`, `enums`, `flags`, `funcpointers`,
`handles`, `protos`, or `structs`. This attribute is required.
`handles`, `protos`, or `structs`.
This attribute is required.
* *xrefs* - list of whitespace-separated names of other reference pages
which should be added to the `See Also` section of this page. Most
cross-references are automatically generated based on the immediate
which should be added to the `See Also` section of this page.
Most cross-references are automatically generated based on the immediate
dependency information in `vk.xml`, but in some cases, such as referring
between `*FlagBits` and `*Flags` types, this additional tagging is
useful. This attribute is optional.
useful.
This attribute is optional.
Attributes of the open block must be written in this format, using single
quotes as delimiters (even though asciidoc markup also allows double
@ -896,8 +905,8 @@ After the open block is started, the following markup should be provided:
* A single paragraph of text describing the definition of the interface.
This paragraph is optional, but strongly recommended.
* The `include` line for the interface, which must be consistent with the
page name and type in the open block attributes. This paragraph is
required.
page name and type in the open block attributes.
This paragraph is required.
* A bullet list describing function parameters, structure members,
enumerants in an enumerated type, etc.
This list should contain no empty lines, as the extraction script
@ -917,8 +926,9 @@ After the open block is started, the following markup should be provided:
// refBody
----
+
* An explicit Valid Usage block. This block is required if the interface
has such Valid Usage constraints.
* An explicit Valid Usage block.
This block is required if the interface has such Valid Usage
constraints.
* The `include` line for the implicit valid usage block.
This line is required for for commands and structures, but not for
interfaces such as enumerated types, which do not have implicit valid

View File

@ -157,6 +157,10 @@ include::style/vuid.txt[]
= Revision History
* 2017-10-27 - Add language about proper use of "`valid pointer`" and
"`pointer to valid object`" for valid usage statements, in the
<<sample-command, Sample Command Description>> section (related to public
pull request 547).
* 2017-10-15 - Describe how to write <<writing-latexmath-in-table-cells,
LaTeX Math in Table Cells>> (internal issue 908).
* 2017-10-15 - Add more details of <<extensions-naming-author-IDs, `KHX`

View File

@ -107,7 +107,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 64</type>
#define <name>VK_HEADER_VERSION</name> 65</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>

View File

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