/ 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