/ ChangeLog.txt
ChangeLog.txt
   1  Update Log for the Vulkan-Docs repository on Github. Updates are in reverse
   2  chronological order starting with the latest public release.
   3  
   4  This summarizes the periodic public updates, not individual commits. Updates
   5  on Github are done as single large patches at the release point, collecting
   6  together the resolution of many Khronos internal issues, along with any
   7  public pull requests that have been accepted.
   8  
   9  -----------------------------------------------------
  10  
  11  Change log for July 7, 2019 Vulkan 1.1.114 spec update:
  12  
  13    * Update release number to 114.
  14  
  15  Internal Issues:
  16  
  17    * Fix extension appendix for `<<VK_INTEL_performance_query>>` to remove
  18      duplicate citation of ename:VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL
  19      (internal merge request 3234).
  20  
  21  New Extensions:
  22  
  23    * `<<VK_KHR_imageless_framebuffer>>`
  24  
  25  -----------------------------------------------------
  26  
  27  Change log for June 30, 2019 Vulkan 1.1.113 spec update:
  28  
  29    * Update release number to 113.
  30  
  31  Github Issues:
  32  
  33    * Fix typo in `<<VK_EXT_global_priority>>` appendix (public issue 979).
  34  
  35  Internal Issues:
  36  
  37    * Expand the explanation of
  38      slink:VkSamplerYcbcrConversionImageFormatPropertiesKHR::pname:combinedImageSamplerDescriptorCount,
  39      and explain how it interacts with slink:VkWriteDescriptorSet,
  40      slink:VkDescriptorSetLayoutBinding::pname:descriptorCount, and
  41      slink:VkDescriptorPoolSize::pname:descriptorCount (internal issue 1643).
  42    * Clarify restrictions on components for code:OpImageGather in the
  43      <<spirvenv-module-validation, Validation Rules within a Module>> section
  44      (internal issue 1707).
  45    * Clarify the descriptions of <<limits-computeUnitsPerShaderArray,
  46      pname:computeUnitsPerShaderArray>> and <<limits-wavefrontSize,
  47      pname:wavefrontSize>> fields in
  48      slink:VkPhysicalDeviceShaderCorePropertiesAMD.
  49  
  50  New Extensions:
  51  
  52    * `<<VK_EXT_texel_buffer_alignment>>`
  53    * `<<VK_EXT_shader_demote_to_helper_invocation>>`
  54  
  55  -----------------------------------------------------
  56  
  57  Change log for June 23, 2019 Vulkan 1.1.112 spec update:
  58  
  59    * Update release number to 112.
  60  
  61  Github Issues:
  62  
  63    * Clarify that it is possible to use the <<memory-host, Host Memory>>
  64      pname:pfnReallocation callback to free memory in any case that
  65      pname:pfnFree could be used (public issue 973).
  66  
  67  Internal Issues:
  68  
  69    * Clarify range and precision of code:OpImageQueryLod in the discussion of
  70      scale factor and level-of-detail operation in the
  71      <<textures-normalized-operations, Normalized Texel Coordinate
  72      Operations>> section (internal issues 926, 1719).
  73    * Fix framebuffer layer valid usage statements for
  74      slink:VkRenderPassCreateInfo, slink:VkRenderPassCreateInfo2KHR, and
  75      slink:VkFramebufferCreateInfo (internal issue 1670).
  76    * Refactor common valid usage statements for flink:vkCmdBeginQuery and
  77      flink:vkCmdBeginQueryIndexedEXT (internal issue 1682).
  78    * Prohibit the ename:ename:VK_SAMPLER_YCBCR_RANGE_ITU_NARROW range from
  79      being used in slink:VkSamplerYcbcrConversionCreateInfo for formats with
  80      a bit depth less than 8 (internal issue 1688).
  81    * Add missing interactions with `<<VK_EXT_host_query_reset_usage>>` in the
  82      <<queries, Queries>> chapter (internal issue 1692).
  83    * Clean up error output from the `optimize-pdf` build script on success.
  84    * Fix an internal link to the <<spirvenv-correctly-rounded, Correctly
  85      Rounded>> section in the SPIR-V appendix by adding and referring to that
  86      anchor.
  87    * Fix extension version numbers in `vk.xml` for `VK_EXT_filter_cubic` and
  88      `VK_IMG_filter_cubic`.
  89    * Specify division precision for negative numbers, and remove statement
  90      that trigonometric functions have undefined precision, in the
  91      <<spirvenv-precision-operation, Precision and Operation of SPIR-V
  92      Instructions>> appendix.
  93  
  94  -----------------------------------------------------
  95  
  96  Change log for June 10, 2019 Vulkan 1.1.111 spec update:
  97  
  98    * Update release number to 111.
  99  
 100  Github Issues:
 101  
 102    * Clean up flink:vkGetPhysicalDeviceSurfaceFormatsKHR and
 103      flink:vkGetPhysicalDeviceSurfaceFormats2KHR to drop the
 104      ename:VK_FORMAT_UNDEFINED case, require callers pass a supported
 105      surface, and rearrange some validation-related language (public issue
 106      207).
 107    * Allow dynamic and nonuniform indexing of acceleration structures in the
 108      <<interfaces-resources-descset, Descriptor Set Interface>> section
 109      (public KhronosGroup/glslang issue 1766).
 110  
 111  Internal Issues:
 112  
 113    * Clarify when images require the use of YCbCr samplers for
 114      slink:VkWriteDescriptorSet and slink:VkImageViewCreateInfo (internal
 115      issue 1639).
 116    * Remove the "`block`" language around <<features-robustBufferAccess,
 117      vectorizing and robust buffer access>> (internal issue 1642).
 118    * Allow code:OpTypeImageFormat == code:Unknown for input attachments in
 119      the <<interfaces-resources-descset, Descriptor Set Interface>> section
 120      (internal issue 1645).
 121    * Fix asciidoctor conditionals around
 122      ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT in the
 123      <<fundamentals-errorcodes>> section (internal issue 1679).
 124    * Remove error codes from `vk.xml` for
 125      flink:vkUninitializePerformanceApiINTEL, which has a `void` return type
 126      (internal issue 1704).
 127    * Various subgroup-related fixes in the <<spirvenv-capabilities,
 128      Capabilities>>, <<shaders-subgroup-arithmetic, Arithmetic Subgroup
 129      Operations>>, <<shaders-subgroup-clustered, Clustered Subgroup
 130      Operations>>, and <<shaders-subgroup-partitioned, Partitioned Subgroup
 131      Operations>> sections (internal merge request 3164).
 132    * Fix asciidoctor markup affecting math rendering in the <<Precision of
 133      core SPIR-V Instructions>> table (internal merge request 3166).
 134    * Fix incorrect reference to flink:vkGetPhysicalDeviceFeatures2KHR in the
 135      description of slink:VkPhysicalDeviceASTCDecodeFeaturesEXT (internal
 136      merge request 3169).
 137    * Fix a non-sentence in the introduction to the <<textures, Image
 138      Operations Overview>> section (internal merge request 3184).
 139    * Minor markup, grammar, and typo fixes for the
 140      `<<NV_shader_sm_builtins>>` extension spec language (internal merge
 141      request 3189).
 142    * Clarify that 1D and 1D array format support is optional for cubic
 143      filters, immediately following the <<formats-mandatory-features-astc,
 144      Mandatory ASTC LDR format support>> table (internal merge request 3194).
 145  
 146  -----------------------------------------------------
 147  
 148  Change log for June 2, 2019 Vulkan 1.1.110 spec update:
 149  
 150    * Update release number to 110.
 151  
 152  Github Issues:
 153  
 154    * Fix typo (public pull request 972).
 155    * Rename Pastel driver ID to SwiftShader (public pull request 974).
 156  
 157  New Extensions:
 158  
 159    * `<<VK_EXT_fragment_shader_interlock>>`
 160    * `<<VK_NV_shader_sm_builtins>>`
 161  
 162  -----------------------------------------------------
 163  
 164  Change log for May 24, 2019 Vulkan 1.1.109 spec update:
 165  
 166    * Update release number to 109.
 167  
 168  Github Issues:
 169  
 170    * Require matching for physical devices to be in a device group in the
 171      <<devsandqueues-devices, Devices>> section (public issue 695).
 172    * Fix typo in an equation in the <<fragmentdensitymap-fetch-density-value,
 173      Fetch Density Value>> section (public issue 954).
 174    * Fix styleguide links (public pull request 965).
 175  
 176  Internal Issues:
 177  
 178    * Allow <<renderpass-compatibility, compatibility of single-subpass
 179      renderpasses>> with different resolve attachments (internal issue 1464).
 180    * Add some missing empty flags types to API spec so custom refpage
 181      generation doesn't break (internal issue 1607).
 182    * Add a "`SPIR-V Sampled Type`" column to the <<formats-numericformat,
 183      Interpretation of Numeric Formats>> table, and clarify the requirement
 184      that the code:OpTypeImage sampled type match the bound image's numeric
 185      format for slink:VkClearColorValue and in the
 186      <<interfaces-resources-descset, Descriptor Set Interface>> section
 187      (internal issue 1646).
 188    * Fix a typo in the <<tessellation-quad-tessellation, Quad Tessellation>>
 189      section which should refer to rectangles, not triangles (internal issue
 190      1667).
 191    * Clarify the definition of time domains in elink:VkTimeDomainEXT
 192      (internal merge request 3110).
 193    * Add R10X6 and R12X4 formats to the <<formats-mandatory-features-10bit>>
 194      table (internal merge request 3137).
 195    * Don't require extern sync on wait/signal semaphores in `vk.xml` for
 196      flink:vkQueueSubmit and flink:vkQueueBindSparse (internal merge request
 197      3116).
 198    * Improve phrasing of compute and mesh shader size related to
 199      code:LocalSize and code:WorkgroupSize in
 200      slink:VkPhysicalDeviceMeshShaderPropertiesNV and
 201      slink:VkPhysicalDeviceMaintenance3Properties (internal merge request
 202      3156).
 203    * Make the flink:vkCmdBindShadingRateImageNV pname:imageView parameter
 204      optional in `vk.xml` (internal merge request 3157).
 205  
 206  New Extensions:
 207  
 208    * `<<VK_INTEL_performance_query>>`
 209    * `<<VK_INTEL_shader_integer_functions2>>`
 210  
 211  -----------------------------------------------------
 212  
 213  Change log for May 13, 2019 Vulkan 1.1.108 spec update:
 214  
 215    * Update release number to 108.
 216  
 217  Internal Issues:
 218  
 219    * Clarify that only external resources can be bound to external memory in
 220      valid usage statements for flink:vkBindBufferMemory,
 221      flink:vkBindImageMemory, slink:VkSparseMemoryBind, and
 222      slink:VkSparseImageMemoryBind (internal issue 1496).
 223    * Move all `vk.xml`requirements for
 224      flink:vkGetDeviceGroupSurfacePresentModes2EXT into
 225      `<<VK_EXT_full_screen_exclusive>>` (internal issue 1622).
 226    * Add some missing valid usage statements for
 227      flink:vkCmdEndQueryIndexedEXT (internal issue 1638).
 228    * Specify rules for defining "`New Flags and Bitmask Types`" in that
 229      section of the style guide (internal issue 1649).
 230    * Add a comment to the `vk.xml` extension block for
 231      `VK_ANDROID_native_buffer` explaining why the extension is tagged
 232      `"disabled"` (internal issue 1657).
 233    * Fix typos in the description of slink:VkImageViewCreateInfo (internal
 234      issue 1661).
 235    * Modify valid usage statements for slink:VkImageViewCreateInfo to fix the
 236      description about the restriction for pname:baseArrayLayer and
 237      pname:layerCount from pname:extent.depth to the depth of mipmap level
 238      while creating a 2D array image view on a 3D image.
 239    * Forbid structures that contain opaque types (images or samplers) in the
 240      SPIR-V <<spirvenv-module-validation, Validation Rules within a Module>>
 241      section.
 242    * Minor editorial changes for the `VK_EXT_swapchain_colorspace` extension
 243      in the description of slink:VkColorSpace KHR and `vk.xml`, including:
 244    ** Consistently specify which function (OETF or Inverse-EOTF) is being
 245       defined;
 246    ** Remove the Display P3 EOTF, since no other EOTFs are defined;
 247    ** Include luminance range for the HLG OETF;
 248    ** Remove a duplicated paragraph; and,
 249    ** Rename ename:VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, leaving the old
 250       ename:VK_COLOR_SPACE_DCI_P3_LINEAR_EXT token as an alias.
 251  
 252  New Extensions:
 253  
 254    * `<<VK_NV_framebuffer_mixed_samples_coverage_reduction_mode>>`
 255    * `<<VK_KHR_uniform_buffer_standard_layout>>`
 256  
 257  -----------------------------------------------------
 258  
 259  Change log for April 16, 2019 Vulkan 1.1.107 spec update:
 260  
 261    * Update release number to 107.
 262  
 263  Public Issues:
 264  
 265    * Fix revision date for the `<<VK_AMD_gpu_shader_half_float>>` appendix
 266      (public issue 617).
 267    * Make <<synchronization-pipeline-barriers-subpass-self-dependencies,
 268      subpass self-dependencies>> less restrictive (public issue 777).
 269    * Fix the `<<VK_EXT_full_screen_exclusive>>` dependency on
 270      `<<VK_KHR_win32_surface>>` in `vk.xml` (public pull request 849).
 271    * Remove single-page (`apispec.html`) refpage sub-targets from the
 272      Makefile `allman` target and the build instructions. The target is still
 273      present in the Makefile, but we have not been actively maintaining the
 274      single-page document and do not promise it will work. The full
 275      Specification and the individual API reference pages are what we support
 276      and publish at present (public issue 949).
 277  
 278  Internal Issues:
 279  
 280    * De-duplicate common valid usage statements shared by multiple commands
 281      or structures by using asciidoctor includes and dynamically assigning
 282      part of the valid usage ID based on which command or structure they're
 283      being applied to (internal issue 779).
 284    * Add reference pages for constructs not part of the formal API, such as
 285      platform calling convention macros, and script changes supporting them
 286      This required suppressing some check_spec_links warning classes in order
 287      to pass CI, until a more sophisticated fix can be done (internal issue
 288      888).
 289    * Change math notation for the elink:VkPrimitiveTopology descriptions to
 290      use short forms `v` and `p` instead of `vertex` and `primitive`,
 291      increasing legibility (internal issue 1611).
 292    * Rewrite generated file includes relative to a globally specified path,
 293      fixing some issues with refpage generation (internal issue 1630).
 294    * Update contributor list for `<<VK_EXT_calibrated_timestamps>>`.
 295    * Fix use of pathlin in `scripts/generator.py` so the script will work on
 296      Windows under Python 3.5 (internal merge request 3107).
 297    * Add missing conditionals around the
 298      <<descriptorsets-accelerationstructure, Acceleration Structure>>
 299      section (internal merge request 3108).
 300    * More script synchronization with OpenXR spec repository (internal merge
 301      request 3109).
 302    * Mark the `<<VK_AMD_gpu_shader_half_float>>` and
 303      `<<VK_AMD_gpu_shader_int16>>` extensions as deprecated in `vk.xml` and
 304      the corresponding extension appendices (internal merge request 3112).
 305  
 306  New Extensions:
 307  
 308    * `<<VK_EXT_headless_surface>>`
 309  
 310  -----------------------------------------------------
 311  
 312  Change log for April 7, 2019 Vulkan 1.1.106 spec update:
 313  
 314    * Update release number to 106.
 315  
 316  Public Issues:
 317  
 318    * Add searchbox and generate search index for the chunked HTML target.
 319      Note that doing this requires several new toolchain components to build
 320      the `chunked` target (public issue 578 / internal issue 1352).
 321    * Remove descriptions of flink:vkCreateSampler sampler constraints which
 322      were repeated in the valid usage statements (public pull request 648).
 323    * Fix sense of conditional around a valid usage statement in the
 324      <<copies>> chapter (public issue 942).
 325  
 326  Internal Issues:
 327  
 328    * Add missing pname:extent.width and pname:extent.height valid usage
 329      statements for flink:vkCmdClearAttachments (internal issue 1583).
 330    * Fix some inconsistencies in structures and corresponding pname:sType
 331      enumerant names by renaming
 332      sname:VkPhysicalDeviceShaderDrawParameterFeatures ->
 333      slink:slink:VkPhysicalDeviceShaderDrawParametersFeatures;
 334      sname:VkPhysicalDeviceVariablePointerFeatures ->
 335      slink:VkPhysicalDeviceVariablePointerFeatures;
 336      sname:VkPhysicalDeviceVariablePointerFeaturesKHR ->
 337      slink:VkPhysicalDeviceVariablePointerFeaturesKHR;
 338      sname:VkPhysicalDeviceBufferAddressFeaturesEXT ->
 339      slink:VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
 340      etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
 341      ->
 342      ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
 343      etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES ->
 344      ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
 345      etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR ->
 346      ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR;
 347      and etext:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT
 348      ->
 349      ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT.
 350      The old names are still available as aliases for backwards
 351      compatibility. This change required introducing valid XML markup which
 352      externally written XML processing scripts may need to be modified to
 353      accomodate, to support multiple aliases of a single command or token
 354      name (internal issue 1592).
 355    * Add slink:VkDevice as the first parameter to flink:vkSetLocalDimmingAMD
 356      (internal issue 1618).
 357    * Improve CI header compilation tests to test all Vulkan platform
 358      includes, using fake platform headers where needed, and change the
 359      `allchecks` Makefile target to use the more comprehensive
 360      `check_spec_links.py` script instead of the retired `checkinc` and
 361      `checklinks` targets.
 362    * Move descriptions of the ASTC compressed texture decode mode from the
 363      <<appendix-compressedtex-astc,appendix>> to the recently updated
 364      external Khronos Data Format Specification.
 365    * Fix minor markup and spelling issues in the `VK_NV_ray_tracing`
 366      extension.
 367  
 368  -----------------------------------------------------
 369  
 370  Change log for March 19, 2019 Vulkan 1.1.105 spec update (GDC edition):
 371  
 372    * Update release number to 105.
 373  
 374  Public Issues:
 375  
 376    * Fix contractions and other markup issues (public pull request 935).
 377  
 378  New Extensions:
 379  
 380    * Google Games Platform
 381    ** New `ggp` platform and associated header file `vulkan_ggp.h`
 382    ** `VK_GGP_frame_token`
 383    ** `VK_GGP_stream_descriptor_surface`
 384  
 385  -----------------------------------------------------
 386  
 387  Change log for March 18, 2019 Vulkan 1.1.104 spec update:
 388  
 389    * Update release number to 104.
 390  
 391  Public Issues:
 392  
 393    * Remove the incorrect line from "`Initial`" to "`Invalid`" state in the
 394      <<commandbuffer-lifecycle-diagram, Lifecycle of a command buffer>>
 395      diagram (public issue 881).
 396    * Add Fuchsia platform to <<boilerplate-wsi-header-table, Window System
 397      Extensions and Headers>> table (public pull request 933).
 398    * Change the type of
 399      slink:VkBufferDeviceAddressCreateInfoEXT::pname:deviceAddress from
 400      basetype:VkDeviceSize to basetype:VkDeviceAddress. These are both
 401      typedefs of code:uint64_t, so it is an ABI-compatible change (public
 402      issue 934).
 403  
 404  Internal Issues:
 405  
 406    * Remove generated header files and update the CI tests to build a copy of
 407      the headers for use by the hpp-generate / hpp-compile CI stages. Targets
 408      to generate the headers will not be removed, but keeping these generated
 409      files in the repository increased the frequency of conflicts between
 410      branches when merging to master (internal issue 745).
 411    * Reword "`undefined: behavior if *action*" to "`must: not do *action*`"
 412      in the places the old terminology was used, and add a new
 413      <<writing-undefined, Describing Undefined Behavior>> section of the
 414      style guide to explain how to write such language in the future
 415      (internal issue 1579).
 416    * Move almost all Python scripts into the toplevel `scripts/` directory.
 417      Apply extensive internal edits to clean up and simplify the scripts, and
 418      try to follow PEP8 guidelines. Generalize the scripts with the use of a
 419      Conventions object controlling many aspects of output generation, to
 420      enable their use in other Khronos projects with similar requirements.
 421      Autogenerate extension interface refpages (these are experimental and
 422      may be retired going forward).
 423  
 424  New Extensions:
 425  
 426    * `VK_AMD_display_native_hdr`
 427    * `VK_EXT_full_screen_exclusive` (internal issue 1439)
 428    * `VK_EXT_host_query_reset`
 429    * `VK_EXT_pipeline_creation_feedback` (internal issue 1560)
 430    * `VK_KHR_surface_protected_capabilities` (internal issue 1520)
 431  
 432  -----------------------------------------------------
 433  
 434  Change log for March 11, 2019 Vulkan 1.1.103 spec update:
 435  
 436    * Update release number to 103.
 437  
 438  Public Issues:
 439  
 440    * Remove (unnecessary) scoped modification order case from the memory
 441      model <<memory-model-location-ordered, location-ordered>> definition
 442      (public pull request 924).
 443    * Add an <<memory-model-acyclicity, acyclicity>> axiom to the memory model
 444      (public pull request 927).
 445  
 446  Internal Issues:
 447  
 448    * Fix reversed logic of slink:VkFormatProperties discussion of multi-plane
 449      formats and ename:VK_FORMAT_FEATURE_DISJOINT_BIT (internal issue 1493).
 450    * Clarify how slink:VkImageStencilUsageCreateInfoEXT works, including new
 451      valid usage statements for flink:vkCmdClearDepthStencilImage, and the
 452      <<copies, Common Operation>> section of the Copy Commands chapter
 453      (internal issue 1565).
 454    * Update <<spirvenv-precision-operation, Precision and Operation of SPIR-V
 455      Instructions>> section to require that denorms be preserved by several
 456      instructions that don't perform any mathematical operations (internal
 457      issue 1584).
 458    * Remove duplicate valid usage statement from flink:vkAcquireNextImageKHR
 459      (internal merge request 3062).
 460  
 461  -----------------------------------------------------
 462  
 463  Change log for March 3, 2019 Vulkan 1.1.102 spec update:
 464  
 465    * Update release number to 102.
 466  
 467  Public Issues:
 468  
 469    * Simplify flink:vkGetImageMemoryRequirements constraint for
 470      ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT (public pull request 817).
 471    * Fix typo in markup of the <<textures-texel-coordinate-systems-diagrams,
 472      Texel Coordinate Systems, Corner Sampling>> image that was generating
 473      complaints from chunked HTML output generation (public pull request
 474      928).
 475  
 476  Internal Issues:
 477  
 478    * Split the old <<features, Features>> chapter into four chapters:
 479      <<features, Features>>, <<limits, Limits>>, <<formats, Formats>>, and
 480      <<capabilities, Capabilities>>, with minor edits to the introductory
 481      paragraph of each chapter. Anchor names in these chapters were changed,
 482      with corresponding effects to xrefs to these anchors elsewhere in spec
 483      markup . The purpose is to make the chunked HTML spec output load faster
 484      on what was previously a single, gigantic chapter (internal issue 1554).
 485    * Add ename:VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV, to the supported
 486      pipeline stages for ename:VK_ACCESS_UNIFORM_READ,
 487      ename:VK_ACCESS_SHADER_READ, and ename:VK_ACCESS_SHADER_WRITE in the
 488      <<synchronization-access-types-supported>> table.
 489    * Correct legal name of Google, LLC in vk.xml <tags> section and a
 490      copyright statement.
 491    * Clarify that Vulkan treats the Android
 492      code:AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM format as RGBA, and the
 493      application is responsible for forcing the X/A component to be read as
 494      1.0, in the <<memory-external-android-hardware-buffer-formats>> table.
 495    * Clarify the vertex order of various primitive topologies, and define the
 496      order of transform feedback vertex capture based on that. This involves
 497      a lot of refactoring and cleanup in the <<drawing-primitive-topologies,
 498      Primitive Topologies>>, <<geometry-input, Geometry Shader Input
 499      Primitives>> sections, and <<vertexpostproc-transform-feedback Transform
 500      Feedback>> sections, and numerous places in the <<tessellation>>
 501      chapter,
 502  
 503  New Extensions:
 504  
 505    * `VK_EXT_metal_surface`
 506    * `VK_EXT_ycbcr_image_arrays` (internal issue 1361).
 507    * `VK_NVX_image_view_handle`
 508  
 509  -----------------------------------------------------
 510  
 511  Change log for February 17, 2019 Vulkan 1.1.101 spec update:
 512  
 513    * Update release number to 101.
 514  
 515  Public Issues:
 516  
 517    * Make clear that memory types for imported host memory must be host
 518      visible in slink:VkMemoryHostPointerPropertiesEXT.txt (public issue
 519      897).
 520    * Make <<interfaces-resources-layout, WARNING block>> into a NOTE block,
 521      per the styleguide (public pull request 916).
 522  
 523  Internal Issues:
 524  
 525    * Make <<textures-output-format-conversion, computation of derivatives in
 526      non-uniform flow control>> have undefined behavior (internal issue
 527      1367).
 528    * Make behavior, not just values, undefined for
 529      <<textures-layout-validation, reads from inconsistent YCbCr layouts>>
 530      (internal issue 1366).
 531    * Consolidate version and extension behavior documentation in the
 532      <<extended-functionality, Extended Functionality>> appendix, While a
 533      great deal of text was moved from other parts of the Specification into
 534      the appendix, this just serves to simplify and make consistent
 535      discussions of versions and extensions (internal issue 1473).
 536    * Add limits for slink:VkPhysicalDeviceRayTracingPropertiesNV in the
 537      <<features-limits-types, Required Limit Types>> and
 538      <<features-limits-required, Required Limits>> tables (internal issue
 539      1511).
 540    * Disallow <<memory-protected-memory, indirect calls within protected
 541      command buffers>> by adding valid usage statements for the related
 542      indirect dispatch and draw commands (internal issue 1513).
 543    * Add valid usage stataements to slink:VkGraphicsPipelineCreateInfo,
 544      slink:VkSubpassDescription, slink:VkSubpassDescription2KHR,
 545      slink:VkSubpassDescriptionDepthStencilResolveKHR, and
 546      slink:VkImageViewCreateInfo preventing the creation of a renderpass with
 547      attachments in formats that are not supported for rendering (internal
 548      issue 1552).
 549    * Qualify valid usage statements for
 550      slink:VkAttachmentReference::pname:layout parameter so restrictions only
 551      apply if an attachment is ename:VK_ATTACHMENT_UNUSED (internal issue
 552      1561).
 553    * Add valid usage statement for flink:vkCmdDrawIndirectByteCountEXT
 554      restricting pname:vertexStride to be positive (internal issue 1566).
 555    * Make the `VK_EXT_sample_locations` extension depend on
 556      `VK_KHR_get_physical_device_properties2` in `vk.xml`.
 557    * Rearrange and simplify the <<interfaces-resources-layout, block layout
 558      rules>>.
 559  
 560  New Extensions:
 561  
 562    * `VK_NV_cooperative_matrix`
 563    * `VK_EXT_depth_clip_enable` (internal issue 1485).
 564  
 565  -----------------------------------------------------
 566  
 567  Change log for February 10, 2019 Vulkan 1.1.100 spec update:
 568  
 569    * Update release number to 100.
 570  
 571  Public Issues:
 572  
 573    * Clarify that scoped modification order only relates to
 574      <<memory-model-atomic-operation, atomic writes>> (public pull request
 575      906).
 576    * Remove `readme.txt` reference from `xml/README.adoc` (public pull
 577      request 907).
 578    * Add missing slink:VkShaderResourceUsageAMD to the <<Vk_AMD_shader_info>>
 579      appendix (public pull request 908).
 580    * Fix markup for <<VK_EXT_filter_cubic>> appendix (public pull request
 581      911).
 582    * Fix typo "`attachment`" (public pull request 914).
 583    * Alias the enums for `VK_IMG_filter_cubic` properly to the corresponding
 584      `VK_EXT_filter_cubic` enums, so they appear in the corresponding
 585      enumerated types, instead of as #defines (Vulkan-Headers issue 40).
 586  
 587  Internal Issues:
 588  
 589    * Remove nested conditionals in valid usage statements for
 590      slink:VkFramebufferCreateInfo and flink:vkCmdPipelineBarrier by
 591      duplicating statements along ifdef/ifndef paths for
 592      VK_KHR_depth_stencil_resolve (internal issue 1527).
 593    * Clarify allowed values of <<spirv-precision-operation, SPIR-V operations
 594      near infinity>>. For very large results of operations the allowed range
 595      of return values as defined in the spec didn't include the largest
 596      finite number. In some rounding modes (eg. RTZ) the largest finite
 597      number is the correctly rounded result, so it should be allowed.
 598    * Require descriptor types to match in slink:VkCopyDescriptorSet.
 599  
 600  -----------------------------------------------------
 601  
 602  Change log for February 3, 2019 Vulkan 1.1.99 spec update:
 603  
 604    * Update release number to 99.
 605  
 606  Public Issues:
 607  
 608    * Add missing pname:pMemoryHostPointerProperties description to
 609      flink:vkGetMemoryHostPointerPropertiesEXT.txt (public pull request 896).
 610    * Minor markup fixes (public pull request 900).
 611    * Minor update to `khronos.css` and markup fixes (originally proposed in
 612      public pull request 901, but done via an internal MR).
 613  
 614  Internal Issues:
 615  
 616    * Document restrictions on image queries for Y'CbCr formats in the
 617      <<features-formats-requiring-sampler-ycbcr-conversion>> table as well as
 618      for slink:sname:VkImageFormatProperties and slink:VkImageCreateInfo
 619      (internal issue 1361).
 620    * Correct type of the code:FragSizeEXT built-in in the
 621      <<interfaces-builtin-variables, Built-In Variables>> section (internal
 622      issue 1526).
 623    * Clean up math in the <<textures, Image Operations>> chapter by
 624      refactoring, using better naming conventions, updating diagrams to use
 625      the correct orientation, etc. (internal merge request 2968).
 626    * Fix minor typos for slink:VkImageCreateInfo and
 627      slink:VkImageStencilUsageCreateInfoEXT.
 628    * Add missing documentation for tlink:VkResolveModeFlagsKHR.
 629    * Fix extension dependency of pname:scalarBlockLayout in the
 630      <<features-features-requirements, Feature Requirements>> section.
 631    * Fix indexing math for shader binding table calculations in the
 632      <<shader-binding-table-indexing-rules, Indexing Rules>> section, and use
 633      spelling "`any-hit`" consistently.
 634    * Reconcile valid usage statement and text for sampled image layouts in
 635      slink:VkWriteDescriptorSet
 636      (https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/551).
 637    * Make SPIR-V code:OpConvertUToPtr and code:OpConvertPtrToU operations
 638      require a 64-bit integer for physical storage buffer pointers in the
 639      <<spirvenv-module-validation, Validation Rules within a Module>>
 640      section.
 641    * Update to KaTeX 10.0.
 642  
 643  New Extensions:
 644  
 645    * `VK_EXT_filter_cubic`
 646    * `VK_NV_dedicated_allocation_image_aliasing`
 647  
 648  -----------------------------------------------------
 649  
 650  Change log for January 13, 2019 Vulkan 1.1.98 spec update:
 651  
 652    * Update release number to 98.
 653  
 654  Public Issues:
 655  
 656    * Fix missing markup in flink:vkDestroyPipelineLayout valid usage
 657      statement (pull request 882).
 658    * Add missing contributors for `<<VK_EXT_buffer_device_address>>` (public
 659      pull request 891).
 660  
 661  Internal Issues:
 662  
 663    * Detect nested bullet points in valid usage blocks and warn about them
 664      during VUID assignment (internal issue 1382).
 665    * Update the style guide to document the process for reserving new bits in
 666      bitmask types (internal issue 1411).
 667    * Clarify for slink:VkApplicationInfo::pname:apiVersion and in the
 668      <<fundamentals-validusage-versions, Valid Usage for Newer Core
 669      Versions>> section when it is valid for an application to use a certain
 670      version of Vulkan API functionality (for an instance and for a
 671      device/physical device); and when the validation layers must generate an
 672      error (internal issue 1412).
 673    * Add optional <<memory-model-availability-visibility, transitive
 674      availability/visibility operations to the memory model, including a new
 675      pname:vulkanMemoryModelAvailabilityVisibilityChains feature for
 676      slink:VkPhysicalDeviceVulkanMemoryModelFeaturesKHR (internal issue
 677      1460).
 678    * Add the code:StorageBuffer storage class to those in the
 679      <<interfaces-resources-descset, Descriptor Set Interface>> (internal
 680      issue 1480).
 681    * Add missing `returnedonly` tags for a number of returned extension
 682      structures that can be passed in pname:pNext chains (internal issue
 683      1515).
 684    * Clean up and rearrange some spec language for
 685      slink:VkRenderPassCreateInfo and slink:VkAttachmentReference.txt
 686      (internal issue 1522).
 687    * Correctly round the code:OpVectorTimesScalar and
 688      code:OpMatrixTimesScalar SPIR-V operations in the <<Precision of core
 689      SPIR-V Instructions>> table (internal merge request 2996).
 690    * Work around cases in flink:vkCmdBeginTransformFeedbackEXT,
 691      flink:vkCmdEndTransformFeedbackEXT, and
 692      slink:VkPipelineCoverageModulationStateCreateInfoNV where an array
 693      parameter is `optional` but the length is not in `vk.xml`. This is an
 694      interim fix using `noautovalidity` + handcoded VU replacing those that
 695      should be autogenerated (internal issue 2944 and
 696      https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/480).
 697    * Remove redundant capability validation of the code:float16 and code:int8
 698      SPIR-V capabilities from the <<spirvenv-capabilities, Capabilities>>
 699      section, since they are already covered in the preceding table.
 700    * Update check_spec_links script, including validation for reference page
 701      open blocks. Fix errors identified by the script.
 702  
 703  -----------------------------------------------------
 704  
 705  Change log for January 05, 2019 Vulkan 1.1.97 spec update:
 706  
 707    * Update release number to 97.
 708  
 709  Public Issues:
 710  
 711    * Add a special case to the <<renderpass-compatibility, Render Pass
 712      Compatibility>> rules allowing single-subpass renderpasses to be
 713      compatible even if they have different resolve attachment references
 714      (public issue 835).
 715    * Fix the miss shader binding table record address rule in the
 716      <<shader-binding-table-indexing-rules, Miss Shaders>> section to index
 717      by code:missIndex, not code:sbtOffset (public issue 875).
 718  
 719  Internal Issues:
 720  
 721    * Add a missing anchor to the elink:VkSamplerCreateFlagBits language
 722      (internal issue 1483).
 723    * Add missing implicit valid usage include for slink:VkHdrMetadataEXT and
 724      corresponding `noautovalidity` attributes in `vk.xml` for the
 725      externally-defined metadata properties (internal issue 1514).
 726    * Remove restrictions on the `mask` parameter of SPIR-V's
 727      code:OpGroupNonUniformXor in the <<spirvenv-module-validation,
 728      Validation Rules within a Module>> appendix (internal merge request
 729      2971).
 730    * Restore `noautovalidity` attribute for
 731      slink:VkPipelineViewportWScalingStateCreateInfoNV::pname:pViewportWScalings
 732      in `vk.xml` (internal merge request 2975).
 733    * Update copyright dates on Khronos-copyrighted files to 2019 (internal
 734      merge request 2980).
 735  
 736  New Extensions:
 737  
 738    * `VK_KHR_depth_stencil_resolve`
 739    * `VK_EXT_buffer_device_address`
 740    * `VK_EXT_memory_budget`
 741    * `VK_EXT_memory_priority`
 742    * `VK_EXT_validation_features`
 743  
 744  -----------------------------------------------------
 745  
 746  Change log for December 16, 2018 Vulkan 1.1.96 spec update:
 747  
 748    * Update release number to 96.
 749  
 750  Public Issues:
 751  
 752    * Fix typo in `vk.xml` for `structextends` attribute of
 753      slink:VkPhysicalDeviceShadingRateImagePropertiesNV (public PR 870).
 754    * Fix links in optimized PDF output (public PR 879).
 755  
 756  Internal Issues:
 757  
 758    * Add a link to GitHub contributors in the <<credits, Other Credits>>
 759      section (internal issue 808).
 760    * Clarify the behavior of command aliases described in the <<versions,
 761      Core Revisions>> and <<initialization-functionpointers, Command Function
 762      Pointers>> sections and the registry schema document with respect to
 763      whether they are or are not the same entry point, and what the behaviour
 764      of the ftext:vkGet*ProcAddr commands is for each alias (internal issue
 765      1462).
 766    * Update slink:VkPipelineShaderStageCreateInfo valid usage statements for
 767      writing to code:Layer and code:viewportIndex to apply to any vertex
 768      processing stage (internal issue 1475).
 769    * Make sparse image creation optional for Y'C~B~C~R~ formats in the
 770      <<features-required-format-support, Required Format Support>> section
 771      and the <<features-formats-requiring-sampler-ycbcr-conversion, Formats
 772      requiring sampler Y'C~B~C~R~ conversion for
 773      ename:VK_IMAGE_ASPECT_COLOR_BIT image views>> table (internal issue
 774      1476).
 775    * Modify the valid usage statement for
 776      flink:vkCmdDrawIndirectByteCountEXT::pname:vertexStride to use the
 777      pname:maxTransformFeedbackBufferDataStride limit rather than the
 778      pname:maxVertexInputBindingStride limit, which is a better match for
 779      transform feedback related operations (internal issue 1487).
 780    * Changed all members of slink:VkPhysicalDevicePCIBusInfoPropertiesEXT to
 781      have the `uint32_t` type. This is an imcompatible change to an EXT
 782      that's very recently released; although this is against usual Vulkan WG
 783      policy, we discussed and consider this an acceptable risk, but have
 784      polled the mesa-dev list in case there are use cases we missed (internal
 785      issue 1492).
 786    * Set spec vetsion to 1 for `VK_GOOGLE_hlsl_functionality1` and
 787      `VK_GOOGLE_decorate_string` in `vk.xml` (internal MR 2948).
 788    * Remove redundant valid usage statement `VkImageCreateInfo-pNext-02395`
 789      (internal MR 2950).
 790    * Add `check_spec_links.py` script, use it in Gitlab CI, and fix many
 791      minor markup issues discovered by the script (internal MR 2955).
 792    * Update `BUILD.md` to the current Ruby version (2.5.3), and make some
 793      corresponding updates to per-platform build instructions (internal MR
 794      2956).
 795    * Fix binding numbers and other details in
 796      flink:vkUpdateDescriptorSetWithTemplate.txt example code blocks
 797      (internal MR 2960).
 798    * Remove some nautovalidity="true" in `vk.xml` for NV extensions where
 799      it's clearly wrong (internal MR 2970).
 800  
 801  -----------------------------------------------------
 802  
 803  Change log for December 3, 2018 Vulkan 1.1.95 spec update:
 804  
 805    * Update release number to 95.
 806  
 807  Public Issues:
 808  
 809    * Fix valid usage and XML issues found in public issues 789 and 790 for
 810      the `VK_EXT_debug_utils` extension (public pull request 794).
 811    * Replace references to `VK_NV_dedicated_allocation` with links to the
 812      corresponding slink:slink:VkMemoryDedicatedRequirements and
 813      slink:slink:VkMemoryDedicatedAllocateInfo structures in the description
 814      of elink:VkExternalMemoryFeatureFlagBits (public issue 801).
 815    * Fix miscellaneous minor markup and spelling issues in
 816      `VK_NV_ray_tracing` extension (public pull request 860).
 817    * Remove "returnedonly" from XML for
 818      slink:VkPhysicalDeviceInlineUniformBlockFeaturesEXT and
 819      slink:VkPhysicalDeviceVulkanMemoryModelFeaturesKHR (public issue 862).
 820  
 821  Internal Issues:
 822  
 823    * Add to the description of the
 824      <<features-limits-maxComputeSharedMemorySize,
 825      pname:maxCompureSharedMemorySize>> feature to state the shared variables
 826      should be packed at least as tightly as std430 (internal issue 1386).
 827    * Fix and clarify various references to image and image view usage in
 828      flink:vkCmdBindShadingRateImageNV, flink:vkCmdBeginRenderPass, and
 829      slink:VkImageStencilUsageCreateInfoEXT (internal issue 1432).
 830    * Require that the slink:VkImage mipmap chain match the Android hardware
 831      buffer mipmap chain for slink:VkMemoryAllocateInfo (internal issue
 832      1479).
 833    * Fix the definition of slink:VkSwapchainCreateInfoKHR valid usage
 834      statement 01778 (Vulkan-ValidationLayers!15)
 835    * Fix descriptions of <<interfaces-builtin-variables-launchid,
 836      code:LaunchIDNV>> and <<interfaces-builtin-variables-launchsize,
 837      code:LaunchSizeNV>> to code:uvec3.
 838  
 839  New Extensions:
 840  
 841    * `VK_KHR_shader_float16_int8`
 842    * `VK_KHR_shader_float_controls`
 843  
 844  -----------------------------------------------------
 845  
 846  Change log for November 25, 2018 Vulkan 1.1.94 spec update:
 847  
 848    * Update release number to 94.
 849  
 850  Public Issues:
 851  
 852    * Use the terms "`texel block`" and "`texel block size`" instead of "`data
 853      element`" and "`element size`", and define "`element`" as an array slot.
 854      In addition to the terminology changes, retitled the <<texel-block-size,
 855      Representation and Texel Block Size>> section and added texel block size
 856      / no. of texels/block information to the
 857      <<features-formats-compatibility, Compatible Formats>> table. There is
 858      some additional work underway to make sure the compatibility language
 859      makes sense for all of uncompressed, compressed, and multiplanar formats
 860      (public issue 763).
 861    * Cleanup `VK_NV_ray_tracing` language (public issues 858, 859).
 862  
 863  Internal Issues:
 864  
 865    * Specify in <<shaders-invocationgroups, Invocation and Derivative
 866      Groups>> and <<textures-output-format-conversion, Texel Output Format
 867      Conversion>> that derivative groups are quads when code:SubgroupSize >=
 868      4 (internal issue 1390).
 869    * Make the type of slink:VkDescriptorUpdateTemplateCreateInfo::pNext
 870      `const` following pattern for the other stext:Vk*CreateInfo structures
 871      (internal issue 1459).
 872    * Specify that flink:vkCmdClearAttachments executes as a drawing command,
 873      rather than a transfer command (internal issue 1463).
 874    * Update `VK_NV_ray_tracing` to use code:InstanceId instead of
 875      code:InstanceIndex.
 876  
 877  New Extensions:
 878  
 879    * `VK_KHR_swapchain_mutable_format`
 880    * `VK_EXT_fragment_density_map`
 881  
 882  -----------------------------------------------------
 883  
 884  Change log for November 18, 2018 Vulkan 1.1.93 spec update:
 885  
 886    * Update release number to 93.
 887  
 888  Public Issues:
 889  
 890    * Add spec language for ename:VK_INDEX_TYPE_NONE_NV and fix up
 891      slink:VkAccelerationStructureTypeNV (public issue 848).
 892    * Add missing suffix in description of slink:VkSubpassDescription2KHR
 893      parameters (public pull request 851).
 894    * Fix miscellaneous typos (public pull request 855).
 895    * Add driver ID for Pastel (public pull request 856).
 896    * Add missing include directive for slink:VkMemoryWin32HandlePropertiesKHR
 897      implicit valid usage statements (public pull request 857).
 898  
 899  Internal Issues:
 900  
 901    * Restrict the storage classes permitted for SPIR-V atomics to what is
 902      actually supported, in the <<spirvenv-module-validation, Validation
 903      Rules within a Module>> section (internal issue 1123).
 904    * Add a missing Valid Usage statement to slink:VkRenderPassCreateInfo for
 905      the case pname:stencilLoadOp == ename:VK_LOAD_OP_CLEAR, pname:layout ==
 906      ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL (internal issue
 907      1408).
 908    * Modify optimize-pdf script and Makefile to retain non-optimized original
 909      PDF on errors (internal issue 1435).
 910    * Add <<spirvenv-module-validation, SPIR-V validation rules>> stating that
 911      only the listed code:BuiltIn decorations are permitted, and only when
 912      relevante features and extensions are enabled (internal issue 1449).
 913    * Remove some duplicated Valid Usage IDs created via cut & paste error
 914      (internal issue 1455).
 915    * Build HTML output for extension reference pages (internal issue 1461).
 916    ** Improve genRef.py handling of aliases defined inside other refpages.
 917    ** Emit aliases in pygenerator.py.
 918    ** Add XML noautovalidity flag for VkRenderPassCreateFlags until there
 919       are some corresponding FlagBits defined.
 920    ** Corrected types= attribute on some refpage blocks to 'flags'
 921    ** Added refpage blocks for some missing types detected by CI tests.
 922    * Fixed many Valid Usage statement issues in slink:VkRenderPassCreateInfo,
 923      slink:VkSubpassDescription, slink:VkSubpassDescription2KHR,
 924      slink:VkSubpassDependency2KHR, flink:vkCmdBeginRenderPass,
 925      flink:vkCmdBeginRenderPass2KHR, and slink:VkRenderPassBeginInfo
 926      discovered while adding `VK_KHR_create_renderpass2` to the validation
 927      layers.
 928  
 929  New Extensions:
 930  
 931    * `VK_EXT_scalar_block_layout`
 932    * `VK_EXT_separate_stencil_usage`
 933  
 934  -----------------------------------------------------
 935  
 936  Change log for November 12, 2018 Vulkan 1.1.92 spec update:
 937  
 938    * Update release number to 92.
 939  
 940  Public Issues:
 941  
 942    * Move and modify valid usage statements dealing with pname:aspectMask in
 943      flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage, and
 944      slink:VkClearAttachment, so they are in places where all necessary
 945      information is available (public issue 529).
 946    * Fix math markup in <<textures-texel-anisotropic-filtering, Texel
 947      Anisotropic Filtering>> (public pull request 840).
 948    * Fix misspellings (public pull request 845).
 949  
 950  Internal Issues:
 951  
 952    * Add installation instructions and a Makefile "`chunked`" target for
 953      chunked HTML generation (internal issue 1352).
 954    * Fix pipeline mesh diagram style; also fix a minor bug in the classic
 955      pipeline diagram where vertex/index buffers wrongly fed into the vertex
 956      shader (internal issue 1436).
 957    * Make asciidoctor ERROR output raise an error, and don't suppress
 958      executed command output from CI make invocation (internal issue 1454).
 959    * Minor typo fixes and clarifications for `VK_NV_raytracing`.
 960    * Cleanup extension-specific properties
 961    ** Remove duplicated documentation for pname:maxDiscardRectangles,
 962       pname:pointClippingBehavior, and pname:maxVertexAttribDivisor (they
 963       shouldn't be documented with the other members of
 964       slink:VkPhysicalDeviceLimits at all).
 965    ** Remove duplicate anchor for pname:maxVertexAttribDivisor
 966    ** Consistently document stext:VkPhysicalDevice<Extension>PropertiesKHR
 967    *** Always document pname:sType/pname:pNext (was inconsistent before)
 968    *** Always mention chaining to slink:VkPhysicalDeviceProperties2 (and not
 969        as slink:VkPhysicalDeviceProperties2KHR)
 970    *** Always include Valid Usage statements last
 971    * Update Makefile 'checklinks' target and associated scripts, and fix
 972      markup problems identified by checkLinks.py, so that we can rely on the
 973      checklinks script as part of Gitlab CI.
 974  
 975  -----------------------------------------------------
 976  
 977  Change log for November 4, 2018 Vulkan 1.1.91 spec update:
 978  
 979    * Update release number to 91.
 980  
 981  Public Issues:
 982  
 983    * Update Ubuntu subsystem build instructions in `BUILD.adoc` (public pull
 984      request 624).
 985    * Delete the `VK_KHR_mir_surface` extension from the Specification and
 986      XML, due to EOL of the only driver known to have supported it, and
 987      near-EOL of Mir itself (public issue 814).
 988    * Fix options for some figures that were using old ones (public pull
 989      request 841).
 990    * Fix various accidentally repeated words (public pull request 843).
 991    * Use `time.process_time()`, introduced in Python 3.3, in the scripts
 992      instead of `time.clock()`, which will be removed in Python 3.8 (public
 993      pull request 844).
 994  
 995  Internal Issues:
 996  
 997    * Update valid usage statements for
 998      `VK_ANDROID_external_memory_android_hardware_buffer` in
 999      slink:VkMemoryAllocateInfo,
1000      slink:VkImportAndroidHardwareBufferInfoANDROID, and
1001      flink:vkGetAndroidHardwareBufferPropertiesANDROID to actually be
1002      verifiable (internal issue 1419).
1003    * Update valid usage statements for
1004      `VK_ANDROID_external_memory_android_hardware_buffer` in
1005      slink:VkMemoryAllocateInfo, slink:VkImageCreateInfo, and
1006      slink:VkImageViewCreateInfo to move valid usage statements in
1007      doubly-nested bullet points up one level, accomodating limitations of
1008      the valid usage extraction script that creates `validusage.json`
1009      (internal issue 1434).
1010    * Fix typo etext:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV to the correct
1011      ename:VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV.
1012    * Add missing etext:VK_STRUCTURE_TYPE_* tokens to appendices for
1013      extensions missing them.
1014  
1015  New Extensions:
1016  
1017    * `VK_AMD_memory_overallocation_behavior`
1018    * `VK_NV_ray_tracing`, replacing `VK_NVX_raytracing`
1019  
1020  -----------------------------------------------------
1021  
1022  Change log for October 28, 2018 Vulkan 1.1.90 spec update:
1023  
1024    * Update release number to 90.
1025  
1026  Public Issues:
1027  
1028    * Tag flink:vkQueueWaitIdle as `externsync` in `vk.xml` (public pull
1029      request 815).
1030    * Update README (public pull request 834).
1031    * `VK_NV_framebuffer_mixed_samples` and `VK_AMD_mixed_attachment_samples`
1032      had confusing and contradictory valid usage statements when read in the
1033      all-extensions spec build. Change them to explicitly mention which
1034      extension each is for (public issue Vulkan-ValidationLayers/issues/353).
1035  
1036  Internal Issues:
1037  
1038    * Update `COPYING.md` to clarify how externally generated Vulkan
1039      Specifications (for translations, annotations, or other reasons) must be
1040      copyrighted, and acknowledge the Exception Clause on the `vk.xml`
1041      license (internal issue 1079).
1042    * Specify that flink:vkGetPhysicalDeviceImageFormatProperties may: return
1043      pname:maxMipLevels 1 if the format is ycbcr (internal issue 1361).
1044    * Clarify previously underspecified language for
1045      flink:vkCmdPushConstants::pname:pStageFlags regarding use of push
1046      constants across multiple pipelines (internal issue 1403).
1047    * Fix typo in XML/headers for
1048      ename:VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT,
1049      which was previously
1050      etext:VK_STRUCTURE_TYPE_IMAGE_EXCPLICIT_DRM_FORMAT_MODIFIER_CREATE_INFO_EXT
1051      (internal issue 1428).
1052    * Fix markup of equations that were sporadically breaking the
1053      `optimize-pdf` step of PDF generation, due (apparently) to inconsistent
1054      treatment of unwrapped multicharacter terms by different LaTeX parsers
1055      (internal issue 1435).
1056    * For the <<memory-model-synchronizes-with synchronizes-with>> memory
1057      model relation cases involving a release barrier plus relaxed atomic
1058      write, treat the atomic as if it were a release atomic and allow the
1059      acquire side to read from its hypothetical release sequence. This is
1060      more consistent with how C++ defines synchronization for release fences
1061      (internal issue cross-api/memory-model#72).
1062    * Minor editorial changes to the <<memory-model, memory model>> appendix
1063      based on external feedback.
1064  
1065  -----------------------------------------------------
1066  
1067  Change log for October 21, 2018 Vulkan 1.1.89 spec update:
1068  
1069    * Update release number to 89.
1070  
1071  Public Issues:
1072  
1073    * Clarify the reference to <<features-limits-mipmapPrecisionBits, mipmap
1074      precision bits>> in the <<textures-image-level-selection, Image Level(s)
1075      Selection>> section (public issue 660).
1076    * Update <<debugging-object-types,VkObjectType and Vulkan Handle
1077      Relationship>> table with missing types (public pull request 820).
1078    * Miscellaneous minor markup cleanup (public pull request 822).
1079    * Fix copy/paste bugs in the description of how implicit
1080      availability/visibility operations for atomics/barriers are ordered in
1081      the <<memory-model-availability-visibility-semantics, Availability and
1082      Visibility Semantics>> section (public issue 823).
1083    * Add missing shading_rate_image bit from mesh pipeline list in the
1084      <<synchronization-pipeline-stages-types>> list (public issue 824).
1085  
1086  Internal Issues:
1087  
1088    * Clarify that only statically used members of a push constant block need
1089      to be in the push constant range, and stop referring to block members as
1090      "`variables`" in the <<interfaces-resources-pushconst, Push Constant
1091      Interface>> section. This is related to
1092      https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/340
1093      (internal issue 1401).
1094    * Clarify interaction between flink:vkCmdSetDeviceMask and render pass
1095      control commands in the slink:VkDeviceGroupRenderPassBeginInfo section
1096      (internal issue 1416).
1097    * Miscellaneous minor markup cleanup.
1098    * Remove types defined by `"disabled"` extensions from
1099      validextensionstructs in the XML processing scripts, so downstream code
1100      generators don't emit them.
1101  
1102  -----------------------------------------------------
1103  
1104  Change log for October 13, 2018 Vulkan 1.1.88 spec update:
1105  
1106    * Update release number to 88.
1107  
1108  Public Issues:
1109  
1110    * Make clear that
1111      tname:PFN_vkDebugUtilsMessengerCallbackEXT::pname:messageTypes is a
1112      bitmask, and correct a typo in the spelling of
1113      slink:VkDebugUtilsMessengerCreateInfoEXT.txt::pname:messageType (public
1114      pull request 800).
1115    * Make an ABI-compatible change of the type of
1116      slink:VkPhysicalDeviceDriverPropertiesKHR::pname:driverID to use the new
1117      elink:VkDriverIdKHR type (public issue 811).
1118  
1119  Internal Issues:
1120  
1121    * Clarify for the <<features-features-shaderStorageImageExtendedFormats>>
1122      feature and in the <<spirvenv-capabilities-table>> that the feature
1123      means that all of the formats are supported, and that otherwise the
1124      features can be queried per-format (internal issue 1273).
1125    * Clarified interactions of `VK_EXT_external_memory_host` with host cache
1126      management commands and structures flink:vkMapMemory,
1127      flink:vkFlushMappedMemoryRanges, slink:VkMappedMemoryRange, and
1128      flink:vkUnmapMemory using the new glossary term "`Host Mapped Device
1129      Memory`" (internal issue 1385).
1130    * Update the language for flink:vkCreateViSurfaceNN.txt describing the
1131      pname:currentExtent of a VI surface to more accurately reflect current
1132      capabilities, replacing "`undefined`" with more explicit behavior
1133      (internal issue 1410).
1134  
1135  New Extensions:
1136  
1137    * `VK_EXT_calibrated_timestamps`
1138    * `VK_EXT_image_drm_format_modifier` (this extension was previously
1139      disabled in vk.xml, and has now been enabled after some changes to fix
1140      performance issues).
1141    * `VK_EXT_pci_bus_info`
1142    * `VK_EXT_transform_feedback`
1143    * `VK_GOOGLE_hlsl_functionality1`, exposing support for
1144      `SPV_GOOGLE_hlsl_functionality1`.
1145    * `VK_GOOGLE_decorate_string`, exposing support for
1146      `SPV_GOOGLE_decorate_string`.
1147  
1148  -----------------------------------------------------
1149  
1150  Change log for October 7, 2018 Vulkan 1.1.87 spec update:
1151  
1152    * Update release number to 87.
1153  
1154  Public Issues:
1155  
1156    * Merge flink:vkCmdPipelineBarrier self-dependency barrier VUs referring
1157      to the same subpass dependency (public pull request 756).
1158    * Describe default value of `"optional"` attribute in the registry schema
1159      document (public issue 769)
1160    * Fix links in <<VK_NVX_raytracing>> extension (public pull request 805).
1161    * Mark the <<VK_KHR_mir_surface>> extension obsolete (see public issue 814
1162      - does not close this, however).
1163    * Fix missing endif in Image Creation block (public issue 817).
1164  
1165  Internal Issues:
1166  
1167    * Clarify that the compressed texture formats corresponding to
1168      <<features-features-textureCompressionETC2>>,
1169      <<features-features-textureCompressionASTC_LDR>>, and
1170      <<features-features-textureCompressionBC>> is not contingent on the
1171      feature bits, and may be supported even if the features are not enabled
1172      (internal issue 663).
1173    * Clarify that code:FragStencilRefEXT is output only in the
1174      <<interfaces-builtin-variables, Built-In Variables>> section (internal
1175      issue 1173).
1176    * Identify and correct many overly-aggressive uses of "`undefined`", and
1177      narrow them down, where straightforward to do so. Mark such resolved
1178      uses of "`undefined`" with the custom undefined: macro. Add a new
1179      <<writing-undefined, Describing Undefined Behavior>> section (internal
1180      issue 1267).
1181    * Don't require code:inline_uniform_block descriptors to be populated
1182      before use in the flink:vkAllocateDescriptorSets section (internal issue
1183      1380).
1184    * Allow suppressing inline SVG images by controlling this with an
1185      attribute set in the Makefile, rather than the explicit [%inline]
1186      directive (internal issue 1391).
1187    * Mark 'Khronos' as a registered trademark in several places, now that it
1188      is one.
1189    * Fix typo in the <<VK_KHR_shader_atomic_int64>> appendix using the GLSL
1190      naming of the compare exchange op when referring to the SPIR-V op.
1191    * Specify in the flink:vkGetPhysicalDeviceQueueFamilyProperties section
1192      that all implementations must support at least one queue family, and
1193      that every queue family must contain at least one queue.
1194    * Make slink:VkPipelineDynamicStateCreateInfo::pname:dynamicStateCount,
1195      slink:VkSampleLocationsInfoEXT::pname:sampleLocationsPerPixel, and
1196      slink:VkSampleLocationsInfoEXT::pname:sampleLocationsCount optional, to
1197      fix bogus implicit valid usage checks that were causing failures in the
1198      conformance tests.
1199    * Fix vendor tag in reserved extension 237 constants. Does not affect
1200      anything since it's just a placeholder, but this should avoid further
1201      comments.
1202    * Minor markup fixes in some extension appendices.
1203  
1204  New Extensions:
1205  
1206    * `<<VK_FUCHSIA_imagepipe_surface>>`
1207  
1208  -----------------------------------------------------
1209  
1210  Change log for September 29, 2018 Vulkan 1.1.86 spec update:
1211  
1212    * Update release number to 86.
1213  
1214  Internal Issues:
1215  
1216    * Add new <<resources-image-creation-limits, Image Creation Limits>>
1217      section and reference that from valid usage statements, reducing
1218      combinatorial complexity of extension-dependent VUs. Also fixes some
1219      underspecified limits (such as pname:maxMipLevels) in the VUs for
1220      slink:VkImageCreateInfo when
1221      slink:VkExternalMemoryImageCreateInfo::pname:externalMemoryHandles
1222      contains multiple bits, and fixes incorrectly (and underspecified)
1223      limits when an Android external format is used (internal issue 1370).
1224    * Remove unused "`Fragment Area Granularity`" glossary entry accidentally
1225      introduced in the 1.1.85 update.
1226  
1227  New Extensions:
1228  
1229    * `VK_KHR_driver_properties`
1230    * `VK_KHR_shader_atomic_int64`
1231    * The specification sources contain text for another extension,
1232      `VK_EXT_image_drm_format_modifier`, but this extension is not yet
1233      complete, and is marked disabled in `vk.xml`. The extension will be
1234      enabled, and become part of the spec, only when the authors decide it is
1235      ready.
1236  
1237  -----------------------------------------------------
1238  
1239  Change log for September 19, 2018 Vulkan 1.1.85 spec update:
1240  
1241    * Update release number to 85.
1242  
1243  Public Issues:
1244  
1245    * Add self-dependency ename:VK_DEPENDENCY_BY_REGION_BIT valid usage
1246      statements for slink:VkSubpassDependency(public pull request 778).
1247    * Apply fix from pull request 742 to slink:VkSubpassDependency and
1248      slink:VkSubpassDependency2 (public pull request 779).
1249    * Specify the units of slink:VkBufferImageCopy::pname:bufferRowLength and
1250      pname:bufferImageHeight as texels (public pull request 781).
1251    * Better specify promoted parameter mapping in the
1252      `<<VK_KHR_create_renderpass2>>` appendix (public pull request 782).
1253  
1254  Internal Issues:
1255  
1256    * Only include the <<fundamentals-validusage-versions, Valid Usage for
1257      Newer Core Versions>> section in Vulkan 1.1 or later (internal issue
1258      1381).
1259  
1260  Other Issues:
1261  
1262    * Clean up redundant valid usage language for the
1263      `VK_ANDROID_external_memory_android_hardware_buffer` extension
1264      interaction with slink:VkImageCreateInfo.
1265    * Fix error in a flag name within valid usage statements for
1266      slink:VkMemoryAllocateInfo.
1267    * Clarify that memory types are not totally ordered in
1268      slink:VkPhysicalDeviceMemoryProperties.
1269    * For slink:VkWriteDescriptorSetInlineUniformBlockEXT, set
1270      structextends="VkWriteDescriptorSet" in `vk.xml`, and make
1271      slink:VkDescriptorSetLayoutBindingFlagsCreateInfoEXT::pname:pBindingFlags
1272      optional.
1273    * Add documentation of 'provisional' XML attribute to registry.txt.
1274  
1275  New Extensions:
1276  
1277    * `VK_NV_compute_shader_derivatives`
1278    * `VK_NV_corner_sampled_image`
1279    * `VK_NV_fragment_shader_barycentric`
1280    * `VK_NV_mesh_shader`
1281    * `VK_NV_representative_fragment_test`
1282    * `VK_NV_scissor_exclusive`
1283    * `VK_NV_shader_image_footprint`
1284    * `VK_NV_shading_rate_image`
1285    * `VK_NVX_raytracing`
1286  
1287  -----------------------------------------------------
1288  
1289  Change log for September 8, 2018 Vulkan 1.1.84 spec update:
1290  
1291    * Update release number to 84.
1292  
1293  Public Issues:
1294  
1295    * Fix code sample in the `<<VK_EXT_debug_utils>>` extension (public issue
1296      751).
1297    * Fix misleading comment in `vk.xml` for
1298      slink:VkDescriptorBufferInfo::pname:buffer (public pull request 762).
1299    * Fix formatting of deprecation attributes in schema doc (public pull
1300      request 767).
1301    * Change `can` to `may` in the description of
1302      elink:VkSparseImageFormatFlagBits, which are return values from queries
1303      (public pull request 768).
1304    * Prettify generated contact list in extension appendices, adding logos
1305      and a New Issue link (public pull request 770).
1306    * Enable sRGB conversion based on the image view format, not the image
1307      format, in the <<textures-format-conversion, Format Conversion>> section
1308      (public pull request 773).
1309    * Fix typo in equation in the <<primsrast-lines-basic, Basic Line Segment
1310      Rasterization>> section (public pull request 780).
1311    * Fix special characters in GitHub contacts links (public pull request
1312      783).
1313    * Make clean_pdf target remove pdf folder (public pull request 784).
1314    * Fix styleguide bad markup of block continuation (public pull request
1315      792).
1316  
1317  Other Issues:
1318  
1319    * Allow a zero vertex attribute divisor in the
1320      `<<VK_EXT_vertex_attribute_divisor>>` extension, exposed via the
1321      slink:VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT feature.
1322    * Add missing `structextends="VkDeviceCreateInfo"` to
1323      slink:VkPhysicalDeviceShaderDrawParameterFeatures and
1324      slink:VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.
1325  
1326  New Extensions:
1327  
1328    * `VK_KHR_memory_model`
1329    * `VK_EXT_astc_decode_mode`
1330    * `VK_EXT_inline_uniform_block`
1331  
1332  -----------------------------------------------------
1333  
1334  Change log for August 13, 2018 Vulkan 1.1.83 spec update:
1335  
1336    * Update release number to 83.
1337  
1338  Public Issues:
1339  
1340    * Use [%inline] directive for all SVGs to reduce file size (public pull
1341      request 734).
1342    * Convert XML `value` aliases into <alias> tags (public pull request
1343      747).
1344    * Fix metadoc script showing non-selected extensions (public pull request
1345      748).
1346    * Reapply public pull request 742 to make
1347      ename:VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT part of the
1348      graphices pipeline (public pull request 749).
1349    * Fix numerous typos related to accidental duplication of words (public
1350      pull request 760).
1351    * Fix `vk.xml` contact typos (public pull request 761).
1352  
1353  
1354  Internal Issues:
1355  
1356    * Add images to the <<Standard sample locations>> table (internal issue
1357      1115).
1358    * Add a definition of "`Inherited from`" precision in the
1359      <<spirvenv-precision-operation, Precision and Operation of SPIR-V
1360      Instructions>> section (internal issue 1314).
1361    * Clarify that both built-in and user-defined variables count against the
1362      location limits for shader interfaces in the
1363      <<interfaces-iointerfaces-locations, Location Assignment>> section
1364      (internal issue 1316).
1365    * Merge "`required`" capabilities into the <<spirvenv-capabilities-table,
1366      list of optional: SPIR-V capabilities>> (internal issue 1320).
1367    * Relax the layout matching rules of descriptors referring to only a
1368      single aspect of a depth/stencil image, by reference to the new
1369      <<resources-image-layouts-matching-rule, Image Layout Matching Rules>>
1370      section (internal issue 1346).
1371    * Revert extension metadoc generator warning about name mismatches to a
1372      diagnostic, due to annoying warnings in build output for conscious
1373      choices we've made (internal issue 1351).
1374  
1375  Other Issues:
1376  
1377    * Reserve bits for pending vendor extensions.
1378    * Make Vulkan consistent with SPIR-V regarding code:DepthReplacing and
1379      code:FragDepth in the <<interfaces-builtin-variables, Built-In
1380      Variables>> section.
1381    * Add missing ChangeLog entries for the previous three spec updates.
1382  
1383  -----------------------------------------------------
1384  
1385  Change log for July 30, 2018 Vulkan 1.1.82 spec update:
1386  
1387    * Update release number to 82.
1388  
1389  Public Issues:
1390  
1391    * Add flink:vkDestroyPipelineLayout valid usage statement that the layout
1392      must not have been used with command buffers still in the recording
1393      state (public issue 730).
1394    * Correct <unused> tag for elink:VkResult in `vk.xml` (public merge
1395      request 746).
1396  
1397  Internal Issues:
1398  
1399    * Add a valid usage statement to flink:vkQueueSubmit, and similar language
1400      to the definitions of <<synchronization-queue-transfers-acquire, acquire
1401      operations>> requiring that an acquire operation follow a previous
1402      release of the same subresource (internal issue 1290).
1403    * Add <<resources-image-format-features,Image Format Features>> and
1404      <<resources-image-view-format-features,Image View Format Features>>
1405      sections that precisely define the slink:VkFormatFeatures supported by
1406      images and image views, and rewrite valid usage statements to reference
1407      these sections instead of duplicating language (internal issue 1310).
1408    * Reword and consolidate synchronization valid usage statements for
1409      flink:vkCmdPipelineBarrier such that they correctly account for mutiple
1410      possible self-dependencies (internal issue 1322).
1411    * Change order of <<Standard sample locations>> for 2xMSAA (internal issue
1412      1347).
1413    * Add definitions of "`<<Correctly Rounded>>`" and "`<<ULP>>`" in the
1414      SPIR-V environment appendix, and "`Units in the Last Place (ULP)`" in
1415      the glossary.
1416  
1417  New Extensions:
1418  
1419    * `VK_NV_device_diagnostic_checkpoints`
1420  
1421  -----------------------------------------------------
1422  
1423  Change log for July 23, 2018 Vulkan 1.1.81 spec update:
1424  
1425    * Update release number to 81.
1426  
1427  Public Issues:
1428  
1429    * Fix missing "`valid`" phrasing in some obscure cases (public pull
1430      request 605).
1431    * Replace improper use of cannot: referring to the implementation in the
1432      description of the
1433      <<features-limits-maxUpdateAfterBindDescriptorsInAllPools,
1434      pname:maxUpdateAfterBindDescriptorsInAllPools>> limit (public pull
1435      request 738).
1436    * Reorder description of bits in elink:VkPipelineStageFlagBits and the
1437      <<synchronization-pipeline-stages-supported, Supported pipeline stage
1438      flags>> table to match their definition order (public pull request 740).
1439    * Add description of ename:VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
1440      to elink:VkBufferUsageFlagBits (public pull request 741).
1441    * Fix value usage statement for slink:VkSubpassDependency stage mask
1442      parameters (public pull request 742).
1443    * Fix visible markup in registry schema document (public pull request
1444      #745).
1445  
1446  Internal Issues:
1447  
1448    * Make the <<geometry-invocations, geometry shader invocation
1449      description>> and <<shaders-geometry-execution, Geometry Shader
1450      Execution>> descriptions consistent with other pipeline stages (internal
1451      issue 1325).
1452    * Mark the `VK_NV_glsl_shader` extension as deprecated.
1453    * Adjust the per-instance vertex attribute offset formula specified by
1454      `VK_EXT_vertex_attribute_divisor` for
1455      slink:VkVertexInputBindingDivisorDescriptionEXT so that the interaction
1456      between pname:firstInstance and pname:divisor matches the OpenGL
1457      convention (internal issue 1333).
1458  
1459  -----------------------------------------------------
1460  
1461  Change log for July 7, 2018 Vulkan 1.1.80 spec update:
1462  
1463    * Update release number to 80.
1464  
1465  Public Issues:
1466  
1467    * Remove unused "`API Order`" term from glossary (public issue 657).
1468    * Dynamically generate the extension appendix includes based on
1469      information in `vk.xml`, including new metadata tags describing
1470      deprecated, obsoleted, and promoted extensions (public pull request
1471      690).
1472  
1473  Internal Issues:
1474  
1475    * Add valid usage statements to flink:vkCmdBindDescriptorSets to keep
1476      offsets + range less than or equal to the buffer size (internal issue
1477      1174).
1478  
1479  New Extensions:
1480  
1481    * `VK_EXT_conditional_render`
1482    * `VK_KHR_create_renderpass2` (public issue 736)
1483    * `VK_KHR_8bit_storage` (public issue 737)
1484  
1485  -----------------------------------------------------
1486  
1487  Change log for July 1, 2018 Vulkan 1.1.79 spec update:
1488  
1489    * Update release number to 79.
1490  
1491  Public Issues:
1492  
1493    * Add a note to the <<features-required-format-support, Required Format
1494      Support>> section clarifying that the required formats don't depend on
1495      the used flags (public issue 671).
1496    * Add a valid usage statement for flink:vkUpdateDescriptors that was
1497      previously described for slink:VkImageSubresourceRange, but not as a
1498      valid usage statement (public issue 713).
1499    * Modify implicit valid usage generator script to not emit 'must: not be
1500      0' for a parameter that is a pointer to a flags field, such as
1501      pname:pPeerMemoryFeatures (public issue 729).
1502  
1503  Internal Issues:
1504  
1505    * Add definitions of "`obsoleted`" and "`deprecated`", and modify the
1506      definition of "`promoted`" in the <<glossary, Glossary>> (internal issue
1507      988).
1508    * Add language for integer texel output conversions (the conversion is
1509      undefined) to the <<textures-output-format-conversion]] Texel Output
1510      Format Conversion>> section. Simplify and clarify the floating-point
1511      conversion language in the <<fundamentals-general, General
1512      Requirements>> section and the new <<fundamentals-fp-conversion,
1513      Floating-Point Format Conversions>> section, and remove obsolete
1514      language in the format-specific floating-point sections (internal issue
1515      1275).
1516    * Add the elink:VkVendorId enumerated type to the Vulkan API / XML /
1517      header, so reserved Khronos vendor IDs can be referred to symbolically
1518      by clients. Note that only Khronos vendor IDs (e.g. non-PCI vendor IDs)
1519      are defined (internal issue 1299).
1520    * Fix typo in the <<fig-non-strict-lines, Non strict lines>> table
1521      (internal issue 1315).
1522    * Clean up and simplify the
1523      <<features-formats-requiring-sampler-ycbcr-conversion, YCbCr format
1524      properties>> table and use symbols consistently with other tables. Add a
1525      column for the number of planes.
1526    * Add code:Float16 to the <<spirvenv-capabilities-table, List of optional
1527      SPIR-V capabilities>> for the `VK_AMD_gpu_shader_half_float` extension.
1528  
1529  -----------------------------------------------------
1530  
1531  Change log for June 18, 2018 Vulkan 1.1.78 spec update:
1532  
1533    * Update release number to 78.
1534  
1535  Public Issues:
1536  
1537    * Change markup so parameter descriptions include links to structures,
1538      instead of just their names (public issue 697).
1539    * Resume publishing updated Vulkan 1.0 + KHR extensions and Vulkan 1.0 +
1540      all extensions versions of the specification (public issue 722).
1541    * Reapply fixes from public pull request 698 for
1542      `VK_ANDROID_external_memory_android_hardware_buffer`, which accidentally
1543      were reverted at some point (public pull request 724).
1544    * Fix undefined format valid usage statements for slink:VkImageCreateInfo
1545      in the presence of the
1546      `VK_ANDROID_external_memory_android_hardware_buffer` extension (public
1547      pull request 725).
1548    * Miscellaneous markup consistency fixes (public pull request 728).
1549  
1550  Internal Issues:
1551  
1552    * When building specifications containing vendor extensions, add terms to
1553      the Khronos spec copyright specifying that the result is not a ratified
1554      specification (internal issue 739).
1555    * Change the value of the
1556      pname:maxDescriptorSetUpdateAfterBindUniformBuffers minimum limit to 72
1557      (6 times pname:maxPerStageDescriptorUpdateAfterBindUniformBuffers) in
1558      the <<features-limits-required, Required Limits>> table (internal issue
1559      1300).
1560  
1561  Other Issues:
1562  
1563    * Fix link to resource image view compatibility table in the valid usage
1564      statements for slink:VkImageFormatListCreateInfoKHR (internal pull
1565      request 2711).
1566  
1567  -----------------------------------------------------
1568  
1569  Change log for June 10, 2018 Vulkan 1.1.77 spec update:
1570  
1571    * Update release number to 77.
1572  
1573  Public Issues:
1574  
1575    * Remove redundant asciidoctor ifdef in slink:VkDeviceCreateInfo valid
1576      usage statement (public pull request 718).
1577  
1578  Internal Issues:
1579  
1580    * Require that the returned slink:VkMemoryRequirements::pname:alignment
1581      reflect the minimum alignment requirements for the buffer's usages, and
1582      make dynamic offset alignment valid usage more explicit for
1583      flink:vkBindBufferMemory and flink:vkCmdBindDescriptorSets (internal
1584      issue 1170).
1585    * Explicitly state that objects of type code:OpTypeImage,
1586      code:OpTypeSampler, and code:OpTypeSampledImage must not be stored to in
1587      the <<spirvenv-module-validation, Validation Rules within a Module>>
1588      section (internal issue 1262).
1589    * Clarify rules about validating descriptor set/binding against storage
1590      class and descriptor type in the <<spirvenv-module-validation,
1591      Validation Rules within a Module>> section, and add an anchor for and
1592      references to the <<interfaces-resources-storage-class-correspondence,
1593      Shader Resource and Storage Class Correspondence>> table (internal issue
1594      1266).
1595    * Use correct spelling of SPIR-V decoration code:NonWritable in several
1596      places (internal issue 1298).
1597  
1598  Other Issues:
1599  
1600    * Update specification links to files in the old
1601      KhronosGroup/Vulkan-LoaderAndValidationLayers repository with
1602      corresponding links into the new repositories that replace it.
1603    * Move validity requirement for slink:VkSamplerCreateInfo into the valid
1604      usage block instead of the body text, and give it a VUID.
1605    * Use the full name of the "`style guide`" in a reference in the
1606      description of slink:vkGetPhysicalDeviceProperties, update the
1607      <<vulkan-styleguide, link to that document>>, and use the full name
1608      in the registry index page.
1609  
1610  -----------------------------------------------------
1611  
1612  Change log for May 25, 2018 Vulkan 1.1.76 spec update:
1613  
1614    * Update release number to 76.
1615  
1616  Internal Issues:
1617  
1618    * Add an exception clause to the license on `vk.xml`, enabling its use
1619      with GPL-based projects (internal issue 1017).
1620    * Remove the generated `vulkan_ext.[ch]` files, which are no longer
1621      supported. Add `src/ext_loader/README.md` explaining why, and update
1622      files in `xml/` to not generate them by default (internal issue 1268)
1623  
1624  Other Issues:
1625  
1626    * Fix typos in valid usage statements for the
1627      ftext:vkDrawIndexedIndirectCount* commands, replacing
1628      sizeof(VkDrawIndirectComment) with sizeof(VkDrawIndexedIndirectCommand).
1629    * Modify the <<spirvenv-module-validation, Validation Rules within a
1630      Module>> section to require code:NonReadable or code:NonWriteable in
1631      SPIR-V code for images with an image format of code:Unknown if one of
1632      the requisite code:shaderImageReadWithoutFormat or
1633      code:shaderImageWriteWithoutFormat features is disabled.
1634  
1635  New Extensions:
1636  
1637    * `VK_KHR_get_display_properties2`
1638    * `VK_KHR_draw_indirect_count`
1639  
1640  -----------------------------------------------------
1641  
1642  Change log for May 16, 2018 Vulkan 1.1.75 spec update:
1643  
1644    * Update release number to 75.
1645  
1646  Github Issues:
1647  
1648    * Use Github handles (e.g. @handle) for contact information in vk.xml,
1649      when available (partial fix for public issue 630).
1650    * Add size invariance guarantee to slink:VkMemoryRequirements for
1651      buffer/image memory requirements (public issue 661).
1652    * Correct scope (conditional constructs) in valid usage statement for
1653      slink:VkBindImageMemoryInfo (public pull request 684).
1654    * Clean up minor markup issues and typos in the
1655      `VK_ANDROID_external_memory_android_hardware_buffer` extension appendix
1656      (public pull request 698).
1657    * Modify registry processing script to avoid irrelevant warnings of benign
1658      enumerant redefinitions (public pull request 705).
1659    * Fix some duplicate words and some misspelled "`stagess`" (public pull
1660      request 712)
1661  
1662  Internal Issues:
1663  
1664    * Enable continuous integration tests on the internal Khronos gitlab
1665      server by adding a .gitlab-ci.yml file. Note: this does not implement CI
1666      on the public Github repository (internal issue 408).
1667    * Add link from description of depth clamping in the <<fragops-depth,
1668      depth test>> section to the
1669      slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable
1670      parameter which enables it, making it easily searchable / findable
1671      (internal issue 1125).
1672    * Clarify that arrays of arrays of descriptors are not allowed in the
1673      <<interfaces-resources-descset, Descriptor Set Interface>> and
1674      <<interfaces-resources-setandbinding, DescriptorSet and Binding
1675      Assignment>> sections (internal issue 1192).
1676    * Comment out some redundant nested asciidoctor conditionals in the
1677      slink:VkImageViewCreateInfo valid usage block, and explain in all cases
1678      why the redundant conditional exist and are commented out (internal
1679      issue 1231).
1680    * Move a valid usage statement from slink:VkCommandPoolCreateInfo to the
1681      parent flink:vkCreateCommandPool, where the device queue is known
1682      (internal issue 1233).
1683    * Add new slink:VkBaseInStructure and slink:VkBaseOutStructure types which
1684      can be used by extensions and implementations for handling Vulkan
1685      sType/pNext style structures in a more generic way (internal issue
1686      1265).
1687    * Clarify that
1688      slink:VkAndroidHardwareBufferFormatPropertiesANDROID::pname:formatFeatures
1689      only applies to external-format images. Add references to this in valid
1690      usage statements that previously only referred to
1691      slink:VkFormatProperties (internal issue 1244).
1692    * Fix the description of elink:VkPipelineCreateFlagBits enumerant
1693      ename:VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT to match the
1694      name (internal issue 1279).
1695    * Add a NOTE to the <<interfaces-resources-setandbinding, DescriptorSet
1696      and Binding Assignment>> section making it clear that variables sharing
1697      a storage class may use identical descriptor set and bindings.
1698      Specifically state the sometimes misunderstood ability to have one or
1699      more differently typed image descriptors sharing a descriptor set and
1700      binding (internal SPIR-V issue 264).
1701    * Make DynamicIndexing features and capabilities also control the
1702      uniformity of the descriptor used in memory access instructions in the
1703      <<interfaces-resources-descset, Descriptor Set Interface>> section. This
1704      makes them also apply to variable_pointer usage, which can bypass the
1705      array indexing operation (internal SPIR-V issue 289).
1706  
1707  Other Issues:
1708  
1709    * Correct flink:vkCmdBlitImage limitations on cubic blits to be 2D only,
1710      not 3D.
1711    * Update valid usage statements for slink:VkRenderPassCreateInfo and
1712      slink:VkInputAttachmentAspectReference.
1713    * Move YCbCr-related VU statements from slink:VkDescriptorImageInfo to
1714      slink:VkWriteDescriptorSet, where all needed information is known, and
1715      remove redundant statements.
1716    * Move SPIR-V restriction that images be of either sampled or storage
1717      types from the <<interfaces-resources-descset, Descriptor Set
1718      Interface>> section to the <<spirvenv-module-validation, Validation
1719      Rules within a Module>> section of the SPIR-V appendix.
1720  
1721  -----------------------------------------------------
1722  
1723  Change log for April 21, 2018 Vulkan 1.1.74 spec update:
1724  
1725    * Update release number to 74.
1726  
1727  Github Issues:
1728  
1729    * Clarify which buffer locations are accessed in
1730      flink:vkCmdCopyBufferToImage valid usage statements (public issue 676).
1731    * Refine description of <<extended-functionality-extensions-dependencies,
1732      extension dependencies>>, related NOTE in the
1733      <<extended-functionality-extensions, Extensions>> section, and
1734      "`Required Extensions`" glossary term (public pull request 693).
1735    * Add support for specifying required Vulkan core version in `vk.xml` and
1736      the extension metadoc generator (public issue 696).
1737    * Update .gitignore for directory reorganization (public pull request
1738      699).
1739    * Fix typo (public pull request 703).
1740  
1741  Internal Issues:
1742  
1743    * Update valid usage of slink:VkClearRect::pname:layerCount (internal
1744      issue 1241).
1745  
1746  Other Issues:
1747  
1748    * Fix typo in <<NV_geometry_shader_passthrough>> issues list.
1749  
1750  -----------------------------------------------------
1751  
1752  Change log for April 15, 2018 Vulkan 1.1.73 spec update:
1753  
1754    * Update release number to 73.
1755  
1756  Github Issues:
1757  
1758    * Refine swapchain association with surface for slink:VkSwapchainKHR, with
1759      matching valid usage statements for slink:VkSwapchainCreateInfoKHR and
1760      discussion following the <<swapchain-wsi-image-create-info>> table
1761      (public issue 637).
1762    * Re-remove several valid usage statements from slink:VkImageCreateInfo
1763      that had previously been removed at the time that
1764      ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT was introduced. These
1765      statements had incorrectly been restored due to an glitch while merging
1766      from the old `1.0` branch to the current `master` branch (public issue
1767      683).
1768  
1769  Internal Issues:
1770  
1771    * Fix reference page generation and configure build to generate reference
1772      pages 1.1 with all extensions, rather than core only, as was the case
1773      for the 1.0 ref pages (internal issues 484, 1056, 1205).
1774    * Require that
1775      slink:VkMemoryDedicatedRequirements::pname:prefersDedicateAllocation is
1776      ename:VK_TRUE when
1777      slink:VkMemoryDedicatedRequirements::pname:requiresDedicateAllocation is
1778      ename:VK_TRUE (internal issue 1222).
1779    * Fix Ruby extension code so `diff_html` Makefile target works (internal
1780      issue 1230).
1781    * Update `genRelease` script to generate 1.1 + all extensions reference
1782      pages - but not the single-page HTML / PDF versions, which are even
1783      larger than the API spec (internal issue 1245).
1784  
1785  Other Issues:
1786  
1787    * Add missing attributes to `vk.xml` for `VK_ANDROID_native_buffer`.
1788    * Specify that the slink:VkAttachmentDescription::pname:format member is
1789      the format of the image *view* that will be used for the attachment.
1790    * Use core sname:VkPhysicalDeviceFeatures2 in the `structextends` `vk.xml`
1791      attribute for sname:VkPhysicalDeviceDescriptorIndexingFeaturesEXT and
1792      sname:VkPhysicalDeviceDescriptorIndexingPropertiesEXT, rather than the
1793      KHR equivalent it was promoted from.
1794    * Fix the "`Fragment Input Attachment Interface`" glossary entry to match
1795      the specification body.
1796    * Clarify the interaction of sRGB images used as storage or texel buffers
1797      with <<textures-output-format-conversion, Texel Output Format
1798      Conversion>>.
1799    * Moved three valid usage statements from
1800      slink:VkRenderPassMultiviewCreateInfo up to
1801      slink:VkRenderPassCreateInfo, and added a new valid usage statement for
1802      slink:VkRenderPassInputAttachmentAspectCreateInfo.
1803    * Added valid usage statements for slink:VkBufferMemoryBarrier and
1804      slink:VkImageMemoryBarrier reflecting the global requirement that
1805      "`non-sparse resources must be bound to memory before being recorded to
1806      command`".
1807  
1808  -----------------------------------------------------
1809  
1810  Change log for April 5, 2018 Vulkan 1.1.72 spec update:
1811  
1812    * Update release number to 72.
1813  
1814  Github Issues:
1815  
1816    * Restructure the repository to put the specification `Makefile` and
1817      associated spec source material at the top level, `vk.xml` and
1818      associated scripts material in `xml/`, and generated include and source
1819      files in `include/vulkan/` and `src/ext_loader/`, respectively (public
1820      issue 436).
1821    * Add missing bullet point markup to flink:vkCmdCopyImage valid usage
1822      statement, so it gets a VUID assigned (public issue 627).
1823    * Fix broken links in a couple of extension appendices (public pull
1824      request 665).
1825    * Add the <platform> tag to the index in section 4.1 of the registry
1826      schema documentation, and add the protect= attribute of <extension>
1827      tags to the comments in `registry.rnc` (public issues 673, 678).
1828    * Add missing valid usage statements for sparse image interactions to
1829      flink:VkImageCreateInfo (public pull request 675).
1830    * Fix improper usage and grammar of "`can: not`" (public pull request
1831      681).
1832    * Remove duplicate spec language and NOTE on present layout between the
1833      flink:vkAcquireNextImageKHR and flink:vkAcquireNextImage2KHR commands
1834      (public pull request 685).
1835    * Fix some typos and markup issues (public pull request 689; public issues
1836      642, 667, 687).
1837    * Fix typo etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT ->
1838      ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT in the
1839      <<external-semaphore-handle-types-compatibility, External semaphore
1840      handle types compatibility>> table (public pull request 691).
1841  
1842  Internal Issues:
1843  
1844    * Remove the need for the "`noautovalidity`" attribute on extension
1845      structures in `vk.xml`. It is now implied by the "`structextends`"
1846      attribute instead (internal issue 942).
1847    * Replace uses of "`currently bound`" with "`bound`", since "`currently`"
1848      is redundant and distracting, and add a corresponding rule to the style
1849      guide (internal issue 993).
1850    * Fixed subtle issues with the last updates to flink:vkAcquireNextImageKHR
1851      language that had resulted in ambiguities (internal issue 1178).
1852    * Make it clear that only one query of a given type is allowed at a time
1853      by reordering valid usage statements for flink:vkCmdBeginQuery and
1854      flink:vkCmdEndQuery, and removing redundant ones (internal issue 1213).
1855    * Swapped OL1 and OL3 in `tessparamUL.svg` to match previous version, and
1856      fixed where "`(no edge)`" appears (internal issue 1215).
1857  
1858  Other Issues:
1859  
1860    * Fixed a minor problem with the valid usage statement extraction script,
1861      and corresponding markup in the spec source.
1862  
1863  New Extensions:
1864  
1865    * `VK_AMD_shader_core_properties`
1866    * `VK_EXT_descriptor_indexing`
1867    * `VK_NV_shader_subgroup_partitioned`
1868  
1869  -----------------------------------------------------
1870  
1871  Change log for March 16, 2018 Vulkan 1.1.71 spec update:
1872  
1873    * First public update for Vulkan 1.1.
1874  
1875  Github Issues:
1876  
1877    * Refer to standard sparse image block shape format tables explicitly in
1878      the <<sparsememory-standard-shapes, Standard Sparse Image Block Shapes>>
1879      section (public issue 93).
1880    * Add the missing definition of the code:LocalInvocationIndex decoration
1881      in the <<interfaces-builtin-variables, Built-In Variables>> section
1882      (public issue 532).
1883    * Clarify dynamic state definition in the introduction to the <<pipelines,
1884      Pipelines>> section and the new <<pipelines-dynamic-state, Dynamic
1885      State>> subsection (public issue 620).
1886    * Clarified deprecation statement in the `VK_AMD_negative_viewport_height`
1887      appendix (public issue 674).
1888    * Fix parameter descriptions for flink:vkCreateIndirectCommandsLayoutNVX
1889      (public issue 677).
1890  
1891  Internal Issues:
1892  
1893    * Remove description of <<primsrast-points, rasterization point size>>
1894      being taken from the tessellation control shader, since there are no
1895      circumstances under which you can have TCS without TES (internal issue
1896      522).
1897    * Define <<copies-images-format-size-compatibility, _size-compatible_
1898      image formats>> for flink:vkCmdCopyImage, add it to the glossary, and
1899      use that definition for slink:VkImageViewCreateInfo (internal issue
1900      771).
1901    * Change brief descriptions of enumerant names, and of parameters which
1902      are enumerants, from "`enum *indicates*`" to "`enum *specifies*`" for
1903      consistency, and add a markup style guide rule (internal issue 862).
1904    * Clarify how execution dependencies interact with
1905      <<synchronization-submission-order, submission order>> at numerous
1906      places in the <<renderpass, Render Pass>> and <<synchronization,
1907      Synchronization>> chapters (internal issue 1062).
1908    * Clarify statement in the <<interfaces-resources-setandbinding,
1909      DescriptorSet and Binding Assignment>> section that only interface
1910      variables statically used by the entry point used in a pipeline must be
1911      present in the descriptor set layout (internal issue 1172).
1912    * Flip sparse image diagrams with partially full mip levels vertically, to
1913      match graph origins of other image diagrams (internal issue 1176).
1914    * Update new SVG diagrams to have consistent style and base font size,
1915      increase consistency of primitive topology diagrams, and add a section
1916      to the style guide on creating and editing images in a consistent style
1917      (internal issue 1177).
1918    * Resolve problems with valid usage statement extraction by fixing
1919      existing VUID tags for interfaces promoted to version 1.1 and fixing
1920      conditional directives around
1921      VUID-VkMemoryDedicatedAllocateInfo-image-01797 (internal issue 1184).
1922    * Strip `KHR` suffixes from a few interfaces promoted to Vulkan 1.1 that
1923      were missed previously (internal issue 1185).
1924    * Restrict code:OpImageQuerySizeLod and code:OpImageQueryLevels to only
1925      work on code:Image operands with their code:Sampled operand set to 1. In
1926      other words, these operations are not defined to work with storage
1927      images (internal issue 1193).
1928    * Recycle extension slot for extension #82 in `vk.xml`. This extension was
1929      never published (internal issue 1195).
1930    * Add an issue to the `VK_KHR_maintenance1` appendix noting that zero
1931      height viewports are allowed when this extension is enabled (internal
1932      issue 1202).
1933    * Fix slink:VkDescriptorSetLayoutBinding description so that shader stages
1934      always use descriptor bindings, not the other way around (internal issue
1935      1206).
1936    * Fix field name for
1937      slink:VkInputAttachmentAspectReference::pname:inputAttachmentIndex
1938      (internal issue 1210).
1939  
1940  Other Issues:
1941  
1942    * Fix a few broken links in the <<versions-1.1, Version 1.1>> appendix.
1943    * Replace a few old refBegin/refEnd tags with open block markup around
1944      interfaces, and remove old KHX VUID tags that were breaking the valid
1945      usage statement extraction.
1946    * Fix error codes accidentally tagged as success codes in `vk.xml` for
1947      flink:vkGetSwapchainCounterEXT.
1948    * Added valid usage statements for ftext:vkBind*Memory2 input structures
1949      stext:VkBind*MemoryInfo, and fix a pname:image -> pname:buffer typo in a
1950      couple of places.
1951    * Fix swapped descriptions of elink:VkDescriptorType enums
1952      ename:VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE and
1953      ename:VK_DESCRIPTOR_TYPE_STORAGE_IMAGE (reported via tweet).
1954  
1955  New Extensions:
1956  
1957    * `VK_ANDROID_external_memory_android_hardware_buffer`
1958  
1959  -----------------------------------------------------
1960  
1961  Change log for March 7, 2018 Vulkan 1.1.70 spec update:
1962  
1963    * Vulkan 1.1 initial release. Bump API patch number and header version
1964      number to 70 for this update. The patch number will be used for both
1965      Vulkan 1.1 and Vulkan 1.0 updates, and continues to increment
1966      continuously from the previous Vulkan 1.0.69 update.
1967  
1968      NOTE: We are not publishing an updated 1.0.70 specification, or 1.1
1969      reference pages, along with 1.1.70. There are still minor issues to work
1970      out with those build targets. However, we will soon generate all three
1971      types of documents as part of the regular spec update cycle.
1972  
1973      NOTE: The GitHub KhronosGroup/Vulkan-Docs repository now maintains the
1974      current specification in the `master` branch. The `1.0` branch is out of
1975      date and will not be maintained, since we will be generating both 1.1
1976      and 1.0 specifications from the `master` branch in the future.
1977  
1978  Github Issues:
1979  
1980    * Clarify how mapped memory ranges are flushed in
1981      flink:vkFlushMappedMemoryRanges (public issue 127).
1982    * Specify that <<synchronization-pipeline-stages, Pipeline Stages>> are a
1983      list of tasks that each command performs, rather than necessarily being
1984      discrete pieces of hardware that one task flows through. Add a
1985      "`synchronization command`" pipeline type which all synchronization
1986      command execute (it's just TOP + BOTTOM), with an explanatory note
1987      (public issue 554).
1988  
1989  Internal Issues:
1990  
1991    * Regenerate all images used in the spec in Inkscape with a consistent
1992      look-and-feel, and adjust image size attributes so they're all legible,
1993      and not too large with respect to the spec body text (internal issue
1994      701).
1995    * Document in the <<extensions,extensions>> appendix and in the style
1996      guide that `KHX` extensions are no longer supported or used in the
1997      Vulkan 1.1 timeframe (internal issue 714).
1998    * Remove the leftover equations_temp directory after PDF build completes
1999      (internal issue 925).
2000    * Update the <<credits, Credits (Informative)>> appendix to include
2001      contributors to Vulkan 1.1, and to list them according to the API
2002      version(s) they contributed to (internal issue 987).
2003    * Add a NOTE to the introduction explaining that interfaces defined by
2004      extensions which were promoted to Vulkan 1.1 are now expressed as
2005      aliases of the Vulkan 1.1 type (internal issue 991).
2006    * Instrument spec source conditionals so spec can be built with 1.1
2007      features, extensions promoted to 1.1, or both (internal issues 992,
2008      998).
2009    * Modify the XML schema and tools to support explicit aliasing of types,
2010      structures, and commands, and use this to express the promotion of 1.0
2011      extensions to 1.1 core features, by making the extension interfaces
2012      aliases of the core features they were promoted to. Mark up promoted
2013      interfaces to allow still generating 1.0 + extension specifications
2014      (internal issue 991).
2015    * Platform names, along with corresponding preprocessor symbols to enable
2016      extensions specific to those platforms, are now reserved in vk.xml using
2017      the <platform> tag. Update the registry schema and schema specification
2018      to match (internal issue 1011).
2019    * Updated the <<textures-texel-replacement, Texel Replacement>> section to
2020      clarify that reads from invalid texels for image resources result in
2021      undefined values (internal issue 1014).
2022    * Modify description of patch version so it continues to increment across
2023      minor version changes (internal issue 1033).
2024    * Clarify and unify language describing physical device-level core and
2025      extension functionality in the <<fundamentals-validusage-extensions,
2026      Valid Usage for Extensions>>, <<fundamentals-validusage-versions, Valid
2027      Usage for Newer Core Versions>>, <<initialization-functionpointers
2028      Command Function Pointers>>, <<initialization-phys-dev-extensions,
2029      Extending Physical Device From Device Extensions>>
2030      <<extended-functionality-instance-extensions-and-devices, Instance
2031      Extensions and Device Extensions>> sections and for
2032      flink:vkGetPhysicalDeviceImageFormatProperties2. This documents that
2033      instance-level functionality is tied to the loader, and independent of
2034      the ICD; physical device-level functionality is tied to the ICD, and
2035      associated with device extensions; physical devices are treated more
2036      uniformly between core and extensions; and instance and physical
2037      versions can be different (internal issue 1048).
2038    * Updated the <<commandbuffers-lifecycle, Command Buffer Lifecycle>>
2039      section to clarify the ability for pending command buffers to transition
2040      to the invalid state after submission, and add a command buffer
2041      lifecycle diagram (internal issue 1050).
2042    * Clarify that some flink:VkDescriptorUpdateTemplateCreateInfo parameters
2043      are ignored when push descriptors are not supported (internal issue
2044      1054).
2045    * Specify that flink:vkCreateImage will return an error if the image is
2046      too large, in a NOTE in the slink:VkImageFormatProperties description
2047      (internal issue 1078).
2048    * Remove near-duplicate NOTEs about when to query function pointers
2049      dynamically in the <<initialization, Initialization>> chapter and
2050      replace by extending the NOTE in the <<fundamentals-abi, Application
2051      Binary Interface>> section (internal issue 1085).
2052    * Restore missing references to "`Sparse Resource Features`" in the
2053      flink:VkBufferCreateFlagBits description (internal issue 1086).
2054    * Tidy up definitions of descriptor types in the `GL_KHR_vulkan_glsl`
2055      specification, the <<descriptorsets, Resource Descriptors>> section and
2056      its subsections, and the <<interfaces-resources-descset, Descriptor Set
2057      Interface>> for consistency, reduction of duplicate information, and
2058      removal of GLSL correspondance/examples (internal issue 1090).
2059    * Correctly describe code:PrimitiveId as an Input for tessellation control
2060      and evaluation shaders, not an Output (internal issue 1109).
2061    * Relax the requirements on chroma offsets for nearest filtering in
2062      <<textures-implict-reconstruction, Implicit Reconstruction>> (internal
2063      issue 1116).
2064  
2065  Other Issues:
2066  
2067    * Clarify the intended relationship between specification language and
2068      certain terms defined in the Khronos Intellectual Property Rights
2069      policy. Specific changes include:
2070    ** Rewrote IP/Copyright preamble and introduction to better agree with
2071       normative language both as laid out in the introduction, and the
2072       Khronos IPR policy.
2073    ** Added notion of fully informative sections, which are now tagged with
2074       "`(Informative)`" in their titles.
2075    ** Removed non-normative uses of the phrase "`not required`"
2076    ** Clarified the distinction between terms "`optional`" and "`not
2077       required:`" as they relate to the IPR Policy, and updated specification
2078       text to use terms consistent with the intent.
2079    ** Reduced additions to RFC 2119, and ensured the specification agreed
2080       with the leaner language.
2081    ** Removed the terms "`hardware`", "`software`", "`CPU`", and "`GPU`" from
2082       normative text.
2083    ** Moved several paragraphs that should not have been normative to
2084       informative notes.
2085    ** Clarified a number of definitions in the Glossary.
2086    ** Updated the document writing guide to match new terminology changes.
2087    * Explicitly state in the <<fundamentals-objectmodel-lifetime-acquire,
2088      application memory lifetime>> language that for objects other than
2089      descriptor sets, a slink:VkDescriptorSetLayout object used in the
2090      creation of another object (such as slink:VkPipelineLayout or
2091      slink:VkDescriptorUpdateTemplateKHR) is only in use during the creation
2092      of that object and can be safely destroyed afterwards.
2093    * Updated the <<textures-scale-factor, Scale Factor Operation>> section to
2094      use the ratio of anisotropy, rather than the integer sample rate, to
2095      perform the LOD calculation. The spec still allows use of the sample
2096      rate as the value used to calculate the LOD, but no longer requires it.
2097    * Update `vulkan_ext.c` to include all platform-related definitions from
2098      the Vulkan platform headers, following the split of the headers into
2099      platform-specific and non-platform-specific files.
2100    * Fix bogus anchor name in the <<commandbuffers, Command Buffers>> chapter
2101      which accidentally duplicated an anchor in the pipelines chapter. There
2102      were no reference to this anchor, fortunately.
2103    * Add valid usage statement for slink:VkWriteDescriptorSet and
2104      slink:VkCopyDescriptorSet requiring that the slink:VkDescriptorSetLayout
2105      used to allocate the source and destination sets must not have been
2106      destroyed at the time flink:vkUpdateDescriptorSets is called.
2107    * Document mapping of subgroup barrier functions to SPIR-V, and clarify a
2108      place where subgroupBarrier sounds like it's execution-only in the
2109      standalone `GL_KHR_shader_subgroup` specification.
2110    * Use an HTML stylesheet derived from the Asciidoctor `colony` theme, with
2111      the default Arial font family replaced by the sans-serif Noto font
2112      family.
2113    * Numerous minor updates to README.adoc, build scripts, Makefiles, and
2114      registry and style guide specifications to support Vulkan 1.1 outputs,
2115      use them as defaults, and remove mention of `KHX` extensions, which are
2116      no longer supported.
2117  
2118  
2119  New Extensions:
2120  
2121    * `VK_EXT_vertex_attrib_divisor`
2122  
2123  -----------------------------------------------------
2124  
2125  Change log for February 19, 2018 Vulkan 1.0.69 spec update:
2126  
2127    * Bump API patch number and header version number to 69 for this update.
2128  
2129  Github Issues:
2130  
2131    * Clean up description of synchronization for flink:vkAcquireNextImageKHR
2132      (public issue 626).
2133    * Move valid usage statements requiring offset and extent to respect image
2134      transfer granularity requirements of the queue family they are submitted
2135      against from slink:VkImageCopy and slink:VkBufferImageCopy to the
2136      corresponding flink:vkCmdCopyImage, flink:vkCmdCopyBufferToImage, and
2137      flink:vkCmdCopyImageToBuffer commands, where are relevant information is
2138      known (public issue 654).
2139    * Clarify that flink:vkGetDeviceProcAddr only supports device-level
2140      commands (public issue 655).
2141  
2142  Internal Issues:
2143  
2144    * Associate each elink:VkDescriptorType with a type of descriptor, and
2145      link to descriptions of those types (internal issue 860).
2146    * Rework valid usage extraction script to better utilize and respond to
2147      spec markup, and fix some spec markup accordingly (internal issues 846,
2148      909, 945).
2149    * Rephrase flink:vkCmdPushConstants valid usage to allow overlapping push
2150      constant ranges in different shader stages (internal issue 1103).
2151    * Fix problem with diff_html target in extension.rb (internal issue 1104).
2152    * Modify valid usage statements for slink:VkClearDepthStencilValue,
2153      slink:VkGraphicsPipelineCreateInfo, slink:VkViewport, and
2154      flink:vkCmdSetDepthBounds, and the description of vkCmdSetDepthBias, to
2155      clarify that clamping is applied if and only if the
2156      `VK_EXT_depth_range_unrestricted` is not enabled (internal issue 1124),
2157      in versions of the specification built with that extension included.
2158    * Resolve contradictions and use of undefined "`per-sample shading`" term
2159      in the <<primsrast-sampleshading, Sample Shading>> and
2160      <<shaders-fragment-execution, Fragment Shader Execution>> sections; for
2161      the <<features-features-sampleRateShading, sampleRateShading feature>>;
2162      for code:FragCoord, code:SampleId, and code:SamplePosition; and for
2163      slink:sname:VkPipelineMultisampleStateCreateInfo (internal issue 1134).
2164    * Clarify the meaning of the ptext:maxDescriptorSet* limits in footnote 8
2165      of the <<features-limits-required,Required Limits>> table (internal
2166      issue 1139).
2167    * Fix broken NOTE markup in slink:VkSamplerCreateInfo.txt (internal issue
2168      1140).
2169    * Remove extend comparison language from valid usage statement for
2170      slink:VkImageCreateInfo, turning it into a simple validation of
2171      pname:mipLevels against pname:maxMipLevels (internal issue 1151).
2172    * Update valid usage statements for slink:VkImageCopy when the
2173      `VK_KHR_maintenance1` extension is enabled to allow multi-slice 2D <->
2174      3D copies when the pnaem:extent.depth parameter specifies the number of
2175      layers being copied, and matches the
2176      slink:VkImageSubresourceLayers.layerCount of the 2D image (internal
2177      issue 1152).
2178    * Rephrase memory / control barrier rules in the
2179      <<spirvenv-module-validation, Validation Rules within a Module>> section
2180      to avoid "`not use none`", which could be misconstrued to allow no
2181      synchronization semantics, and only storage class semantics (internal
2182      issue 1154).
2183  
2184  Other Issues:
2185  
2186    * Move GLSL extension specifications to the KhronosGroup/GLSL repository
2187      on Github.
2188    * Add missing description of ename:VK_FILTER_CUBIC_IMG enum to
2189      slink:VkFilter.
2190    * Update description of code:PrimitiveId in the
2191      <<interfaces-builtin-variables,Built-In Variables>> section to clarify
2192      its behavior.
2193    * Disallow disjoint images from being used with dedicated-memory images in
2194      slink:VkMemoryDedicatedAllocateInfoKHR.
2195    * Update README to suggest older versions of "mathematical" and
2196      "ruby-gems" packages for use on Cygwin.
2197    * Fix typos
2198  
2199  New Extensions:
2200  
2201    * `VK_AMD_buffer_marker`
2202  
2203  -----------------------------------------------------
2204  
2205  Change log for January 15, 2018 Vulkan 1.0.68 spec update:
2206  
2207    * Bump API patch number and header version number to 68 for this update.
2208  
2209  Github Issues:
2210  
2211    * Added more details in the
2212      <<extended-functionality-extensions-compatibility, Extension
2213      Compatibility>> section, allowing explicit incompatibilities, and
2214      simplify corresponding language in the style guide, which now defers to
2215      the API Specification on this point (public issue 638).
2216    * Fix typo in description of slink:VkCommandBufferLevel::pname:level
2217      (public issue 651).
2218    * Only include extension-dependent valid usage statement for
2219      slink:VkImageSubresourceRange, and note that the extension names for
2220      header files described in the <<boilerplate-wsi-header, Window
2221      System-Specific Header Control>> section are only valid links, when the
2222      specification being viewed is built with the corresponding extensions
2223      enabled (public issue 652).
2224  
2225  Internal Issues:
2226  
2227    * Add language to elink:VkResult specifying that when commands return an
2228      error, output parameter contents are undefined instead of unmodified
2229      (except for pname:sType and pname:pNext). Note that this is a behavior
2230      change. Add notes calling out slink:VkImageFormatProperties as an
2231      exception (internal issue 1118).
2232    * Add "`general-purpose`" to the style guide, and correct existing uses of
2233      "`general purpose`" as an adjective (internal issue 1121).
2234    * Add the ename:VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT token
2235      for the `VK_EXT_validation_cache` extension, following the same naming
2236      pattern as other tokens in the extension, but keep the old
2237      ename:VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT token around for
2238      backwards compatibility (internal issue 1126).
2239  
2240  Other Issues:
2241  
2242    * Specify that flink:vkCmdSetDiscardRectangleEXT does not affect copies or
2243      clears, matching existing language for the scissor rectangle test.
2244    * Move the <<boilerplate-sType, pname:sType>> definition from the
2245      boilerplate appendix to the Fundamentals chapter, putting it together
2246      with the valid usage of pname:sType rather than having the definition
2247      split across two places.
2248    * Inline all of the etext:Vk*Flags definitions, moving each one from the
2249      boilerplate appendix to appear either after the corresponding
2250      etext:Vk*FlagBits value if one is defined, or after the first structure
2251      that includes them if not.
2252  
2253  -----------------------------------------------------
2254  
2255  Change log for January 5, 2018 Vulkan 1.0.67 spec update:
2256  
2257    * Bump API patch number and header version number to 67 for this update.
2258    * Update copyright dates to 2018
2259  
2260  Github Issues:
2261  
2262    * Fix texture lookup functions in `GL_KHR_vulkan_glsl` specification
2263      (public pull request 363).
2264    * Clarify the state waited semaphores are left in when a call to
2265      flink:vkQueuePresentKHR fails (public issue 572).
2266    * Cleanup descriptions of slink:VkObjectTablePushConstantEntryNVX and
2267      slink:VkObjectTableDescriptorSetEntryNVX (public issue 583)
2268    * Remove redundant flink:vkCmdSetDiscardRectangleEXT valid usage
2269      statements (public pull 586).
2270    * Make dynamic state array length valid usage statements implicit for
2271      flink:vkCmdSetViewportWScalingNV, flink:vkCmdSetDiscardRectangleEXT, and
2272      flink:vkCmdSetViewport (public pull 589).
2273    * Clarify meaning of window extent (0,0) in slink:VkSwapchainKHR for the
2274      Windows and X11 platforms, in their respective extensions (public issue
2275      590).
2276    * Allow flink:vkGetPastPresentationTimingGOOGLE to return
2277      ename:VK_INCOMPLETE (public issue 604).
2278    * Add synchronization valid usage statements to flink:vkAcquireNextImage
2279      (public pull 611).
2280    * Fix some broken external links and internal xrefs (public pull 613).
2281    * Clean up slink:VkViewport valid usage statements in the presence or
2282      absence of relevant extensions (public pull 623).
2283    * Remove
2284      ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
2285      token from VK_KHR_maintenance2 from the non-extension VU path for
2286      slink:VkGraphicsPipelineCreateInfo (public issue 628).
2287    * Miscellaneous minor markup fixes - extension name strings (public pull
2288      631), Notes (pull 633), queue names emitted by generator scripts (pull
2289      634), block formatting in slink:VkDescriptorUpdateTemplateEntryKHR (pull
2290      635), ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG (pull
2291      641), quotes and apostrophes (pull 643),
2292    * Miscellaneous minor grammar fixes (public pull 644).
2293    * Fix markup macros so usage like ptext:*Src* works (public pull 647).
2294  
2295  Internal Issues:
2296  
2297    * Clarify in the `VK_KHR_surface` and `VK_KHR_swapchain` extensions that
2298      parameter combinations which aren't supported for normal images are also
2299      unsupported for presentable images, even if the parameter values are
2300      individually supported as reported by the surface capability queries
2301      (internal issue 1029).
2302    * Fixed XML typo in the valid value field of the pname:sType member of
2303      slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT (internal issue
2304      1100).
2305  
2306  Other Issues:
2307  
2308    * Add memory semantics validity rules to the <<spirvenv-module-validation,
2309      Validation Rules within a Module>> section of the SPIR-V environment
2310      appendix, and specify that sequentiality consistency is not supported.
2311      This forbids certain cases like "`Load+Release`" that we don't expect to
2312      ever be meaningful.
2313    * Document mapping of OpenGL Shading Language barriers to SPIR-V scope and
2314      semantics in the `GL_KHR_vulkan_glsl` specification.
2315  
2316  New Extensions:
2317  
2318    * `VK_EXT_conservative_rasterization`
2319  
2320  -----------------------------------------------------
2321  
2322  Change log for November 27, 2017 Vulkan 1.0.66 spec update:
2323  
2324    * Bump API patch number and header version number to 66 for this update.
2325  
2326  Github Issues:
2327  
2328    * Clarified how and when ename:VK_ERROR_TOO_MANY_OBJECTS is generated in
2329      flink:vkAllocate Memory, and remove incorrect valid usage statement
2330      about exceeding the API limit (public issue 356).
2331    * Minor clarification of the description of
2332      flink:vkUpdateDescriptorSetWithTemplateKHR::pname:descriptorUpdateTemplate
2333      (public issue 564).
2334    * Minor fixes for flink:vkCmdSetViewportWScalingNV (public pull request
2335      588).
2336    * Fix random name markup issues (public pull request 603).
2337    * Fix code:BuiltIn decoration typo in the <<fxvertex-attrib, Vertex
2338      Attributes>> section (public pull request 606).
2339    * Fix synchronization language following the definition of
2340      flink:vkAcquireNextImageKHR (public issue 607).
2341    * Restore descriptions of several commands and structures missing from the
2342      generated spec due to a mistyped asciidoctor conditional (public issue
2343      612).
2344    * Fix 1.0.41 changelog to refer to public issues 403/404 (public issue
2345      618).
2346  
2347  Internal Issues:
2348  
2349    * Refactor valid usage statements with internal conditionals in
2350      `copies.txt`, `pipelines.txt`, `renderpass.txt`, and `resources.txt` so
2351      each branch of the conditional appears as a standalone statement which
2352      can contain a separate VUID. This should have no impact on the generated
2353      specs, but is necessary given the present state of the VU extractor and
2354      the validation layer code that consumes them (internal issue 1043).
2355    * Fix VkQueueGlobalPriorityEXT enum values missing _EXT suffix (internal
2356      issue 1045).
2357    * Clarified initial ownership of resources bound to shared memory objects,
2358      (internal issue 1068).
2359    * Fix duplicated valid usage ID tag for flink:vkCmdCopyImage, and make the
2360      required layouts include ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL in
2361      both cases (internal issue 1084).
2362  
2363  Other Issues:
2364  
2365    * Remove the noise functions from GLSL for SPIR-V for Vulkan in the
2366      `GL_KHR_vulkan_glsl.txt` extension.
2367  
2368  New Extensions:
2369  
2370    * `VK_EXT_external_memory_host`
2371    * `VK_EXT_external_memory_dma_buf`
2372    * `VK_EXT_queue_family_foreign`
2373  
2374  -----------------------------------------------------
2375  
2376  Change log for October 27, 2017 Vulkan 1.0.65 spec update:
2377  
2378    * Bump API patch number and header version number to 65 for this update.
2379  
2380  Github Issues:
2381  
2382    * Replaced inaccurate "`pixel`" with "`texel`" or "`compressed texel
2383      block`" as appropriate in the <<sparsememory, Sparse Resources>> chapter
2384      (public issue 86).
2385    * Attempt to clarify security/integrity guarantees in the
2386      <<fundamentals-errors, Errors>> section (public issue 147).
2387    * Update the <<memory-device,Device Memory>> section with clarifications
2388      and markup fixes (public pull request 194).
2389    * Fix typo VkDeviceCreateInfo -> slink:VkDebugMarkerObjectNameInfoEXT in
2390      sample code for `VK_EXT_debug_marker` extension (public pull request
2391      227).
2392    * Clarified slink:VkFramebufferCreateInfo language regarding concurrent
2393      use of attachment resources during a render pass instance (public issue
2394      299).
2395    * Added overlap rules for destination regions in <<copies,copy commands>>.
2396      Also unified the sparse and non-sparse source-destination overlap rules,
2397      since the non-sparse rules were technically inaccurate in the face of
2398      aliasing in flink:vkBindMemory2 - the new rules are true regardless
2399      (public issue 317).
2400    * Clarified the <<features-features-samplerAnisotropy,
2401      pname:samplerAnisotropy feature>> to only affect the
2402      slink:VkSamplerCreateInfo::pname:anisotropyEnable value, and that
2403      pname:maxAnisotropy is ignored when pname:anisotropyEnable is VK_FALSE
2404      (public issue 503).
2405    * Clarify pointer valid usage statements to use "`valid pointer to valid
2406      _object_`" terminology and update the
2407      <<fundamentals-validusage-pointers,Valid Usage for Pointers>> section
2408      accordingly (public pull request 547).
2409    * Some operations that use integer coordinates can also accept a LOD to
2410      sample from. Add a description of that selection and the validity
2411      conditions in the new <<textures-integer-coordinate-operations, Integer
2412      Texel Coordinate Operations>> section (public issue 548).
2413    * Update stext:VkImageSubresource* valid usage statements (public pull
2414      request 550).
2415    * Added text tying ename:VK_OUT_OF_POOL_MEMORY error for
2416      flink:vkAllocateDescriptorSets to the number of descriptor types in the
2417      allocating pool. Removed redundant "`length`" text about number of
2418      descriptors returned (public issue 582).
2419    * Update slink:VkSwapchainCreateInfoKHR descriptions (public pull request
2420      585).
2421    * Update slink:VkPipelineViewportWScalingStateCreateInfoNV and related
2422      structures' valid usage statements (public pull request 587).
2423    * Change some dates to conform to ISO 8601 as specified in the style guide
2424      (public pull request 601).
2425    * Fix some math markup problems and be more consistent in use of asciidoc
2426      math markup (public pull request 602).
2427  
2428  Internal Issues:
2429  
2430    * Clarified that attribute reads from incomplete vertex buffer elements
2431      are considered out of bounds accesses, in the
2432      slink:VkPhysicalDeviceFeatures and flink:vkCmdBindVertexBuffers.txt
2433      sections (internal issue 842).
2434  
2435  -----------------------------------------------------
2436  
2437  Change log for October 20, 2017 Vulkan 1.0.64 spec update:
2438  
2439    * Bump API patch number and header version number to 64 for this update.
2440  
2441  Github Issues:
2442  
2443    * Add chapter name to the PDF page footer (public pull request 458).
2444    * Fix several mistaken references to the nonexistent etext:VK_DEVICE_LOST
2445      status to etext:VK_ERROR_DEVICE_LOST (public pull request 502).
2446    * Fix description of the tlink:PFN_vkDebugReportCallbackEXT debug report
2447      callback function pointer to match the validation layer behavior (public
2448      issue 534).
2449    * Document experimental KHX extensions and alternate vendor author IDs
2450      also ending in X in more detail in the <<extensions, Layers &
2451      Extensions>> appendix, the extensions section of the style guide, and
2452      the registry schema description document (public issues 536, 580).
2453    * Fix references to ptext:pDepthStencil to properly refer to
2454      pname:pDepthStencilState or pname:pRasterizationState as appropriate in
2455      the slink:VkGraphicsPipelineCreateInfo description (public issue 542).
2456    * Fix wrong parameter name in slink:VkPipelineMultisampleStateCreateInfo
2457      valid usage (public pull request 571).
2458  
2459  Internal Issues:
2460  
2461    * Update the style guide to describe how to write LaTeX math expressions
2462      in table cells (internal issue 908).
2463    * Define how framebuffer-local dependencies work between subpasses with
2464      the same or different numbers of samples, in the
2465      slink:VkSubpassDescription and <<synchronization-framebuffer-regions,
2466      Framebuffer Region Dependencies>> sections. This clarifies which samples
2467      in an input attachment you are allowed to access after a
2468      framebuffer-local dependency (internal issue 915).
2469    * Specify which storage classes can have an initializer in the
2470      <<spirvenv-module-validation, Validation Rules within a Module>> section
2471      (internal issue 1023).
2472    * Use "LOD" consistently for "level-of-detail", to eliminate spelling
2473      inconsistencies. The term is already standardized in the Glossary
2474      (internal issue 1027).
2475  
2476  Other Issues:
2477  
2478    * Fix false positives in Makefile dependencies when rules fail, by
2479      deleting partially-made targets.
2480  
2481  New Extensions:
2482  
2483    * `VK_AMD_shader_info`
2484  
2485  -----------------------------------------------------
2486  
2487  Change log for October 13, 2017 Vulkan 1.0.63 spec update:
2488  
2489    * Bump API patch number and header version number to 63 for this update.
2490  
2491  Github Issues:
2492  
2493    * Add missing valid usage statements for ptext:maxDescriptorSets*,
2494      ptext:maxPerStageDescriptorInputAttachments, and
2495      ptext:maxPerStageResources to slink:VkPipelineLayoutCreateInfo.txt,
2496      flink:VkComputePipelineCreateInfo, and
2497      flink:VkGraphicsPipelineCreateInfo (public issue 546).
2498    * Fix typos in ftext:vkCmdDraw*AMD descriptions (public pull request 549).
2499    * Fixed flink:vkCmdWriteTimestamp so it is not unnecessarily restricted to
2500      queues supporting graphics or compute operations (public issue 558).
2501    * Improvements to valid usage generator for output `*Flags` pointer
2502      parameters and for some `void *` parameters (public pull requests 560,
2503      562).
2504    * Document `altlen` attribute in XML schema as valid C99 syntax and tweak
2505      `vk.xml` to match (public pull request 566).
2506    * Clarify when pname:fence is signaled by flink:vkQueueSubmit in a more
2507      obvious place (public issue 577).
2508  
2509  Internal Issues:
2510  
2511    * Specify a whitelist of supported SPIR-V Storage Classes in the
2512      <<spirvenv-module-validation, Validation Rules within a Module>>
2513      appendix (internal SPIR-V issue 166).
2514    * Relax the shared semaphore wait timeout requirement in the
2515      <<synchronization-semaphores-importing, Importing Semaphore Payloads>>
2516      section (internal issue 820).
2517    * Update the <<textures-image-level-selection, Image Level(s) Selection>>
2518      equations so that the parameters returned by the level-of-detail query
2519      appear explicitly, also fixing the issue that linear filtering would
2520      select a level below the base level for magnification (internal issue
2521      926).
2522    * Disallow creation of a swapchain with zero pname:imageExtent in
2523      slink:VkSurfaceCapabilitiesKHR and slink:VkSwapchainCreateInfoKHR
2524      (internal issue 1020).
2525  
2526  Other Issues:
2527  
2528    * Clarify in <<textures-operation-validation,Image View Validation>> that
2529      the layout of subresources in an image view must have a layout that
2530      matches that written into the descriptor, and that this section is about
2531      validating image views, not images.
2532  
2533  New Extensions:
2534  
2535    * `VK_EXT_global_priority`
2536  
2537  -----------------------------------------------------
2538  
2539  Change log for October 6, 2017 Vulkan 1.0.62 spec update:
2540  
2541    * Bump API patch number and header version number to 62 for this update.
2542  
2543  Github Issues:
2544  
2545    * Move asciidoc conditionals for `VK_KHR_maintenance1` in
2546      slink:VkDescriptorSetAllocateInfo so valid usage statements for
2547      `VK_KHR_push_descriptor` aren't accidentally removed when the first
2548      extension isn't enabled (public issue 573).
2549  
2550  Internal Issues:
2551  
2552    * Specify constraints on concurrent access to fences that share payload in
2553      the <<synchronization-fences-importing, Importing Fence Payloads>> and
2554      <<synchronization-semaphores-waiting-state, Semaphore State Requirements
2555      For Wait Operations>> sections (internal issue 820).
2556    * Define the term "`retired swapchain`", reorganize some swapchain
2557      language, and improve language for pname:oldSwapchain in
2558      flink:VkSwapchainCreateInfoKHR, the <<swapchain-wsi-image-create-info>>
2559      table, flink:vkDestroySwapchainKHR, and flink:vkAcquireNextImage2KHX
2560      (internal issue 869).
2561    * Describe in the <<writing-arrays, Describing Properties of Array
2562      Elements>> section of the style guide how and when to use "`each`" and
2563      "`any`" to refer to properties of array elements, and make those uses in
2564      the specification consistent (internal issue 884).
2565    * Clarified that events cannot be used for cross-queue synchronization in
2566      the <<synchronization-events, Events>> section and for
2567      flink:vkCmdWaitEvents (internal issue 970).
2568    * Add success and error codes to +vk.xml+ for
2569      flink:vkCreateValidationCacheEXT (internal issue 995).
2570    * Clarify aspect mask usage for image memory barriers of multi-plane
2571      images in slink:VkImageSubresourceRange, slink:VkImageMemoryBarrier, and
2572      the <<textures-layout-validation, Layout Validation>> section (internal
2573      issue 996).
2574  
2575  Other Issues:
2576  
2577    * Fixed typo in flink:VkRenderPassSampleLocationsBeginInfoEXT (renamed
2578      field pname:pSubpassSampleLocations to
2579      pname:pPostSubpassSampleLocations).
2580    * Add missing buffer usage requirements for indirect draws in
2581      flink:vkCmdDrawIndirect, flink:vkCmdDrawIndirectCountAMD,
2582      flink:vkCmdDrawIndexedIndirect, and
2583      flink:vkCmdDrawIndexedIndirectCountAMD.
2584    * Modify Makefile to allow specification to build in git "`detached HEAD`"
2585      state.
2586    * Update valid usage ID generation script to allow recursively operating
2587      on all `.txt` files in a specified directory, and move the `startVUID`
2588      tracking information into a separate python file that is automatically
2589      updated by the script.
2590    * Fixed errors in API example code for
2591      flink:vkUpdateDescriptorSetWithTemplateKHR and
2592      flink:vkCmdPushDescriptorSetWithTemplateKHR.
2593  
2594  New Extensions:
2595  
2596    * Add +vk.xml+ entries for pending `VK_ANDROID_native_buffer` extension
2597      (note, this extension is not yet enabled).
2598    * `VK_AMD_shader_image_load_store_lod`
2599  
2600  -----------------------------------------------------
2601  
2602  Change log for September 15, 2017 Vulkan 1.0.61 spec update:
2603  
2604    * Bump API patch number and header version number to 61 for this update.
2605  
2606  Github Issues:
2607  
2608    * Provide alternate length attributes (altlen=) in the XML schema, for
2609      those using length attributes to generate code instead of documentation
2610      (public issue 555).
2611    * Fix erroneous references to `latex:` being used for asciidoc math
2612      markup, rather than `latexmath:` (public pull request 556).
2613    * Add author ID to XML for Kazan software renderer (public pull request
2614      557).
2615  
2616  Internal Issues:
2617  
2618    * Add the <<fundamentals-abi,Application Binary Interface>> section
2619      describing platform ABI requirements and recommendations, add examples
2620      of function and function pointer declarations to the
2621      <<boilerplate-platform-specific-calling-conventions, Platform-Specific
2622      Calling Conventions>> section, and remove related language that existed
2623      elsewhere in the specification (internal issue 64).
2624    * Describe where to document valid usage interactions of chained
2625      structures in the style guide, and fix one case now appearing in
2626      slink:VkBufferCreateInfo instead of the child
2627      slink:VkDedicatedAllocationBufferCreateInfoNV structure (internal issue
2628      715).
2629    * Add example to the style guide of describing enumerated types which are
2630      empty when the spec is built without relevant extensions enabled, and
2631      apply it to existing examples for
2632      elink:VkDescriptorSetLayoutCreateFlagBits and
2633      elink:VkSubpassDescriptionFlagBits (internal issue 864).
2634    * Add a note to the <<fundamentals-validusage-enums, Valid Usage for
2635      Enumerated Types>> section that the special values suffixed with
2636      etext:_BEGIN_RANGE, etext:_END_RANGE, etext:_RANGE_SIZE and
2637      etext:_MAX_ENUM are not part of the API and should: not be used by
2638      applications (internal issue 872).
2639    * Added note to flink:vkCmdUpdateBuffers explaining the performance
2640      penalty for copies done in this way, and why the upper copy limit is
2641      what it is (internal issue 952).
2642    * Update `VK_KHX_device_group` to split some functionality into the new
2643      `VK_KHR_bind_memory2` extension, and rename that functionality (internal
2644      issue 969).
2645    * Remove *Status* fields from extension appendices, since they are by
2646      definition published and complete by the time they reach the public
2647      github repository (internal issue 973).
2648  
2649  Other Issues:
2650  
2651    * Update Data Format specification dependency to version 1.2 and change
2652      references to DF sections accordingly.
2653    * Update XML to make the pname:pAllocator parameter of
2654      flink:vkRegisterDeviceEventEXT and flink:vkRegisterDisplayEventEXT in
2655      the `VK_EXT_display_control` extension as optional.
2656  
2657  New Extensions:
2658  
2659    * `VK_KHR_bind_memory2`
2660    * `VK_KHR_image_format_list`
2661    * `VK_KHR_maintenance2`
2662    * `VK_KHR_sampler_ycbcr_conversion`
2663  
2664  -----------------------------------------------------
2665  
2666  Change log for September 5, 2017 Vulkan 1.0.60 spec update:
2667  
2668    * Bump API patch number and header version number to 60 for this update.
2669  
2670  Github Issues:
2671  
2672    * Document that <<queries-timestamps, Timestamp Queries>> can only be
2673      meaningfully compared when they are written from the same queue (public
2674      issue 216).
2675    * Document that the `<extension>` tag `type` attribute is required for
2676      non-disabled extensions (derived from, but does not close public issue
2677      354).
2678    * Clean up registry schema length attribute descriptions to be consistent
2679      and correct (public issue 555).
2680  
2681  Internal Issues:
2682  
2683    * Replace as much of the hand-written extension appendix metadata as
2684      possible with asciidoc includes generated from corresponding attributes
2685      of +vk.xml+, and enhance the style guide to match. This avoids
2686      inconsistencies between +vk.xml+ and the appendices, and produces a more
2687      uniform style (internal issue 137).
2688    * Remove the generated extDependency.{py,sh} files from the tree and
2689      create them dynamically on demand instead, reducing merge conflicts
2690      (internal issue 713).
2691    * Add a prototype tool for generating in-place difference markup for
2692      sections guarded by asciidoc conditionals, and new syntax for open
2693      blocks to support it (internal issue 833).
2694    * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle
2695      types to the same physical device in the
2696      slink:VkPhysicalDeviceIDPropertiesKHR,
2697      flink:VkImportMemoryWin32HandleInfoKHR,
2698      slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR,
2699      slink:VkImportSemaphoreWin32HandleInfoKHR,
2700      slink:VkImportSemaphoreFdInfoKHR
2701      <<external-memory-handle-types-compatibility, External memory handle
2702      types compatibility>>, <<external-semaphore-handle-types-compatibility,
2703      External semaphore handle types compatibility>>, and
2704      <<external-fence-handle-types-compatibility, External fence handle types
2705      compatibility>> sections (internal issue 956).
2706  
2707  Other Issues:
2708  
2709    * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there
2710      is an interaction, but not a strict dependency), and add a new
2711      `extension` attribute to the `<require` XML tag to allow classifying a
2712      subset of interfaces of an extension as requiring another extension.
2713      Update the registry schema and documentation accordingly.
2714  
2715  New Extensions:
2716  
2717    * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask`
2718      GLSL extension)
2719    * `VK_EXT_sample_locations`
2720    * `VK_EXT_validation_cache`
2721  
2722  -----------------------------------------------------
2723  
2724  Change log for August 19, 2017 Vulkan 1.0.59 spec update:
2725  
2726    * Bump API patch number and header version number to 59 for this update.
2727  
2728  Github Issues:
2729  
2730    * Fix a few missing Implicit Valid Usage statements to indicate that a
2731      common parent of two objects is required (public issue 497).
2732    * Clarify render pass synchronization language for
2733      slink:VkSubpassDependency and <<renderpass,render passes>> (public
2734      issue 531).
2735    * Rename ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT to
2736      ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT for consistency, and
2737      add an alias for backwards compatibility (public issue 539).
2738  
2739  Internal Issues:
2740  
2741    * Add an explanation to the <<interfaces-builtin-variables-layer,
2742      code:Layer>> description explaining that writing to invalid layers
2743      results may or may not result in primitives being processed and fragment
2744      shaders being run, and gives undefined results in the framebuffer
2745      (internal issue 614)
2746    * Add valid usage statement for slink:VkDescriptorSetLayoutBinding
2747      requiring that input attachment descriptor bindings must not use
2748      non-fragment stages (internal issue 933).
2749  
2750  Other Issues:
2751  
2752    * Makes description of pname:loadOp and pname:storeOp easier to read in
2753      the <<renderpass-load-store-ops>> section.
2754  
2755  New Extensions:
2756  
2757    * `VK_EXT_shader_stencil_export`
2758  
2759  -----------------------------------------------------
2760  
2761  Change log for August 14, 2017 Vulkan 1.0.58 spec update:
2762  
2763    * Bump API patch number and header version number to 58 for this update.
2764  
2765  Github Issues:
2766  
2767    * Update the <<interfaces-resources-descset,Descriptor Set Interface>>
2768      section to allow multiple variables with the same descriptor set/binding
2769      decorations, and require that all variables that are statically used
2770      must be consistent with the pipeline layout. Allow
2771      ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be used with texture
2772      and sampler variables (public issues 522, 524).
2773  
2774  Internal Issues:
2775  
2776    * Replace networkx package used for extension dependency generation with a
2777      homegrown network dependency traverser (internal issue 713).
2778    * Specify in the <<interfaces-fragmentoutput, Fragment Output Interface>>
2779      section that if a fragment shader writes integers that cannot be
2780      represented in the format of the colour attachment, then the result is
2781      undefined (internal issue 893).
2782    * Separate malformed valid usage statement for
2783      slink:VkPipelineRasterizationStateCreateInfo into two (internal issue
2784      918).
2785    * Fix cases where the term 'pNext chain' is incorrectly used in reference
2786      to functions, rather than their parameters. Replace 'pNext list' with
2787      'pNext chain'. Fixed typo in the example code of
2788      +VK_KHR_dedicated_allocation+ (internal issue 944).
2789    * Fix typo in elink:VkExternalSemaphoreHandleTypeFlagBitsKHR enum
2790      descriptions, replacing
2791      etext:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR with
2792      ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, and make the
2793      description more consistent with
2794      VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR (internal issue 950).
2795  
2796  Other Issues:
2797  
2798    * Clarify how pipeline stage masks affect
2799      <<synchronization-pipeline-stages-masks, access and synchronization
2800      scopes>>.
2801    * Clarify that dedicated allocations do not allow aliasing in the
2802      flink:vkBindBufferMemory and flink:vkBindImageMemory valid usage
2803      statements.
2804    * Correct specification of pname:dynamicCount for push_constant token in
2805      slink:VkIndirectCommandsLayoutNVX.
2806  
2807  New Extensions:
2808  
2809    * `VK_EXT_shader_viewport_index_layer`
2810  
2811  -----------------------------------------------------
2812  
2813  Change log for August 1, 2017 Vulkan 1.0.57 spec update:
2814  
2815    * Bump API patch number and header version number to 57 for this update.
2816  
2817  Github Issues:
2818  
2819    * Fix error in description of ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
2820      block size (public issue 342).
2821    * Update documentation of ename:VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
2822      to explicitly mention both graphics and compute pipelines (public issue
2823      525).
2824  
2825  Internal Issues:
2826  
2827    * Document that
2828      slink:VkPhysicalDeviceLimits::pname:framebufferColorSampleCounts does
2829      not cover integer formats (internal issue 550).
2830    * Add a note under slink:VkImageViewCreateInfo describing how values meant
2831      for one format can be sanitized when used via another format (internal
2832      issue 927).
2833    * Add valid usage statements to ftext:vkCmd* documenting that image
2834      subresources used as attachments must not be accessed as non-attachments
2835      in a render pass (internal issue 929).
2836    * Remove obsolete 'validextensionstructs' attribute from +vk.xml+, the XML
2837      schema, and the schema documentation (internal issue 946).
2838  
2839  New Extensions:
2840  
2841    * `VK_AMD_mixed_attachment_samples`
2842    * `VK_EXT_post_depth_coverage`
2843    * `VK_KHR_relaxed_block_layout`
2844  
2845  -----------------------------------------------------
2846  
2847  Change log for July 21, 2017 Vulkan 1.0.56 spec update:
2848  
2849    * Bump API patch number and header version number to 56 for this update.
2850  
2851  Github Issues:
2852  
2853    * Add valid usage statements for commands introduced by
2854      `VK_EXT_debug_report` and `VK_EXT_debug_marker` extensions, regarding
2855      the valid pname:object and pname:objectType values (public issue 495).
2856    * Modify `GL_KHR_vulkan_glsl` specification to document that uniform and
2857      buffer block arrays each take only a single binding (public issue 514).
2858    * Add `KHX` author tag to +vk.xml+ (public issue 526).
2859  
2860  Internal Issues:
2861  
2862    * Document use of code: macro for non-Vulkan APIs in the style guide
2863      (internal issue 863).
2864    * Document that reference page open block delimiters must not contain
2865      asciidoc section markup in the style guide (internal issue 898).
2866    * Fix <<spirvenv,SPIR-V appendix>> to say
2867      code:VariablePointersStorageBuffer instead of
2868      code:VariablePointersUniformBufferBlock (internal issue 928).
2869  
2870  Other Commits:
2871  
2872    * Add missing extension structures to dependency attributes in +vk.xml+.
2873  
2874  New Extenions:
2875  
2876    * `VK_EXT_depth_range_unrestricted`
2877  
2878  -----------------------------------------------------
2879  
2880  Change log for July 15, 2017 Vulkan 1.0.55 spec update:
2881  
2882    * Bump API patch number and header version number to 55 for this update.
2883  
2884  Github Issues:
2885  
2886    * Removed unintended optional parameter in +vk.xml+ from the
2887      pname:pWaitSemaphores member of slink:VkPresentInfoKHR, which resulted
2888      in the generation of an incorrect implicit valid usage clause allowing
2889      pname:pWaitSemaphores to be NULL even when pname:waitSemaphoreCount is
2890      non-zero (public issue 491).
2891    * Add missing attribute to +vk.xml+ documenting that
2892      slink:VkSwapchainCounterCreateInfoEXT extends
2893      slink:VkSwapchainCreateInfo (public issue 510).
2894    * Add const qualifier for some `VK_EXT_debug_market` extension command
2895      parameters that were missing it (public issue 513).
2896    * Fix definition of q and level~base~ in
2897      <<textures-image-level-selection,Image Level(s) Selection>> (public
2898      issue 515).
2899    * Clarify lifetime requirement for slink:VkRenderPass objects used in
2900      object creation (public issue 516).
2901    * Fix link to floating/normalized fixed-point conversion from
2902      <<interfaces-fragmentoutput,Fragment Output Interface>> (public issue
2903      521).
2904  
2905  Internal Issues:
2906  
2907    * Update the style guide to include the general structure of a Vulkan
2908      command name, the specific rule for using "`Get`" vs. "`Enumerate`" in
2909      names, and a table of verbs commonly used in command names (spinoff of
2910      internal issue 753).
2911    * Clarified the behavior of automatic layout transitions in case of
2912      attachment views that are 2D or 2D array views of 3D images. In
2913      addition, restructured the valid usage clauses corresponding to the
2914      members of the slink:VkImageSubresourceRange structure and added missing
2915      valid usage clauses for its pname:baseMipLevel and pname:baseArrayLayer
2916      members (internal issues 803, 849).
2917    * Modify `GL_KHR_vulkan_glsl` specification to allow explicit std430 on a
2918      push_constant declaration (internal issue 919).
2919  
2920  Other Commits:
2921  
2922    * Modify <<synchronization-framebuffer-regions, Framebuffer Region
2923      Dependencies>> to use synchronization scope terminology.
2924    * Add ename:VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT to the
2925      `VK_EXT_swapchain_colorspace` extension.
2926    * Replace XML comments with `comment` attributes and/or tags, to enable
2927      tools which transform the XML without loss of information.
2928    * Replace `validextensionstructs` with `structextends`, which is tagged in
2929      the child structure instead of the parent. This makes it slightly
2930      simpler to add new structs to the XML, causes fewer merge conflicts, and
2931      the information is kept localized to the extension structures where it
2932      belongs. The old `validextensionstructs` attributes will be retained
2933      until we're certain this doesn't cause problems with known consumers of
2934      +vk.xml+.
2935  
2936  -----------------------------------------------------
2937  
2938  Change log for July 13, 2017 Vulkan 1.0.54 spec update:
2939  
2940    * Bump API patch number and header version number to 54 for this update.
2941  
2942  Github Issues:
2943  
2944  Internal Issues:
2945  
2946    * Fix tessellation domain to have an upper-left origin in the
2947      <<img-tessellation-topology-ul, tessellation toplogy image>> and related
2948      language. CTS and all implementations were already doing this, it was
2949      just a documentation bug that it was flipped to lower-left (internal
2950      issue 603).
2951    * Add a section to the style guide describing how VUID tags are changed
2952      and removed when the corresponding Valid Usage statements are modified
2953      (internal issue 829).
2954    * Add explicit Valid Usage statement to
2955      slink:VkPipelineDynamicStateCreateInfo to require that members of
2956      pname:pDynamicStates must be unique (internal issue 851).
2957  
2958  New Extensions:
2959  
2960    * `VK_KHR_16bit_storage`
2961    * `VK_KHR_dedicated_allocation`
2962    * `VK_KHR_external_fence`
2963    * `VK_KHR_external_fence_capabilities`
2964    * `VK_KHR_external_fence_fd`
2965    * `VK_KHR_external_fence_win32`
2966    * `VK_KHR_get_memory_requirements2`
2967    * `VK_KHR_storage_buffer_storage_class`
2968    * `VK_KHR_variable_pointers`
2969  
2970  Extensions Promoted From KHX To KHR Status:
2971  
2972    * `VK_KHR_external_memory`
2973    * `VK_KHR_external_memory_capabilities`
2974    * `VK_KHR_external_memory_fd`
2975    * `VK_KHR_external_memory_win32`
2976    * `VK_KHR_external_semaphore`
2977    * `VK_KHR_external_semaphore_capabilities`
2978    * `VK_KHR_external_semaphore_fd`
2979    * `VK_KHR_external_semaphore_win32`
2980    * `VK_KHR_win32_keyed_mutex`
2981  
2982  -----------------------------------------------------
2983  
2984  Change log for June 24, 2017 Vulkan 1.0.53 spec update:
2985  
2986    * Bump API patch number and header version number to 53 for this update.
2987  
2988  Github Issues:
2989  
2990  Internal Issues:
2991  
2992    * Clarify mappings of coordinates for mutable, compatible image views in
2993      slink:VkImageViewCreateInfo (internal issue 815).
2994    * Make ename:VK_BIND_SFR_BIT require a logical device with multiple
2995      physical devices, so that standard sparse image block dimensions are
2996      only required on systems that support multi-GPU (internal issue 835).
2997    * Convert all files from use of // refBegin .. // refEnd comments to
2998      delimit ref pages, to use of open blocks, and update style guide
2999      accordingly (internal issue 839).
3000    * Add valid usage for slink:VkWriteDescriptorSet when performing updates
3001      to a ename:VK_STORAGE_IMAGE descriptor with layout
3002      ename:VK_IMAGE_LAYOUT_GENERAL.
3003    * Add a hack to the validity generator script to support an odd
3004      interaction between flink:vkCmdFillBuffer and an extension (internal
3005      issue 853).
3006    * Remove redundant text describing slink:VkBufferCreateInfo::pname:usage,
3007      which was already covered by implicit valid usage (internal issue 854).
3008    * Update implicit validity generator script to properly handle the
3009      pname:sType and pname:pNext members of "returnedonly" structures
3010      (internal issue 874).
3011    * Note that slink:VkApplicationInfo::pname:pApplicationName &
3012      slink:VkApplicationInfo::pname:pEngineName are optional, and add missing
3013      implicit valid usage statements for flink:vkDestroyInstance.
3014    * Added missing valid usage for flink:vkCmdWriteTimestamp to require a
3015      timestamp query pool.
3016    * Simplify and/or split "`non-atomic`" valid usage statements.
3017  
3018  New Extensions:
3019  
3020    * `VK_AMD_gpu_shader_int16`
3021    * `VK_EXT_blend_operation_advanced`
3022    * `VK_EXT_sampler_filter_minmax`
3023    * `VK_NV_framebuffer_mixed_samples`
3024  
3025  -----------------------------------------------------
3026  
3027  Change log for June 13, 2017 Vulkan 1.0.52 spec update:
3028  
3029    * Bump API patch number and header version number to 52 for this update.
3030  
3031  Github Issues:
3032  
3033  Internal Issues:
3034  
3035    * Clarify behavior when non-coherent memory has
3036      <<memory-device-unmap-does-not-flush, not been flushed before being
3037      unmapped>> (internal issue 819).
3038    * Fix description of code:WorkgroupSize builtin to note it decorates an
3039      object, not a variable (internal issue 836).
3040    * Fix asciidoc attributes so that trailing '{plus}' symbols in [eq] style
3041      equations are rendered properly (internal issue 845).
3042    * Add language to the "`Extension Handles, Objects, Enums, and Typedefs`"
3043      section of the Procedures and Conventions document stating that any new
3044      handle type requires a corresponding entry in the elink:VkObjectType
3045      enumerated type (internal issue 856).
3046    * Update style guide to use slink macro for Vulkan handle type names, and
3047      define narrow conditions under which to use the *name and *text macros
3048      instead of *link (internal issue 886).
3049    * Add a dependency of the <<VK_KHX_device_group,VK_KHX_device_group>>
3050      extension on VK_KHX_device_group_creation to +vk.xml+ and the extension
3051      appendix.
3052    * Change the copyright on Vulkan specification asciidoc *source* files to
3053      CC-BY 4.0, and update the proprietary Khronos copyright applied to the
3054      generated *output* formats (internal issue 327). This enables broader
3055      re-use and modification of the Vulkan specification sources, while not
3056      affecting the Reciprocal IP License between Vulkan Adopters and Working
3057      Group Members.
3058  
3059  New Extensions:
3060  
3061    * `VK_NV_fill_rectangle`
3062    * `VK_NV_fragment_coverage_to_color`
3063  
3064  -----------------------------------------------------
3065  
3066  Change log for June 4, 2017 Vulkan 1.0.51 spec update:
3067  
3068    * Bump API patch number and header version number to 51 for this update.
3069  
3070  Github Issues:
3071  
3072    * Add Valid Usage statement to flink:vkCmdResolveImage to require that
3073      source and destination image formats match (public issue 492).
3074    * Specify that a code:char* parameter must: be a valid null-terminated
3075      string in the <<fundamentals-implicit-validity, implicit valid usage>>
3076      section (public issue 494).
3077    * Removed unnecessary VU for slink:VkPhysicalDeviceFeatures which is
3078      covered by ename:VK_ERROR_FEATURE_NOT_PRESENT already (public issue
3079      496).
3080    * Clarify valid usage of pname:pQueueFamilyIndices in
3081      slink:VkBufferCreateInfo, slink:VkImageCreateInfo, and
3082      slink:VkSwapchainCreateInfoKHR (public issue 501).
3083    * Document that dependencies of enabled extensions must also be enabled in
3084      the <<extended-functionality-extensions-dependencies, Extension
3085      Dependencies>> section (public issue 507).
3086  
3087  Internal Issues:
3088  
3089    * Change slink:VkMappedMemoryRange valid usage to allow pname:offset +
3090      pname:size == size of the allocation. Also, if ename:VK_WHOLE_SIZE is
3091      used, require the end of the mapping to be aligned to a multiple of
3092      pname:nonCoherentAtomSize (internal issue 611).
3093    * Add issue to `VK_KHR_win32_surface` about reusing window objects from a
3094      different graphics API or Vulkan ICD (internal issue 639).
3095    * Require locations on user in/out in `GL_KHR_vulkan_glsl` (internal issue
3096      783).
3097    * Added version info to the json validation output, and updated the schema
3098      to match (internal issue 838).
3099    * Restructure enumerated type descriptions separately from the command or
3100      structure they are used in, allowing better reference page generation
3101      (internal issue 841).
3102    * Re-sort extension appendices to be in alphabetical order within each
3103      author ID section.
3104    * Fix enum naming and clarify behavior for
3105      `VK_NVX_device_generated_commands` extension.
3106  
3107  -----------------------------------------------------
3108  
3109  Change log for May 20, 2017 Vulkan 1.0.50 spec update:
3110  
3111    * Bump API patch number and header version number to 50 for this update.
3112  
3113  Github Issues:
3114  
3115    * Fix numerous minor issues with the VK_EXT_debug_report extension (public
3116      issues 478, 483, 486, 489, 490).
3117  
3118  Internal Issues:
3119  
3120    * Update flink:vkAllocateDescriptorSets to specify conditions under which
3121      to return ename:VK_ERROR_FRAGMENTED_POOL or
3122      ename:VK_ERROR_OUT_OF_POOL_MEMORY instead of
3123      out-of-host/out-of-device-memory, and improve the
3124      <<fundamentals-errorcodes, description of those errors (internal issue
3125      654).
3126    * Add a NOTE documenting that flink:vkAcquireNextImageKHR can only signal
3127      a single semaphore, and how to deal with that when multiple physical
3128      devices in a logical device need to wait on it (internal issue 730).
3129    * Improve description of pname:pNext chains of
3130      slink:VkPhysicalDeviceImageFormatInfo2KHR and
3131      slink:VkImageFormatProperties2KHR (internal issue 814).
3132    * Clean up math markup issues in the <<textures, Image Operations>>
3133      chapter (internal issue 818).
3134    * Update validusage target to use more robust code for preprocessing, by
3135      making direct use of Asciidoctor's preprocessor. Added uniqueItems check
3136      to JSON vu schema and add clean_validusage target (internal issue 826).
3137    * Update style guide to prohibit writing non-self-contained (on a single
3138      bullet point) Valid Usage statements, and modify offending Valid Usage
3139      statements in the Specification to match, to assist with automatic
3140      extraction for the validation layers (internal issue 828).
3141    * Add ename:VK_VALIDATION_CHECK_SHADERS_EXT to elink:VkValidationCheckEXT
3142      of the `VK_EXT_validation_flags` extension, to selectively disable
3143      shader validation.
3144    * Remove duplicate valid usage statement for slink:VkImageMemoryBarrier.
3145    * Modify reflow.py script to place VUID tag anchors standalone on a line
3146      following their corresponding bullet point, and reflow the spec text
3147      accordingly (this had been pending since the initial tag deployment).
3148  
3149  New Extensions:
3150  
3151    * `VK_AMD_texture_gather_bias_lod`
3152  
3153  -----------------------------------------------------
3154  
3155  Change log for May 12, 2017 Vulkan 1.0.49 spec update:
3156  
3157    * Bump API patch number and header version number to 49 for this update.
3158  
3159  Github Issues:
3160  
3161    * Modify reference page extraction script to make internal links to spec
3162      anchors refer to the core specification instead of being dangling links
3163      (public issue 455).
3164    * Fix GL_KHR_vulkan_glsl typo and add a nor-normative mapping to the newly
3165      published StorageBuffer class (public issue 466).
3166    * Both flink:vkEnumerateInstanceExtensionProperties and
3167      flink:vkEnumerateDeviceExtensionProperties return
3168      ename:VK_ERROR_LAYER_NOT_PRESENT, which covers the error case of an
3169      application providing a layer name that wasn't returned by
3170      ftext:vkEnumerate{Instance|Device}LayerProperties (public issue 487).
3171    * The specification for flink:VkApplicationInfo::apiVersion says that the
3172      driver must return ename:VK_ERROR_INCOMPATIBLE_DRIVER in the case that
3173      pname:apiVersion specifies a non-supported version. That means that the
3174      valid usage should not also state that, and so the VU statement is
3175      removed. The VU had language about "`an effective substitute`" that
3176      would have been lost, and so it was moved to the pname:apiVersion
3177      description (public issue 488).
3178  
3179  Internal Issues:
3180  
3181    * Modify implicit validity generator script to assign asciidoc anchors to
3182      all valid usage statements it generates, and reflow.py script to insert
3183      Valid Usage ID (VUID) tags into the specification source files for
3184      explicit valid usage statements. This has no semantic effects on the
3185      specification, but will support the validation layer's detection of
3186      valid usage violations and allow it to link into the corresponding part
3187      of the specification (internal issue 583).
3188    * Assign VUID tags to all explicit VU statements and document
3189      the process and tag format in the style guide (internal issue 583).
3190    * Clarify the rules of whether to structure new functionality as instance
3191      extensions, device extensions, or both in the
3192      <<extended-functionality-instance-extensions-and-devices, Instance
3193      Extensions and Device Extensions>> section (internal issue 749).
3194    * Require that SPIR-V run-time arrays are only used with the
3195      code:BufferBlock decoration (internal issue 750).
3196    * Fix implicit and explicit valid usage statements for
3197      slink:VkWriteDescriptorSet::pname:dstSet (internal issue 767)
3198    * Fix SPIR-V code sample for ename:VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
3199      in the <<descriptorsets-uniformtexelbuffer, Uniform Texel Buffer>>
3200      section (internal issue 770).
3201    * Clarify that disabling depth testing also disables depth writes in the
3202      <<fragops-ds-state, Depth and Stencil Operations>> section (internal
3203      issue 775).
3204    * flink:VkDescriptorImageInfo::pname:imageLayout must match the actual
3205      imageLayout at the time the image is accessed. This was in the spec
3206      text, but needed an associated valid usage statement.
3207    * Note that only 32-bit atomic operations are supported in the
3208      <<spirvenv-module-validation, Validation Rules within a Module>>
3209      section.
3210    * Note that code:UniformConstant variables must not have initializers in
3211      the <<spirvenv-module-validation, Validation Rules within a Module>>
3212      section.
3213    * Add a new elink:VkObjectType enumeration to the core API, promoted from
3214      elink:VkDebugObjectTypeEXT, since it is used for much more than just the
3215      debug_report extension.
3216  
3217  New Extensions:
3218  
3219    * `VK_KHR_get_surface_capabilities2`
3220    * `VK_KHR_shared_presentable_image`
3221  
3222  -----------------------------------------------------
3223  
3224  Change log for April 15, 2017 Vulkan 1.0.48 spec update:
3225  
3226    * Bump API patch number and header version number to 48 for this update.
3227  
3228  Internal Issues:
3229  
3230    * Add missing VU statements for flink:vkUpdateDescriptorSets (internal
3231      issue 333).
3232    * Correct swapped ifdef/ifndef blocks for `VK_KHR_maintenance1` extension
3233      (internal issue 776).
3234  
3235  -----------------------------------------------------
3236  
3237  Change log for April 8, 2017 Vulkan 1.0.47 spec update:
3238  
3239    * Bump API patch number and header version number to 47 for this update.
3240  
3241  Github Issues:
3242  
3243    * Allow <<synchronization-pipeline-barriers-subpass-self-dependencies,
3244      self-dependencies>> (also described for slink:VkSubpassDependency) to
3245      have earlier stages depend on later stages if all stages are
3246      framebuffer-space (public issue 125).
3247    * Clarify when pipeline state structures are ignored in the
3248      slink:VkGraphicsPipelineCreateInfo strucure, when the tessellation
3249      structure must be valid, and remove 'if `NULL`' descriptions from the
3250      valid usage statements (public issue 445).
3251    * Remove the obsolete "validextensionstructs" attribute for
3252      flink:VkPresentRegionsKHR. This caused a pname:pNext valid usage
3253      statement to be generated which wasn't consistent with what is stated in
3254      the spec (public issue 481).
3255  
3256  Internal Issues:
3257  
3258    * Clarify facingness of non-polygon fragments for slink:VkStencilOpState
3259      and in the code:FrontFacing <<interfaces-builtin-variables,built-in
3260      variable description>>. Define 'facingness' of a fragment as a distinct
3261      term from facingness of a polygon (internal issue 662).
3262    * Clarify that the texture compression features (e.g.
3263      pname:textureCompressionBC) means that all formats of that type
3264      (<<features-features-textureCompressionASTC_LDR,ASTC>>,
3265      <<features-features-textureCompressionETC2,ETC2>>,
3266      <<features-features-textureCompressionBC,BC>>) are supported, and that
3267      support for individual formats may: queried separately (internal issue
3268      663).
3269    * Clarify in the valid usage for slink:VkBindImageMemoryInfoKHX that each
3270      SFR rectangle must be a multiple of the sparse block size for each
3271      aspect, e.g. in a depth/stencil image using separate depth/stencil
3272      planes (internal issue 721).
3273    * Re-remove KHX variants of KHR structure types after promotion (internal
3274      issue 762).
3275  
3276  -----------------------------------------------------
3277  
3278  Change log for March 31, 2017 Vulkan 1.0.46 spec update:
3279  
3280    * Bump API patch number and header version number to 46 for this update.
3281  
3282  Github Issues:
3283  
3284    * Add language to the <<fundamentals-validusage-enums, Valid Usage for
3285      Enumerated Types>> section allowing values to be returned from Vulkan
3286      that are not present in extensions explicitly enabled by the
3287      application, similar to existing language for bit flags in the
3288      <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public
3289      issue 442).
3290    * *Important*: run `gem update --pre asciidoctor-pdf` before trying to
3291      build this version of the spec - 1.5.0.alpha15 is required for this
3292      change. Removes the monkey patch currently used to draw valid usage
3293      blocks across multiple pages which had numerous issues. A fixed version
3294      was incorporated into Asciidoctor-PDF for the latest release, so the
3295      monkey patch or any variant thereof is no longer required (public issue
3296      465).
3297  
3298  Internal Issues:
3299  
3300    * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
3301      to `VK_EXT_debug_report` extension
3302    * Fix ptext:pNext member of
3303      slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const
3304      pointer. Properties structures return values, so the chain should be
3305      non-const.
3306    * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension,
3307      against 1.0 (internal issue 612).
3308    * Add Valid Usage statements requiring that each structure type valid in a
3309      ptext:pNext chain must: not appear more than once in a chain (internal
3310      issue 752).
3311    * Use ename:VK_USE_PLATFORM_WIN32_KHX in the
3312      `VK_KHX_external_memory_win32` extension, rather than etext:_KHR
3313      (internal issue 754).
3314  
3315  New Extensions:
3316  
3317    * `VK_KHR_incremental_present`
3318  
3319  -----------------------------------------------------
3320  
3321  Change log for March 24, 2017 Vulkan 1.0.45 spec update:
3322  
3323    * Bump API patch number and header version number to 45 for this update.
3324  
3325  Github Issues:
3326  
3327    * Defined the lifetime of the memory pointed to by
3328      slink:VkDisplayPropertiesKHR::pname:displayName to be equal to that of
3329      its associated display handle (public issue 460).
3330    * Correct several cases where the sparse memory feature name
3331      pname:residencyNonResidentStrict was written as
3332      pname:sparseResidencyNonResidentStrict (public issue 475).
3333  
3334  Internal Issues:
3335  
3336    * Fix ptext:pNext member of slink:VkPhysicalDeviceGroupPropertiesKHX to be
3337      a non-const pointer. Properties structures return values, so the chain
3338      should be non-const.
3339    * Clarify definition of memory aliasing to consistently use the terms
3340      "linear" and "non-linear" when referring to resources, and define what
3341      those terms mean.
3342    * Modified XML schema and implicit validity scripts to generate language
3343      for all ptext:pNext values in a ptext:pNext chain instead of just the
3344      top level struct, and made `noautovalidity` functional for ptext:sType
3345      and ptext:pNext (internal issue 535).
3346    * Add more detail for BT2020 and scRGB color spaces in
3347      `VK_EXT_swapchain_colorspace` extension (internal issue 632).
3348    * Add naming rules for Extension Structure Names (structures added to the
3349      ptext:pNext chain of a base structure) to the style guide (internal
3350      issue 706).
3351    * Define the glossary term "ptext:pNext chain", and use it consistently in
3352      the spec (internal issue 744).
3353  
3354  -----------------------------------------------------
3355  
3356  Change log for March 17, 2017 Vulkan 1.0.44 spec update:
3357  
3358    * Bump API patch number and header version number to 44 for this update.
3359  
3360  Github Issues:
3361  
3362    * Fix description of <<features-extentperimagetype, Allowed Extent Values
3363      Based On Image Type>> (public issue 290).
3364    * Better specify VK_DEVICE_LOST behavior around flink:vkQueueSubmit,
3365      flink:vkWaitForFences, and flink:vkGetFenceStatus (public issue 423).
3366    * Clarify definition of flink:vkGetQueryPoolResults::pname:queryCount
3367      (public issue 441).
3368    * Simplify and clean up normative language. Remove shall and replace
3369      recommend and variants with should wherever possible (public issue 448).
3370    * Fix all dangling internal cross-references in the 1.0-extensions
3371      specification, and add scripts/checkXrefs to find these in the future
3372      (public issue 456).
3373    * Reverse order of ChangeLog.txt entries so the most recent version is
3374      documented first (public issue 463)
3375    * Removes "become invalid" which clashes with invalid state for command
3376      buffers. (public issue 467)
3377    * Disallowed pending state in spec text for vkResetCommandBuffer, matching
3378      valid usage (public issue 468)
3379    * Removes sentence describing invalid state "like initial state". (public
3380      issue 469)
3381    * Disallows begin command buffer from resetting command buffers in the
3382      "recording" state. (public issue 470)
3383    * Removes mention of state from description of
3384      VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT (public issue 471)
3385    * Removed extra valid usage statement in VkSubmitInfo (public issue 472)
3386  
3387  Internal Issues:
3388  
3389    * Clarify description of the pname:imageLayout member of
3390      sname:VkDescriptorImageInfo.
3391    * Fix typos where etext:VK_VIEW_TYPE* was used instead of
3392      etext:VK_IMAGE_VIEW_TYPE.
3393    * Removed the <<VK_KHR_display>> and <<VK_KHR_display_swapchain>> example
3394      code from the specification and noted it has been moved to the Vulkan
3395      SDK cube demo (internal issue 179).
3396    * Reorder VkExternalMemoryHandleTypeFlagBitsNV description (internal issue
3397      480).
3398    * Clarify than an implementation is
3399      <<fundamentals-validusage-flags,permitted to return 'undefined' bit
3400      flags>> in a bitfield (internal issue 640).
3401    * Break Valid Usage statements describing unrelated parameters into
3402      separate statements, and add a style guide entry to follow this approach
3403      (internal issue 685).
3404    * Move valid usage statement for slink:VkImageCreateInfo from spec body to
3405      the explicit valid usage block (internal issue 693).
3406    * Fix typos in the descriptions of slink:VkDisplaySurfaceCreateInfoKHR,
3407      flink:vkCreateDisplayModeKHR, and
3408      flink:vkGetDisplayPlaneSupportedDisplaysKHR in the <<display,Presenting
3409      Directly to Display Devices>> section (internal issue 698, 704, 716).
3410    * Clarified that mandatory depth/stencil formats are only a requirement
3411      for 2D images (internal issue 719).
3412    * Clarify that variables decorated with DeviceIndex/ViewIndex must be in
3413      the Input storage class (internal issue 733).
3414    * Work around generator script problem with removal of Unicode literals
3415      from Python 3.0-3.2 using `future` package (internal issue 737).
3416    * Remove nonexistent structure type enums from vk.xml (internal issue
3417      738).
3418    * Fix validextensionstructs attributes for structures in the pname:pNext
3419      chain for VkPresentInfoKHR, fixing implicit valid usage statements for
3420      those structures (internal issue 740).
3421  
3422  -----------------------------------------------------
3423  
3424  Change log for March 10, 2017 Vulkan 1.0.43 spec update:
3425  
3426    * Bump API patch number and header version number to 43 for this update.
3427  
3428  Github Issues:
3429  
3430    * Make clearer that color write mask is applied regardless of whether
3431      blending is enabled, by referring to the
3432      <<framebuffer-color-write-mask,Color Write Mask>> section (public issue
3433      241).
3434    * Fix public issue 414:
3435    ** Added two new command buffer states (invalid, pending), and an explicit
3436       "command buffer lifecycle" section to explain them.
3437    ** Replaced "pending execution" with "in the pending state".
3438    ** Replaced a bunch of "this will invalidate the command buffer" language
3439       with "this will move the command buffer to the invalid state", and added
3440       validation language for what state those command buffers should be in.
3441    ** Added additional validation language about what state a command buffer
3442       should be in for various commands that affect it.
3443    ** Added invalidation language to destroy commands in the lifetimes section
3444       of fundamentals.
3445    ** Added command buffers to list of objects which must not be deleted
3446       whilst a (primary) command buffer is in the recording or pending state.
3447    * Update `GL_KHR_vulkan_glsl` extension to allow anonymous push constant
3448      blocks (public issue 428).
3449  
3450  Internal Issues:
3451  
3452    * Document rules about extension interactions in the style guide (internal
3453      issue 579).
3454    * Require ename:VK_PRESENT_MODE_MAILBOX_KHR support in queries of surfaces
3455      created with flink:vkCreateWaylandSurfaceKHR using the
3456      VK_KHR_wayland_surface extension (internal issue 666).
3457    * Remove Valid Usage constraints for flink:vkAllocateDescriptorSets when
3458      the `VK_KHR_maintainance1` extension is present (internal issue 686).
3459    * Remove undocumented KHX-variants of vkGetPhysicalDeviceProperties2KHR
3460      and vkGetPhysicalDeviceImageFormatProperties2KHR from the
3461      <<VK_KHX_external_memory_capabilities>> and
3462      <<VK_KHX_external_semaphore_capabilities>> extensions.
3463  
3464  New Extensions:
3465  
3466    * `VK_EXT_hdr_metadata`
3467    * `VK_GOOGLE_display_timing`
3468  
3469  -----------------------------------------------------
3470  
3471  Change log for February 27, 2017 Vulkan 1.0.42 spec update:
3472  
3473    * Bump API patch number and header version number to 42 for this update
3474      (the first anniversary edition).
3475  
3476  Github Issues:
3477  
3478    * Changed asciidoctor macros so cross-page links in the standalone
3479      reference pages function properly (public issue 462).
3480  
3481  Internal Issues:
3482  
3483    * Clarified host visibility discussion for slink:VkMemoryType,
3484      flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the
3485      <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>>
3486      section, removing duplicated information and adding a central definition
3487      in the access types section (internal issue 552).
3488    * Change description of
3489      slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to
3490      return an array of values, not structures (internal issue 699).
3491  
3492  New Extensions:
3493  
3494    * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing
3495      the experimental status of `KHX` extensions.
3496    * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for
3497      release at GDC:
3498    ** VK_KHR_descriptor_update_template
3499    ** VK_KHR_push_descriptor
3500    ** VK_KHX_device_group
3501    ** VK_KHX_device_group_creation
3502    ** VK_KHX_external_memory
3503    ** VK_KHX_external_memory_capabilities
3504    ** VK_KHX_external_memory_fd
3505    ** VK_KHX_external_memory_win32
3506    ** VK_KHX_external_semaphore
3507    ** VK_KHX_external_semaphore_capabilities
3508    ** VK_KHX_external_semaphore_fd
3509    ** VK_KHX_external_semaphore_win32
3510    ** VK_KHX_multiview
3511    ** VK_KHX_win32_keyed_mutex
3512    ** VK_EXT_discard_rectangles
3513    ** VK_MVK_ios_surface
3514    ** VK_MVK_macos_surface
3515    ** VK_NVX_multiview_per_view_attributes
3516    ** VK_NV_clip_space_w_scaling
3517    ** VK_NV_geometry_shader_passthrough
3518    ** VK_NV_sample_mask_override_coverage
3519    ** VK_NV_viewport_array2
3520    ** VK_NV_viewport_swizzle
3521    * Add new GLSL vendor extensions to support new builtin variables:
3522    ** GL_EXT_device_group
3523    ** GL_EXT_multiview
3524  
3525  -----------------------------------------------------
3526  
3527  Change log for February 17, 2017 Vulkan 1.0.41 spec update:
3528  
3529    * Bump API patch number and header version number to 41 for this update.
3530  
3531  Github Issues:
3532  
3533    * Made all uses of `NULL` vs. code:VK_NULL_HANDLE consistent (public issue
3534      276).
3535    * Clarify render pass compatibility in different usage scenarios (public
3536      issues 403 and 404).
3537    * Add valid usage statements to slink:VkFramebufferCreateInfo requiring
3538      that the width, height, and number of layers of the framebuffer all be
3539      nonzero (public issue 432).
3540    * Allow `offset` and `align` in any GLSL version for the
3541      `GL_KHR_vulkan_glsl` extension (public issue 435).
3542    * Specify lifetime of string objects passed to the
3543      tlink:PFN_vkDebugReportCallbackEXT user callback in the
3544      +VK_EXT_debug_report+ extension (public issue 446).
3545    * Fix inter-page links in multi-file reference pages (public issue 454).
3546  
3547  Internal Issues:
3548  
3549    * Update valid usage language for slink:VkImageCreateInfo to disallow
3550      creating images that have ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
3551      set without other attachment usage bits
3552      (ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,
3553      ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, or
3554      ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) (internal issue 540).
3555    * Disable `VK_EXT_swapchain_colorspace` extension until internal issues
3556      640 and 661 are mutually resolved.
3557    * Allow alternative mipmap level selection when [eq]#lambda == 0.5# during
3558      texture <<textures-image-level-selection,Image Level(s) Selection>>
3559      (internal issue 680).
3560  
3561  Other Issues:
3562  
3563    * Add a clarification to the style guide that the extension revision
3564      number is treated as a patch number, so that changes to published
3565      extensions should only include bug fixes and spec clarifications.
3566  
3567  -----------------------------------------------------
3568  
3569  Change log for February 10, 2017 Vulkan 1.0.40 spec update:
3570  
3571    * Bump API patch number and header version number to 40 for this update.
3572    * There is a major build change in this release. We are now using the
3573      Ruby-based ``asciidoctor'' implementation, rather than the Python-based
3574      ``asciidoc'' implementation, to process the specification. While the
3575      actual specification markup changes were minimal, this requires a new
3576      set of build tools and a very different installation process, especially
3577      because we now use an experimental direct-to-PDF backend for Asciidoctor
3578      instead of Docbook->dblatex->PDF. It is no longer possible to build the
3579      Specification using asciidoc. See doc/specs/vulkan/README.adoc
3580      for some guidance on installing the new toolchain components.
3581    * There are some minor rendering issues in the PDF output due to teething
3582      problems with the asciidoctor toolchain, especially with mathematical
3583      equations. We are aware of these and working on them.
3584  
3585  Github Issues:
3586  
3587    * Updated sample code for the <<sparsememory-examples-basic,sparse
3588      resource binding example>> (public issue 97).
3589    * Modify line and point clipping behavior in the
3590      <<vertexpostproc-clipping, Primitive Clipping>> section to allow for
3591      pop-free behavior. The ability to check for which behavior is
3592      implemented may be added a future feature or extension (public issue
3593      113).
3594    * Unify the discussions of implicit ordering throughout the spec, in
3595      particular in the new sections <<drawing-primitive-order, Primitive
3596      Order>>, <<primrast-order, Rasterization Order>>, and
3597      <<synchronization-implicit, Implicit Synchronization Guarantees>>; the
3598      discussion of <<synchronization-submission-order, submission order>>;
3599      and references elsewhere to these sections (public issue 133).
3600    * Clarify <<descriptorsets-compatibility,Pipeline Layout Compatibility>>
3601      language and introduce the term ``identically defined'' (public issue
3602      164).
3603    * Add a dependency to the +VK_EXT_debug_marker+ extension that's needed to
3604      reuse the object type enum from +VK_EXT_debug_report+, and moves the
3605      definition of that enum into +VK_EXT_debug_report+ where it should be
3606      (public issue 409).
3607    * Remove redundant valid usage statement from slink:VkImageBlit (public
3608      issue 421).
3609    * Update GL_KHR_vulkan_glsl to allow the ternary operator to result in a
3610      specialization constant (public issue 424).
3611    * Fix valid usage for flink:VkPipelineShaderStageCreateInfo (public issue
3612      426).
3613    * Correct typo in New Objects list for <<VK_EXT_debug_report>> (public
3614      issue 447).
3615  
3616  Internal Issues:
3617  
3618    * Moved to asciidoctor for spec builds (internal issue 121).
3619    * Update style guide to describe where to put new extensions-specific
3620      asciidoc files, and what to name them (internal issue 626).
3621    * Add src/spec/indexExt.py to autogenerate registry index entries linking
3622      into the 1.0-extensions specification, instead of maintaining the index
3623      manually. (internal issue 642).
3624    * Autogenerate extension dependencies and lists of all extensions and all
3625      KHR extensions from the "supported" attributes in +vk.xml+. Execute
3626      +make config/extDependency.sh+ from +doc/specs/vulkan+ when a supported
3627      extension is added to vk.xml, to regenerate the dependency script. The
3628      consequence is that specifying a single extension to the +makeExt+
3629      script will automatically enable all extensions it depends on as well,
3630      and that the +makeAllExts+ and +makeKHR+ scripts do not need to be
3631      updated when a new extension is supported (internal issue 648).
3632    * Put extension appendices all at the same asciidoc section level, so KHR
3633      WSI extensions show up in the HTML index (internal issue 648).
3634  
3635  Other Issues:
3636  
3637    * Imbed images in the generated HTML specs instead of loading them from
3638      the images/ directory.
3639    * Fix missing EXT in extension name
3640      (ename:VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME).
3641    * Add new +VK_EXT_SMPTE_2086_metadata+ extension.
3642    * In the <<platformCreateSurface_xlib,Xlib Surface>> section of the
3643      `VK_KHR_xlib_surface` specification, add language warning users that
3644      they always need to call code:XinitThreads.
3645    * Use the term "presentable image" (rather than "swapchain image")
3646      consistently in `VK_KHR_swapchain` and related extensions, and add a
3647      glossary term defining it.
3648    * Relocate the valid usage for samples of
3649      flink:vkGetPhysicalDeviceSparseImageFormatProperties2KHR::pname:pFormatInfo
3650      to be below the flink:VkPhysicalDeviceSparseImageFormatInfo2KHR
3651      structure.
3652  
3653  -----------------------------------------------------
3654  
3655  Change log for January 23, 2017 Vulkan 1.0.39 spec update:
3656  
3657    * Bump API patch number and header version number to 39 for this update.
3658  
3659  Github Issues:
3660  
3661    * Clarified that only accesses via the specified buffer/image subresource
3662      ranges are included in the access scopes (public issue 306).
3663    * Add missing valid usage statements for flink:vkCreateComputePipelines
3664      and flink:vkCreateGraphicsPipelines (public issue 427).
3665  
3666  Internal Issues:
3667  
3668    * Add a Note to the <<invariance,Invariance>> appendix about a difference
3669      between OpenGL and Vulkan with regards to how primitives derived from
3670      offsets are handled (internal issue 355).
3671    * Add the +<<VK_KHR_get_physical_device_properties2>>+,
3672      +<<VK_KHR_maintenance1>>+, and +<<VK_KHR_shader_draw_parameters>>+
3673      extensions (internal issue 448).
3674    * Add the +<<VK_EXT_shader_subgroup_vote>>+ and
3675      +<<VK_EXT_shader_subgroup_ballot>>+ extensions (internal issue 449).
3676    * Update the texture level-of-detail equation in the
3677      <<textures-scale-factor,Scale Factor Operation>> section to better
3678      approximate the ellipse major and minor axes (internal issue 547).
3679    * Forbid non-explicitly allowed uses of interface decorations in the
3680      introduction to the <<interfaces,Shader Interfaces>> chapter (internal
3681      issue 607).
3682    * Replace use of MathJax with KaTeX, for improved load-time performance as
3683      well as avoiding the scrolling-and-scrolling behavior due to MathJax
3684      asynchronous rendering when loading at an anchor inside the spec. This
3685      change also requires moving to HTML5 output for the spec instead of
3686      XHTML, and there is a visible difference in that the chapter navigation
3687      index is now in a scrollable sidebar instead of at the top of the
3688      document. We may or may not retain the nav sidebar based on feedback
3689      (internal issue 613).
3690    * Improve consistency of markup and formatting in extension appendices
3691      (internal issue 631).
3692  
3693  Other Issues:
3694  
3695    * Add explicit valid usage statements to slink:VkImageCopy requiring that
3696      the source and destination layer ranges be contained in their respective
3697      source and destination images.
3698    * Add valid usage language for swapchain of flink:vkAcquireNextImage. If
3699      the swapchain has been replaced, then it should not be passed to
3700      flink:vkAcquireNextImage.
3701    * Add a valid usage statement to flink:vkCreateImageView, that the image
3702      must have been created with an appropriate usage bit set.
3703    * Noted that slink:VkDisplayPresentInfoKHR is a valid extension of
3704      slink:VkPresentInfoKHR in the <<wsi_swapchain,WSI Swapchain>> section.
3705    * Update valid usage for flink:vkCmdSetViewport and flink:vkCmdSetScissor
3706      to account for the multiple viewport feature. If the feature is not
3707      enabled, the parameters for these functions have required values that
3708      are defined in the <<features-features-multiViewport,multiple
3709      viewports>> section of the spec but were not reflected in the valid
3710      usage text for these functions.
3711    * Add the +<<VK_EXT_swapchain_colorspace>>+ extension defining common
3712      color spaces.
3713  
3714  -----------------------------------------------------
3715  
3716  Change log for December 16, 2016 Vulkan 1.0.38 spec update:
3717  
3718    * Bump API patch number and header version number to 38 for this update.
3719  
3720  Github Issues:
3721  
3722    * Make ename:VK_PIPELINE_STAGE_HOST_BIT invalid for all stage masks,
3723      except for flink:vkCmdWaitEvents (public issue 261).
3724  
3725  Internal Issues:
3726  
3727    * Added validation language for flink:vkQueueBindSparse,
3728      slink:VkPresentInfoKHR, and slink:VkSubmitInfo, and a note to the
3729      <<synchronization-semaphores-waiting,Semaphore Waiting and Unsignaling>>
3730      section to clarify that semaphores must be signaled and waited on in a
3731      1:1 fashion (internal issue 546).
3732    * Modify valid usage for slink:VkBufferImageCopy to only require
3733      pname:bufferOffset to be a multiple of the image format's element size
3734      when the format is not depth/stencil (internal issue 594).
3735  
3736  Other Issues:
3737  
3738    * Vulkan is now a registered trademark symbol, and this is reflected in
3739      documents and copyright statements.
3740  
3741  -----------------------------------------------------
3742  
3743  Change log for December 10, 2016 Vulkan 1.0.37 spec update:
3744  
3745    * Bump API patch number and header version number to 37 for this update.
3746  
3747  Github Issues:
3748  
3749    * Add usability guarantees on the values returned by
3750      flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR in the
3751      slink:VkSurfaceCapabilitiesKHR structure and by
3752      flink:vkGetPhysicalDeviceSurfaceFormatsKHR in the
3753      pname:pSurfaceFormatCount parameter (public issue 385).
3754    * Add elink:VkDebugReportObjectTypeEXT enumerants for new object types
3755      introduced by new extensions (public issue 408).
3756    * Add +VK_NVX_device_generated_commands+ etext:ACCESS bits and define how
3757      they are used (public issue 415).
3758    * Fix indentation for slink:VkDebugReportCallbackCreateInfoEXT member
3759      descriptions (public issue 419).
3760  
3761  Internal Issues:
3762  
3763    * Expand requirements memory binding of non-sparse images and buffers from
3764      the <<resources-association,Resource Memory Association>> section into
3765      valid usage statements for all of the applicable API calls (internal
3766      issue 508).
3767    * Explicitly state that valid usage of flink:vkCreateImage requires that
3768      flink:vkGetPhysicalDeviceImageFormatProperties would return
3769      ename:VK_SUCCESS for the requested image configuration (internal issue
3770      598).
3771  
3772  -----------------------------------------------------
3773  
3774  Change log for December 1, 2016 Vulkan 1.0.36 spec update:
3775  
3776    * Bump API patch number and header version number to 36 for this update.
3777  
3778  Github Issues:
3779  
3780    * Fix "recorded with" terminology in the valid usage language for the
3781      flink:vkCmdExecuteCommands::pname:pCommandBuffers parameter (public
3782      issue 390).
3783    * Modify +genvk.py+ to support specifying extensions to remove from output
3784      generators, allowing the extension loader +vulkan_ext.c+ to be created
3785      without WSI extensions which are statically exported by the Vulkan
3786      loader (public issue 412).
3787    * Added validation language for slink:VkSubpassDependency and in the
3788      <<synchronization-access-types-supported,supported access types>>
3789      section to catch access masks that include bits which are not supported
3790      by pipeline stages in the stage masks (partially addresses
3791      github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/1006 ).
3792  
3793  Internal Issues:
3794  
3795    * Added validation language for flink:vkCmdWaitEvents,
3796      flink:vkQueueSubmit, flink:VkRenderPassCreateInfo, and in the
3797      <<synchronization-pipeline-stages-supported>> section to prevent
3798      recording stage dependencies that aren't supported on the queue
3799      (internal issue 516).
3800    * Make a few changes that generalize spec language for use with possible
3801      future extensions by adding glossary terms and generalizing ``feature''
3802      to ``feature or extension'' where relevant (internal issues 448, 590).
3803    * Added "pipeline type" attribute to +vk.xml+ for relevant commands and
3804      utilize it in automatic generation of the Command Properties table
3805      (internal issue 517).
3806    * Specify that WSI implementations must provide both UNORM and sRGB
3807      formats in the description of slink:VkColorSpaceKHR (internal issue
3808      529).
3809    * Remove nesting of explicit valid usage statements where it is not
3810      meaningful (internal issue 583).
3811  
3812  Other Issues:
3813  
3814    * Add validity language requiring that
3815      slink:VkPushConstantRange::pname:offset be a multiple of 4, as stated in
3816      the spec language.
3817  
3818  -----------------------------------------------------
3819  
3820  Change log for November 25, 2016 Vulkan 1.0.35 spec update:
3821  
3822    * Bump API patch number and header version number to 35 for this update.
3823  
3824  Github Issues:
3825  
3826    * Document in the <<memory-device-hostaccess,Host Access>> section that
3827      mapping and unmapping does not invalidate or flush the mapped memory
3828      (public issues 27, 126).
3829    * Redefine the entire <<synchronization>> chapter in terms of consistent
3830      and well defined terminology, that's called out at the start of the
3831      chapter. This terminology is applied equally to all synchronization
3832      types, including subpass dependencies, submissions, and much of the
3833      implicit ordering stuff dotted around the spec. Key terms are laid out
3834      in the <<synchronization-dependencies,Execution and Memory
3835      Dependencies>> section at the top of the rewritten chapter (public
3836      issues 128, 131, 132, 217, 299, 300, 302, 306, 322, 346, 347, 371, 407).
3837    * Specify order of submission for batches in the
3838      <<vkQueueSubmit,vkQueueSubmit>> and
3839      <<vkQueueBindSparse,vkQueueBindSparse>> commands (public issue 371).
3840    * Add valid usage statements to each of the WSI extension sections
3841      indicating that the WSI-specific structure parameters must be valid, and
3842      remove automatically generated valid usage statements now covered by the
3843      manual sections (public issue 383).
3844    * Clarify render pass compatibility for flink:vkCmdExecuteCommands (public
3845      issue 390).
3846  
3847  Internal Issues:
3848  
3849    * Update +vk.xml+ to make previously explicit valid usage statements for
3850      <<vkDebugReportMessageEXT,vkDebugReportMessageEXT>> implicit instead
3851      (internal issue 553).
3852    * Add valid usage statement for slink:VkCreateImageInfo preventing
3853      creation of 1D sparse images (internal issue 573).
3854    * Fix Python scripts to always read/write files in utf-8 encoding, and a
3855      logic error in reflib.py which could cause a fatal error for
3856      malstructured asciidoc (internal issues 578, 586).
3857  
3858  -----------------------------------------------------
3859  
3860  Change log for November 18, 2016 Vulkan 1.0.34 spec update:
3861  
3862    * Bump API patch number and header version number to 34 for this update.
3863  
3864  Github Issues:
3865  
3866    * Allow vkUpdateDescriptorSets overflow to skip empty bindings. Clarify
3867      that unused bindings have a descriptorCount of zero. Improve some valid
3868      usage for vkUpdateDescriptorSets (public issue 256).
3869    * Require that slink:VkImageSubresourceRange always define a non-empty
3870      range of the resource (public issue 303).
3871    * Added valid usage for slink:VkPresentInfoKHR on the layout of presented
3872      images (public issue 397).
3873  
3874  Internal Issues:
3875  
3876    * Add dependency in src/spec/Makefile so specversion.txt is regenerated
3877      when needed (internal issue 462).
3878    * Shorten the table of contents in the single-page ref page HTML output.
3879      Still working on the PDF (internal issue 536).
3880  
3881  -----------------------------------------------------
3882  
3883  Change log for November 11, 2016 Vulkan 1.0.33 spec update:
3884  
3885    * Bump API patch number and header version number to 33 for this update.
3886  
3887  Github Issues:
3888  
3889    * Added implicit external synchronization parameters to
3890      vkBegin/EndCommandBuffer, and fixed missing command pool host
3891      synchronization from per-command lists (public issue 398).
3892    * Started using git tags including the spec release number, such as
3893      'v1.0.32-core', instead of tags including the date of release, such as
3894      'v1.0-core-20161025' (public issue 405).
3895  
3896  Internal Issues:
3897  
3898    * Add validity constraint for
3899      slink:VkImportMemoryWin32HandleInfoNV::pname:handle (internal issue
3900      #480).
3901    * Add scripts to compare two Vulkan HTML specifications, derived from W3
3902      htmldiff service (internal issue 525).
3903    * Relax requirement that memoryTypeBits can't depend on format, to allow
3904      it to differ only for depth/stencil formats (internal issue 544).
3905    * Add a new generator script to create a simple extension loader for
3906      Vulkan based on +vk.xml+ (internal issue 558).
3907    * Add the overlooked requirement that buffer and image memory
3908      alignment requirements must be a power of two in the
3909      <<resources-association,Resource Memory Association>> section
3910      (internal issue 569).
3911  
3912  Other Issues:
3913  
3914    * Add a naming rule to the style guide for members of extension structures
3915      defining array lengths which are the same as array lengths of the core
3916      structure they are chained from.
3917    * Add a new generator to create a simple extension loader in
3918      +src/ext_loader/vulkan_ext.[ch]+ from +vk.xml+. This code can be
3919      included in your project, and is expected to be packaged in the Vulkan
3920      SDK provided by LunarG in the future.
3921  
3922  -----------------------------------------------------
3923  
3924  Change log for October 25, 2016 Vulkan 1.0.32 spec update:
3925  
3926    * Bump API patch number and header version number to 32 for this update.
3927  
3928  Github Issues:
3929  
3930    * Add automatic visibility operations to the presentation engineE when
3931      doing a queue present in flink:vkAcquireNextImageKHR. Removed all
3932      references to MEMORY_READ that referenced WSI - they no longer make
3933      sense (some aspects of public issues 128, 131, 132, 261, and 298).
3934    * Document valid non-boolean +externsync+ attribute values for <param>
3935      tags in +vk.xml+ (public issue 265).
3936    * Add valid usage to slink:VkImageCreateInfo requiring that
3937      pname:arrayLayers be 1 for images of type ename:VK_IMAGE_TYPE_3D
3938      (public issue 319).
3939    * Add missing captions to figures in the <<textures,Image Operations>>
3940      chapter (public issue 334).
3941    * Clarify WSI interaction with exclusive sharing mode (public issue
3942      344).
3943    * Added explicit language clarifying the allowed queue usage of
3944      resources created with ename:VK_SHARING_MODE_CONCURRENT (public
3945      issue 386).
3946    * Require that the
3947      slink:VkDescriptorSetLayoutCreateInfo::pname:binding members of the
3948      pname:pBindings array passed to
3949      flink:vkDescriptorSetLayoutCreateInfo all be distinct (public issue
3950      391).
3951  
3952  Internal Issues:
3953  
3954    * Remove empty validity blocks from +vk.xml+ and suppressed broken
3955      validity statements and added missing statements to explicit
3956      validity. Doesn't affect output, other than some statements
3957      appearing in another block now (internal issue 513).
3958  
3959  -----------------------------------------------------
3960  
3961  Change log for October 14, 2016 Vulkan 1.0.31 spec update:
3962  
3963    * Bump API patch number and header version number to 31 for this update.
3964  
3965  Github Issues:
3966  
3967    * Clarifying wording of slink:VkGraphicsPipelineCreateInfo parameters and
3968      adding Valid Usage statements on render pass compatibility to the
3969      <<drawing,drawing commands>> (public issue 375).
3970    * Replace 'texel size' with 'element size', and add a definition to the
3971      glossary (public issue 382).
3972    * Clarify the description of ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR to
3973      make it accurate, but still generic (non-exhaustive). Remove two Valid
3974      Usage statements describing error situations that will return
3975      ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR (public issue 387).
3976    * Fix refBegin tag for elink:VkDebugReportFlagBitsEXT (public issue 392).
3977    * The <<interfaces-builtin-variables,built-in variable>> code:PrimitiveId
3978      in a fragment shader needs the code:Input storage class (public issue
3979      393).
3980  
3981  Internal Issues:
3982  
3983    * Unused ({y,z} and {height,depth} for 1D, z and depth for 2D) offsets
3984      must be 0 and unused extents must be 1. Added basic offset and extent
3985      valid usage for slink:VkImageResolve to match that of slink:VkImageCopy
3986      (internal issue 413).
3987    * Describe what flink:vkGetPhysicalDeviceImageFormatProperties returns for
3988      pname:sampleCounts when for pname:usage only includes transfer-related
3989      flags (internal issue 478).
3990    * Remove mention of
3991      slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers from the valid
3992      usage for slink:VkImageCreateInfo::pname:arrayLayers (internal issue
3993      520).
3994    * Tag usages of ``dynamically uniform'' as glossary terms and add a
3995      glossary entry pointing to the SPIR-V Specification's definition of the
3996      term (internal issue 531).
3997  
3998  -----------------------------------------------------
3999  
4000  Change log for October 7, 2016 Vulkan 1.0.30 spec update:
4001  
4002    * Bump API patch number and header version number to 30 for this update.
4003  
4004  Github Issues:
4005  
4006    * Document missing pname:sType and pname:pNext parameters for
4007      slink:VkCommandBufferInheritanceInfo (public issue 224).
4008    * As promised, we are removing the example code, from the appendix, for
4009      the VK_KHR_surface and VK_KHR_swapchain extensions. The cube demo
4010      (shipped in the official Khronos SDK) has been updated, and is the
4011      example code that we want people to look at for how to use these two
4012      extensions (public issues 279, 308, and 311).
4013    * Clarify the formats for which the slink:VkClearColorValue pname:float32
4014      member is used. Also clean up related language for flink:vkCmdBlitImage
4015      (public issue 369).
4016    * Reword the <<invariance, Invariance>> appendix chapter to better match
4017      Vulkan terminology (public issue 372).
4018  
4019  Internal Issues:
4020  
4021    * Update slink:VkMemoryRequirements to not require a host_visible memory
4022      type exists that can be bound to sparse buffers (internal issue 494).
4023    * Modify the <<features-supported-sample-counts,Supported Sample Counts>>
4024      language to allow multisampled depth-stencil images (internal issue
4025      521).
4026  
4027  -----------------------------------------------------
4028  
4029  Change log for September 30, 2016 Vulkan 1.0.29 spec update:
4030  
4031    * Bump API patch number and header version number to 29 for this update.
4032  
4033  Github Issues:
4034  
4035    * Remove redundant constraint on
4036      slink:VkCommandBufferInheritanceInfo::pname:queryFlags (public issue
4037      224).
4038    * Fix typo and remove link in Note in the
4039      <<extended-functionality-instance-extensions-and-devices, Instance
4040      Extensions and Device Extensions>> section (public issue 359).
4041    * Fix erroneous validation statement for the pname:layout member of
4042      slink:VkComputePipelineCreateInfo (public issue 362).
4043  
4044  Internal Issues:
4045  
4046    * Restore long figure captions using asciidoc sidebar blocks, due to
4047      restrictions of asciidoc syntax (internal issue 101).
4048    * Replace most latexmath equations with comparable markup in straight
4049      asciidoc, which significantly improves time required to fully load and
4050      process the HTML forms of the Specification. There are known minor font
4051      and alignment inconsistencies with MathJax and PDF rendering of
4052      latexmath equations. Please do not file github issues about these. We
4053      are aware of the inconsistencies and will make refinements over time,
4054      while the performance improvements are compelling in at least some major
4055      browsers (internal issue 313).
4056    * Move handcoded validity statements from +vk.xml+ into the Specification
4057      body, easing work in the single-branch model. Specify the distinction
4058      between these explicit statements, and the implicit validity statements
4059      inferred from vk.xml. Validity statements now appear in two blocks for
4060      each command and structure - handcoded "Valid Usage" and the implicit
4061      "Valid Usage (Implicit)" (internal issue 392).
4062    * Add the +returnedonly="false"+ attribute to WSI output structures,
4063      removing incorrectly generated implicit validity statements for
4064      slink:VkDisplayPropertiesKHR, slink:VkDisplayPlanePropertiesKHR,
4065      slink:VkDisplayModePropertiesKHR, slink:VkDisplayPlaneCapabilitiesKHR,
4066      slink:VkSurfaceCapabilitiesKHR, and slink:VkSurfaceFormatKHR structures
4067      (internal issue 486).
4068    * Update slink:VkImageLayout to require the
4069      ename:VK_IMAGE_USAGE_SAMPLED_BIT be set for sampled depth/stencil images
4070      (internal issue 487).
4071    * Use an explicit format specifier string for the date command invocation
4072      in the +Makefile+ instead of the shorthand -R option, which doesn't work
4073      on BSD and MaxOS X date commands (internal issue 500).
4074  
4075  Other Issues:
4076  
4077    * Use the terms ``allocation scope'' and ``extension scope'' instead of
4078      just ``scope'', and add them to the glossary.
4079  
4080  -----------------------------------------------------
4081  
4082  Change log for September 23, 2016 Vulkan 1.0.28 spec update:
4083  
4084    * Bump API patch number and header version number to 28 for this update.
4085  
4086  Github Issues:
4087  
4088    * Minor spelling and typography cleanup, add definitions of
4089      ename:VK_FALSE and ename:VK_TRUE as just what their names say
4090      (public issues 220, 318, 325, 365; internal issues 451, 496)
4091    * Clarify that the pname:maxDescriptorSet limits in the
4092      <<features-limits-required,Required Limits>> table are n *
4093      maxPerStage limit (where n=number of supported stages) (public issue
4094      254).
4095    * Minor cleanup to <<boilerplate-platform-macros,Platform-Specific
4096      Macro Definitions>> appendix (public issue 314).
4097    * Add valid usage statement to slink:VkPipelineLayoutCreateInfo
4098      disallowing multiple push constant ranges for the same shader stage
4099      (public issue 340).
4100    * Clarify the elink:VkSharingMode description of what executing the
4101      "same" barriers means in case of ownership transfer (public issue
4102      347).
4103    * Rename copyright.txt and add COPYING.md to try and reduce confusion
4104      about applicable copyrights (public issue 350).
4105    * Extend the table in the <<boilerplate-wsi-header, Window System-Specific
4106      Header Control>> section to describe the external headers included when
4107      each etext:VK_USE_PLATFORM_* macro is defined (public issue 376).
4108  
4109  Internal Issues:
4110  
4111    * Add "Revision History" to the PDF outputs following the table of
4112      contents, to match HTML outputs (internal issue 43).
4113    * Clarified that flink:vkMapMemory may fail due to virtual address
4114      space limitations (internal issue 346).
4115    * Add +refBody+ comment markup for ref page autoextraction when required
4116      (internal issue 400).
4117    * Document proper use of "mipmap" and "mip" in the style guide API
4118      naming rules, matching the spelling rules (internal issue 471).
4119    * Tweak the <<extensions,Layers and Extensions>> appendix to note that
4120      the Specification may be built with arbitrary combinations of
4121      extensions (internal issue 483).
4122    * Remove incorrect statement allowing
4123      slink:VkClearAttachment::pname:colorAttachment to be >=
4124      slink:VkSubpassDescription::pname:colorAttachmentCount (internal
4125      issue 488).
4126    * The <<features-limits-viewportboundsrange,viewportBoundsRange>> is
4127      expressed in terms of the pname:maxViewportDimensions but this is
4128      actually two values. Clarify that it's based on the larger of the two
4129      (if they differ) (internal issue 499).
4130  
4131  Other Issues:
4132  
4133    * Reflowed text of the entire spec using the 'reflow' Makefile target, to
4134      (hopefully) reduce future internal git churn as edits are made and
4135      extensions added in return for one-time pain. This has no perceptible
4136      effect on the spec outputs, but considerable changes on the asciidoc
4137      source (internal issue 367).
4138  
4139  -----------------------------------------------------
4140  
4141  Change log for September 16, 2016 Vulkan 1.0.27 spec update:
4142  
4143    * Bump API patch number and header version number to 27 for this update.
4144  
4145  Github Issues:
4146  
4147    * Weaken flink:vkGetPipelineCacheData invariance conditions; previous
4148      conditions were stronger than agreed and can't be guaranteed (public
4149      issue 280).
4150    * Add link to "Vulkan Loader Specification and Architecture Overview"
4151      document to Normative References section (public issue 359).
4152  
4153  Internal Issues:
4154  
4155    * Be more clear in the <<interfaces-resources-layout-std140, uniform
4156      buffer layout>> section that block offsets can be out of order
4157      (internal issue 396).
4158    * Document that extension authors should add support for their extensions
4159      to the validation layers (internal issue 398).
4160    * Clarify that the valid range of depth clear values should be limited
4161      to the 0..1 range and that copies to depth aspect must also be in this
4162      range (internal issue 412).
4163    * Specify ``a'' vs. ``an'' use in the style guide (internal issue 432).
4164    * Increase the maximum pname:nonCoherentAtomSize value in the
4165      <<features-limits-required,Required Limits>> section from 128 to 256
4166      (internal issue 435).
4167    * Fix vk_platform.h for compiler errors on some Android platforms
4168      (internal issue 441).
4169    * Clarify that slink:VkPhysicalDeviceFeatures::pname:pEnabledFeatures ==
4170      `NULL` disables all features, including the "required" feature
4171      pname:robustBufferAccess (internal issue 479).
4172  
4173  Other Issues:
4174  
4175    * Expand style guide and make it more self-consistent.
4176    * Use ISO 8601 date format everywhere.
4177    * Emphasise the correct way of using
4178      slink:VkSurfaceCapabilitiesKHR::pname:maxImageCount.
4179    * Added +VK_EXT_validation_flags+ extension for validation flag mechanism.
4180    * Fix an <<credits,author credit>> to include their current employer.
4181  
4182  -----------------------------------------------------
4183  
4184  Change log for September 6, 2016 Vulkan 1.0.26 spec update:
4185  
4186    * Bump API patch number and header version number to 26 for this update.
4187  
4188  Github Issues:
4189  
4190    * Bring sample code in the `VK_KHR_surface` and `VK_KHR_swapchain`
4191      extension summary appendices up to date, and note they will be replaced
4192      with pointers to the LunarG SDK examples in the future (public issue
4193      279).
4194    * Add a new <<fundamentals-commandsyntax-results-lifetime,Lifetime of
4195      Retrieved Results>> section specifying that ftext:vkGet* and
4196      ftext:VkEnumerate* results are invariant unless otherwise specified, and
4197      specify behavior for individual commands which are not invariant (public
4198      issue 280).
4199    * Remove conflicting definition of
4200      slink:VkDisplayPlaneCapabilitiesKHR::pname:maxSrcPosition and clean up
4201      language of the remaining definition (public issue 351).
4202    * Fix many minor spelling errors and add rules to the style guide to
4203      prevent recurrences (public issue 352).
4204  
4205  Internal Issues:
4206  
4207    * Remove redundant descriptions of the etext:VK_USE_PLATFORM_* macros from
4208      the <<wsi,Window System Integration>> chapter in favor of the
4209      description in the <<boilerplate-wsi-header,Window System-Specific
4210      Header Control>> appendix (internal issue 6).
4211    * Replace misleading 'can: be destroyed when not X' with more correct
4212      'must: not be destroyed while X' in the
4213      <<fundamentals-objectmodel-lifetime,Object Lifetime>> section. Disallow
4214      destroying a pipeline layout while a command buffer using it is
4215      recording (internal issue 241).
4216    * Clarify that ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT is valid for
4217      all images used as attachments in elink:VkImageUsageFlagBits and the
4218      slink:VkImageLayout validity language (internal issue 320).
4219    * Note that <<extended-functionality-layers,Layers>> may wrap object
4220      handles, but that this is a generally discouraged. A link to additional
4221      information in the documentation for layer authors is provided (issue
4222      398)
4223    * Replace the mustnot: and shouldnot: macros with equivalent must: not and
4224      should: not to get rid of non-English words while still highlighting
4225      normative language (internal issue 407).
4226    * Disallow creating multisampled images with
4227      ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT in the slink:VkImageLayout
4228      validity language and the <<features-supported-sample-counts,Supported
4229      Sample Counts>> section (internal issue 445).
4230    * Fix typo so that flink:vkCmdDrawIndexedIndirect is defined in terms of
4231      flink:vkCmdDrawIndexed rather than flink:vkCmdDrawIndirect (internal
4232      issue 446).
4233    * Reorganize the per-extension information sections to all be in the
4234      <<extensions,Layers & Extensions>> appendix. Also fix a typo in
4235      +VK_IMG_filter_cubic+ which incorrectly identified it as a +KHR+
4236      extension (internal issue 461).
4237  
4238  Other Issues:
4239  
4240    * Use asciidoc markup instead of latexmath to simplify diagrams in the
4241      <<features-formats-non-packed,byte mapping tables>> for color formats.
4242    * Fix a markup problem with the wildcarded enumerant names in a NOTE in
4243      the <<textures-texel-replacement,Texel Replacement>> section.
4244    * Fix missing attributes in the XML interface for
4245      elink:VkExternalMemoryHandleTypeFlagBitsNV and
4246      elink:VkExternalMemoryFeatureFlagBitsNV (KhronosGroup/Vulkan-Hpp issue
4247      25)
4248    * Cleanup reference page builds so only core pages are built for releases.
4249  
4250  -----------------------------------------------------
4251  
4252  Change log for August 26, 2016 Vulkan 1.0.25 spec update:
4253  
4254    * Bump API patch number and header version number to 25 for this update.
4255    * Structurally change the specification so that multiple extensions are
4256      included in the +1.0+ git branch, and specifications will include or not
4257      include those extensions at build time based on options passed to the
4258      Makefile. See +doc/specs/vulkan/README.html+ and the ``Layers and
4259      Extensions'' section of the ``Vulkan Documentation and Extensions''
4260      document for more information on this change.
4261    * Register and publish new extensions in the single-branch form:
4262    ** +VK_NV_external_memory_capabilities+
4263    ** +VK_NV_external_memory+
4264    ** +VK_NV_external_memory_win32+
4265    ** +VK_NV_win32_keyed_mutex+
4266  
4267  Github Issues:
4268  
4269    * Clarify description of GetInstanceProcAddr and GetDeviceProcAddr (public
4270      issue 212).
4271    * Add SPIR-V <<textures-operation-validation, instruction validation>> for
4272      single-sampled images (public issue 316).
4273    * Fix spelling of ``tesselation'' in a few places and note it as an
4274      exception to the American spelling rules convention (public issue
4275      327).
4276    * Fix Makefile to create output directory for ``styleguide''
4277      target (public issue 329).
4278    * Fix numerous minor issues with incorrectly tags on enumerant names and
4279      table titles (public issue 330).
4280    * Generate specversion.txt date in UTC time and RFC 2822 format
4281      (public issue 335).
4282    * Convert link to the SPIR-V Specification for
4283      flink:VkShaderModuleCreateInfo into an internal link to the normative
4284      reference (public issue 336).
4285    * Add ename:VK_ERROR_OUT_OF_MEMORY error code to
4286      flink:vkCreateDebugReportCallbackEXT (public issue 337).
4287  
4288  Internal Issues:
4289  
4290    * Update style guide regarding use of code:NULL and dname:VK_NULL_HANDLE
4291      (internal issue 393).
4292    * Change the definition of latexmath:[$q$] in the
4293      <<textures-image-level-selection,texture image level selection>> section
4294      to be the index of the maximum defined level for the view, not the
4295      number of levels in the view (internal issue 406).
4296    * Allow developers to override dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE
4297      with their own binary-compatible definition (internal issue 439).
4298    * Fix +vk_platform.h+ conditional logic causing compile failure with some
4299      Android compilers (internal issue 441).
4300    * Implement the single-branch model as described above (internal issue
4301      461).
4302  
4303  -----------------------------------------------------
4304  
4305  Change log for August 12, 2016 Vulkan 1.0.24 spec update:
4306  
4307    * Bump API patch number and header version number to 24 for this update.
4308  
4309  Github Issues:
4310  
4311    * Fix type mismatch in swapchain image equivalency table (public issue
4312      289).
4313    * Fix a copy-and-paste error in the description of
4314      flink:vkGetSwapchainImagesKHR::pname:pSwapchainImages, that said it
4315      was an array of ``sname:VkSwapchainImageKHR structures'' instead of
4316      an array of ``sname:VkImage handles'' (public issue 292).
4317    * Specify that ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT is only valid
4318      for ename:VK_IMAGE_TYPE_2D images (public issue 293).
4319    * Add a valid usage statement to flink:vkCmdExecuteCommands saying
4320      that when called outside a render pass instance, the secondary
4321      command buffers must not have been created with the
4322      ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT (public issue
4323      297).
4324    * Fix description of +VK_NO_STDINT_H+ in the
4325      <<boilerplate-platform-macros,platform macros>> section (public
4326      issue 314).
4327  
4328  Internal Issues:
4329  
4330    * Normalize the language for the remaining built-in variables in the
4331      <<interfaces-builtin-variables,Built-In Variables>> section. Fix
4332      code:FrontFacing and code:HelperInvocation, as they should be of
4333      code:boolean type rather than code:integer (internal issue 323).
4334    * Clarify that when ename:VK_WHOLE_SIZE is used for a buffer
4335      descriptor range, the effective range must still be within the max
4336      buffer range (internal issue 426).
4337    * Clarify that command buffers and descriptor sets are allocated
4338      rather than created. Also clarify when the recording state of a
4339      command buffer is relevant (internal issue 434).
4340  
4341  -----------------------------------------------------
4342  
4343  Change log for August 5, 2016 Vulkan 1.0.23 spec update:
4344  
4345    * Bump API patch number and header version number to 23 for this update.
4346  
4347  Github Issues:
4348  
4349    * Add explicit valid value attributes to pname:sType members in vk.xml
4350      (public issue 34).
4351    * Clarify usage of flink:vkGetInstanceProcAddr and
4352      flink:vkGetDeviceProcAddr (public issue 225).
4353    * Fix a copy-and-paste error in the description of
4354      pname:pSwapchainImageCount saying that it was the count of ``format
4355      pairs'' instead of ``swapchain images'' (public issue 292).
4356    * flink:vkCmdExecuteCommandBuffers requires all command buffers to be
4357      allocated from command pools created for the same queue family (public
4358      issue 296).
4359    * Remove bogus +optional+ attribute for
4360      flink:vkEnumerateDeviceLayerProperties::pname:physicalDevice from vk.xml
4361      (public issue 301).
4362    * Clean up the <<resources-image-views-compatibility,image and image view
4363      compatibility table>> reference and contents. Use full enumerant names.
4364      Refer to pname:layerCount in the ``view parameters'' column instead of
4365      pname:arrayLayers. Require N >= 1 for the cube array subview row, not
4366      just arrayLayers >= 6 N (public issue 304).
4367    * Modify description of <<resources-memory-aliasing,memory aliasing>> to
4368      be consistent with the description of
4369      <<resources-bufferimagegranularity,buffer image granularity>> (public
4370      issue 307).
4371  
4372  Internal Issues:
4373  
4374    * Describe remaining +vk_platform.h+ macros in the <<boilerplate,API
4375      Boilerplate>> appendix (internal issue 6).
4376    * Clarify
4377      <<features-features-robustBufferAccess,pname:robustBufferAccess>>
4378      feature behavior; what memory can be accessed, how bounds checking is
4379      performed, and allowing for vectorization (internal issue 332).
4380    * Document markup for automatic extraction of reference pages from the
4381      spec sources in the style guide (internal issue 395).
4382    * Allow flink:vkCreateDisplayModeKHR to return
4383      ename:VK_ERROR_INITIALIZAION_FAILED_KHR if the user requests mode
4384      parameters that the specified display does not support (internal issue
4385      411).
4386    * Remove atomic counters (atomic_uint style) from KHR_vulkan_glsl, and
4387      more clearly remove the subroutine keyword alongside it (internal issue
4388      421).
4389    * Clarify behavior of flink:vkCmdBindDescriptorSets for descriptor sets
4390      not contained in the layout (internal issue 427).
4391  
4392  Other Commits:
4393  
4394    * Change the order in which members of sname:VkAttachmentDescription and
4395      sname:VkPipelineInputAssemblyStateCreateInfo are described to match
4396      their order in the structures.
4397  
4398  -----------------------------------------------------
4399  
4400  Change log for July 22, 2016 Vulkan 1.0.22 spec update:
4401  
4402    * Bump API patch number and header version number to 22 for this update.
4403  
4404  Github Issues:
4405  
4406    * Translate the subpass self-dependency language into concrete
4407      validity statements, and added a validity statement about the
4408      restrictions on layout parameters (public issue 267).
4409    * Add validity requirement that
4410      slink:VkAttachmentDescription::pname:finalLayout and
4411      slink:VkAttachmentReference::pname:layout must not be
4412      ename:VK_IMAGE_LAYOUT_UNDEFINED or
4413      ename:VK_IMAGE_LAYOUT_PREINITIALIZED (public issue 268).
4414    * Clarify that slink:VkSubpassDescription::pname:pResolveAttachments
4415      layouts are used. Make language consistent with other attachment
4416      arrays (public issue 270).
4417    * Changed 64-bit definition for
4418      dname:VK_DEFINE_NON_DISPATCHABLE_HANDLE to work for x32 platform in
4419      +vk.xml+ and the resulting +vulkan.h+ (public issue 282).
4420    * Add missing error return code for
4421      flink:vkEnumerateInstanceExtensionProperties and
4422      flink:vkEnumerateDeviceExtensionProperties (public issue 285)
4423    * Fix several cases of stext::VkStructName.memberName markup to
4424      stext::VkStructName::pname:memberName, to match other usage in the
4425      spec, and describe this markup in the style guide (public issue
4426      286).
4427    * Modified validity language generation script to avoid redundant
4428      common ancestor language if covered by generic parent language, and
4429      used `Both' instead of `Each' when appropriate (public issue 288).
4430  
4431  Internal Issues:
4432  
4433    * Add language about behavior of flink:vkAllocateDescriptorSets when
4434      allocation fails due to fragmentation, a new error
4435      ename:VK_ERROR_FRAGMENTED_POOL, and a Note explaining the situation
4436      (internal issue 309).
4437    * For the features of code:PointSize, code:ClipDistance, and
4438      code:CullDistance, the SPIR-V capability is required to be declared
4439      on use (read or write) rather than on decoration (internal issue
4440      359).
4441    * Have desktop versions of GLSL respect precision qualification
4442      (code:mediump and code:lowp) when compiling for Vulkan. These will
4443      get translated to SPIR-V's code:RelaxedPrecision decoration as they
4444      do with OpenGL ES versions of GLSL (ESSL). The default precision of
4445      all types is code:highp when using a desktop version (internal issue
4446      360).
4447    * Add validity statement for slink:VkImageCreateInfo specifying that
4448      multisampled images must be two-dimensional, optimally tiled, and
4449      with a single mipmap level (internal issue 369).
4450    * Add validity statements to slink:VkImageViewCreateInfo disallowing
4451      creation of images or image views with no supported features. Made
4452      some slink:VkImageViewCreateInfo validity statements more precise
4453      and consistent. Added a Note to the <<features,features>> chapter
4454      about formats with no features (internal issue 371).
4455    * Remove +manpages+ from default build targets. Nroff outputs
4456      containing imbedded latexmath will not render properly. Fixing this
4457      is a lot of work for limited use cases (internal issue 401).
4458  
4459  Other Commits:
4460  
4461    * Fix flink:vkRenderPassBeginInfo::pname:clearValueCount validity
4462      statement to be based on attachment indices rather than the number
4463      of cleared attachments
4464      (Vulkan-LoaderAndValidationLayers/issues/601).
4465    * Convert registry documentation from LaTeX to asciidoc source and
4466      rename from +src/spec/readme.tex+ to +src/spec/registry.txt+.
4467    * Fix lack of Oxford commas in validity language.
4468    * Lots of cleanup of generator scripts and Makefiles to move extension
4469      list for generator into the script arguments instead of the body of
4470      genvk.py, and express better dependencies between XML, scripts, and
4471      generated files.
4472  
4473  -----------------------------------------------------
4474  
4475  Change log for July 15, 2016 Vulkan 1.0.21 spec update:
4476  
4477    * Bump API patch number and header version number to 21 for this update.
4478  
4479  Github Issues:
4480  
4481    * Clarify how <<features-supported-sample-counts,sample count queries>>
4482      relate to the limits in slink:VkPhysicalDeviceLimits. (public issue
4483      185).
4484    * Clarify in the <<interfaces-iointerfaces,Shader Input and Output
4485      Interfaces>> section that shader output variables have undefined values
4486      until the shader writes to them (public issue 240).
4487    * Specify the implicit value of image parameters that cannot be set in
4488      slink:VkSwapchainCreateInfo::pname:flags, pname:imageType,
4489      pname:mipLevels, pname:samples, pname:tiling, and pname:initialLayout
4490      (public issue 243).
4491    * Make use of code:NULL and code:VK_NULL_HANDLE consistent in the
4492      VK_KHR_swapchain extension (public issue 276).
4493  
4494  Internal Issues:
4495  
4496    * Clarify that presenting an image to a display surface swapchain applies
4497      the display surface's mode, and that destroying a display surface
4498      swapchain may reset the display's mode, in the VK_KHR_display_swapchain
4499      extension (internal issue 247).
4500    * Better describe what a slink:VkSurfaceKHR is, and that creating one does
4501      not set a mode, in the VK_KHR_display extension. This is a round-about
4502      way of pointing out that mode setting is not covered by the extension,
4503      but rather is performed as a side effect of presentation (internal issue
4504      247).
4505    * Add more valid usage statements to flink:vkQueuePresentKHR command when
4506      the VK_KHR_display_swapchain extension is present (internal issue
4507      247).
4508    * Add more includes to the VK_KHR_swapchain extension to better document
4509      interactions with VK_KHR_display_swapchain (internal issue 247).
4510    * Clarify restrictions on location aliasing in the
4511      <<fxvertex,Fixed-Function Vertex Processing>> section (internal issue
4512      370).
4513    * Add mathematical description of blitting to flink:vkCmdBlitImage, and
4514      link it to the <<textures,Image Operations>> chapter. Use mathematical
4515      notation for ranges of texel coordinates in the <<textures,Image
4516      Operations>> chapter. Fixed miscellaneous validity statements for
4517      flink:vkCmdBlit and slink:VkImageBlit (internal issue 382).
4518  
4519  Other Commits:
4520  
4521    * Added a valid usage rule to flink:VkGraphicsPipelineCreateInfo that the
4522      ename:VK_PRIMITIVE_TOPOLOGY_PATCH_LIST topology must only be used when
4523      tessellation shaders are used.
4524    * Expand the style guide into a formal "Procedures and Conventions"
4525      document. Add a API Naming Conventions section, move most of the API
4526      Specification Appendix C (Layers and Extensions) content into the new
4527      document, and define the resulting procedures as mandatory (where
4528      relevant). This more clearly separates use vs. specification of Vulkan
4529      APIs.
4530    * Update vk_platform.h to handle 32-bit ARMv8 binaries.
4531    * Various minor cleanups to the Makefile and build process.
4532  
4533  -----------------------------------------------------
4534  
4535  Change log for July 8, 2016 Vulkan 1.0.20 spec update:
4536  
4537    * Bump API patch number and header version number to 20 for this
4538      update.
4539  
4540  Github Issues:
4541  
4542    * Replaced existing reference pages by text automatically extracted from
4543      the specification source, or generated from vk.xml in some cases. This
4544      is not a complete solution for the reference pages, but puts them in a
4545      much better state. The ref pages (only) are now placed under a CC BY
4546      open source license, which is more current than the obsolete license
4547      previously used. Various minor tweaks to the Specification sources were
4548      made to enable this, and a new ``API Boilerplate'' chapter added to
4549      include definitions of all the entities in the API and +vulkan.h+ which
4550      were not already described in some form in the document.
4551  
4552      Further improvements to the pages should not edit them directly, but
4553      instead concentrate on the specification source from which the ref pages
4554      are being extracted (public issues 44, 55, 160; internal issue 389).
4555  
4556  -----------------------------------------------------
4557  
4558  Change log for July 1, 2016 Vulkan 1.0.19 spec update:
4559  
4560    * Bump API patch number and header version number to 19 for this
4561      update.
4562  
4563  Github Issues:
4564  
4565    * Clarified how flink:vkGetImageSubresourceLayout interacts with image
4566      layouts (public issue 247).
4567    * Remove ename:VK_IMAGE_LAYOUT_PREINITIALIZED from valid usage rule for
4568      slink:VkImageMemoryBarrier::pname:oldLayout. It is only valid if it is
4569      the current layout (public issue 248).
4570    * Modify valid usage for flink:vkBindBufferMemory so implementations are
4571      free to require a different backing memory size than the buffer size
4572      (public issue 251).
4573    * Clarify that filtering rules for flink:vkCmdBlitImage always apply, and
4574      are usually no-ops if the formats are the same (public issue 253).
4575    * Remove 'non-sparse' from description of
4576      flink:vkGetBufferMemoryRequirements and
4577      flink:vkGetImageMemoryRequirements (public issue 257).
4578    * Remove ename:VK_ERROR_LAYER_NOT_PRESENT error code from
4579      flink:vkCreateDevice (public issue 259).
4580    * Change "must: not" to "should: not" in constraint on when
4581      flink:vkAcquireNextImageKHR is called in the VK_KHR_swapchain branch
4582      (public issue 262).
4583    * Change type of flink:vkCmdUpdateBuffer::pname:pData from
4584      basetype:uint32_t* to basetype:void* (public issue 263).
4585    * Change should: to must: in description of where additional segments are
4586      placed in the <<[tessellation-tessellator-spacing,Tessellator Spacing>>
4587      section (public issue 264).
4588  
4589  Internal Issues:
4590  
4591    * Normalize the language of all the compute shader built-ins in the
4592      <<interfaces-builtin-variables,Built-in Variables>> section (internal
4593      issue 323).
4594    * Remove definition of presentation engine internal queue lengths
4595      associated with ename:VK_PRESENT_MODE_FIFO_KHR and
4596      ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the <<Window System
4597      Integration,wsi>> chapter (internal issue 374).
4598    * The language of a Note was too broad, and implied that loaders for a
4599      given OS would statically export functions for WSI extensions that
4600      were not relevant to (or supported on) the OS. Also, removed
4601      "Khronos-provided" since the Android loader is not (internal issue 380)
4602  
4603  Other Commits:
4604  
4605    * Add ename:VK_INCOMPLETE to list of return values for
4606      flink:vkGetPipelineCacheData. Spec says this value is returnable, but it
4607      was not listed in the error codes.
4608    * Fix "correponds" typo in member definitions for
4609      slink:VkSubpassDescription.
4610  
4611  -----------------------------------------------------
4612  
4613  Change log for June 24, 2016 Vulkan 1.0.18 spec update:
4614  
4615    * Bump API patch number and header version number to 18 for this
4616      update.
4617  
4618  Github Issues:
4619  
4620    * Added "queue operation" terminology, and modified spec to actually
4621      use this terminology (public issue 155). The act of submitting a
4622      piece of work to a queue now generates "operations" for the queue to
4623      execute, including operations to wait on/signal semaphores and
4624      fences. Synchronization waits on these operations, making execution
4625      dependency chains more obvious for semaphores and fences (though
4626      additional work is still needed here). These changes include:
4627    ** Overview of "queue submission" commands in chapter
4628       <<devsandqueues-submission>>.
4629    ** Updated descriptions for fence and semaphore waits and signals in
4630       the synchronization chapter <<synchronization-semaphores-waiting>>,
4631       <<synchronization-semaphores-signaling>> and
4632       <<synchronization-fences-waiting>>.
4633    ** Clarifications to semaphore and fence operation within queue
4634       submission functions.
4635    ** New glossary terms.
4636    ** Moved device idle and queue wait idle to synchronization chapter in
4637       order to describe them in terms of other synchronization
4638       primitives.
4639    ** Clarifications to semaphore and fence operation allowed removal of
4640       the "implicit ordering guarantees" section, as this information is
4641       now wholly covered where these primitives are described.
4642    *** The "host writes" section of this is still there for now - in its
4643        own section. This could probably be merged into other sections
4644        later.
4645    *** Modified fundamentals chapter on queue ordering to make sense in
4646        context of the new changes, and avoid duplication.
4647        <<fundamentals-queueoperation>>
4648    * Added "aspect" and "component" definitions to the glossary, and made
4649      sure these terms are referenced correctly (public issue 163).
4650    * Update valid usage for ftext:vkGet*ProcAddr to only include
4651      conditions that must be met to get a valid result. In particular,
4652      it is okay to call flink:vkGetDeviceProcAddr with any string and will
4653      get a code:NULL if that string is not a core Vulkan function or an
4654      enabled extension function (addresses but does not fully close
4655      public issue 214).
4656    * Change the WSI extension dependencies to refer to version 1.0 of the
4657      Vulkan API, instead of the pre-1.0-release internal revisions
4658      numbers (public issue 238).
4659    * Specified that <<interfaces-fragmentoutput,undeclared fragment
4660      shader outputs>> result in undefined values input to the blending
4661      unit or color attachment (public issue 240).
4662    * Fix latexmath:[$\leq$] operators turning into Unicode left arrow symbols
4663      (public issue 245).
4664  
4665  Internal Issues:
4666  
4667    * Better documented that the registry XML "optional" tag for values
4668      only applies when that value is the size of an array (internal issue
4669      335).
4670    * Add a stronger definition for the valid usages of
4671      VkSpecializationMapEntry.size in the
4672      <<pipelines-specialization-constants,Specialization Constants>>
4673      section (internal issue 345).
4674    * Change code:OpName to code:OpDecorate (along with appropriate
4675      syntax) for vertex shader built-ins (internal issue 368).
4676    * Add missing ref pages (those which are not currently stubs) to
4677      apispec.txt for the single-page version of the ref pages (internal
4678      issue 378).
4679  
4680  Other Commits:
4681  
4682    * Fix example in the <<descriptorsets,Descriptor Sets>> section to use
4683      M, N, and I, describing set, binding, and index, consistently
4684      throughout the example code.
4685  
4686  -----------------------------------------------------
4687  
4688  Change log for June 17, 2016 Vulkan 1.0.17 spec update:
4689  
4690    * Bump API patch number and header version number to 17 for this
4691      update.
4692  
4693  Github Issues:
4694  
4695    * Update description of vertex shader reuse in
4696      <<shaders-vertex-execution>> (public issue 106).
4697    * Simplify validity language around pname:ppEnabledExtensionNames and
4698      pname:ppEnabledLayerNames (in the <<initialization-instances>> and
4699      <<devsandqueues-device-creation>> sections) (public issue 214).
4700    * Add missing validity rule to flink:vkCmdBeginRenderPass requiring
4701      compatibility between slink:VkAttachmentDescription pname:initalLayout
4702      members and the corresponding attached framebuffer images (public issue
4703      233).
4704    * Fix Unicode arrows appearing in output instead of relational operators
4705      (public issue 239).
4706    * Correctly describe the required number of elements for
4707      code:TessLevelInner and code:TessLevelOuter arrays in the
4708      <<interfaces-builtin-variables,Built-In Variables>> section as two and
4709      four, respectively, instead of the other way around, and refer to this
4710      section from the <<tessellation,Tessellation>> chapter (public issue
4711      246).
4712  
4713  Internal Issues:
4714  
4715    * Document deprecation of ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR in the
4716      VK_KHR_surface extension, and of
4717      ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT in the
4718      VK_EXT_debug_report extension (internal issue 328).
4719    * Added language to define what a valid usage statement is and should be,
4720      with a note about some apparent weirdnesses this might entail (internal
4721      issue 357).
4722  
4723  Other Commits:
4724  
4725    * Added missing ename:VK_ERROR_DEVICE_LOST error to
4726      flink:vkQueueBindSparse.
4727  
4728  -----------------------------------------------------
4729  
4730  Change log for June 10, 2016 Vulkan 1.0.16 spec update:
4731  
4732    * Bump API patch number and header version number to 16 for this
4733      update.
4734  
4735  Github Issues:
4736  
4737    * Clarify that integer border values are meant to be 0/1, and that
4738      integer texture lookups are sign-extended in the
4739      <<textures-format-conversion,Format Conversion>> and
4740      <<textures-texel-replacement,Texel Replacement>> sections (public
4741      issue 52).
4742    * Add logic to generate spec boilerplate without using the 'git'
4743      command-line client, needed when building from a tarball or another
4744      source of the Vulkan tree rather than a cloned git repo. Remove
4745      boilerplate as part of 'clean' target (public issue 195).
4746    * Document that color writes and clears to unused attachments have no
4747      effect for slink:VkClearAttachment and
4748      elink:VkColorComponentFlagBits (public issue 198).
4749    * Fixed flink:vkCmdExecuteCommands validity statement for
4750      sname:VkCommandBufferInheritanceInfo::pname:framebuffer. If used, it
4751      must match the framebuffer in the current renderpass instance
4752      (public issue 226).
4753    * Added valid usage language to require for all functions that set
4754      dynamic state that the currently bound graphics pipeline has the
4755      corresponding dynamic state enabled (public issue 235).
4756  
4757  Internal Issues:
4758  
4759    * Clarify for flink:vkEnumerateInstanceExtensionProperties, in the
4760      <<extended-functionality-instance-extensions-and-devices, Instance
4761      Extensions and Device Extensions>> section, and in the
4762      <<glossary,Glossary>> section when functionality should be exposed
4763      as an instance extension, as a device extension, or as both
4764      (internal issue 109).
4765    * Place WorkgroupSize in alphabetical order in the
4766      <<interfaces-builtin-variables,Built-in Variables>> section
4767      (internal issue 323).
4768    * Corrects valid usage in vkEndRenderPass to only affect primary
4769      render passes, as secondaries may be entirely within a render pass,
4770      and should be able to be ended (previous language disallowed that)
4771      (internal issue 338).
4772    * Fix relational operator from <= to >= in the
4773      <<features-extentperimagetype,Allowed Extent Values>> section
4774      (internal issue 343).
4775    * Disallow recursion under SPIR-V entry points in the
4776      <<spirvenv-module-validation,Validation Rules within a Module>>
4777      section (internal SPIR-V issue 37).
4778  
4779  Other Commits:
4780  
4781    * Use standard Python ElementTree package instead of lxml.etree in
4782      header / validation layer / include autogeneration from XML,
4783      reducing platform dependencies.
4784  
4785  -----------------------------------------------------
4786  
4787  Change log for May 27, 2016 Vulkan 1.0.15 spec update:
4788  
4789    * Bump API patch number and header version number to 15 for this
4790      update.
4791  
4792  Github Issues:
4793  
4794    * Fixed the <<glossary,Glossary>> entry for Fragment Input Attachment
4795      Interface to specify code:UniformConstant storage class (public issue
4796      156).
4797    * Disallow lazily allocated memory for buffers in the description of
4798      slink:VkMemoryRequirements::pname:memoryTypeBits (public issue 196).
4799    * Add numbered figure captions (public issue 219).
4800    * Fix output variable names in the <<fundamentals-fpfixedconv,Conversion
4801      from Floating-Point to Normalized Fixed-Point>> section and related
4802      minor normative language and markup cleanup (public issue 220).
4803  
4804  Internal Issues:
4805  
4806    * Fix reference to nonexistent etext:VK_IMAGE_LAYOUT_TRANSFER_{SRC,DST}BIT
4807      to the actual etext:VK_IMAGE_LAYOUT{SRC,DST}_OPTIMAL (internal issue
4808      296).
4809    * Update the <<sparsememory-sparse-memory-aliasing,Sparse Resource
4810      Implementation Guidelines>> to refer to the correct feature names
4811      (internal issue 305).
4812  
4813  -----------------------------------------------------
4814  
4815  Change log for May 20, 2016 Vulkan 1.0.14 spec update:
4816  
4817    * Bump API patch number and header version number to 14 for this
4818      update.
4819  
4820  Github Issues:
4821  
4822    * Fix validity language for sname:VkCommandBufferAllocateInfo to
4823      impose range limits on pname:commandBufferCount (public issue 178).
4824    * Fix validity language for flink:vkCmdExecuteCommands to refer to the
4825      correct structure names (public issue 179).
4826    * Fix two copy-and-paste errors in the WSI queries, where the wrong
4827      term was used for what was being returned (public issue 206).
4828    * Add a note in the documentation of
4829      flink:vkGetPhysicalDeviceSurfaceFormatsKHR, about what it means if
4830      ename:VK_FORMAT_UNDEFINED is returned (public issue 207).
4831  
4832  Internal Issues:
4833  
4834    * Clarify the usage and correct the name for the bitmask referenced in
4835      <<queries-pipestats,Pipeline Statistics Queries>> (internal issue
4836      334).
4837  
4838  Other Commits:
4839  
4840    * Fix the names of decorations listed in the
4841      <<interfaces-builtin-variables,Built-in Variables>> section such
4842      that they match the SPIR-V specification.
4843  
4844  -----------------------------------------------------
4845  
4846  Change log for May 13, 2016 Vulkan 1.0.13 spec update:
4847  
4848    * Bump API patch number and header version number to 13 for this
4849      update.
4850  
4851  Github Issues:
4852  
4853    * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the
4854      VK_KHR_surface extension (public issue 174).
4855    * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command
4856      buffers (public issue 182).
4857    * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was
4858      used instead of code:wl_display (public issue 193).
4859    * Replaced {apiname} with ``Vulkan'' in XML validity statements (public
4860      issue 199).
4861    * Fix dead links for WSI handle types (public issue 200).
4862    * Use "signaled" instead of "signalled" spelling everywhere (public issue
4863      201).
4864    * Move readme.pdf target directory for XML schema documentation into the
4865      target generation directory, instead of leaving it checked into the spec
4866      source tree (public issue 203).
4867    * Fix duplicate 'which which' typo in description of
4868      elink:VkCommandPoolResetFlagBits (public issue 204).
4869    * Move the <<Programmable Primitive Shading>> section up one level, out of
4870      the <<drawing-primitive-topologies,Primitive Topologies>> section
4871      (public issue 209).
4872  
4873  Internal Issues:
4874  
4875    * Clarify in the <<pipelines-cache,Pipeline Cache>> section that
4876      implementations should not manage the size of pipeline cache (internal
4877      issue 192).
4878    * Deprecate the concept of device layers and associated commands (internal
4879      issue 255).
4880    * Remove ename:VK_INCOMPLETE from the list of possible result codes of
4881      flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314).
4882    * Add missing std140/std430 rule: the base alignment of a member following
4883      a structure is a multiple of the structure's base alignment (internal
4884      issue 321).
4885    * Fixes naming of the single elink:VkColorSpaceKHR enum from
4886      ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to
4887      ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the
4888      VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the
4889      typename (space and color are two words, not one) (internal issue 322).
4890    * Make it clear that code:LocalInvocationID should only be applied to an
4891      input variable and normalize the language describing
4892      code:LocalInvocationID to the language for other compute shader
4893      variables in the <<interfaces-builtin-variables,Built-in Variables>>
4894      section, and add normative language (internal issue 323).
4895    * Clarify in the <<fundamentals-returncodes,Return Codes>> section that
4896      the result pointer may be modified for specific commands, even if a
4897      runtime error is returned (internal issue 324).
4898  
4899  -----------------------------------------------------
4900  
4901  Change log for April 29, 2016 Vulkan 1.0.12 spec update:
4902  
4903    * Bump API patch number and header version number to 12 for this
4904      update.
4905  
4906  Github Issues:
4907  
4908    * Change valid usage statements intended to be "sub-points" to
4909      be actual sub-points (public issue 66).
4910    * Replace double negation in description of
4911      slink:VkRenderPassBeginInfo::pname:pClearValues (based on public
4912      merge 142).
4913    * Cleanup minor typos in spec, ref pages and XML, including those
4914      proposed in public pull requests 144, 150, 151, 167, 168, 181, and
4915      186.
4916    * Use *strict subset* in describing the partial order of memory
4917      property types for slink:VkMemoryType, and update the style guide
4918      accordingly (public issue 190).
4919    * Fix various "a image" -> "an image" typos (public issue 191).
4920    * Note in the <<fundamentals-validusage,Valid Usage>> and
4921      <<extensions-interactions,Extension Interactions>> sections that
4922      structures defined by extensions which may be passed in structure
4923      chains using the ptext:pNext member must include initial
4924      ptext:sType and ptext:pNext members (public issue 192).
4925  
4926  Internal Issues:
4927  
4928    * Remove duplicate language from the description of the pname:fence
4929      parameter to flink:vkQueueSubmit and improve validity language
4930      (internal issue 91).
4931    * Added documentation for "optional" attribute to XML readme.tex/pdf
4932      (internal issue 149).
4933    * Clarify the host-side data validity rules and behavior of
4934      flink:vkFlushMappedMemoryRanges and
4935      flink:vkInvalidateMappedMemoryRanges (internal issue 266).
4936  
4937  Other Commits:
4938  
4939    * Added clarification to flink:vkCmdFillBuffer regarding the use of
4940      ename:VK_WHOLE_SIZE.
4941    * Fixed and documented implementation of "validextensionstructs"
4942      attribute. in XML processing scripts and readme.tex/pdf.
4943    * Add missing validity statements to flink:vkResetEvent and
4944      flink:vkCmdResetEvent.
4945    * Fix validity for the
4946      ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag.
4947      Correct all the draw/dispatch commands to mention optimally tiled
4948      images as well as linear tiled images, and say image VIEWS instead
4949      of images. Add validity statement to flink:vkCmdBlitImage
4950    * Replace the {apiname} macro with hardcoded "Vulkan", now that we have
4951      committed to that name.
4952    * Add the VK_AMD_rasterization_order extension to vk.xml.
4953  
4954  -----------------------------------------------------
4955  
4956  Change log for April 22, 2016 Vulkan 1.0.11 spec update:
4957  
4958    * Bump API patch number and header version number to 11 for this
4959      update.
4960  
4961  Github Issues:
4962  
4963    * Clarify the WSI extension language by switching from the fuzzier
4964      "ownership" language to more-consistent "acquire" language (public
4965      issue 117).
4966    * Clarify that memory barriers apply to all commands in the dependency
4967      chains in the flink:vkGetRenderAreaGranularity command and the
4968      <<synchronization-execution-and-memory-dependencies,Execution And
4969      Memory Dependencies>> section (public issue 132).
4970    * Clarify that a queue family is a set of queues in the
4971      <<fundamentals-execmodel,Execution Model>> section (public issue
4972      166).
4973    * Removed requirement from valid usage language that
4974      VkPresentInfoKHR::waitSemaphoreCount must be greater than 0 (public
4975      issue 171).
4976    * Fix broken internal links, describe structures consistently, use
4977      consistent style for SPIR-V codewords, and tag normative terms that
4978      were missing asciidoc tags (public issue 183 and ancillary
4979      markup/normative language fixes).
4980    * Fix typos for slink:VkPhysicalDeviceLimits member names in
4981      slink:VkImageCreateInfo validity language (public issue 184).
4982  
4983  Internal Issues:
4984  
4985    * Document that the requested patch version number specified as part
4986      of slink:VkApplicationInfo::pname:apiVersion is ignored when
4987      creating an instance (internal issue 176).
4988    * Clarify handling of extension structs in the
4989      <<fundamentals-validusageValid Usage>> section (internal issue 254).
4990    * Update required slink:VkImageFormatProperties::pname:maxMipLevels to
4991      be limited to the maximum allowed mipmap pyramid size corresponding
4992      to the actual maximum supported size for the format (internal issue
4993      256).
4994    * Modify the <<features-extentperimagetype,Allowed Extent Values Based
4995      On Image Type>> section so the allowed maximum extent is the maximum
4996      image dimension supported for each dimension of the type of texture
4997      being queried (internal issue 257).
4998    * Clarify in the <<spirvenv-module-validation,Validation Rules within
4999      a Module>> section that at least one of the code:LocalSize execution
5000      mode or code:WorkgroupSize decoration is required for each compute
5001      shader entry point in a shader module (internal issue 279).
5002    * Add validity rules for formats in flink:vkCmdClearColorImage and
5003      flink:vkCmdClearDepthStencilImage (internal issue 283).
5004    * Clarify that slink:VkImageFormatProperties::pname:maxResourceSize is
5005      an upper bound, and that it may not be possible to create an image
5006      anywhere near that size (internal issue 284).
5007  
5008  Other Commits:
5009  
5010    * Fix various minor markup errors reported by validation scripts.
5011    * Change copyright from Khronos Free Use License to Apache 2.0 license
5012      on relevant script/XML/header files. This does not affect the
5013      specification source copyright.
5014  
5015  -----------------------------------------------------
5016  
5017  Change log for April 15, 2016 Vulkan 1.0.10 spec update:
5018  
5019    * Bump API patch number and header version number to 10 for this
5020      update.
5021  
5022  Github Issues:
5023  
5024    * Slightly tweak the <<memory-allocation,Host Memory>> allocator language
5025      so that an application wrapping the standard C alloc/free/realloc
5026      functions is still correct - the previous language was too strong with
5027      regards to freeing memory. Also made certain scenarios clearer - an
5028      implementation may now continue without error if an allocation failed
5029      and it is able to continue correctly (public issue 21).
5030    * Require that etext:VK_*_CREATE_SPARSE_BINDING_BIT is set when the
5031      corresponding etext:VK_*_CREATE_SPARSE_RESIDENCY_BIT is used, in the
5032      <<sparsememory-miptail,Mip Tail Regions>> section and related commands
5033      flink:vkCreateBuffer and flink:vkCreateImage (public issue 84).
5034    * Update the <<features,Features, Limits, and Formats>> chapter to clarify
5035      interactions between optional features and dynamic state for the
5036      pname:depthBiasClamp and pname:wideLines features (public issue 89).
5037    * Describe the code:WorkgroupSize builtin in the
5038      <<interfaces-builtin-variables,Built-In Variables>> section, and update
5039      the <<compute-shaders,Compute Shaders>> section to further clarify how
5040      to set the number of workgroups to execute in a compute shader (public
5041      issue 145).
5042    * Use the term *image subresource* everywhere instead of *subresource*,
5043      except for the special case of *host-accessible subresource*, which may
5044      be either an image subresource or buffer range (public issue 120)
5045    * Add a note to the <<features,Features, Limits, and Formats>> section
5046      about extensibility of structures (Public issue 165).
5047    * Fix return code flink:vkAcquireNextImageKHR when the timeout parameter
5048      is 0 to ename:VK_NOT_READY instead of ename:VK_TIMEOUT (public issue
5049      170).
5050    * Fix typo in slink:VkLayerProperties::pname:apiVersion field (public
5051      issue 172).
5052  
5053  Internal Issues:
5054  
5055    * Fix a few minor internally-detected typos.
5056    * Minor formatting tweaks to pseudocode in the <<resources,Resource
5057      Creation>> chapter (internal issue 179).
5058    * Fix typo in the definition of point sampling for
5059      elink:VkCullModeFlagBits (internal issue 268).
5060  
5061  -----------------------------------------------------
5062  
5063  Change log for April 8, 2016 Vulkan 1.0.9 spec update:
5064  
5065    * Bump API patch number and header version number to 9 for this
5066      update.
5067  
5068  Github Issues:
5069  
5070    * Fix memory type preorder definition and clarify example list and source
5071      code for slink:VkMemoryRequirements and slink:VkMemoryHeap (public issue
5072      26).
5073    * Ensure slink:VkAllocationCallbacks are properly defined (public issue
5074      73).
5075    * Clarify the WSI extension language by switching from the fuzzier
5076      "ownership" language to more-consistent "acquire" language (public issue
5077      117).
5078    * Add language allowing allocation and freeing of memory scoped to the
5079      duration of any API command in the <<memory-allocation,Memory
5080      Allocation>> section (public issue 136).
5081    * Clarify the explicit location assignment always overrides the inherited
5082      location in the <<interfaces-iointerfaces-locations,Location
5083      Assignment>> section, even for the first member of a block (public issue
5084      141).
5085    * Fixed references to
5086      slink:VkCommandBufferInheritanceInfo::pname:pipelineStatistics (public
5087      issue 158).
5088    * Fix name of slink:VkBufferCopy::pname:size field in validity language
5089      for flink:vkCmdCopyBuffer (public issue 162).
5090  
5091  Internal Issues:
5092  
5093    * Update GL_KHR_vulkan_glsl specification to clarify disallowance of
5094      spec-const arrays in initializers (internal issue 248).
5095    * Clarify <<interfaces-iointerfaces-matching,Interface Matching>> section
5096      to state that user-defined variable interface must match too (internal
5097      issue 250).
5098  
5099  -----------------------------------------------------
5100  
5101  Change log for April 1, 2016 Vulkan 1.0.8 spec update:
5102  
5103    * Bump API patch number and header version number to 8 for this
5104      update.
5105  
5106  Github Issues:
5107  
5108    * Specify in the validity language for flink:vkBeginCommandBuffer that
5109      pname:commandBuffer must not currently be pending execution (public
5110      issue 96).
5111    * Describe depth comparison using the correct temporary variable names
5112      in the <<textures-depth-compare-operation,Depth Compare Operation>>
5113      section (public issue 100).
5114    * Clarify the order of descriptor update operations in the
5115      flink:vkUpdateDescriptorSets command (public issue 115).
5116    * Specify in the VK_KHR_swapchain extension that
5117      flink:vkAcquireNextImageKHR's pname:semaphore and pname:fence
5118      parameters cannot both be sname:VK_NULL_HANDLE (partly addresses,
5119      but does not fully close, public issue 117 / internal issue 246).
5120    * Change reference to the "lifetime" of a Vulkan command to
5121      "duration", and define the "duration" term (public issue 135).
5122    * Added valid usage language for slink:VkImageLayout to require both
5123      pname:height and pname:depth to be 1 for 1D images and pname:depth
5124      to be 1 for 2D images (public issue 137).
5125    * Fix SPIR-V example code in the
5126      <<descriptorsets-inputattachment,Input Attachment>> section to
5127      properly decorate the code:InputAttachmentIndex (public issue 139).
5128    * Fix reference to nonexistent pname:imageInfo in the description of
5129      flink:VkWriteDescriptorSet to refer to pname:pImageInfo (public
5130      issue 140).
5131  
5132  Internal Issues:
5133  
5134    * Link to the fixed-function vertex chapter from the drawing chapter
5135      (internal issue 110)
5136    * Fix typo in slink:VkImageCreateInfo validity language:
5137      ptext:maxExtent.sampleCounts -> pname:sampleCounts (internal issue
5138      249).
5139    * Explain why the non-core token etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
5140      is used in the example in the
5141      <<synchronization-semaphores,Semaphores>> section (internal issue
5142      251).
5143    * Attempt to clarify in the VK_KHR_android_surface extension's
5144      <<platformQuerySupport_android,Android Platform Support>> section
5145      that there is no Android-specific WSI query, and why (internal issue
5146      252).
5147  
5148  Other Commits:
5149  
5150    * Add missing language about ename:VK_INCOMPLETE being returned from
5151      array queries when the passed array is too short, in the
5152      VK_KHR_display, VK_KHR_swapchain, and VK_KHR_surface extensions.
5153  
5154  -----------------------------------------------------
5155  
5156  Change log for March 25, 2016 Vulkan 1.0.7 spec update:
5157  
5158    * Bump API patch number and header version number to 7 for this
5159      update.
5160  
5161  Github Issues:
5162  
5163    * Fix slink:VkSpecializationMapEntry example to avoid C/C++ strict
5164      aliasing issues (public issue 14).
5165    * Clarify the meaning of "matching" in flink:vkCmdBindDescriptorSets
5166      validity language (public issue 33).
5167    * Add stub reference pages so xrefs to not-yet-written pages do not
5168      generate 404 errors. However, the actual content of these pages
5169      still needs to be filled in as time allows (public issue 44, but
5170      does not close that issue out).
5171    * Remove incorrect validity statement for
5172      flink:vkGetImageSparseMemoryRequirements (public issue 85).
5173    * Reword the
5174      <<features-limits-bufferImageGranularity,bufferImageGranularity>>
5175      feature in terms of "aliasing", and clarify that it applies to
5176      bindings in the same memory object (public issue 90).
5177    * Clarify the relationship of the slink:VkPhysicalDeviceLimits
5178      pname:maxViewportDimensions and pname:viewportBoundsRange limits
5179      (public issue 92).
5180    * Specify sparse unbound texture replacement in the
5181      <<textures-texel-replacement,Texel Replacement>> section
5182      independently of robust buffer access language (public issue 100).
5183    * Add the <<fundamentals-architecture-model,Architecture Model>>
5184      section to explain architecture constraints Vulkan has chosen to
5185      accept in order to enable portable and performant code (public issue
5186      122).
5187    * State that an object must not be destroyed until *all* (not *any*)
5188      uses of that object have completed (public issue 123).
5189    * Minor editorial cleanup (public issues 129, 134, 146, 148).
5190    * Add validity language for layer and extension names to
5191      slink:VkDeviceCreateInfo matching that used for
5192      slink:VkInstanceCreateInfo (public issue 130).
5193    * Clean up terminology for the case when the bits set in one bitmask
5194      are a subset of the bits set in another bitmask (public issue 138).
5195    * Document that input attachments are UniformConstant not Input, in
5196      the <<interfaces-inputattachment,Fragment Input Attachment
5197      Interface>> section (public glslang bug 169).
5198  
5199  Internal Issues:
5200  
5201    * Add max enum values to "flag bits" enums (internal issue 136).
5202    * Clarify language around the various uses of the term "block" in the
5203      <<appendix-compressedtex-bc,Block Compressed Image Formats>> section
5204      (internal issue 202).
5205    * Removed "expand" dependency from <enums> groups in vk.xml and added
5206      auto-generation code in the scripts to infer it instead, to ensure
5207      consistency. This caused renaming of sname:VkColorSpaceKHR and
5208      sname:VkPresentModeKHR etext:BEGIN_RANGE (etc.) tokens, but those
5209      tokens are metadata, not part of the API, and the Vulkan WG is OK
5210      with this change. This change adds ranges to two additional enums
5211      that were missing them due to not defining the "expand" attribute
5212      (internal issue 217).
5213    * Tweak makefile to generate ref page nroff (.3) files in the right
5214      output directory, working around an a2x limitation (internal issue
5215      223).
5216  
5217  Other Commits:
5218  
5219    * Add validity requirements for flink:vkCmdCopyQueryPoolResults
5220      pname:dstBuffer parameter.
5221    * Fix ref page build to generate .3 targets in the right output
5222      directory.
5223  
5224  -----------------------------------------------------
5225  
5226  Change log for March 10, 2016 Vulkan 1.0.6 spec update:
5227  
5228    * Bump API patch number and header version number to 6 for this
5229      update.
5230  
5231  Github Issues:
5232  
5233    * Define 'invocation group' for compute and graphics shaders. Cleanup
5234      definition and use of 'workgroup', and add glossary entries (public
5235      issue 1).
5236    * Various minor editorial fixes (public issue 33).
5237    * Clarify locations for block members in the
5238      <<interfaces-iointerfaces-locations,Location Assignment>>
5239      section (public issue 45).
5240    * Editorial fixes for <<commandbuffer-allocation,Command Buffer
5241      Allocation>> section (public issues 54, 59).
5242    * Clarify behavior of depth test in the <<fragops-depth,Depth Test>>
5243      section (public issues 80, 81).
5244    * Remove discussion of return codes from
5245      flink:vkGetPhysicalDeviceSparseImageFormatProperties and
5246      flink:vkGetImageSparseMemoryRequirements, which do not return values
5247      (public issue 82).
5248    * Allow flink:vkCmdDrawIndirect and flink:vkCmdDrawIndexedIndirect
5249      pname:drawCount of 0, as well as 1, when the multiDrawIndirect
5250      feature is not supported (public issue 88).
5251    * Remove confusing wording in the <<features-limits,Limits>>
5252      section describing the slink:VkPhysicalDeviceLimits
5253      pname:minTexelBufferOffsetAlignment,
5254      pname:minUniformBufferOffsetAlignment, and
5255      pname:minStorageBufferOffsetAlignment members as both minimums and
5256      maximums (public issue 91).
5257    * Clarified that only the RGB components should be affected in places
5258      where sRGB is referred to in the spec, such as ASTC formats. Minor
5259      re-wording to avoid "color space" when actively incorrect, now that
5260      we refer to the Data Format Spec which actually makes a distinction
5261      between color space and transfer function (public issue 94).
5262    * Treat pname:pPropertyCount == 0 consistently in
5263      flink:vkEnumerateInstanceLayerProperties and
5264      flink:vkEnumerateDeviceLayerProperties (public issue 99)
5265    * Cleanup minor editorial issues in chapters 14-17 (public issue 100).
5266    * Clarify definition of flink:vkEnumerateInstanceExtensionProperties
5267      and flink:vkEnumerateDeviceExtensionProperties (public issue 101).
5268    * Define the flink:vkEnumerateInstanceExtensionProperties and
5269      flink:vkEnumerateDeviceExtensionProperties pname:pLayerName
5270      parameter to be a pointer to a null-terminated UTF-8 string (public
5271      issue 101).
5272    * Rearrange "Missing information" references in mandatory format
5273      tables (public issue 101).
5274    * Clarify that the enumerated extensions returned by
5275      flink:vkEnumerateInstanceExtensionProperties and
5276      flink:vkEnumerateDeviceExtensionProperties will only include
5277      extensions provided by the platform or extensions implemented in
5278      implicitly enabled layers (public issue 101).
5279    * Miscellaneous editorial fixes. Include the Vulkan spec patch number
5280      in the PDF title. Fix label on <<fig-non-strict-lines,Non
5281      strict lines>> diagram. Use more easily distinguished symbols in
5282      tables in the <<features-required-format-support,Required
5283      Format Support>> section. Do not require FQDNs used as layer names be
5284      encoded in lower case if not possible, in the
5285      <<extensions-naming-conventions, Extension and Layer Naming
5286      Conventions>> section (public issues 101, 119, 121).
5287  
5288  Internal Issues:
5289  
5290    * Fixed excessive spacing in tables in XHTML (internal issue 18).
5291    * Clarify that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
5292      applies to secondary command buffers. Previously spec only referred
5293      to the members of pname:pCommandBuffers being affected by this bit.
5294      Added a separate slink:VkSubmitInfo Valid Usage restriction
5295      specifying that ename:VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
5296      also applies to any secondary command buffers that are recorded into
5297      the primary command buffers in pname:pCommandBuffers (internal issue
5298      106).
5299    * Clarify that slink:VkDeviceCreateInfo::pname:pEnabledFeatures can be
5300      NULL (internal issue 117).
5301    * Remove "the value of" where it is redundant (e.g. speaking of an API
5302      parameter, struct member, or SPIR-V variable, but not when speaking
5303      of color components) (internal issue 175).
5304    * Forced patch version to always be 0 in the header. Add a
5305      "VK_API_VERSION_<major>_<minor>" macro for people to use to do the
5306      right thing. Add a VK_HEADER_VERSION which captures the header
5307      release number independent of the spec patch number (internal issue
5308      176).
5309    * Correct description of
5310      slink:VkPipelineShaderStageCreateInfo::pname:pName to "a pointer to
5311      a null-terminated UTF-8 string" (internal issue 197).
5312  
5313  Other Commits:
5314  
5315    * Updated DataFormat spec reference to the new date for revision 5 of
5316      that spec.
5317    * Fixed KEEP option (to retain LaTeX intermediate files) in the
5318      Makefile to be included when edited there, as well as set on the
5319      command line.
5320    * Reserve and add "VK_IMG_filter_cubic" to the registry, and implement
5321      script functionality to add and remove validity from existing
5322      functions. Includes schema and readme changes.
5323    * Update GL_KHR_vulkan_glsl so push_constants do not have descriptor
5324      sets.
5325  
5326  -----------------------------------------------------
5327  
5328  Change log for March 4, 2016 Vulkan 1.0.5 spec update:
5329  
5330    * Bump API patch number to 5 for this update.
5331  
5332  Github Issues:
5333  
5334    * Correctly describe slink:VkPhysicalDeviceProperties pname:deviceName
5335      member as a string, not a pointer to a string. Also one typo fix for
5336      "hetereogeneous" (public issue 4).
5337    * Replace maynot: macro with may: not, and "may: or maynot:" with
5338      "may:" (public issue 4).
5339    * Clarify that redundantly setting the state of a fence or event has
5340      no effect (public issue 4).
5341    * Minor fixes to ref pages to track descriptions of memory bits that
5342      changed in the core spec. Fix name of a member in the description of
5343      sname:sname:VkPipelineMultisampleStateCreateInfo (public issues 8,
5344      13).
5345    * Remove redundant validity statement for
5346      sname:VkGraphicsPipelineCreateInfo::pname:stageCount (public issue
5347      14).
5348    * Fix typos in chapters 7-9 (public issue 14).
5349    * Clarify the example demonstrating the behavior of
5350      code:OpMemoryBarrier in the
5351      <<shaders-execution-memory-ordering,shader memory acces
5352      ordering>> section (public issue 16).
5353    * Specify that freeing mapped memory implicitly unmaps the memory in
5354      the description of flink:vkFreeMemory (public issue 17).
5355    * Forbid allocation callbacks from calling into the API in the
5356      <<memory-allocation,memory allocation>> section (public issue
5357      20).
5358    * Add missing validity rules about size being greater than 0 and
5359      offset being less than size of object. Fix
5360      flink:VkMappedMemoryRange's misinterpretation of offset (public
5361      issues 27, 31).
5362    * Add validity rule disallowing overlapping source/destination
5363      descriptors in flink:VkCopyDescriptorSet (public issue 32).
5364    * Clarify that array and matrix stride has to be a multiple of the
5365      base alignment of the array or matrix in the
5366      <<interfaces-resources-layout,Offset and Stride Assignment>>
5367      section (public issue 38).
5368    * Correct parenthesis floor nesting error in equation for
5369      <<textures-RGB-sexp,RGB to shared exponent conversion>>.
5370      Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
5371      problem (public issue 40).
5372    * Remove redundant statement from the code:FragDepth description in
5373      the <<interfaces-builtin-variables,Built-In Variables>>
5374      section (public issue 47).
5375    * Define the clamping of the
5376      <<textures-level-of-detail-operation,bias added to the scale
5377      factor>> by linking to the slink:VkPhysicalDevice feature
5378      pname:maxSamplerLodBias (public issue 64).
5379    * Fix typo "optimal linear resources" and clarify the set of resources
5380      <<features-limits-bufferImageGranularity,the
5381      pname:bufferImageGranularity resource>> applies to (public issue
5382      67).
5383    * Replace 'descriptor accessed by a pipeline' language for
5384      sname:VkDescriptorSetAllocateInfo with more precise phrasing about
5385      binding a descriptor set before a command that invokes work using
5386      that set (public issue 69).
5387    * tstripadj.svg contained an Inkscape tag which caused Firefox and IE
5388      11 to fail to render it, and was illegal SVG. Generating Plain SVG
5389      from the Inkscape SVG source fixes this (public issue 70).
5390    * Fix validity for sname:VkVertexInputBindingDescription and
5391      sname:VkVertexInputAttributeDescription numbers (public issue 72).
5392  
5393  Internal Issues:
5394  
5395    * Clarify the meaning of
5396      ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT in
5397      elink:VkFormatFeatureFlagBits with respect to depth compare
5398      (internal issue 107).
5399    * Added a note explaining that ename:VK_QUEUE_TRANSFER_BIT may or may
5400      not be reported for a queue family that already supports
5401      ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT as the
5402      former is a strict subset of the latter ones (internal issue 116).
5403    * Add validity language for sname:VkDescriptorSetAllocateInfo about
5404      exceeding the descriptor pool capacity (internal issue 140).
5405    * Add ename:VK_INCOMPLETE success code for
5406      flink:vkEnumeratePhysicalDevices query (internal issue 163).
5407  
5408  Other Commits:
5409  
5410    * Add the VK_NV_glsl_shader extension definitions to the API.
5411    * Update GL_KHR_vulkan_glsl with 1) origin_upper_left as default 2)
5412      specialization array constant semantics.
5413    * Corrected/updated Data Format Specification date.
5414  
5415  -----------------------------------------------------
5416  
5417  Change log for February 25, 2015 Vulkan 1.0.4 spec update:
5418  
5419    * Bump API patch number from 3 to 4 for the first public update to the
5420      spec. Add patch number to the spec title (this will be done
5421      automatically from XML, later).
5422    * Fixes for numerous editorial issues. Regularize descriptions of
5423      variable-length array queries. Properly tag enumerants so they come
5424      out in the right font (many were mislabeled in usage tags in vk.xml,
5425      or not tagged). Spelling and markup corrections (public issue 4).
5426    * Fix typos and clearly separate description of different types of
5427      memory areas (public issue 5).
5428    * Use standards-compliant preprocessor guard symbols on headers
5429      (public issue 7).
5430    * Note that Github users cannot currently set labels on issues, and
5431      recommend a fallback approach (public issue 15).
5432    * Use latexmath prefix on len= attributes (public issue 29).
5433    * Make flink:vkCmdUpdateBuffer pname:dataSize limit consistent (public
5434      issue 65).
5435    * Add VK_KHR_mirror_clamp_to_edge extension to core API branch, as an
5436      optional feature not introducing new commands or enums (internal
5437      issue 104).
5438    * Cleanup invariance language inherited from the GL specification to
5439      not refer to nonexistent (GL-specific) state (internal issue 111).
5440    * Modify the flink:vkCmdDrawIndexed pname:vertexOffset definition to
5441      not be the "base offset within the index buffer" but rather the
5442      "value added to the vertex index before indexing into the vertex
5443      buffer" (internal issue 118).
5444    * Fix drawing chapter in the "Programmable Primitive Shading" section
5445      where it described categories of drawing commands. It referenced
5446      flink:vkCmdDrawIndexed twice. Replace the second reference with
5447      flink:vkCmdDrawIndexedIndirect (internal issue 119).
5448    * Typo fixed in <<sparsememory-examples-advanced,Advanced Sparse
5449      Resources>> sparse memory example (internal issue 122).
5450    * Add flink:VkDisplayPlaneAlphaFlagsKHR to <require> section of
5451      VK_KHR_display extension (internal issue 125)
5452    * Add missing optional="false,true" to
5453      flink:vkGetImageSparseMemoryRequirements
5454      pname:pSparseMemoryRequirementCount parameter (internal issue 132)
5455    * Rename ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT to
5456      ename:VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
5457      (internal issue 133)
5458    * Fix a handful of broken cross-references in the
5459      <<samplers,Samplers>> chapter (internal issue 134).
5460    * Fix "Input Attachement" GLSL example to use correct syntax (internal
5461      issue 135).
5462    * Update XML schema and documentation to accommodate recently added
5463      attributes for validity. Add some introductory material describing
5464      design choices and pointing to the public repository to file issues.
5465    * Put include of validity in the core spec extensions chapter on its
5466      own line, so that asciidoc is happy.
5467    * Fix vertexOffset language to specify that it is the value added to
5468      the vertex index before indexing into the vertex buffer, not the
5469      base offset within the index buffer.
5470    * Fix error in the description of flink:vkCmdNextSubpass.
5471  
5472  -----------------------------------------------------
5473  
5474  February 16, 2016 - Vulkan 1.0 initial public release
5475