Vulkan API specifications 1.0.4 released

Started by JeGX, February 26, 2016, 01:51:30 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

JeGX

QuoteChange log for June 30, 2022 Vulkan 1.3.219 spec update:
  * Update release number to 219 for this update.

Public Issues:

  * Update pipeline image to move push constants outside of descriptor sets
    (public issue 1867).
  * Correct code:StencilRefLessFrontEXT to code:DepthLess in the early depth
    test portion of the <<fragops, Fragment Operations>> chapter (public
    pull request 1876).
  * Add new driver id ename:VK_DRIVER_ID_MESA_DOZEN (public pull request
    1877).
  * Relax slink:VkRenderPassCreateInfo valid usage statements 02517 and
    02518 to allow ename:VK_SUBPASS_EXTERNAL (public pull request 1878).

Internal Issues:

  * Move validation of read-only depth/stencil layout with respect to
    depth/stencil write from slink:VkGraphicsPipelineCreateInfo to draw time
    validation (internal issue 3110).
  * Clarify buffer view format features by replacing the undefined term
    "`formatted load`" (internal issue 3124).
  * Clean up markup of feature structures, and add missing boilerplate
    pname:sType / pname:pNext member descriptions where still missing
    (internal issue 3128).
  * Add new XML `limittype` attribute values to better express constraints,
    update which structure type's members are allowed to have the attribute,
    and update attributes accordingly (internal merge request 5172).
  * Disallow more combinations of ray flags in the
    <<spirvenv-module-validation-runtime, Runtime SPIR-V Validation>>
    section and corresponding text in the <<ray-traversal, Ray Traversal>>,
    chapter as well as better documenting already disallowed cases (internal
    merge request 5220).
  * Add <<descriptorsets-updates-consecutive, wording for extrapolated
    descriptor updates>> on ename:VK_DESCRIPTOR_TYPE_MUTABLE_VALVE (internal
    merge request 5251).
  * Clarify alignment requirements for device generated commands. in
    slink:VkIndirectCommandsLayoutCreateInfoNV and
    slink:VkIndirectCommandsLayoutTokenNV (internal merge request 5252).
  * Add `validstructs` attribute to XML `param` tags to specify actual valid
    structures allowed in cases where an abstract formal parameter type
    (slink:VkBaseInStructure or slink:VkBaseOutStructure) is passed,
    primarily to support the Ash Rust binding generator (internal merge
    request 5253).
  * Add guidance on defining feature structures for WSI extensions in the
    "`Feature Structures`" section of the style guide (internal merge
    request 5266).

New Extensions:

  * apiext:VK_EXT_multisampled_render_to_single_sampled
  * apiext:VK_EXT_shader_module_identifier

source: https://github.com/KhronosGroup/Vulkan-Docs/commit/080f66a96b61419b8663872d6cab6ce68a3123e8

New extensions:

- VK_EXT_multisampled_render_to_single_sampled
QuoteWith careful usage of resolve attachments, multisampled image memory
allocated with ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, pname:loadOp
not equal to ename:VK_ATTACHMENT_LOAD_OP_LOAD and pname:storeOp not equal to
ename:VK_ATTACHMENT_STORE_OP_STORE, a Vulkan application is able to
efficiently perform multisampled rendering without incurring any additional
memory penalty on some implementations.

Under certain circumstances however, the application may not be able to
complete its multisampled rendering within a single render pass; for example
if it does partial rasterization from frame to frame, blending on an image
from a previous frame, or in emulation of
GL_EXT_multisampled_render_to_texture.
In such cases, the application can use an initial subpass to effectively
load single-sampled data from the next subpass's resolve attachment and fill
in the multisampled attachment which otherwise uses pname:loadOp equal to
ename:VK_ATTACHMENT_LOAD_OP_DONT_CARE.
However, this is not always possible (for example for stencil in the absence
of VK_EXT_shader_stencil_export) and has multiple drawbacks.

Some implementations are able to perform said operation efficiently in
hardware, effectively loading a multisampled attachment from the contents of
a single sampled one.
Together with the ability to perform a resolve operation at the end of a
subpass, these implementations are able to perform multisampled rendering on
single-sampled attachments with no extra memory or bandwidth overhead.
This extension exposes this capability by allowing a framebuffer and render
pass to include single-sampled attachments while rendering is done with a
specified number of samples.

- VK_EXT_shader_module_identifier
QuoteSome applications generate SPIR-V code at runtime.
When pipeline caches are primed, either explicitly through e.g.
slink:VkPipelineCache mechanisms, or implicitly through driver managed
caches, having to re-generate SPIR-V modules is redundant.
SPIR-V modules could be cached on disk by an application, but the extra disk
size requirement might be prohibitive in some use cases.

This extension adds the ability for an application to query a small
identifier associated with a slink:VkShaderModule.
On subsequent runs of the application, the same identifier can: be provided
in lieu of a slink:VkShaderModule object.
A pipeline creation call with such a module may: succeed if a pipeline could
be created without invoking compilation, and information inside the SPIR-V
module is not required by the implementation.

ename:VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT must: be used
if only the identifier is provided, and this use case is intended to work
like a non-blocking, speculative compile.
Applications can: fallback as necessary.

The main motivation for identifying the module itself and not the entire
pipeline is that pipeline identifiers change when a driver is updated, but
module identifiers are expected to be stable for any particular driver
implementation.
This approach is helpful for shader pre-compilation systems which can prime
pipeline caches ahead of time.
When on-disk pipeline caches are updated, the same shader identifiers could
lead to a pipeline cache hit.

JeGX

QuoteChange log for July 7, 2022 Vulkan 1.3.220 spec update:
  * Update release number to 220 for this update.

Public Issues:

  * Add a note to elink:VkColorSpaceKHR regarding use of
    elink:VK_COLOR_SPACE_PASS_THROUGH_EXT for a linear or non-gamma transfer
    function color space (public merge request 1729).
  * Fix clamp expression for d_{lo} in the
    <<textures-level-of-detail-operation, Level-of-Detail Operation>>
    section (partial fix for public issue 1836).
  * Update <<spirvenv-module-validation-standalone, Standalone SPIR-V
    Validation>> to add explicit valid usage statements for code:Uniform
    objects being read only, and for code:Block decorations (public merge
    request 1879).
  * Add an issue to apiext:VK_KHR_fragment_shader_barycentric for
    interactions with MSAA (public merge request 1881).
  * Fix XML tagging of slink:VkShaderModuleCreateInfo and add an explicit
    valid usage statement so this structure can be validated both as an
    explicit parameter, and as part of the pname:pNext chain of
    slink:VkPipelineShaderStageCreateInfo (public issue 1883, but a broader
    fix in the validation scripts for this case will eventually be
    required).

Internal Issues:

  * Refactor and update descriptor / render pass valid usage statements for
    slink:VkAttachmentDescription, slink:VkAttachmentDescription2,
    slink:VkAttachmentReference, slink:VkAttachmentReference2
    slink:VkRenderPassCreateInfo2, slink:VkSubpassDescription, and
    slink:VkSubpassDescription2 (internal issue 2559).
  * Modify all of the query commands to use synchronization scope language,
    in order to better describe how the commands synchronize with each other
    (internal issue 3089).
  * Add valid usage statements to slink:VkGraphicsPipelineCreateInfo
    slink:VkRayTracingPipelineCreateInfoKHR, and
    slink:VkRayTracingPipelineCreateInfoNV restricting the allowed shader
    stages (internal issue 3132).
  * Remove over-constrained list of data types that can be used together
    with code:PerVertexKHR in the
    <<shaders-interpolation-decorations-pervertexkhr>> section (internal
    issue 3134).
  * Document for flink:vkGetAccelerationStructureBuildSizesKHR that
    slink:VkAccelerationStructureGeometryKHR::pname:flags must be invariant
    between the size query and the build (internal issue 3147).
  * Update slink:VkShaderModuleValidationCacheCreateInfoEXT XML to mark that
    it extends VkPipelineShaderStageCreateInfo (internal merge request
    5210).
  * Fix <<resources-image-format-features, Image Format Features>> section
    discussion of DRM format modifiers, and some related miscellaneous typos
    (internal merge request 5255).
  * Clarify that code:RelaxedPrecision does not need to match in the
    <<interfaces-iointerfaces-matching, Interface Matching>> rules (internal
    issue 3053).

source: https://github.com/KhronosGroup/Vulkan-Docs/commit/29f44f378cdeb1b96b47ce00fb32f49954f2d29d

Stefan

#182
QuoteChange log for July 14, 2022 Vulkan 1.3.221 spec update:
  * Update release number to 221 for this update.
Public Issues:
  * Add dependency of `apiext:VK_EXT_blend_operation_advanced` on
    `apiext:VK_KHR_get_physical_device_properties2`. (public merge request
    1887).
  * Update xrefs to features so the feature name is used as the link text,
    and marked up consistently. Added a section to the style guide on markup
    of feature xrefs (public issue 1889).
Internal Issues:
  * Consolidate and clarify interpolation of fragment inputs in the
    <<primsrast-multisampling, Multisampling>>, <<primsrast-lines-basic,
    Basic Line Segment Rasterization>>, <<primsrast-polygons-basic, Basic
    Polygon Rasterization>>, and <<shaders-interpolation-decorations,
    Interpolation Decorations>> sections (internal issue 3108).
  * Add gitlab CI step to regenerate and test the Rust "`Ash`" Vulkan
    bindings (internal merge request 5216).
  * Note that the result of a <<queries-primitives-generated, Primitives
    Generated Query>> is similar to
    ename:VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, but not
    affected by hardware details (internal issue 3131).
  * Swap direction of aliasing of enums shared by
    `apiext:VK_EXT_filter_cubic` and `apiext:VK_IMG_filter_cubic` to be
    consistent with other enums aliased by promotion, and add a note to the
    registry schema document to help clarify how the `alias` XML attribute
    is used (internal merge request 5276).
  * Update XML SPIR-V capabilities section so that
    code:RayTraversalPrimitiveCullingKHR is also enabled by
    `apiext:VK_KHR_ray_query` (internal issue 3156).
  * Remove reference to adding
    <<features-vulkanMemoryModelAvailabilityVisibilityChains,
    pname:vulkanMemoryModelAvailabilityVisibilityChains>> as a
    <<versions-1.3-new-features, new Vulkan 1.3 feature>>, which did not
    happen (merge request 5286).
New Extensions:
  * `apiext:VK_EXT_pipeline_robustness`


source: https://github.com/KhronosGroup/Vulkan-Docs/commit/9aeaebb24b6faa1f05c7a95b0328beecbe195927


New extension:

- VK_EXT_pipeline_robustness
QuoteVK_EXT_pipeline_robustness allows users to request robustness on a
per-pipeline stage basis.

As <<features-robustBufferAccess, pname:robustBufferAccess>> and other
robustness features may have an adverse effect on performance, this
extension is designed to allow users to request robust behavior only where
it may be needed.

Stefan

#183
QuoteChange log for July 21, 2022 Vulkan 1.3.222 spec update:
  * Update release number to 222 for this update.
Public Issues:
  * Use correct feature in
    ename:VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
    description (public pull request 1892).
  * GitHub CI: Regenerate and build-test Rust Vulkan bindings (Ash crate)
    (public pull request 1894).
Internal Issues:
  * Clarify that flink:vkCmdClearAttachments can only clear layers in the
    current render pass instance. (internal issue 3157).
  * Clarify that access to code:Function and code:Private memory works in
    <<shaders-helper-invocations, Helper Invocations>> (internal issue
    3158).
  * Add CI check for bullet list items not preceded by exactly two spaces
    (internal issue 3162).
  * Remove slink:VkGraphicsPipelineCreateInfo valid usage statement 00726,
    superceded by 06897 (internal merge request 5295).
  * Update CI to cache Rust crates and build intermediates. (internal merge
    request 5297).
  * Use `noauto` `limittype` attribute values for values that are
    identifiers and cannot be compared, such as PCI bus IDs, driver
    versions, UUIDs, descriptions, etc. (internal merge request 5299).
  * Specify that slink:VkGeneratedCommandsInfoNV::pname:preprocessBuffer
    should not be copied for reuse (internal merge request 5301).
  * Update contact and contributor information for some vendor extensions
    (internal merge request 5304).
  * Partial sync with OpenXR scripts (internal merge request 5308).
New Extensions:
  * `apiext:VK_QCOM_image_processing`
  * `apiext:VK_QCOM_tile_properties`




source: https://github.com/KhronosGroup/Vulkan-Docs/commit/8dcc7469b01529600b712596a5a48ec8c710e228

New extensions:

- VK_QCOM_image_processing
QuoteGPUs are commonly used to process images for various applications from 3D
graphics to UI and from composition to compute applications.
Simple scaling and filtering can be done with bilinear filtering, which
comes for free during texture sampling.
However, as screen sizes get larger and more use-cases rely on GPU such as
camera and video post-processing needs, there is increasing demand for GPU
to support higher order filtering and other advanced image processing.

This extension introduces a new set of SPIR-V built-in functions for image
processing.
It exposes the following new imaging operations

  * The `OpImageSampleWeightedQCOM` instruction takes 3 operands: _sampled
    image_, _weight image_, and texture coordinates.
    The instruction computes a weighted average of an MxN region of texels
  in the _sampled image_, using a set of MxN weights in the _weight image_.
  * The `OpImageBoxFilterQCOM` instruction takes 3 operands: _sampled
    image_, _box size_, and texture coordinates.
    Note that _box size_ specifies a floating point width and height in
    texels.
    The instruction computes a weighted average of all texels in the
    _sampled image_ that are covered (either partially or fully) by a box
    with the specified size and centered at the specified texture
    coordinates.
  * The `OpImageBlockMatchSADQCOM` and `OpImageBlockMatchSSDQCOM`
    instructions each takes 5 operands: _target image_, _target
    coordinates_, _reference image_, _reference coordinates_, and _block
    size_.
    Each instruction computes an error metric, that describes whether a
    block of texels in the _target image_ matches a corresponding block of
    texels in the _reference image_.
    The error metric is computed per-component.
    `OpImageBlockMatchSADQCOM` computes "Sum Of Absolute Difference" and
    `OpImageBlockMatchSSDQCOM` computes "Sum of Squared Difference".

Each of the image processing instructions operate only on 2D images.
The instructions do not-support sampling of mipmap, multi-plane,
multi-layer, multi-sampled, or depth/stencil images.
The instructions can be used in any shader stage.

Implementations of this this extension should support these operations
natively at the HW instruction level, offering potential performance gains
as well as ease of development.


- VK_QCOM_tile_properties
QuoteThis extension allows an application to query the tile properties.
This extension supports both renderpasses and dynamic rendering.

Stefan

QuoteChange log for July 28, 2022 Vulkan 1.3.223 spec update:
  * Update release number to 223 for this update.
Public Issues:
  * Clarify external synchronization requirements for
    ename:VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT and
    ename:VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
    elink:VkDescriptorBindingFlagBits and flink:vkUpdateDescriptorSets
    (public issue 1713).
  * Add Vulkan 1.0 valid usage statement for *Subgroup* memory scope to
    <<spirvenv-module-validation-standalone, Standalone SPIR-V Validation>>
    (public merge request 1900).
  * Move "`Hit Kind`" valid usage statement from standalone to runtime
    SPIR-V validation statements (public merge request 1903).
Internal Issues:
  * Add the `videocoding` attribute to XML tag:command tags to specify if
    commands can be issued only inside a video coding scope, only outside,
    or both. Update the validity generator script to add a new column to the
    "`Command Properties`" table reflecting this attribute (internal issue
    2593).
  * Terminology improvements and glossary additions for the provisional
    video extensions (internal issue 2609).
  * Add valid usage statement disallowing Android hardware buffers for
    flink:vkGetDeviceImageMemoryRequirements (internal issue 3107).
  * Document why some video and ray tracing bits are defined for
    elink:VkPipelineStageFlagBits2 but not for
    elink:VkPipelineStageFlagBits, and reserve those bits in `vk.xml`
    (internal issue 3120).
  * Fix minor typos and markup issues in apiext:VK_QCOM_image_processing
    (internal issues 3171, 3172).
  * Add interaction with apiext:VK_QCOM_tile_properties to
    apiext:VK_QCOM_render_pass_transform appendix (internal merge request
    5309).
  * Partial sync with OpenXR scripts (internal merge request 5312).
  * Clarify that flink:vkGetQueryPoolResults may return ename:VK_NOT_READY
    (internal merge request 5313).
  * Fix typos identified by the "`codespell`" tool (internal merge request
    5316).
  * Fix XML `limittype` attributes for pname:*subgroupSize members from
    `"exact"` to `"min,pot"`
    (KhronosGroup/Vulkan-Profiles#226).


 
Source: https://github.com/KhronosGroup/Vulkan-Docs/commit/9ecfc67442754c9e4c4fecf5e61c48483608a074

JeGX

QuoteChange log for August 4, 2022 Vulkan 1.3.224 spec update:
  * Update release number to 224 for this update.

Public Issues:

  * Add issues to the apiext:VK_KHR_dynamic_rendering proposal document
    discussing render area granularity (public issue 1899).

Internal Issues:

  * Add missing video `queues` attribute values to commands (internal issue
    1593).
  * Add valid usage statements to enforce render pass scope restrictions on
    flink:vkBeginQuery and flink:vkEndQuery pairs (internal issue 3119).
  * Remove overly restrictive valid usage statements for Y'CbCr layered
    image creation from slink:VkImageViewCreateInfo (internal issue 3180).
  * Enable `codespell` tool in CI to prevent many typos. Switch to pulling
    the updated `asciidoctor-spec` Docker container image by SHA256 instead
    of name, to work around cache pollution problems in Gitlab and Github
    Actions CI (internal merge request 5318).
  * Add "`Description`" sections to the provisional video extension
    appendices (internal merge request 5310).
  * Fix codec-specific stext:VkVideo{De,En}code*CapabilitiesEXT structure
    chaining in XML to refer to the root slink:VkVideoCapabilitiesKHR
    structure that is extended (internal merge request 5323).
  * Update slink:VkImageViewCreateInfo valid usage statement to not require
    a slink:VkSamplerYcbcrConversionInfo structure for non-sampleable image
    views requiring sampler Y'CbCr conversion (internal merge request 5324).

New Extensions

  * apiext:VK_EXT_attachment_feedback_loop_layout
    (internal merge request 4469).
  * apiext:VK_SEC_amigo_profiling - internal extension used within ANGLE, no
    actual spec language exists yet (internal merge request 5332).

source: https://github.com/KhronosGroup/Vulkan-Docs/commit/5ca346bf39db36ff06e24686f0a815754c5f7c16

New extensions:

- VK_EXT_attachment_feedback_loop_layout
QuoteThis extension adds a new image layout,
ename:VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT, which allows
applications to have an image layout in which they are able to both render
to and sample/fetch from the same subresource of an image in a given render
pass.



- VK_SEC_amigo_profiling
QuoteThis extension is intended to communicate information from layered API
implementations such as ANGLE to internal proprietary system schedulers.
It has no behavioural implications beyond enabling more intelligent
behaviour from the system scheduler.

Application developers should avoid using this extension.
It is documented solely for the benefit of tools and layer developers, who
may need to manipulate pname:pNext chains that include these structures.