* Bump API patch number and header version number to 51 for this update.
Github Issues:
* Add Valid Usage statement to flink:vkCmdResolveImage to require that
source and destination image formats match (public issue 492).
* Specify that a code:char* parameter must: be a valid null-terminated
string in the <<fundamentals-implicit-validity, implicit valid usage>>
section (public issue 494).
* Removed unnecessary VU for slink:VkPhysicalDeviceFeatures which is
covered by ename:VK_ERROR_FEATURE_NOT_PRESENT already (public issue
496).
* Clarify valid usage of pname:pQueueFamilyIndices in
slink:VkBufferCreateInfo, slink:VkImageCreateInfo, and
slink:VkSwapchainCreateInfoKHR (public issue 501).
* Document that dependencies of enabled extensions must also be enabled in
the <<extended-functionality-extensions-dependencies, Extension
Dependencies>> section (public issue 507).
Internal Issues:
* Change slink:VkMappedMemoryRange valid usage to allow pname:offset +
pname:size == size of the allocation. Also, if ename:VK_WHOLE_SIZE is
used, require the end of the mapping to be aligned to a multiple of
pname:nonCoherentAtomSize (internal issue 611).
* Add issue to `VK_KHR_win32_surface` about reusing window objects from a
different graphics API or Vulkan ICD (internal issue 639).
* Require locations on user in/out in `GL_KHR_vulkan_glsl` (internal issue
783).
* Added version info to the json validation output, and updated the schema
to match (internal issue 838).
* Restructure enumerated type descriptions separately from the command or
structure they are used in, allowing better reference page generation
(internal issue 841).
* Re-sort extension appendices to be in alphabetical order within each
author ID section.
* Fix enum naming and clarify behavior for
`VK_NVX_device_generated_commands` extension.
New Extensions:
* Bump API patch number and header version number to 50 for this update.
Github Issues:
* Fix numerous minor issues with the VK_EXT_debug_report extension (public
issues 478, 483, 486, 489, 490).
Internal Issues:
* Update flink:vkAllocateDescriptorSets to specify conditions under which
to return ename:VK_ERROR_FRAGMENTED_POOL or
ename:VK_ERROR_OUT_OF_POOL_MEMORY instead of
out-of-host/out-of-device-memory, and improve the
<<fundamentals-errorcodes, description of those errors (internal issue
654).
* Add a NOTE documenting that flink:vkAcquireNextImageKHR can only signal
a single semaphore, and how to deal with that when multiple physical
devices in a logical device need to wait on it (internal issue 730).
* Improve description of pname:pNext chains of
slink:VkPhysicalDeviceImageFormatInfo2KHR and
slink:VkImageFormatProperties2KHR (internal issue 814).
* Clean up math markup issues in the <<textures, Image Operations>>
chapter (internal issue 818).
* Update validusage target to use more robust code for preprocessing, by
making direct use of Asciidoctor's preprocessor. Added uniqueItems check
to JSON vu schema and add clean_validusage target (internal issue 826).
* Update style guide to prohibit writing non-self-contained (on a single
bullet point) Valid Usage statements, and modify offending Valid Usage
statements in the Specification to match, to assist with automatic
extraction for the validation layers (internal issue 828).
* Add ename:VK_VALIDATION_CHECK_SHADERS_EXT to elink:VkValidationCheckEXT
of the `VK_EXT_validation_flags` extension, to selectively disable
shader validation.
* Remove duplicate valid usage statement for slink:VkImageMemoryBarrier.
* Modify reflow.py script to place VUID tag anchors standalone on a line
following their corresponding bullet point, and reflow the spec text
accordingly (this had been pending since the initial tag deployment).
New Extensions:
* `VK_AMD_texture_gather_bias_lod`
* Bump API patch number and header version number to 49 for this update.
Github Issues:
* Modify reference page extraction script to make internal links to spec
anchors refer to the core specification instead of being dangling links
(public issue 455).
* Fix GL_KHR_vulkan_glsl typo and add a nor-normative mapping to the newly
published StorageBuffer class (public issue 466).
* Both flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties return
ename:VK_ERROR_LAYER_NOT_PRESENT, which covers the error case of an
application providing a layer name that wasn't returned by
ftext:vkEnumerate{Instance|Device}LayerProperties (public issue 487).
* The specification for flink:VkApplicationInfo::apiVersion says that the
driver must return ename:VK_ERROR_INCOMPATIBLE_DRIVER in the case that
pname:apiVersion specifies a non-supported version. That means that the
valid usage should not also state that, and so the VU statement is
removed. The VU had language about "`an effective substitute`" that
would have been lost, and so it was moved to the pname:apiVersion
description (public issue 488).
Internal Issues:
* Modify implicit validity generator script to assign asciidoc anchors to
all valid usage statements it generates, and reflow.py script to insert
Valid Usage ID (VUID) tags into the specification source files for
explicit valid usage statements. This has no semantic effects on the
specification, but will support the validation layer's detection of
valid usage violations and allow it to link into the corresponding part
of the specification (internal issue 583).
* Assign VUID tags to all explicit VU statements and document
the process and tag format in the style guide (internal issue 583).
* Clarify the rules of whether to structure new functionality as instance
extensions, device extensions, or both in the
<<extended-functionality-instance-extensions-and-devices, Instance
Extensions and Device Extensions>> section (internal issue 749).
* Require that SPIR-V run-time arrays are only used with the
code:BufferBlock decoration (internal issue 750).
* Fix implicit and explicit valid usage statements for
slink:VkWriteDescriptorSet::pname:dstSet (internal issue 767)
* Fix SPIR-V code sample for ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
in the <<descriptorsets-uniformtexelbuffer, Uniform Texel Buffer>>
section (internal issue 770).
* Clarify that disabling depth testing also disables depth writes in the
<<fragops-ds-state, Depth and Stencil Operations>> section (internal
issue 775).
* flink:VkDescriptorImageInfo::pname:imageLayout must match the actual
imageLayout at the time the image is accessed. This was in the spec
text, but needed an associated valid usage statement.
* Note that only 32-bit atomic operations are supported in the
<<spirvenv-module-validation, Validation Rules within a Module>>
section.
* Note that code:UniformConstant variables must not have initializers in
the <<spirvenv-module-validation, Validation Rules within a Module>>
section.
* Add a new elink:VkObjectType enumeration to the core API, promoted from
elink:VkDebugObjectTypeEXT, since it is used for much more than just the
debug_report extension.
New Extensions:
* `VK_KHR_get_surface_capabilities2`
* `VK_KHR_shared_presentable_image`
* Bump API patch number and header version number to 45 for this update.
Github Issues:
* Defined the lifetime of the memory pointed to by
slink:VkDisplayPropertiesKHR::pname:displayName to be equal to that of
its associated display handle (public issue 460).
* Correct several cases where the sparse memory feature name
pname:residencyNonResidentStrict was written as
pname:sparseResidencyNonResidentStrict (public issue 475).
Internal Issues:
* Fix ptext:pNext member of slink:VkPhysicalDeviceGroupPropertiesKHX to be
a non-const pointer. Properties structures return values, so the chain
should be non-const.
* Clarify definition of memory aliasing to consistently use the terms
"linear" and "non-linear" when referring to resources, and define what
those terms mean.
* Modified XML schema and implicit validity scripts to generate language
for all ptext:pNext values in a ptext:pNext chain instead of just the
top level struct, and made `noautovalidity` functional for ptext:sType
and ptext:pNext (internal issue 535).
* Add more detail for BT2020 and scRGB color spaces in
`VK_EXT_swapchain_colorspace` extension (internal issue 632).
* Add naming rules for Extension Structure Names (structures added to the
ptext:pNext chain of a base structure) to the style guide (internal
issue 706).
* Define the glossary term "ptext:pNext chain", and use it consistently in
the spec (internal issue 744).
New Extensions:
* Bump API patch number and header version number to 41 for this update.
Github Issues:
* Made all uses of `NULL` vs. code:VK_NULL_HANDLE consistent (public issue
276).
* Clarify render pass compatibility in different usage scenarios (public
issues 303 and 304).
* Add valid usage statements to slink:VkFramebufferCreateInfo requiring
that the width, height, and number of layers of the framebuffer all be
nonzero (public issue 432).
* Allow `offset` and `align` in any GLSL version for the
`GL_KHR_vulkan_glsl` extension (public issue 435).
* Specify lifetime of string objects passed to the
tlink:PFN_vkDebugReportCallbackEXT user callback in the
+VK_EXT_debug_report+ extension (public issue 446).
* Fix inter-page links in multi-file reference pages (public issue 454).
Internal Issues:
* Update valid usage language for slink:VkImageCreateInfo to disallow
creating images that have ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
set without other attachment usage bits
(ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, or
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) (internal issue 540).
* Disable `VK_EXT_swapchain_colorspace` extension until internal issues
640 and 661 are mutually resolved.
* Allow alternative mipmap level selection when [eq]#lambda == 0.5# during
texture <<textures-image-level-selection,Image Level(s) Selection>>
(internal issue 680).
Other Issues:
* Add a clarification to the style guide that the extension revision
number is treated as a patch number, so that changes to published
extensions should only include bug fixes and spec clarifications.
* Bump API patch number and header version number to 40 for this update.
* There is a major build change in this release. We are now using the
Ruby-based ``asciidoctor'' implementation, rather than the Python-based
``asciidoc'' implementation, to process the specification. While the
actual specification markup changes were minimal, this requires a new
set of build tools and a very different installation process, especially
because we now use an experimental direct-to-PDF backend for Asciidoctor
instead of Docbook->dblatex->PDF. It is no longer possible to build the
Specification using asciidoc. See doc/specs/vulkan/README.adoc
for some guidance on installing the new toolchain components.
* There are some minor rendering issues in the PDF output due to teething
problems with the asciidoctor toolchain, especially with mathematical
equations. We are aware of these and working on them.
Github Issues:
* Updated sample code for the <<sparsememory-examples-basic,sparse
resource binding example>> (public issue 97).
* Modify line and point clipping behavior in the
<<vertexpostproc-clipping, Primitive Clipping>> section to allow for
pop-free behavior. The ability to check for which behavior is
implemented may be added a future feature or extension (public issue
113).
* Unify the discussions of implicit ordering throughout the spec, in
particular in the new sections <<drawing-primitive-order, Primitive
Order>>, <<primrast-order, Rasterization Order>>, and
<<synchronization-implicit, Implicit Synchronization Guarantees>>; the
discussion of <<synchronization-submission-order, submission order>>;
and references elsewhere to these sections (public issue 133).
* Clarify \<\<descriptorsets-compatibility,Pipeline Layout Compatibility>>
language and introduce the term ``identically defined'' (public issue
164).
* Add a dependency to the +VK_EXT_debug_marker+ extension that's needed to
reuse the object type enum from +VK_EXT_debug_report+, and moves the
definition of that enum into +VK_EXT_debug_report+ where it should be
(public issue 409).
* Remove redundant valid usage statement from slink:VkImageBlit (public
issue 421).
* Update GL_KHR_vulkan_glsl to allow the ternary operator to result in a
specialization constant (public issue 424).
* Fix valid usage for flink:VkPipelineShaderStageCreateInfo (public issue
426).
* Correct typo in New Objects list for <<VK_EXT_debug_report>> (public
issue 447).
Internal Issues:
* Moved to asciidoctor for spec builds (internal issue 121).
* Update style guide to describe where to put new extensions-specific
asciidoc files, and what to name them (internal issue 626).
* Add src/spec/indexExt.py to autogenerate registry index entries linking
into the 1.0-extensions specification, instead of maintaining the index
manually. (internal issue 642).
* Autogenerate extension dependencies and lists of all extensions and all
KHR extensions from the "supported" attributes in +vk.xml+. Execute
+make config/extDependency.sh+ from +doc/specs/vulkan+ when a supported
extension is added to vk.xml, to regenerate the dependency script. The
consequence is that specifying a single extension to the +makeExt+
script will automatically enable all extensions it depends on as well,
and that the +makeAllExts+ and +makeKHR+ scripts do not need to be
updated when a new extension is supported (internal issue 648).
* Put extension appendices all at the same asciidoc section level, so KHR
WSI extensions show up in the HTML index (internal issue 648).
Other Issues:
* Imbed images in the generated HTML specs instead of loading them from
the images/ directory.
* Fix missing EXT in extension name
(ename:VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME).
* Add new +VK_EXT_SMPTE_2086_metadata+ extension.
* In the <<platformCreateSurface_xlib,Xlib Surface>> section of the
+VK_KHR_xlib_surface+ specification, add language warning users that
they always need to call code:XinitThreads.
* Use the term "presentable image" (rather than "swapchain image")
consistently in +VK_KHR_swapchain+ and related extensions, and add a
glossary term defining it.
* Relocate the valid usage for samples of
flink:vkGetPhysicalDeviceSparseImageFormatProperties2KHR::pname:pFormatInfo
to be below the flink:VkPhysicalDeviceSparseImageFormatInfo2KHR
structure.
* Bump API patch number and header version number to 39 for this update.
Github Issues:
* Clarified that only accesses via the specified buffer/image subresource
ranges are included in the access scopes (public issue 306).
* Add missing valid usage statements for flink:vkCreateComputePipelines
and flink:vkCreateGraphicsPipelines (public issue 427).
Internal Issues:
* Add a Note to the <<invariance,Invariance>> appendix about a difference
between OpenGL and Vulkan with regards to how primitives derived from
offsets are handled (internal issue 355).
* Add the +<<VK_KHR_get_physical_device_properties2>>+,
+<<VK_KHR_maintenance1>>+, and +<<VK_KHR_shader_draw_parameters>>+
extensions (internal issue 448).
* Add the +<<VK_EXT_shader_subgroup_vote>>+ and
+<<VK_EXT_shader_subgroup_ballot>>+ extensions (internal issue 449).
* Update the texture level-of-detail equation in the
<<textures-scale-factor,Scale Factor Operation>> section to better
approximate the ellipse major and minor axes (internal issue 547).
* Forbid non-explicitly allowed uses of interface decorations in the
introduction to the <<interfaces,Shader Interfaces>> chapter (internal
issue 607).
* Replace use of MathJax with KaTeX, for improved load-time performance as
well as avoiding the scrolling-and-scrolling behavior due to MathJax
asynchronous rendering when loading at an anchor inside the spec. This
change also requires moving to HTML5 output for the spec instead of
XHTML, and there is a visible difference in that the chapter navigation
index is now in a scrollable sidebar instead of at the top of the
document. We may or may not retain the nav sidebar based on feedback
(internal issue 613).
* Improve consistency of markup and formatting in extension appendices
(internal issue 631).
Other Issues:
* Add explicit valid usage statements to slink:VkImageCopy requiring that
the source and destination layer ranges be contained in their respective
source and destination images.
* Add valid usage language for swapchain of flink:vkAcquireNextImage. If
the swapchain has been replaced, then it should not be passed to
flink:vkAcquireNextImage.
* Add a valid usage statement to flink:vkCreateImageView, that the image
must have been created with an appropriate usage bit set.
* Noted that slink:VkDisplayPresentInfoKHR is a valid extension of
slink:VkPresentInfoKHR in the <<wsi_swapchain,WSI Swapchain>> section.
* Update valid usage for flink:vkCmdSetViewport and flink:vkCmdSetScissor
to account for the multiple viewport feature. If the feature is not
enabled, the parameters for these functions have required values that
are defined in the <<features-features-multiViewport,multiple
viewports>> section of the spec but were not reflected in the valid
usage text for these functions.
* Add the +<<VK_EXT_swapchain_colorspace>>+ extension defining common
color spaces.
* Bump API patch number and header version number to 29 for this update.
Github Issues:
* Remove redundant constraint on
slink:VkCommandBufferInheritanceInfo::pname:queryFlags (public issue
224).
* Fix typo and remove link in Note in the
<<extended-functionality-instance-extensions-and-devices, Instance
Extensions and Device Extensions>> section (public issue 359).
* Fix erroneous validation statement for the pname:layout member of
slink:VkComputePipelineCreateInfo (public issue 362).
Internal Issues:
* Restore long figure captions using asciidoc sidebar blocks, due to
restrictions of asciidoc syntax (internal issue 101).
* Replace most latexmath equations with comparable markup in straight
asciidoc, which significantly improves time required to fully load and
process the HTML forms of the Specification. There are known minor font
and alignment inconsistencies with MathJax and PDF rendering of
latexmath equations. Please do not file github issues about these. We
are aware of the inconsistencies and will make refinements over time,
while the performance improvements are compelling in at least some major
browsers (internal issue 313).
* Move handcoded validity statements from +vk.xml+ into the Specification
body, easing work in the single-branch model. Specify the distinction
between these explicit statements, and the implicit validity statements
inferred from vk.xml. Validity statements now appear in two blocks for
each command and structure - handcoded "Valid Usage" and the implicit
"Valid Usage (Implicit)" (internal issue 392).
* Add the +returnedonly="false"+ attribute to WSI output structures,
removing incorrectly generated implicit validity statements for
slink:VkDisplayPropertiesKHR, slink:VkDisplayPlanePropertiesKHR,
slink:VkDisplayModePropertiesKHR, slink:VkDisplayPlaneCapabilitiesKHR,
slink:VkSurfaceCapabilitiesKHR, and slink:VkSurfaceFormatKHR structures
(internal issue 486).
* Update slink:VkImageLayout to require the
ename:VK_IMAGE_USAGE_SAMPLED_BIT be set for sampled depth/stencil images
(internal issue 487).
* Use an explicit format specifier string for the date command invocation
in the +Makefile+ instead of the shorthand -R option, which doesn't work
on BSD and MaxOS X date commands (internal issue 500).
Other Issues:
* Use the terms ``allocation scope'' and ``extension scope'' instead of
just ``scope'', and add them to the glossary.
* Bump API patch number and header version number to 28 for this update.
Github Issues:
* Minor spelling and typography cleanup, add definitions of
ename:VK_FALSE and ename:VK_TRUE as just what their names say
(public issues 220, 318, 325, 365; internal issues 451, 496)
* Clarify that the pname:maxDescriptorSet limits in the
<<features-limits-required,Required Limits>> table are n *
maxPerStage limit (where n=number of supported stages) (public issue
254).
* Minor cleanup to <<boilerplate-platform-macros,Platform-Specific
Macro Definitions>> appendix (public issue 314).
* Add valid usage statement to slink:VkPipelineLayoutCreateInfo
disallowing multiple push constant ranges for the same shader stage
(public issue 340).
* Clarify the elink:VkSharingMode description of what executing the
"same" barriers means in case of ownership transfer (public issue
347).
* Rename copyright.txt and add COPYING.md to try and reduce confusion
about applicable copyrights (public issue 350).
* Extend the table in the <<boilerplate-wsi-header, Window System-Specific
Header Control>> section to describe the external headers included when
each etext:VK_USE_PLATFORM_* macro is defined (public issue 376).
Internal Issues:
* Add "Revision History" to the PDF outputs following the table of
contents, to match HTML outputs (internal issue 43).
* Clarified that flink:vkMapMemory may fail due to virtual address
space limitations (internal issue 346).
* Add +refBody+ comment markup for ref page autoextraction when required
(internal issue 400).
* Document proper use of "mipmap" and "mip" in the style guide API
naming rules, matching the spelling rules (internal issue 471).
* Tweak the <<extensions,Layers and Extensions>> appendix to note that
the Specification may be built with arbitrary combinations of
extensions (internal issue 483).
* Remove incorrect statement allowing
slink:VkClearAttachment::pname:colorAttachment to be >=
slink:VkSubpassDescription::pname:colorAttachmentCount (internal
issue 488).
* The <<features-limits-viewportboundsrange,viewportBoundsRange>> is
expressed in terms of the pname:maxViewportDimensions but this is
actually two values. Clarify that it's based on the larger of the two
(if they differ) (internal issue 499).
Other Issues:
* Reflowed text of the entire spec using the 'reflow' Makefile gater,
to (hopefully) reduce future internal git churn as edits are made
and extensions added in return for one-time pain. This has no
perceptible change on the spec outputs but considerable changes on
the asciidoc source (internal issue 367).
* Bump API patch number and header version number to 27 for this update.
Github Issues:
* Weaken flink:vkGetPipelineCacheData invariance conditions; previous
conditions were stronger than agreed and can't be guaranteed (public
issue 280).
* Add link to "Vulkan Loader Specification and Architecture Overview"
document to Normative References section (public issue 359).
Internal Issues:
* Be more clear in the <<interfaces-resources-layout-std140, uniform
buffer layout>> section that block offsets can be out of order
(internal issue 396).
* Document that extension authors should add support for their extensions
to the validation layers (internal issue 398).
* Clarify that the valid range of depth clear values should be limited
to the 0..1 range and that copies to depth aspect must also be in this
range (internal issue 412).
* Specify ``a'' vs. ``an'' use in the style guide (internal issue 432).
* Increase the maximum pname:nonCoherentAtomSize value in the
<<features-limits-required,Required Limits>> section from 128 to 256
(internal issue 435).
* Fix vk_platform.h for compiler errors on some Android platforms
(internal issue 441).
* Clarify that slink:VkPhysicalDeviceFeatures::pname:pEnabledFeatures ==
`NULL` disables all features, including the "required" feature
pname:robustBufferAccess (internal issue 479).
Other Issues:
* Expand style guide and make it more self-consistent.
* Use ISO 8601 date format everywhere.
* Emphasise the correct way of using
slink:VkSurfaceCapabilitiesKHR::pname:maxImageCount.
* Added +VK_EXT_validation_flags+ extension for validation flag mechanism.
* Fix an <<credits,author credit>> to include their current employer.
* Bump API patch number and header version number to 26 for this update.
Github Issues:
* Bring sample code in the +VK_KHR_surface+ and +VK_KHR_swapchain+
extension summary appendices up to date, and note they will be replaced
with pointers to the LunarG SDK examples in the future (public issue
279).
* Add a new <<fundamentals-commandsyntax-results-lifetime,Lifetime of
Retrieved Results>> section specifying that ftext:vkGet* and
ftext:VkEnumerate* results are invariant unless otherwise specified, and
specify behavior for individual commands which are not invariant (public
issue 280).
* Remove conflicting definition of
slink:VkDisplayPlaneCapabilitiesKHR::pname:maxSrcPosition and clean up
language of the remaining definition (public issue 351).
* Fix many minor spelling errors and add rules to the style guide to
prevent recurrences (public issue 352).
Internal Issues:
* Remove redundant descriptions of the etext:VK_USE_PLATFORM_* macros from
the <<wsi,Window System Integration>> chapter in favor of the
description in the <<boilerplate-wsi-header,Window System-Specific
Header Control>> appendix (internal issue 6).
* Replace misleading 'can: be destroyed when not X' with more correct
'must: not be destroyed while X' in the
<<fundamentals-objectmodel-lifetime,Object Lifetime>> section. Disallow
destroying a pipeline layout while a command buffer using it is
recording (internal issue 241).
* Clarify that ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT is valid for
all images used as attachments in elink:VkImageUsageFlagBits and the
slink:VkImageLayout validity language (internal issue 320).
* Note that <<extended-functionality-layers,Layers>> may wrap object
handles, but that this is a generally discouraged. A link to additional
information in the documentation for layer authors is provided (issue
398)
* Replace the mustnot: and shouldnot: macros with equivalent must: not and
should: not to get rid of non-English words while still highlighting
normative language (internal issue 407).
* Disallow creating multisampled images with
ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT in the slink:VkImageLayout
validity language and the <<features-supported-sample-counts,Supported
Sample Counts>> section (internal issue 445).
* Fix typo so that flink:vkCmdDrawIndexedIndirect is defined in terms of
flink:vkCmdDrawIndexed rather than flink:vkCmdDrawIndirect (internal
issue 446).
* Reorganize the per-extension information sections to all be in the
<<extensions,Layers & Extensions>> appendix. Also fix a typo in
+VK_IMG_filter_cubic+ which incorrectly identified it as a +KHR+
extension (internal issue 461).
Other Issues:
* Use asciidoc markup instead of latexmath to simplify diagrams in the
<<features-formats-non-packed,byte mapping tables>> for color formats.
* Fix a markup problem with the wildcarded enumerant names in a NOTE in
the <<textures-texel-replacement,Texel Replacement>> section.
* Fix missing attributes in the XML interface for
elink:VkExternalMemoryHandleTypeFlagBitsNV and
elink:VkExternalMemoryFeatureFlagBitsNV (KhronosGroup/Vulkan-Hpp issue
#25)
* Cleanup reference page builds so only core pages are built for releases.
* Bump API patch number and header version number to 25 for this update.
* Structurally change the specification so that multiple extensions are
included in the +1.0+ git branch, and specifications will include or not
include those extensions at build time based on options passed to the
Makefile. See +doc/specs/vulkan/README.html+ and the ``Layers and
Extensions'' section of the ``Vulkan Documentation and Extensions''
document for more information on this change.
* Register and publish new extensions in the single-branch form:
** +VK_NV_external_memory_capabilities+
** +VK_NV_external_memory+
** +VK_NV_external_memory_win32+
** +VK_NV_win32_keyed_mutex+
Github Issues:
* Clarify description of GetInstanceProcAddr and GetDeviceProcAddr (public
issue 212).
* Add SPIR-V <<textures-operation-validation, instruction validation>> for
single-sampled images (public issue 316).
* Fix spelling of ``tesselation'' in a few places and note it as an
exception to the American spelling rules convention (public issue
327).
* Fix Makefile to create output directory for ``styleguide''
target (public issue 329).
* Fix numerous minor issues with incorrectly tags on enumerant names and
table titles (public issue 330).
* Generate specversion.txt date in UTC time and RFC 2822 format
(public issue 335).
* Convert link to the SPIR-V Specification for
flink:VkShaderModuleCreateInfo into an internal link to the normative
reference (public issue 336).
* Add ename:VK_ERROR_OUT_OF_MEMORY error code to
flink:vkCreateDebugReportCallbackEXT (public issue 337).
Internal Issues:
* Update style guide regarding use of code:NULL and dname:VK_NULL_HANDLE
(internal issue 393).
* Change the definition of latexmath:[$q$] in the
<<textures-image-level-selection,texture image level selection>> section
to be the index of the maximum defined level for the view, not the
number of levels in the view (internal issue 406).
* Allow developers to override dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE
with their own binary-compatible definition (internal issue 439).
* Fix +vk_platform.h+ conditional logic causing compile failure with some
Android compilers (internal issue 441).
* Implement the single-branch model as described above (internal issue
461).
Other Issues:
* Bump API patch number and header version number to 23 for this update.
Github Issues:
* Add explicit valid value attributes to pname:sType members in vk.xml
(public issue 34).
* Clarify usage of flink:vkGetInstanceProcAddr and
flink:vkGetDeviceProcAddr (public issue 225).
* Fix a copy-and-paste error in the description of
pname:pSwapchainImageCount saying that it was the count of ``format
pairs'' instead of ``swapchain images'' (public issue 292).
* flink:vkCmdExecuteCommandBuffers requires all command buffers to be
allocated from command pools created for the same queue family (public
issue 296).
* Remove bogus +optional+ attribute for
flink:vkEnumerateDeviceLayerProperties::pname:physicalDevice from vk.xml
(public issue 301).
* Clean up the <<resources-image-views-compatibility,image and image view
compatibility table>> reference and contents. Use full enumerant names.
Refer to pname:layerCount in the ``view parameters'' column instead of
pname:arrayLayers. Require N >= 1 for the cube array subview row, not
just arrayLayers >= 6 N (public issue 304).
* Modify description of <<resources-memory-aliasing,memory aliasing>> to
be consistent with the description of
<<resources-bufferimagegranularity,buffer image granularity>> (public
issue 307).
Internal Issues:
* Describe remaining +vk_platform.h+ macros in the <<boilerplate,API
Boilerplate>> appendix (internal issue 6).
* Clarify
<<features-features-robustBufferAccess,pname:robustBufferAccess>>
feature behavior; what memory can be accessed, how bounds checking is
performed, and allowing for vectorization (internal issue 332).
* Document markup for automatic extraction of reference pages from the
spec sources in the style guide (internal issue 395).
* Allow flink:vkCreateDisplayModeKHR to return
ename:VK_ERROR_INITIALIZAION_FAILED_KHR if the user requests mode
parameters that the specified display does not support (internal issue
411).
* Remove atomic counters (atomic_uint style) from KHR_vulkan_glsl, and
more clearly remove the subroutine keyword alongside it (internal issue
421).
* Clarify behavior of flink:vkCmdBindDescriptorSets for descriptor sets
not contained in the layout (internal issue 427).
Other Commits:
* Change the order in which members of sname:VkAttachmentDescription and
sname:VkPipelineInputAssemblyStateCreateInfo are described to match
their order in the structures.
* Bump API patch number and header version number to 22 for this update.
Github Issues:
* Translate the subpass self-dependency language into concrete
validity statements, and added a validity statement about the
restrictions on layout parameters (public issue 267).
* Add validity requirement that
slink:VkAttachmentDescription::pname:finalLayout and
slink:VkAttachmentReference::pname:layout must not be
ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED (public issue 268).
* Clarify that slink:VkSubpassDescription::pname:pResolveAttachments
layouts are used. Make language consistent with other attachment
arrays (public issue 270).
* Changed 64-bit definition for
dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE to work for x32 platform in
+vk.xml+ and the resulting +vulkan.h+ (public issue 282).
* Add missing error return code for
flink:vkEnumerateInstanceExtensionProperties and
flink:vkEnumerateDeviceExtensionProperties (public issue 285)
* Fix several cases of stext::VkStructName.memberName markup to
stext::VkStructName::pname:memberName, to match other usage in the
spec, and describe this markup in the style guide (public issue
286).
* Modified validity language generation script to avoid redundant
common ancestor language if covered by generic parent language, and
used `Both' instead of `Each' when appropriate (public issue 288).
Internal Issues:
* Add language about behavior of flink:vkAllocateDescriptorSets when
allocation fails due to fragmentation, a new error
ename:VK_ERROR_FRAGMENTED_POOL, and a Note explaining the situation
(internal issue 309).
* For the features of code:PointSize, code:ClipDistance, and
code:CullDistance, the SPIR-V capability is required to be declared
on use (read or write) rather than on decoration (internal issue
359).
* Have desktop versions of GLSL respect precision qualification
(code:mediump and code:lowp) when compiling for Vulkan. These will
get translated to SPIR-V's code:RelaxedPrecision decoration as they
do with OpenGL ES versions of GLSL (ESSL). The default precision of
all types is code:highp when using a desktop version (internal issue
360).
* Add validity statement for slink:VkImageCreateInfo specifying that
multisampled images must be two-dimensional, optimally tiled, and
with a single mipmap level (internal issue 369).
* Add validity statements to slink:VkImageViewCreateInfo disallowing
creation of images or image views with no supported features. Made
some slink:VkImageViewCreateInfo validity statements more precise
and consistent. Added a Note to the <<features,features>> chapter
about formats with no features (internal issue 371).
* Remove +manpages+ from default build targets. Nroff outputs
containing imbedded latexmath will not render properly. Fixing this
is a lot of work for limited use cases (internal issue 401).
Other Commits:
* Fix flink:vkRenderPassBeginInfo::pname:clearValueCount validity
statement to be based on attachment indices rather than the number
of cleared attachments
(Vulkan-LoaderAndValidationLayers/issues/601).
* Convert registry documentation from LaTeX to asciidoc source and
rename from +src/spec/readme.tex+ to +src/spec/registry.txt+.
* Fix lack of Oxford commas in validity language.
* Lots of cleanup of generator scripts and Makefiles to move extension
list for generator into the script arguments instead of the body of
genvk.py, and express better dependencies between XML, scripts, and
generated files.
* Bump API patch number and header version number to 20 for this
update.
Github Issues:
* Replaced existing reference pages by text automatically extracted
from the specification source, or generated from vk.xml in some
cases. This isn't a complete solution for the reference pages, but
puts them in a much better state. The ref pages (only) are now
placed under a CC BY open source license, which is more current than
the obsolete license previously used.
Further improvements to the pages should not edit them directly, but
instead concentrate on the specification source from which the ref
pages are being extracted (public issues 44, 55, 160; internal issue
389).
* Bump API patch number and header version number to 17 for this
update.
Github Issues:
* Update description of vertex shader reuse in
<<shaders-vertex-execution>> (public issue 106).
* Simplify validity language around pname:ppEnabledExtensionNames and
pname:ppEnabledLayerNames (in the <<initialization-instances>> and
<<devsandqueues-device-creation>> sections) (public issue 214).
* Add missing validity rule to flink:vkCmdBeginRenderPass requiring
compatibility between slink:VkAttachmentDescription pname:initalLayout
members and the corresponding attached framebuffer images (public issue
233).
* Fix Unicode arrows appearing in output instead of relational operators
(public issue 239).
* Correctly describe the required number of elements for
code:TessLevelInner and code:TessLevelOuter arrays in the
<<interfaces-builtin-variables,Built-In Variables>> section as two and
four, respectively, instead of the other way around, and refer to this
section from the <<tessellation,Tessellation>> chapter (public issue
246).
Internal Issues:
* Document deprecation of ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR in the
VK_KHR_surface extension branch, and of
ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT in the
VK_EXT_debug_report branch (internal issue 328).
* Added language to define what a valid usage statement is and should be,
with a note about some apparent weirdnesses this might entail (internal
issue 357).
Other Commits:
* Added missing ename:VK_ERROR_DEVICE_LOST error to
flink:vkQueueBindSparse.
* Bump API patch number and header version number to 12 for this
update.
Github Issues:
* Change valid usage statements intended to be "sub-points" to
be actual sub-points (public issue 66).
* Replace double negation in description of
slink:VkRenderPassBeginInfo::pname:pClearValues (based on public
merge 142).
* Cleanup minor typos in spec, ref pages and XML, including those
proposed in public pull requests 144, 150, 151, 167, 168, 181, and
186.
* Use *strict subset* in describing the partial order of memory
property types for slink:VkMemoryType, and update the style guide
accordingly (public issue 190).
* Fix various "a image" -> "an image" typos (public issue 191).
* Note in the <<fundamentals-validusage,Valid Usage>> and
<<extensions-interactions,Extension Interactions>> sections that
structures defined by extensions which may be passed in structure
chains using the ptext:pNext member must: include initial
ptext:sType and ptext:pNext members (public issue 192).
Internal Issues:
* Remove duplicate language from the description of the pname:fence
parameter to flink:vkQueueSubmit and improve validity language
(internal issue 91).
* Added documentation for "optional" attribute to XML readme.tex/pdf
(internal issue 149).
* Clarify the host-side data validity rules and behavior of
flink:vkFlushMappedMemoryRanges and
flink:vkInvalidateMappedMemoryRanges (internal issue 266).
Other Commits:
* Added clarification to flink:vkCmdFillBuffer regarding the use of
ename:VK_WHOLE_SIZE.
* Fixed and documented implementation of "validextensionstructs"
attribute. in XML processing scripts and readme.tex/pdf.
* Add missing validity statements to flink:vkResetEvent and
flink:vkCmdResetEvent.
* Fix validity for the
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag.
Correct all the draw/dispatch commands to mention optimally tiled
images as well as linear tiled images, and say image VIEWS instead
of images. Add validity statement to flink:vkCmdBlitImage
* Replace the {apiname} macro with hardcoded "Vulkan", now that we've
committed to that name.
* Add the VK_AMD_rasterization_order extension to vk.xml.
* Bump API patch number and header version number to 11 for this
update.
Github Issues:
* Clarify the WSI extension language by switching from the fuzzier
"ownership" language to more-consistent "acquire" language (public
issue 117).
* Clarify that memory barriers apply to all commands in the dependency
chains in the flink:vkGetRenderAreaGranularity command and the
<<synchronization-execution-and-memory-dependencies,Execution And
Memory Dependencies>> section (public issue 132).
* Clarify that a queue family is a set of queues in the
<<fundamentals-execmodel,Execution Model>> section (public issue
166).
* Removed requirement from valid usage language that
VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public
issue 171).
* Fix broken internal links, describe structures consistently, use
consistent style for SPIR-V codewords, and tag normative terms that
were missing asciidoc tags (public issue 183 and ancillary
markup/normative language fixes).
* Fix typos for slink:VkPhysicalDeviceLimits member names in
slink:VkImageCreateInfo validity language (public issue 184).
Internal Issues:
* Document that the requested patch version number specified as part
of slink:VkApplicationInfo::pname:apiVersion is ignored when
creating an instance (internal issue 176).
* Clarify handling of extension structs in the
<<fundamentals-validusageValid Usage>> section (internal issue 254).
* Update required slink:VkImageFormatProperties::pname:maxMipLevels to
be limited to the maximum allowed mipmap pyramid size corresponding
to the actual maximum supported size for the format (internal issue
256).
* Modify the <<features-extentperimagetype,Allowed Extent Values Based
On Image Type>> section so the allowed maximum extent is the maximum
image dimension supported for each dimension of the type of texture
being queried (internal issue 257).
* Clarify in the <<spirvenv-module-validation,Validation Rules within
a Module>> section that at least one of the code:LocalSize execution
mode or code:WorkgroupSize decoration is required for each compute
shader entry point in a shader module (internal issue 279).
* Add validity rules for formats in flink:vkCmdClearColorImage and
flink:vkCmdClearDepthStencilImage (internal issue 283).
* Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is
an upper bound, and that it may not be possible to create an image
anywhere near that size (internal issue 284).
Other Commits:
* Fix various minor markup errors reported by validation scripts.
* Change copyright from Khronos Free Use License to Apache 2.0 license
on relevant script/XML/header files. This does not affect the
specification source copyright.
* Bump API patch number to 5 for this update.
Github Issues:
* Correctly describe slink:VkPhysicalDeviceProperties pname:deviceName
member as a string, not a pointer to a string. Also one typo fix for
"hetereogeneous" (public issue 4).
* Replace maynot: macro with may: not, and "may: or maynot:" with
"may:" (public issue 4).
* Clarify that redundantly setting the state of a fence or event has
no effect (public issue 4).
* Minor fixes to ref pages to track descriptions of memory bits that
changed in the core spec. Fix name of a member in the description of
sname:sname:VkPipelineMultisampleStateCreateInfo (public issues 8,
13).
* Remove redundant validity statement for
sname:VkGraphicsPipelineCreateInfo::pname:stageCount (public issue
14).
* Fix typos in chapters 7-9 (public issue 14).
* Clarify the example demonstrating the behavior of
code:OpMemoryBarrier in the
<<shaders-execution-memory-ordering,shader memory acces
ordering>> section (public issue 16).
* Specify that freeing mapped memory implicitly unmaps the memory in
the description of flink:vkFreeMemory (public issue 17).
* Forbid allocation callbacks from calling into the API in the
<<memory-allocation,memory allocation>> section (public issue
20).
* Add missing validity rules about size being greater than 0 and
offset being less than size of object. Fix
flink:VkMappedMemoryRange's misinterpretation of offset (public
issues 27, 31).
* Add validity rule disallowing overlapping source/destination
descriptors in flink:VkCopyDescriptorSet (public issue 32).
* Clarify that array and matrix stride has to be a multiple of the
base alignment of the array or matrix in the
<<interfaces-resources-layout,Offset and Stride Assignment>>
section (public issue 38).
* Correct parenthesis floor nesting error in equation for
<<textures-RGB-sexp,RGB to shared exponent conversion>>.
Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
problem (public issue 40).
* Remove redundant statement from the code:FragDepth description in
the <<interfaces-builtin-variables,Built-In Variables>>
section (public issue 47).
* Define the clamping of the
<<textures-level-of-detail-operation,bias added to the scale
factor>> by linking to the slink:VkPhysicalDevice feature
pname:maxSamplerLodBias (public issue 64).
* Fix typo "optimal linear resources" and clarify the set of resources
<<features-limits-bufferImageGranularity,the
pname:bufferImageGranularity resource>> applies to (public issue
67).
* Replace 'descriptor accessed by a pipeline' language for
sname:VkDescriptorSetAllocateInfo with more precise phrasing about
binding a descriptor set before a command that invokes work using
that set (public issue 69).
* tstripadj.svg contained an Inkscape tag which caused Firefox and IE
11 to fail to render it, and was illegal SVG. Generating Plain SVG
from the Inkscape SVG source fixes this (public issue 70).
* Fix validity for sname:VkVertexInputBindingDescription and
sname:VkVertexInputAttributeDescription numbers (public issue 72).
Internal Issues:
* Clarify the meaning of
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT in
elink:VkFormatFeatureFlagBits with respect to depth compare
(internal issue 107).
* Added a note explaining that ename:VK_QUEUE_TRANSFER_BIT may or may
not be reported for a queue family that already supports
ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT as the
former is a strict subset of the latter ones (internal issue 116).
* Add validity language for sname:VkDescriptorSetAllocateInfo about
exceeding the descriptor pool capacity (internal issue 140).
* Add ename:VK_INCOMPLETE success code for
flink:vkEnumeratePhysicalDevices query (internal issue 163).
Other Commits:
* Add the VK_NV_glsl_shader extension definitions to the API.
* Update GL_KHR_vulkan_glsl with 1) origin_upper_left as default 2)
specialization array constant semantics.
* Corrected/updated Data Format Specification date.
This is for people to review edits for @philiptaylor's points, but I'll
probably pull equivalent changes back into the private repo and merge
there before bringing it back to github in one of the (hopefully) weekly
updates.
[ChangeLog] This bundles up low-hanging editorial issues from public issue
101. Some items from that issue are more complex and remain to be done.
There's also some related cleanup of the extensions appendix to clarify the
distinction between a Vulkan API command, and the functions and function
pointers corresponding to that command which may be provided by the API
loader and runtime.
Remaining todo from #101 :
- [ ] 24.5.1 "Ab, Yb, Zb" -> "Xb, Yb, Zb".
- [ ] 29.2 "explicitly enabled layers" clarification.
- [ ] 30.3.3 Confusingly similar tiny circle symbols in format tables.
- [ ] 30.3.3 Missing information about some formats.
- [ ] C.3 Clarify or punt on "lower-case UTF-8" in FQDN layer names.