Change log for August 13, 2018 Vulkan 1.1.83 spec update:

* Update release number to 83.

Public Issues:

  * Use [%inline] directive for all SVGs to reduce file size (public pull
    request 734).
  * Convert XML `value` aliases into \<alias> tags (public pull request
    747).
  * Fix metadoc script showing non-selected extensions (public pull request
    748).
  * Reapply public pull request 742 to make
    ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the
    graphices pipeline (public pull request 749).
  * Fix numerous typos related to accidental duplication of words (public
    pull request 760).
  * Fix `vk.xml` contact typos (public pull request 761).

Internal Issues:

  * Add images to the <<Standard sample locations>> table (internal issue
    1115).
  * Add a definition of "`Inherited from`" precision in the
    <<spirvenv-precision-operation, Precision and Operation of SPIR-V
    Instructions>> section (internal issue 1314).
  * Clarify that both built-in and user-defined variables count against the
    location limits for shader interfaces in the
    <<interfaces-iointerfaces-locations, Location Assignment>> section
    (internal issue 1316).
  * Merge "`required`" capabilities into the <<spirvenv-capabilities-table,
    list of optional: SPIR-V capabilities>> (internal issue 1320).
  * Relax the layout matching rules of descriptors referring to only a
    single aspect of a depth/stencil image, by reference to the new
    <<resources-image-layouts-matching-rule, Image Layout Matching Rules>>
    section (internal issue 1346).
  * Revert extension metadoc generator warning about name mismatches to a
    diagnostic, due to annoying warnings in build output for conscious
    choices we've made (internal issue 1351).

Other Issues:

  * Reserve bits for pending vendor extensions.
  * Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and
    code:FragDepth in the <<interfaces-builtin-variables, Built-In
    Variables>> section.
  * Add missing ChangeLog entries for the previous three spec updates.
This commit is contained in:
Jon Leech 2018-08-13 06:23:03 -07:00
parent dd7fe79336
commit dd9919749a
44 changed files with 730 additions and 309 deletions

View File

@ -8,6 +8,159 @@ public pull requests that have been accepted.
-----------------------------------------------------
Change log for August 13, 2018 Vulkan 1.1.83 spec update:
* Update release number to 83.
Public Issues:
* Use [%inline] directive for all SVGs to reduce file size (public pull
request 734).
* Convert XML `value` aliases into \<alias> tags (public pull request
747).
* Fix metadoc script showing non-selected extensions (public pull request
748).
* Reapply public pull request 742 to make
ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the
graphices pipeline (public pull request 749).
* Fix numerous typos related to accidental duplication of words (public
pull request 760).
* Fix `vk.xml` contact typos (public pull request 761).
Internal Issues:
* Add images to the <<Standard sample locations>> table (internal issue
1115).
* Add a definition of "`Inherited from`" precision in the
<<spirvenv-precision-operation, Precision and Operation of SPIR-V
Instructions>> section (internal issue 1314).
* Clarify that both built-in and user-defined variables count against the
location limits for shader interfaces in the
<<interfaces-iointerfaces-locations, Location Assignment>> section
(internal issue 1316).
* Merge "`required`" capabilities into the <<spirvenv-capabilities-table,
list of optional: SPIR-V capabilities>> (internal issue 1320).
* Relax the layout matching rules of descriptors referring to only a
single aspect of a depth/stencil image, by reference to the new
<<resources-image-layouts-matching-rule, Image Layout Matching Rules>>
section (internal issue 1346).
* Revert extension metadoc generator warning about name mismatches to a
diagnostic, due to annoying warnings in build output for conscious
choices we've made (internal issue 1351).
Other Issues:
* Reserve bits for pending vendor extensions.
* Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and
code:FragDepth in the <<interfaces-builtin-variables, Built-In
Variables>> section.
* Add missing ChangeLog entries for the previous three spec updates.
-----------------------------------------------------
Change log for July 30, 2018 Vulkan 1.1.82 spec update:
* Update release number to 82.
Public Issues:
* Add flink:vkDestroyPipelineLayout valid usage statement that the layout
must not have been used with command buffers still in the recording
state (public issue 730).
* Correct \<unused> tag for elink:VkResult in `vk.xml` (public merge
request 746).
Internal Issues:
* Add a valid usage statement to flink:vkQueueSubmit, and similar language
to the definitions of <<synchronization-queue-transfers-acquire, acquire
operations>> requiring that an acquire operation follow a previous
release of the same subresource (internal issue 1290).
* Add <<resources-image-format-features,Image Format Features>> and
<<resources-image-view-format-features,Image View Format Features>>
sections that precisely define the slink:VkFormatFeatures supported by
images and image views, and rewrite valid usage statements to reference
these sections instead of duplicating language (internal issue 1310).
* Reword and consolidate synchronization valid usage statements for
flink:vkCmdPipelineBarrier such that they correctly account for mutiple
possible self-dependencies (internal issue 1322).
* Change order of <<Standard sample locations>> for 2xMSAA (internal issue
1347).
* Add definitions of "`<<Correctly Rounded>>`" and "`<<ULP>>`" in the
SPIR-V environment appendix, and "`Units in the Last Place (ULP)`" in
the glossary.
New Extensions:
* `VK_NV_device_diagnostic_checkpoints`
-----------------------------------------------------
Change log for July 23, 2018 Vulkan 1.1.81 spec update:
* Update release number to 81.
Public Issues:
* Fix missing "`valid`" phrasing in some obscure cases (public pull
request 605).
* Replace improper use of cannot: referring to the implementation in the
description of the
<<features-limits-maxUpdateAfterBindDescriptorsInAllPools,
pname:maxUpdateAfterBindDescriptorsInAllPools>> limit (public pull
request 738).
* Reorder description of bits in elink:VkPipelineStageFlagBits and the
<<synchronization-pipeline-stages-supported, Supported pipeline stage
flags>> table to match their definition order (public pull request 740).
* Add description of ename:VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
to elink:VkBufferUsageFlagBits (public pull request 741).
* Fix value usage statement for slink:VkSubpassDependency stage mask
parameters (public pull request 742).
* Fix visible markup in registry schema document (public pull request
#745).
Internal Issues:
* Make the <<geometry-invocations, geometry shader invocation
description>> and <<shaders-geometry-execution, Geometry Shader
Execution>> descriptions consistent with other pipeline stages (internal
issue 1325).
* Mark the `VK_NV_glsl_shader` extension as deprecated.
* Adjust the per-instance vertex attribute offset formula specified by
`VK_EXT_vertex_attribute_divisor` for
slink:VkVertexInputBindingDivisorDescriptionEXT so that the interaction
between pname:firstInstance and pname:divisor matches the OpenGL
convention (internal issue 1333).
-----------------------------------------------------
Change log for July 7, 2018 Vulkan 1.1.80 spec update:
* Update release number to 80.
Public Issues:
* Remove unused "`API Order`" term from glossary (public issue 657).
* Dynamically generate the extension appendix includes based on
information in `vk.xml`, including new metadata tags describing
deprecated, obsoleted, and promoted extensions (public pull request
690).
Internal Issues:
* Add valid usage statements to flink:vkCmdBindDescriptorSets to keep
offsets + range less than or equal to the buffer size (internal issue
1174).
New Extensions:
* `VK_EXT_conditional_render`
* `VK_KHR_create_renderpass2` (public issue 736)
* `VK_KHR_8bit_storage` (public issue 737)
-----------------------------------------------------
Change log for July 1, 2018 Vulkan 1.1.79 spec update:
* Update release number to 79.

View File

@ -107,7 +107,7 @@ VERBOSE =
# EXTRAATTRIBS sets additional attributes, if passed to make
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 82
PATCHVERSION = 83
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION)
else

View File

@ -90,8 +90,8 @@ Potential failures include:
effectively code:SetPixelFormat to a different format than the format
chosen by an OpenGL application.
* Creating then destroying a slink:VkSwapchainKHR on a window object on one
slink:VkPhysicalDevice can prevent flink:vkCreateSwapchainKHR from
* Creating then destroying a slink:VkSwapchainKHR on a window object on
one slink:VkPhysicalDevice can prevent flink:vkCreateSwapchainKHR from
succeeding on the same window object, but on a different
slink:VkPhysicalDevice that is associated with a different Vulkan ICD.
@ -102,7 +102,8 @@ Technical details include:
* Creating a DXGI swapchain over a window object can alter the object for
the remainder of its lifetime.
The alteration persists even after the DXGI swapchain has been destroyed.
The alteration persists even after the DXGI swapchain has been
destroyed.
This alteration can make it impossible for a conformant Vulkan
implementation to create a slink:VkSwapchainKHR over the same window
object.
@ -114,8 +115,8 @@ Technical details include:
The MSDN documentation for code:SetPixelFormat explains that a window
object's pixel format can be set only one time.
* Creating a slink:VkSwapchainKHR over a window object can alter the object
for the remaining life of its lifetime.
* Creating a slink:VkSwapchainKHR over a window object can alter the
object for the remaining life of its lifetime.
Either of the above alterations may occur as a side-effect of
slink:VkSwapchainKHR.

View File

@ -37,13 +37,13 @@ The key features of this extension are:
number of samples in the depth/stencil attachment in a subpass is a
multiple of the number of samples in the color attachments in the
subpass.
* A coverage reduction step is added to Fragment Operations which converts
a set of covered raster/depth/stencil samples to a set of color samples
that perform blending and color writes.
The coverage reduction step also includes an optional coverage modulation
step, multiplying color values by a fractional opacity corresponding to
the number of associated raster/depth/stencil samples covered.
The coverage reduction step also includes an optional coverage
modulation step, multiplying color values by a fractional opacity
corresponding to the number of associated raster/depth/stencil samples
covered.
=== New Object Types

View File

@ -35,37 +35,27 @@ Specification.
[[spirvenv-capabilities]]
== Capabilities
Implementations must: support the following capability operands declared by
code:OpCapability:
* code:Matrix
* code:Shader
* code:InputAttachment
* code:Sampled1D
* code:Image1D
* code:SampledBuffer
* code:ImageBuffer
* code:ImageQuery
* code:DerivativeControl
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
* code:DeviceGroup
endif::VK_VERSION_1_1,VK_KHR_device_group[]
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
* [[spirvenv-capabilities-multiview]] code:MultiView
endif::VK_VERSION_1_1,VK_KHR_multiview[]
ifdef::VK_KHR_8bit_storage[]
* code:StorageBuffer8BitAccess
endif::VK_KHR_8bit_storage[]
If the implementation supports any of the optional: features described in
the <<features-features,Features>> chapter, then the capability operand(s)
corresponding to that feature must: also be supported.
The SPIR-V capabilities listed below must: be supported if the corresponding
feature or extension is enabled, or if no features or extensions are listed
for that capability.
Extensions are only listed when there is not also a feature bit associated
with that capability.
[[spirvenv-capabilities-table]]
.List of optional: SPIR-V Capabilities and corresponding feature or extension names
.List of SPIR-V Capabilities and enabling features or extensions
[options="header"]
|====
| SPIR-V OpCapability | Vulkan feature or extension name
| SPIR-V code:OpCapability | Vulkan feature or extension name
| code:Matrix |
| code:Shader |
| code:InputAttachment |
| code:Sampled1D |
| code:Image1D |
| code:SampledBuffer |
| code:ImageBuffer |
| code:ImageQuery |
| code:DerivativeControl |
| code:Geometry | <<features-features-geometryShader,geometryShader>>
| code:Tessellation | <<features-features-tessellationShader,tessellationShader>>
| code:Float64 | <<features-features-shaderFloat64,shaderFloat64>>
@ -93,21 +83,30 @@ corresponding to that feature must: also be supported.
| code:StorageImageWriteWithoutFormat | <<features-features-shaderStorageImageWriteWithoutFormat,shaderStorageImageWriteWithoutFormat>>
| code:MultiViewport | <<features-features-multiViewport,multiViewport>>
ifdef::VK_VERSION_1_1,VK_KHR_shader_draw_parameters[]
| code:DrawParameters
| `<<VK_KHR_shader_draw_parameters>>`
| code:DrawParameters |
ifdef::VK_VERSION_1_1[]
or <<features-features-shaderDrawParameters,shaderDrawParameters>>
<<features-features-shaderDrawParameters,shaderDrawParameters>>
endif::VK_VERSION_1_1[]
ifdef::VK_KHR_shader_draw_parameters+VK_VERSION_1_1[]
or
endif::VK_KHR_shader_draw_parameters+VK_VERSION_1_1[]
ifdef::VK_KHR_shader_draw_parameters[]
<<VK_KHR_shader_draw_parameters>>
endif::VK_KHR_shader_draw_parameters[]
endif::VK_VERSION_1_1,VK_KHR_shader_draw_parameters[]
ifndef::VK_VERSION_1_1[]
ifdef::VK_KHR_multiview[]
ifdef::VK_VERSION_1_1,VK_KHR_multiview[]
[[spirvenv-capabilities-multiview]]
| code:MultiView | <<VK_KHR_multiview,VK_KHR_multiview>>
endif::VK_KHR_multiview[]
ifdef::VK_KHR_device_group[]
| code:DeviceGroup | <<VK_KHR_device_group,VK_KHR_device_group>>
endif::VK_KHR_device_group[]
| code:MultiView |
ifndef::VK_VERSION_1_1[]
<<VK_KHR_multiview,VK_KHR_multiview>>
endif::VK_VERSION_1_1[]
endif::VK_VERSION_1_1,VK_KHR_multiview[]
ifdef::VK_VERSION_1_1,VK_KHR_device_group[]
| code:DeviceGroup |
ifndef::VK_VERSION_1_1[]
<<VK_KHR_device_group,VK_KHR_device_group>>
endif::VK_VERSION_1_1[]
endif::VK_VERSION_1_1,VK_KHR_device_group[]
ifdef::VK_VERSION_1_1,VK_KHR_variable_pointers[]
[[spirvenv-capabilities-table-variablepointers]]
| code:VariablePointersStorageBuffer | <<features-features-variablePointersStorageBuffer,variablePointersStorageBuffer>>
@ -544,8 +543,8 @@ instructions:
The precision of double-precision instructions is at least that of single
precision.
The precision of operations is defined either in terms of rounding or as an
error bound in ULP, as follows.
The precision of operations is defined either in terms of rounding, as an
error bound in ULP, or as inherited from a formula as follows.
.Correctly Rounded
Operations described as "correctly rounded" will return the infinitely
@ -575,6 +574,23 @@ operations may return an infinity of the appropriate sign.
If the infinitely precise result of the operation is not mathematically
defined then the value returned is undefined.
.Inherited From ...
Where an operation's precision is described as being inherited from a
formula, the result returned must be at least as accurate as the result of
computing an approximation to [eq]#x# using a formula equivalent to the
given formula applied to the supplied inputs.
Specifically, the formula given may be transformed using the mathematical
associativity, commutativity and distributivity of the operators involved to
yield an equivalent formula.
The SPIR-V precision rules, when applied to each such formula and the given
input values, define a range of permitted values.
If [eq]#NaN# is one of the permitted values then the operation may return
any result, otherwise let the largest permitted value in any of the ranges
be [eq]#F~max~# and the smallest be [eq]#F~min~#.
The operation must return a value in the range [eq]#[x - E, x + E]# where
latexmath:[E = \mathrm{max} \left( | x - F_{\mathrm{min}} |, | x -
F_{\mathrm{max}} | \right) ]
For single precision (32 bit) instructions, precisions are required: to be
at least as follows, unless decorated with RelaxedPrecision:

View File

@ -292,10 +292,10 @@ include::../api/protos/vkDestroyDebugReportCallbackEXT.txt[]
* pname:instance the instance where the callback was created.
* pname:callback the slink:VkDebugReportCallbackEXT object to destroy.
pname:callback is an externally synchronized object and must: not be used
on more than one thread at a time.
This means that fname:vkDestroyDebugReportCallbackEXT must: not be called
when a callback is active.
pname:callback is an externally synchronized object and must: not be
used on more than one thread at a time.
This means that fname:vkDestroyDebugReportCallbackEXT must: not be
called when a callback is active.
* pname:pAllocator controls host memory allocation as described in the
<<memory-allocation, Memory Allocation>> chapter.

View File

@ -662,8 +662,8 @@ include::../api/protos/vkDestroyDebugUtilsMessengerEXT.txt[]
* pname:messenger the slink:VkDebugUtilsMessengerEXT object to destroy.
pname:messenger is an externally synchronized object and must: not be
used on more than one thread at a time.
This means that fname:vkDestroyDebugUtilsMessengerEXT must: not be called
when a callback is active.
This means that fname:vkDestroyDebugUtilsMessengerEXT must: not be
called when a callback is active.
* pname:pAllocator controls host memory allocation as described in the
<<memory-allocation, Memory Allocation>> chapter.

View File

@ -141,8 +141,8 @@ include::../../api/protos/vkGetPastPresentationTimingGOOGLE.txt[]
* pname:pPresentationTimingCount is a pointer to an integer related to the
number of sname:VkPastPresentationTimingGOOGLE structures to query, as
described below.
* pname:pPresentationTimings is either `NULL` or a pointer to an array
of sname:VkPastPresentationTimingGOOGLE structures.
* pname:pPresentationTimings is either `NULL` or a pointer to an array of
sname:VkPastPresentationTimingGOOGLE structures.
If pname:pPresentationTimings is `NULL`, then the number of newly-available
timing records for the given pname:swapchain is returned in
@ -244,8 +244,8 @@ The semantics for other present modes are as follows:
when the image was displayed.
For images that are not displayed to the user,
fname:vkGetPastPresentationTimingGOOGLE may: not return a
sname:VkPastPresentationTimingGOOGLE structure, or it may: return
a sname:VkPastPresentationTimingGOOGLE structure with the value of zero
sname:VkPastPresentationTimingGOOGLE structure, or it may: return a
sname:VkPastPresentationTimingGOOGLE structure with the value of zero
for both sname:VkPastPresentationTimingGOOGLE::pname:actualPresentTime
and sname:VkPastPresentationTimingGOOGLE::pname:earliestPresentTime.
It is possible that an application can: submit images with

View File

@ -131,8 +131,8 @@ include::../../api/enums/VkObjectEntryTypeNVX.txt[]
* ename:VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX specifies a sname:VkBuffer
resource entry that is registered via
sname:VkObjectTableVertexBufferEntryNVX.
* ename:VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX specifies the resource entry
is registered via sname:VkObjectTablePushConstantEntryNVX.
* ename:VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX specifies the resource
entry is registered via sname:VkObjectTablePushConstantEntryNVX.
--

View File

@ -45,8 +45,8 @@ diagnostic checkpoints that were executed by the device.
include::../../api/protos/vkGetQueueCheckpointDataNV.txt[]
* pname:queue is the elink:VkQueue object the caller would like to retrieve
checkpoint data for
* pname:queue is the elink:VkQueue object the caller would like to
retrieve checkpoint data for
* pname:pCheckpointDataCount is a pointer to an integer related to the
number of checkpoint markers available or queried, as described below.
* pname:pCheckpointData is either `NULL` or a pointer to an array of

View File

@ -2,7 +2,7 @@ Additional queue family information can be queried by setting
slink:VkQueueFamilyProperties2::pname:pNext to point to an instance of the
slink:VkQueueFamilyCheckpointPropertiesNV structure.
[open,refpage='VkQueueFamilyCheckpointPropertiesNV',desc='return structure for queue family checkpoint info query']
[open,refpage='VkQueueFamilyCheckpointPropertiesNV',desc='return structure for queue family checkpoint info query',type='structs']
--
The slink:VkQueueFamilyCheckpointPropertiesNV structure is defined as:

View File

@ -454,8 +454,8 @@ include::../api/structs/VkCommandBufferAllocateInfo.txt[]
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:commandPool is the command pool from which the command buffers are
allocated.
* pname:level is a elink:VkCommandBufferLevel value specifying the
command buffer level.
* pname:level is a elink:VkCommandBufferLevel value specifying the command
buffer level.
* pname:commandBufferCount is the number of command buffers to allocate
from the pool.

View File

@ -2609,7 +2609,8 @@ endif::VK_VERSION_1_1,VK_KHR_maintenance1[]
* [[VUID-VkDescriptorImageInfo-imageLayout-00344]]
pname:imageLayout must: match the actual elink:VkImageLayout of each
subresource accessible from pname:imageView at the time this descriptor
is accessed
is accessed as defined by the <<resources-image-layouts-matching-rule,
image layout matching rules>>
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkDescriptorImageInfo-sampler-01564]]
If pname:sampler is used and the elink:VkFormat of the image is a

View File

@ -617,8 +617,8 @@ The assembled primitives execute the bound graphics pipeline.
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT.
ifdef::VK_IMG_filter_cubic[]
* [[VUID-vkCmdDraw-None-02010]]
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as
a result of this command, then the image view's
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
result of this command, then the image view's
<<resources-image-view-format-features,format features>> must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
* [[VUID-vkCmdDraw-None-00452]]
@ -803,8 +803,8 @@ The assembled primitives execute the bound graphics pipeline.
not be accessed in any way other than as an attachment by this command.
ifdef::VK_IMG_filter_cubic[]
* [[VUID-vkCmdDrawIndexed-None-02012]]
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as
a result of this command, then the image view's
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
result of this command, then the image view's
<<resources-image-view-format-features,format features>> must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
* [[VUID-vkCmdDrawIndexed-None-00472]]
@ -998,8 +998,8 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
not be accessed in any way other than as an attachment by this command.
ifdef::VK_IMG_filter_cubic[]
* [[VUID-vkCmdDrawIndirect-None-02014]]
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as
a result of this command, then the image view's
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
result of this command, then the image view's
<<resources-image-view-format-features,format features>> must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
* [[VUID-vkCmdDrawIndirect-None-00498]]
@ -1238,8 +1238,8 @@ located at pname:countBufferOffset and use this as the draw count.
not be accessed in any way other than as an attachment by this command.
ifdef::VK_IMG_filter_cubic[]
* [[VUID-vkCmdDrawIndirectCountKHR-None-02016]]
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as
a result of this command, then the image view's
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
result of this command, then the image view's
<<resources-image-view-format-features,format features>> must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
* [[VUID-vkCmdDrawIndirectCountKHR-None-03170]]
@ -1635,8 +1635,8 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
not be accessed in any way other than as an attachment by this command.
ifdef::VK_IMG_filter_cubic[]
* [[VUID-vkCmdDrawIndexedIndirect-None-02019]]
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as
a result of this command, then the image view's
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
result of this command, then the image view's
<<resources-image-view-format-features,format features>> must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
* [[VUID-vkCmdDrawIndexedIndirect-None-00550]]
@ -1883,8 +1883,8 @@ located at pname:countBufferOffset and use this as the draw count.
not be accessed in any way other than as an attachment by this command.
ifdef::VK_IMG_filter_cubic[]
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-None-02021]]
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as
a result of this command, then the image view's
If a sname:VkImageView is sampled with ename:VK_FILTER_CUBIC_IMG as a
result of this command, then the image view's
<<resources-image-view-format-features,format features>> must: contain
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG.
* [[VUID-vkCmdDrawIndexedIndirectCountKHR-None-03173]]

View File

@ -4251,10 +4251,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane.
Images in this format must: be defined with a width and height that is a
multiple of two.
* ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM specifies an unsigned normalized
_multi-planar format_ that has an 8-bit G component in plane 0, and a
two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
byte 0 and an 8-bit R component in byte 1.
* ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM specifies an unsigned
normalized _multi-planar format_ that has an 8-bit G component in plane
0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B
component in byte 0 and an 8-bit R component in byte 1.
The horizontal and vertical dimensions of the BR plane is halved
relative to the image dimensions, and each R and B value is shared with
the G components for which latexmath:[\lfloor i_G \times 0.5 \rfloor =
@ -4278,10 +4278,10 @@ ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
ename:VK_IMAGE_ASPECT_PLANE_2_BIT for the R plane.
Images in this format must: be defined with a width that is a multiple
of two.
* ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM specifies an unsigned normalized
_multi-planar format_ that has an 8-bit G component in plane 0, and a
two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
byte 0 and an 8-bit R component in byte 1.
* ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM specifies an unsigned
normalized _multi-planar format_ that has an 8-bit G component in plane
0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B
component in byte 0 and an 8-bit R component in byte 1.
The horizontal dimensions of the BR plane is halved relative to the
image dimensions, and each R and B value is shared with the G components
for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].

View File

@ -490,9 +490,8 @@ as:
include::../api/structs/VkVertexInputBindingDivisorDescriptionEXT.txt[]
* pname:binding is the binding number for which the divisor is specified.
* pname:divisor is the number of successive instances that will use
the same value of the vertex attribute when instanced rendering is
enabled.
* pname:divisor is the number of successive instances that will use the
same value of the vertex attribute when instanced rendering is enabled.
For example, if the divisor is N, the same vertex attribute will applied
to N successive instances before moving on to the next vertex attribute.
The maximum value of divisor is implementation dependent and can be

20
chapters/interfaces.txt Normal file → Executable file
View File

@ -238,6 +238,9 @@ be assigned the same location, either explicitly or implicitly.
The number of input and output locations available for a shader input or
output interface are limited, and dependent on the shader stage as described
in <<interfaces-iointerfaces-limits>>.
All variables in both the <<interfaces-builtin-variables,built-in interface
block>> and the <<interfaces-iointerfaces-user,user-defined variable
interface>> count against these limits.
[[interfaces-iointerfaces-limits]]
@ -1224,18 +1227,13 @@ four-component vector of 32-bit floating-point values.
code:FragDepth::
Decorating a variable with the code:FragDepth built-in decoration will make
that variable contain the new depth value for all samples covered by the
fragment.
This value will be used for depth testing and, if the depth test passes, any
subsequent write to the depth/stencil attachment.
To have a shader supply a fragment-depth value, the shader must: declare the
code:DepthReplacing execution mode.
Such a shader's fragment-depth value will come from the variable decorated
with the code:FragDepth built-in decoration.
+
To write to code:FragDepth, a shader must: declare the code:DepthReplacing
execution mode.
If a shader declares the code:DepthReplacing execution mode and there is an
execution path through the shader that does not set code:FragDepth, then the
fragment's depth value is undefined for executions of the shader that take
that path.
This value will be used for any subsequent depth testing performed by the
implementation or writes to the depth attachment.
+
The code:FragDepth decoration must: be used only within fragment shaders.
+

View File

@ -136,9 +136,9 @@ September, 2017.
[[spirv-extended]] J. Kessenich, _SPIR-V Extended Instructions for GLSL,
Version 1.00_, https://www.khronos.org/registry/spir-v/, February 10, 2016.
[[spirv-spec]] J. Kessenich and B. Ouriel, _The Khronos SPIR-V
Specification, Version 1.00_, https://www.khronos.org/registry/spir-v/,
February 10, 2016.
[[spirv-spec]] J. Kessenich, B. Ouriel, and R. Krisch, _SPIR-V
Specification, Version 1.3, Revision 2, Unified_,
https://www.khronos.org/registry/spir-v/, May 11, 2018.
[[vulkan-styleguide]] J. Leech and T. Hector, _Vulkan Documentation and
Extensions: Procedures and Conventions_,

View File

@ -2783,8 +2783,8 @@ representation, images with external formats must: only be used as sampled
images, must: only be sampled with a sampler that has Y'C~B~C~R~ conversion
enabled, and must: have optimal tiling.
Images that will be backed by an Android hardware buffer can: use an external
format by setting slink:VkImageCreateInfo::pname:format to
Images that will be backed by an Android hardware buffer can: use an
external format by setting slink:VkImageCreateInfo::pname:format to
ename:VK_FORMAT_UNDEFINED and including an instance of
slink:VkExternalFormatANDROID in the pname:pNext chain.
Images can: be created with an external format even if the Android hardware

View File

@ -400,6 +400,11 @@ pixel.
[eq]#(0.9375, 0.25)# +
[eq]#(0.875, 0.9375)# +
[eq]#(0.0625, 0.0)#
|image:images/sample_count_1.svg[align="center"]
|image:images/sample_count_2.svg[align="center"]
|image:images/sample_count_4.svg[align="center"]
|image:images/sample_count_8.svg[align="center"]
|image:images/sample_count_16.svg[align="center"]
|====
ifdef::VK_AMD_shader_fragment_mask[]

View File

@ -1841,9 +1841,33 @@ For use as a framebuffer attachment, this is a member in the substructures
of the sname:VkRenderPassCreateInfo (see <<renderpass,Render Pass>>).
For use in a descriptor set, this is a member in the
sname:VkDescriptorImageInfo structure (see <<descriptorsets-updates>>).
--
[[resources-image-layouts-matching-rule]]
=== Image Layout Matching Rules
At the time that any command buffer command accessing an image executes on
any queue, the layouts of the image subresources that are accessed must: all
match the layout specified via the API controlling those accesses.
match exactly the layout specified via the API controlling those accesses
ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[]
, except in case of accesses to an image with a depth/stencil format
performed through descriptors referring to only a single aspect of the
image, where the following relaxed matching rules apply:
* Descriptors referring just to the depth aspect of a depth/stencil image
only need to match in the image layout of the depth aspect, thus
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL and
ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL are
considered to match.
* Descriptors referring just to the stencil aspect of a depth/stencil
image only need to match in the image layout of the stencil aspect, thus
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL and
ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL are
considered to match
endif::VK_VERSION_1_1,VK_KHR_maintenance2[]
.
When performing a layout transition on an image subresource, the old layout
value must: either equal the current layout of the image subresource (at the
@ -1879,8 +1903,6 @@ the contents of the depth aspect of those image subresources undefined.
endif::VK_EXT_sample_locations[]
--
[[resources-image-views]]
== Image Views

View File

@ -539,8 +539,9 @@ For the compute pipeline, the following stages occur in this order:
ifdef::VK_EXT_conditional_rendering[]
The conditional rendering stage is formally part of both the graphics, and
the compute pipeline. The pipeline stage where the predicate read happens
has unspecified order relative to other stages of these pipelines:
the compute pipeline.
The pipeline stage where the predicate read happens has unspecified order
relative to other stages of these pipelines:
* ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
endif::VK_EXT_conditional_rendering[]
@ -3426,7 +3427,8 @@ framebuffer-space>> pipeline stages is
contains a subset of the bit values in
sname:VkSubpassDependency::pname:dstStageMask, and pname:dependencyFlags
is equal to sname:VkSubpassDependency::pname:dependencyFlags.
* If fname:vkCmdPipelineBarrier is called within a render pass instance,
* [[VUID-vkCmdPipelineBarrier-pMemoryBarriers-02026]]
If fname:vkCmdPipelineBarrier is called within a render pass instance,
for each element of pname:pMemoryBarriers and
pname:pImageMemoryBarriers, the render pass must: have been defined with
a sname:VkSubpassDependency self-dependency for the current subpass with

View File

@ -1191,9 +1191,9 @@ follows:
integer coordinates.
. Sample using <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
conversion>> at each of these locations.
. Convert the non-linear AR'G'B' outputs of the Y'C~B~C~R~ conversions to
linear ARGB values as described in the "`Transfer Functions`" chapter
of the <<data-format,Khronos Data Format Specification>>.
. Convert the non-linear AR'G'B' outputs of the Y'C~B~C~R~ conversions
to linear ARGB values as described in the "`Transfer Functions`"
chapter of the <<data-format,Khronos Data Format Specification>>.
. Interpolate the linear ARGB values using the [eq]#{alpha}# and
[eq]#{beta}# values described in the "`linear filtering`" section of
<<textures-unnormalized-to-integer>> and the equations in

View File

@ -304,8 +304,8 @@ endif::VK_KHR_maintenance2[]
* ename:VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES specifies that the
primitive is discarded if the vertex lies outside any clip plane,
including the planes bounding the view volume.
* ename:VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY specifies that the
primitive is discarded only if the vertex lies outside any user clip
* ename:VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY specifies that
the primitive is discarded only if the vertex lies outside any user clip
plane.
--

View File

@ -29,6 +29,9 @@ subprocess.check_call(['make', 'config/extDependency.py'])
from extDependency import *
def enQuote(str):
return '"' + str + '"'
# Make a single submission target. Several are needed per document.
#
# outDir - where to generate intermediate and final documents
@ -43,7 +46,7 @@ def makeTarget(outDir, extensionList, submitName, title, target):
'APITITLE="' + title + '"', target)
# Rename into submission directory
outFile = outDir + '/html/' + submitName + '.html'
print('mv', outDir + '/html/vkspec.html', outFile)
print('mv', outDir + '/html/vkspec.html', enQuote(outFile))
# No longer needed
# print('mv -n', outDir + '/katex', 'out/submit/')
@ -81,9 +84,10 @@ def makeSubmit(submitName, required, target='html'):
print('')
print('cd scripts')
print('./htmldiff',
'../' + baseSpec,
'../' + newSpec,
'> ../submit/html/diff-' + submitName + '.html')
enQuote('../' + baseSpec),
enQuote('../' + newSpec),
'>',
enQuote('../submit/html/diff-' + submitName + '.html'))
print('cd ..')
if __name__ == '__main__':

24
images/sample_count_1.svg Normal file
View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="160" height="160" viewBox="-500 -500 11000 11000" xmlns="http://www.w3.org/2000/svg" version="1.1">
<desc>VK_SAMPLE_COUNT_1_BIT</desc>
<defs>
<marker id="Triangle" viewBox="0 0 10 10" refX="0" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="8" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
</defs>
<g>
<!-- Axises -->
<line x1="00000" x2="10000" y1="00000" y2="00000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<line x1="00000" x2="00000" y1="00000" y2="10000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<!-- Helper-lines -->
<line x1="00000" x2="10000" y1="10000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="10000" x2="10000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines horizontal -->
<line x1="00000" x2="10000" y1="05000" y2="05000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines vertical -->
<line x1="05000" x2="05000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Dots -->
<circle cx="05000" cy="05000" r="00200" fill="black" /><text x="05000" y="05000" fill="red" font-size="01100" transform="translate(00200 -00200)">0</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="160" height="160" viewBox="-500 -500 11000 11000" xmlns="http://www.w3.org/2000/svg" version="1.1">
<desc>VK_SAMPLE_COUNT_16_BIT</desc>
<defs>
<marker id="Triangle" viewBox="0 0 10 10" refX="0" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="8" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
</defs>
<g>
<!-- Axises -->
<line x1="00000" x2="10000" y1="00000" y2="00000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<line x1="00000" x2="00000" y1="00000" y2="10000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<!-- Helper-lines -->
<line x1="00000" x2="10000" y1="10000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="10000" x2="10000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines horizontal -->
<line x1="00000" x2="10000" y1="00000" y2="00000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="00625" y2="00625" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="01250" y2="01250" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="01875" y2="01875" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="02500" y2="02500" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="03125" y2="03125" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="03750" y2="03750" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="04375" y2="04375" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="05000" y2="05000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="05625" y2="05625" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="06250" y2="06250" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="06875" y2="06875" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="07500" y2="07500" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="08125" y2="08125" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="08750" y2="08750" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="09375" y2="09375" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines vertical -->
<line x1="00000" x2="00000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00625" x2="00625" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="01250" x2="01250" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="01875" x2="01875" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="02500" x2="02500" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="03125" x2="03125" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="03750" x2="03750" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="04375" x2="04375" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="05000" x2="05000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="05625" x2="05625" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="06250" x2="06250" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="06875" x2="06875" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="07500" x2="07500" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="08125" x2="08125" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="08750" x2="08750" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="09375" x2="09375" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Dots -->
<circle cx="05625" cy="05625" r="00200" fill="black" /><text x="05625" y="05625" fill="red" font-size="01100" transform="translate(00200 -00200)">0</text>
<circle cx="04375" cy="03125" r="00200" fill="black" /><text x="04375" y="03125" fill="red" font-size="01100" transform="translate(00200 -00200)">1</text>
<circle cx="03125" cy="06250" r="00200" fill="black" /><text x="03125" y="06250" fill="red" font-size="01100" transform="translate(00200 -00200)">2</text>
<circle cx="07500" cy="04375" r="00200" fill="black" /><text x="07500" y="04375" fill="red" font-size="01100" transform="translate(00200 -00200)">3</text>
<circle cx="01875" cy="03750" r="00200" fill="black" /><text x="01875" y="03750" fill="red" font-size="01100" transform="translate(00200 -00200)">4</text>
<circle cx="06250" cy="08125" r="00200" fill="black" /><text x="06250" y="08125" fill="red" font-size="01100" transform="translate(00200 -00200)">5</text>
<circle cx="08125" cy="06875" r="00200" fill="black" /><text x="08125" y="06875" fill="red" font-size="01100" transform="translate(00200 -00200)">6</text>
<circle cx="06875" cy="01875" r="00200" fill="black" /><text x="06875" y="01875" fill="red" font-size="01100" transform="translate(00200 -00200)">7</text>
<circle cx="03750" cy="08750" r="00200" fill="black" /><text x="03750" y="08750" fill="red" font-size="01100" transform="translate(00200 -00200)">8</text>
<circle cx="05000" cy="00625" r="00200" fill="black" /><text x="05000" y="00625" fill="red" font-size="01100" transform="translate(00400 00400)">9</text>
<circle cx="02500" cy="01250" r="00200" fill="black" /><text x="02500" y="01250" fill="red" font-size="01100" transform="translate(00200 -00200)">10</text>
<circle cx="01250" cy="07500" r="00200" fill="black" /><text x="01250" y="07500" fill="red" font-size="01100" transform="translate(00200 -00200)">11</text>
<circle cx="00000" cy="05000" r="00200" fill="black" /><text x="00000" y="05000" fill="red" font-size="01100" transform="translate(00200 -00200)">12</text>
<circle cx="09375" cy="02500" r="00200" fill="black" /><text x="09375" y="02500" fill="red" font-size="01100" transform="translate(00000 -00400)">13</text>
<circle cx="08750" cy="09375" r="00200" fill="black" /><text x="08750" y="09375" fill="red" font-size="01100" transform="translate(00200 -00200)">14</text>
<circle cx="00625" cy="00000" r="00200" fill="black" /><text x="00625" y="00000" fill="red" font-size="01100" transform="translate(00200 00800)">15</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

27
images/sample_count_2.svg Normal file
View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="160" height="160" viewBox="-500 -500 11000 11000" xmlns="http://www.w3.org/2000/svg" version="1.1">
<desc>VK_SAMPLE_COUNT_2_BIT</desc>
<defs>
<marker id="Triangle" viewBox="0 0 10 10" refX="0" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="8" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
</defs>
<g>
<!-- Axises -->
<line x1="00000" x2="10000" y1="00000" y2="00000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<line x1="00000" x2="00000" y1="00000" y2="10000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<!-- Helper-lines -->
<line x1="00000" x2="10000" y1="10000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="10000" x2="10000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines horizontal -->
<line x1="00000" x2="10000" y1="02500" y2="02500" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="07500" y2="07500" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines vertical -->
<line x1="02500" x2="02500" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="07500" x2="07500" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Dots -->
<circle cx="07500" cy="07500" r="00200" fill="black" /><text x="07500" y="07500" fill="red" font-size="01100" transform="translate(00200 -00200)">0</text>
<circle cx="02500" cy="02500" r="00200" fill="black" /><text x="02500" y="02500" fill="red" font-size="01100" transform="translate(00200 -00200)">1</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

33
images/sample_count_4.svg Normal file
View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="160" height="160" viewBox="-500 -500 11000 11000" xmlns="http://www.w3.org/2000/svg" version="1.1">
<desc>VK_SAMPLE_COUNT_4_BIT</desc>
<defs>
<marker id="Triangle" viewBox="0 0 10 10" refX="0" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="8" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
</defs>
<g>
<!-- Axises -->
<line x1="00000" x2="10000" y1="00000" y2="00000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<line x1="00000" x2="00000" y1="00000" y2="10000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<!-- Helper-lines -->
<line x1="00000" x2="10000" y1="10000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="10000" x2="10000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines horizontal -->
<line x1="00000" x2="10000" y1="01250" y2="01250" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="03750" y2="03750" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="06250" y2="06250" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="08750" y2="08750" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines vertical -->
<line x1="01250" x2="01250" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="03750" x2="03750" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="06250" x2="06250" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="08750" x2="08750" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Dots -->
<circle cx="03750" cy="01250" r="00200" fill="black" /><text x="03750" y="01250" fill="red" font-size="01100" transform="translate(00200 -00200)">0</text>
<circle cx="08750" cy="03750" r="00200" fill="black" /><text x="08750" y="03750" fill="red" font-size="01100" transform="translate(00200 -00200)">1</text>
<circle cx="01250" cy="06250" r="00200" fill="black" /><text x="01250" y="06250" fill="red" font-size="01100" transform="translate(00200 -00200)">2</text>
<circle cx="06250" cy="08750" r="00200" fill="black" /><text x="06250" y="08750" fill="red" font-size="01100" transform="translate(00200 -00200)">3</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

45
images/sample_count_8.svg Normal file
View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="160" height="160" viewBox="-500 -500 11000 11000" xmlns="http://www.w3.org/2000/svg" version="1.1">
<desc>VK_SAMPLE_COUNT_8_BIT</desc>
<defs>
<marker id="Triangle" viewBox="0 0 10 10" refX="0" refY="5" markerUnits="strokeWidth" markerWidth="8" markerHeight="8" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
</defs>
<g>
<!-- Axises -->
<line x1="00000" x2="10000" y1="00000" y2="00000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<line x1="00000" x2="00000" y1="00000" y2="10000" stroke-width="00050" stroke="black" marker-end="url(#Triangle)" />
<!-- Helper-lines -->
<line x1="00000" x2="10000" y1="10000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="10000" x2="10000" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines horizontal -->
<line x1="00000" x2="10000" y1="00625" y2="00625" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="01875" y2="01875" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="03125" y2="03125" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="04375" y2="04375" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="05625" y2="05625" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="06875" y2="06875" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="08125" y2="08125" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="00000" x2="10000" y1="09375" y2="09375" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Helper-lines vertical -->
<line x1="00625" x2="00625" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="01875" x2="01875" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="03125" x2="03125" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="04375" x2="04375" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="05625" x2="05625" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="06875" x2="06875" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="08125" x2="08125" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<line x1="09375" x2="09375" y1="00000" y2="10000" stroke-width="00010" stroke="black" stroke-dasharray="00100" />
<!-- Dots -->
<circle cx="05625" cy="03125" r="00200" fill="black" /><text x="05625" y="03125" fill="red" font-size="01100" transform="translate(00200 -00200)">0</text>
<circle cx="04375" cy="06875" r="00200" fill="black" /><text x="04375" y="06875" fill="red" font-size="01100" transform="translate(00200 -00200)">1</text>
<circle cx="08125" cy="05625" r="00200" fill="black" /><text x="08125" y="05625" fill="red" font-size="01100" transform="translate(00200 -00200)">2</text>
<circle cx="03125" cy="01875" r="00200" fill="black" /><text x="03125" y="01875" fill="red" font-size="01100" transform="translate(00200 -00200)">3</text>
<circle cx="01875" cy="08125" r="00200" fill="black" /><text x="01875" y="08125" fill="red" font-size="01100" transform="translate(00200 -00200)">4</text>
<circle cx="00625" cy="04375" r="00200" fill="black" /><text x="00625" y="04375" fill="red" font-size="01100" transform="translate(00200 -00200)">5</text>
<circle cx="06875" cy="09375" r="00200" fill="black" /><text x="06875" y="09375" fill="red" font-size="01100" transform="translate(00200 -00200)">6</text>
<circle cx="09375" cy="00625" r="00200" fill="black" /><text x="09375" y="00625" fill="red" font-size="01100" transform="translate(00200 00700)">7</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

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 82
#define VK_HEADER_VERSION 83
#define VK_NULL_HANDLE 0

View File

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

View File

@ -348,13 +348,15 @@ and is added to the list of figures:
.Example Markup
----
[[fig-anchorname]]
[%inline]
image::images/imagename.svg[align="center",title="Figure caption",{fullimagewidth}]
----
There must be both .svg and .pdf versions of each figure checked into the
+images/+ directory, to support generating both HTML and PDF outputs.
It is best to create images in Inkscape as SVG files and then use the
conversion rule in `images/Makefile` to generate PDF.
There must be SVG versions of each figure checked into the `images/`
directory, to support generating both HTML and PDF outputs.
The PDF generation pipeline is now able to use SVG images, so PDF versions
of each image are no longer required.
The `[%inline]` directive decreases output image size in the generated HTML.
Asciidoc restricts captions in figures to be a single line in the source
document.

View File

@ -60,8 +60,8 @@ This rule applies to most declarations with the C Preprocessor's `#define`
token, including macros and constants.
There are however a few exceptions:
* The header guard for each header includes an additional underscore `_` at
the end of the identifier.
* The header guard for each header includes an additional underscore `_`
at the end of the identifier.
** Example: `VULKAN_H_`
* Definitions that denote the presence of an extension follow the
<<extensions-naming-conventions-name-strings,extension name string
@ -183,8 +183,8 @@ converted to the correct case (e.g. `VkStructureType` ->
This rule applies to all enumerants, with one exception.
* The `VkResult` enumerants are split into two sub types: error and success
codes.
* The `VkResult` enumerants are split into two sub types: error and
success codes.
** Success codes are not prefixed with anything other than `VK_`.
** Error codes are prefixed with `VK_ERROR_`.

View File

@ -150,6 +150,8 @@ include::style/vuid.txt[]
= Revision History
* 2018-08-13 - Add %inline directive to the <<markup-sample-section-images,
Figures>> section (public pull request 734).
* 2018-07-08 - Remove requirement to explicitly include extension appendices
in the <<extensions-documenting-extensions, Changes for New Extensions>>
section.

View File

@ -497,7 +497,7 @@ class ExtensionMetaDocOutputGenerator(OutputGenerator):
for enum in elem.findall('./require/enum'):
enumName = self.getAttrib(enum, 'name')
if enumName.find('SPEC_VERSION') != -1:
self.logMsg('warn', 'Missing ' + versioningEnumName + '! Potential misnamed candidate ' + enumName + '.')
self.logMsg('diag', 'Missing ' + versioningEnumName + '! Potential misnamed candidate ' + enumName + '.')
return self.getAttrib(enum, 'value')
self.logMsg('error', 'Missing ' + versioningEnumName + '!')

View File

@ -147,7 +147,7 @@ server.
<type category="define">// Vulkan 1.1 version number
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 82</type>
#define <name>VK_HEADER_VERSION</name> 83</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -7276,6 +7276,7 @@ server.
<require>
<enum value="0" name="VK_NVX_EXTENSION_51_SPEC_VERSION"/>
<enum value="&quot;VK_NVX_extension_51&quot;" name="VK_NVX_EXTENSION_51_EXTENSION_NAME"/>
<enum bitpos="13" extends="VkImageCreateFlagBits" name="VK_IMAGE_CREATE_RESERVED_13_BIT_NV"/>
</require>
</extension>
<extension name="VK_NVX_extension_52" number="52" author="NVX" contact="James Jones @cubanismo" supported="disabled">
@ -8702,6 +8703,8 @@ server.
<require>
<enum value="0" name="VK_EXT_EXTENSION_165_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_165&quot;" name="VK_EXT_EXTENSION_165_EXTENSION_NAME"/>
<enum bitpos="23" extends="VkAccessFlagBits" name="VK_ACCESS_RESERVED_23_BIT_NV"/>
<enum bitpos="8" extends="VkImageUsageFlagBits" name="VK_IMAGE_USAGE_RESERVED_8_BIT_NV"/>
</require>
</extension>
<extension name="VK_NV_extension_166" number="166" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
@ -8714,6 +8717,17 @@ server.
<require>
<enum value="0" name="VK_EXT_EXTENSION_167_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_167&quot;" name="VK_EXT_EXTENSION_167_EXTENSION_NAME"/>
<enum bitpos="8" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_8_BIT_NV"/>
<enum bitpos="9" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_9_BIT_NV"/>
<enum bitpos="10" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_10_BIT_NV"/>
<enum bitpos="11" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_11_BIT_NV"/>
<enum bitpos="12" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_12_BIT_NV"/>
<enum bitpos="13" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_13_BIT_NV"/>
<enum bitpos="21" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_RESERVED_21_BIT_NV"/>
<enum bitpos="10" extends="VkBufferUsageFlagBits" name="VK_BUFFER_USAGE_RESERVED_10_BIT_NV"/>
<enum bitpos="21" extends="VkAccessFlagBits" name="VK_ACCESS_RESERVED_21_BIT_NV"/>
<enum bitpos="22" extends="VkAccessFlagBits" name="VK_ACCESS_RESERVED_22_BIT_NV"/>
<enum bitpos="5" extends="VkPipelineCreateFlagBits" name="VK_PIPELINE_CREATE_RESERVED_5_BIT_NV"/>
</require>
</extension>
<extension name="VK_NV_extension_168" number="168" author="NV" contact="Daniel Koch @dgkoch" supported="disabled">
@ -8963,6 +8977,10 @@ server.
<require>
<enum value="0" name="VK_NV_EXTENSION_203_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_203&quot;" name="VK_NV_EXTENSION_203_EXTENSION_NAME"/>
<enum bitpos="6" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_6_BIT_NV"/>
<enum bitpos="7" extends="VkShaderStageFlagBits" name="VK_SHADER_STAGE_RESERVED_7_BIT_NV"/>
<enum bitpos="19" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_RESERVED_19_BIT_NV"/>
<enum bitpos="20" extends="VkPipelineStageFlagBits" name="VK_PIPELINE_STAGE_RESERVED_20_BIT_NV"/>
</require>
</extension>
<extension name="VK_NV_extension_204" number="204" author="NV" contact="Pat Brown @nvpbrown" supported="disabled">