2019-10-06 12:42:12 -07:00
|
|
|
include::{generated}/meta/VK_NV_shading_rate_image.txt[]
|
2018-09-15 18:35:16 -07:00
|
|
|
|
|
|
|
*Last Modified Date*::
|
Change log for August 25, 2019 Vulkan 1.1.121 spec update:
* Update release number to 121.
Github Issues:
* Add missing `structextends` attribute in `vk.xml` for
slink:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR (public
issue 1018).
* Change attributes of flink:vkCmdCopyAccelerationStructureNV,
flink:vkCmdWriteAccelerationStructuresPropertiesNV,
flink:vkCmdBuildAccelerationStructureNV, and flink:vkCmdTraceRaysNV to
require that these commands execute outside renderpasses (public issue
1021).
* Add an issue to the `<<VK_EXT_buffer_device_address>>` appendix
discussing the introduction of new names and aliasing by equivalent old
names (public pull request 1024).
Internal Issues:
* Protect the `VK_KHR_sampler_mirror_clamp_to_edge` extension with
asciidoctor conditionals, and remove it from the core-only specification
builds, where it had previously been force-included in the Makefile. It
is now treated like any other extension (internal issue 1776).
* Edit some asciidoctor anchor names starting with `features-features-` to
just start with `features-`, since the old chapters was split into 3
pieces. There are still some mild naming inconsistencies with anchors
which may be addressed in the future (internal issue 1792).
* Add `KHR` alias for the non-suffixed extension token
ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, for compatibility
with naming rules for extensions (internal issue 1796).
* Clarify requirements for external memory in NOTEs for
sname:VkExternalMemoryBufferCreateInfo, and valid usage statements for
flink:vkBindBufferMemory, slink:VkBindBufferMemoryInfo,
flink:vkBindImageMemory, and slink:VkBindImageMemoryInfo (internal merge
request 3301).
* Make extension version numbers in `vk.xml` and extension appendices
consistent. In a few cases, we could not recover history at this
granularity, and left the summary of a version's change undefined
(internal merge request 3323).
* Fix invocation of `CodeInlineMacro` in the Ruby extension backing the
`code:` macro, which was delegating to the wrong base class (internal
merge request 3331).
* Modify `reg.py` to do a better job of recognizing equivalent <enum>
definitions.
* Add a `sortorder` attribute to XML feature and extension tags.
New Extensions
* `<<VK_AMD_device_coherent_memory>>`
2019-08-25 03:57:09 -07:00
|
|
|
2019-07-18
|
2018-09-15 18:35:16 -07:00
|
|
|
*Contributors*::
|
|
|
|
- Pat Brown, NVIDIA
|
|
|
|
- Carsten Rohde, NVIDIA
|
|
|
|
- Jeff Bolz, NVIDIA
|
|
|
|
- Daniel Koch, NVIDIA
|
|
|
|
- Mathias Schott, NVIDIA
|
|
|
|
- Matthew Netsch, Qualcomm Technologies, Inc.
|
|
|
|
|
|
|
|
This extension allows applications to use a variable shading rate when
|
|
|
|
processing fragments of rasterized primitives.
|
|
|
|
By default, Vulkan will spawn one fragment shader for each pixel covered by
|
|
|
|
a primitive.
|
|
|
|
In this extension, applications can bind a _shading rate image_ that can be
|
|
|
|
used to vary the number of fragment shader invocations across the
|
|
|
|
framebuffer.
|
|
|
|
Some portions of the screen may be configured to spawn up to 16 fragment
|
|
|
|
shaders for each pixel, while other portions may use a single fragment
|
|
|
|
shader invocation for a 4x4 block of pixels.
|
|
|
|
This can be useful for use cases like eye tracking, where the portion of the
|
|
|
|
framebuffer that the user is looking at directly can be processed at high
|
|
|
|
frequency, while distant corners of the image can be processed at lower
|
|
|
|
frequency.
|
|
|
|
Each texel in the shading rate image represents a fixed-size rectangle in
|
|
|
|
the framebuffer, covering 16x16 pixels in the initial implementation of this
|
|
|
|
extension.
|
|
|
|
When rasterizing a primitive covering one of these rectangles, the Vulkan
|
|
|
|
implementation reads a texel in the bound shading rate image and looks up
|
|
|
|
the fetched value in a palette to determine a base shading rate.
|
|
|
|
|
|
|
|
In addition to the API support controlling rasterization, this extension
|
Change log for August 17, 2019 Vulkan 1.1.120 spec update:
* Update release number to 120.
Github Issues:
* Add slink:VkAccelerationStructureTypeNV explicitly to extension XML for
`<<VK_NV_ray_tracing>>` (public issue 848).
* Add missing valid usage statements for feature flags in
slink:VkCommandBufferInheritanceInfo (public pull request 1017).
Internal Issues:
* Clarify behavior of non-premultiplied destination colors for
`<<VK_EXT_blend_operation_advanced>>` prior to the definition of
slink:VkBlendOverlapEXT (internal issue 1766).
* Fix the confusing phrasing "`no other queue must: be (doing something)`"
for flink:vkQueuePresentKHR, flink:vkQueueSubmit, and
flink:vkQueueBindSparse (internal issue 1774).
* Add `<<VK_EXT_validation_features>>` flag to enable best practices
checks, which will soon be available in the validation layer (internal
issue 1779).
* Specify allowed characters for VUID tag name components in the style
guide (internal issue 1788).
* Update links to SPIR-V extension specifications, and parameterize their
markup in case the URLs change in the future (internal issue 1797).
* Fix an off-by-one error in the valid usage statement for
slink:VkPipelineExecutableInfoKHR (internal merge request 3303).
* Clean up markup indentation not matching the style guide (internal merge
request 3314).
* Minor script updates to allow refpage aliases, generate a dynamic TOC
for refpages, generate Apache rewrite rules for aliases, open external
links from refpages in a new window, and synchronize with the OpenCL
scripts. This will shortly enable a paned navigation setup for refpages,
similar to the OpenCL 2.2 refpages (internal merge request 3322).
* Script updates to add tests to the checker, refactor and reformat code,
generate better text for some valid usage statements, use more Pythonic
idioms, and synchronize with the OpenXR scripts (internal merge request
3239).
* Script updates and minor fixes in spec language to not raise checker
errors for refpage markup of pages not existing in the API, such as
VKAPI_NO_STDINT_H. Remove corresponding suppression of some
check_spec_links.py tests from .gitlab-ci.yml and 'allchecks' target
(internal merge request 3315).
2019-08-17 15:33:21 -07:00
|
|
|
also adds Vulkan support for the
|
|
|
|
{spirv}/NV/SPV_NV_shading_rate.html[`SPV_NV_shading_rate`] extension to
|
|
|
|
SPIR-V.
|
2018-09-15 18:35:16 -07:00
|
|
|
That extension provides two fragment shader variable decorations that allow
|
|
|
|
fragment shaders to determine the shading rate used for processing the
|
|
|
|
fragment:
|
|
|
|
|
Change log for November 25, 2018 Vulkan 1.1.94 spec update:
* Update release number to 94.
Public Issues:
* Use the terms "`texel block`" and "`texel block size`" instead of "`data
element`" and "`element size`", and define "`element`" as an array slot.
In addition to the terminology changes, retitled the <<texel-block-size,
Representation and Texel Block Size>> section and added texel block size
/ no. of texels/block information to the
<<features-formats-compatibility, Compatible Formats>> table. There is
some additional work underway to make sure the compatibility language
makes sense for all of uncompressed, compressed, and multiplanar formats
(public issue 763).
* Cleanup `VK_NV_ray_tracing` language (public issues 858, 859).
Internal Issues:
* Specify in <<shaders-invocationgroups, Invocation and Derivative
Groups>> and <<textures-output-format-conversion, Texel Output Format
Conversion>> that derivative groups are quads when code:SubgroupSize >=
4 (internal issue 1390).
* Make the type of slink:VkDescriptorUpdateTemplateCreateInfo::pNext
`const` following pattern for the other stext:Vk*CreateInfo structures
(internal issue 1459).
* Specify that flink:vkCmdClearAttachments executes as a drawing command,
rather than a transfer command (internal issue 1463).
* Update `VK_NV_ray_tracing` to use code:InstanceId instead of
code:InstanceIndex.
New Extensions:
* `VK_KHR_swapchain_mutable_format`
* `VK_EXT_fragment_density_map`
2018-11-25 23:27:30 -08:00
|
|
|
* code:FragmentSizeNV, which indicates the width and height of the set of
|
|
|
|
pixels processed by the fragment shader.
|
|
|
|
* code:InvocationsPerPixel, which indicates the maximum number of fragment
|
|
|
|
shader invocations that could be spawned for the pixel(s) covered by the
|
|
|
|
fragment.
|
2018-09-15 18:35:16 -07:00
|
|
|
|
|
|
|
When using SPIR-V in conjunction with the OpenGL Shading Language (GLSL),
|
|
|
|
the fragment shader capabilities are provided by the
|
Change log for January 13, 2019 Vulkan 1.1.98 spec update:
* Update release number to 98.
Public Issues:
* Fix missing markup in flink:vkDestroyPipelineLayout valid usage
statement (pull request 882).
* Add missing contributors for `<<VK_EXT_buffer_device_address>>` (public
pull request 891).
Internal Issues:
* Detect nested bullet points in valid usage blocks and warn about them
during VUID assignment (internal issue 1382).
* Update the style guide to document the process for reserving new bits in
bitmask types (internal issue 1411).
* Clarify for slink:VkApplicationInfo::pname:apiVersion and in the
<<fundamentals-validusage-versions, Valid Usage for Newer Core
Versions>> section when it is valid for an application to use a certain
version of Vulkan API functionality (for an instance and for a
device/physical device); and when the validation layers must generate an
error (internal issue 1412).
* Add optional <<memory-model-availability-visibility, transitive
availability/visibility operations to the memory model, including a new
pname:vulkanMemoryModelAvailabilityVisibilityChains feature for
slink:VkPhysicalDeviceVulkanMemoryModelFeaturesKHR (internal issue
1460).
* Add the code:StorageBuffer storage class to those in the
<<interfaces-resources-descset, Descriptor Set Interface>> (internal
issue 1480).
* Add missing `returnedonly` tags for a number of returned extension
structures that can be passed in pname:pNext chains (internal issue
1515).
* Clean up and rearrange some spec language for
slink:VkRenderPassCreateInfo and slink:VkAttachmentReference.txt
(internal issue 1522).
* Correctly round the code:OpVectorTimesScalar and
code:OpMatrixTimesScalar SPIR-V operations in the <<Precision of core
SPIR-V Instructions>> table (internal merge request 2996).
* Work around cases in flink:vkCmdBeginTransformFeedbackEXT,
flink:vkCmdEndTransformFeedbackEXT, and
slink:VkPipelineCoverageModulationStateCreateInfoNV where an array
parameter is `optional` but the length is not in `vk.xml`. This is an
interim fix using `noautovalidity` + handcoded VU replacing those that
should be autogenerated (internal issue 2944 and
https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/480).
* Remove redundant capability validation of the code:float16 and code:int8
SPIR-V capabilities from the <<spirvenv-capabilities, Capabilities>>
section, since they are already covered in the preceding table.
* Update check_spec_links script, including validation for reference page
open blocks. Fix errors identified by the script.
2019-01-13 05:53:27 -08:00
|
|
|
`GL_NV_shading_rate_image` language extension and correspond to the built-in
|
2018-09-15 18:35:16 -07:00
|
|
|
variables code:gl_FragmentSizeNV and code:gl_InvocationsPerPixelNV,
|
|
|
|
respectively.
|
|
|
|
|
|
|
|
=== New Object Types
|
|
|
|
|
|
|
|
None.
|
|
|
|
|
|
|
|
=== New Enum Constants
|
|
|
|
|
|
|
|
* Extending elink:VkStructureType:
|
|
|
|
** ename:VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
|
|
|
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
|
|
|
|
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
|
Change log for November 4, 2018 Vulkan 1.1.91 spec update:
* Update release number to 91.
Public Issues:
* Update Ubuntu subsystem build instructions in `BUILD.adoc` (public pull
request 624).
* Delete the `VK_KHR_mir_surface` extension from the Specification and
XML, due to EOL of the only driver known to have supported it, and
near-EOL of Mir itself (public issue 814).
* Fix options for some figures that were using old ones (public pull
request 841).
* Fix various accidentally repeated words (public pull request 843).
* Use `time.process_time()`, introduced in Python 3.3, in the scripts
instead of `time.clock()`, which will be removed in Python 3.8 (public
pull request 844).
Internal Issues:
* Update valid usage statements for
`VK_ANDROID_external_memory_android_hardware_buffer` in
slink:VkMemoryAllocateInfo,
slink:VkImportAndroidHardwareBufferInfoANDROID, and
flink:vkGetAndroidHardwareBufferPropertiesANDROID to actually be
verifiable (internal issue 1419).
* Update valid usage statements for
`VK_ANDROID_external_memory_android_hardware_buffer` in
slink:VkMemoryAllocateInfo, slink:VkImageCreateInfo, and
slink:VkImageViewCreateInfo to move valid usage statements in
doubly-nested bullet points up one level, accomodating limitations of
the valid usage extraction script that creates `validusage.json`
(internal issue 1434).
* Fix typo etext:VK_ACCESS_SHADING_RATE_IMAGE_BIT_NV to the correct
ename:VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV.
* Add missing etext:VK_STRUCTURE_TYPE_* tokens to appendices for
extensions missing them.
New Extensions:
* `VK_AMD_memory_overallocation_behavior`
* `VK_NV_ray_tracing`, replacing `VK_NVX_raytracing`
2018-11-03 23:50:13 -07:00
|
|
|
** ename:VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
|
2018-09-15 18:35:16 -07:00
|
|
|
|
|
|
|
* Extending elink:VkImageLayout:
|
|
|
|
** ename:VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
|
|
|
|
|
|
|
|
* Extending elink:VkDynamicState:
|
|
|
|
** ename:VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
|
2019-07-20 01:49:16 -07:00
|
|
|
** ename:VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV
|
2018-09-15 18:35:16 -07:00
|
|
|
|
|
|
|
* Extending elink:VkAccessFlagBits:
|
|
|
|
** ename:VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV
|
|
|
|
|
|
|
|
* Extending elink:VkImageUsageFlagBits:
|
|
|
|
** ename:VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
|
|
|
|
|
|
|
|
* Extending elink:VkPipelineStageFlagBits
|
|
|
|
** ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
|
|
|
|
|
|
|
|
=== New Enums
|
|
|
|
|
|
|
|
* elink:VkShadingRatePaletteEntryNV, containing the following constants:
|
|
|
|
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV
|
|
|
|
** ename:VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV
|
2019-08-11 04:54:43 -07:00
|
|
|
|
2019-07-20 01:49:16 -07:00
|
|
|
* elink:VkCoarseSampleOrderTypeNV, containing the following constants:
|
2019-08-11 04:54:43 -07:00
|
|
|
|
2019-07-20 01:49:16 -07:00
|
|
|
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV
|
|
|
|
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV
|
|
|
|
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV
|
|
|
|
** ename:VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV
|
2018-09-15 18:35:16 -07:00
|
|
|
|
|
|
|
=== New Structures
|
|
|
|
|
|
|
|
* slink:VkShadingRatePaletteNV
|
|
|
|
* slink:VkPipelineViewportShadingRateImageStateCreateInfoNV
|
|
|
|
* slink:VkPhysicalDeviceShadingRateImageFeaturesNV
|
|
|
|
* slink:VkPhysicalDeviceShadingRateImagePropertiesNV
|
2019-07-20 01:49:16 -07:00
|
|
|
* slink:VkCoarseSampleLocationNV
|
|
|
|
* slink:VkCoarseSampleOrderCustomNV
|
|
|
|
* slink:VkPipelineViewportCoarseSampleOrderStateCreateInfoNV
|
|
|
|
|
2018-09-15 18:35:16 -07:00
|
|
|
|
|
|
|
=== New Functions
|
|
|
|
|
|
|
|
* flink:vkCmdBindShadingRateImageNV
|
|
|
|
* flink:vkCmdSetViewportShadingRatePaletteNV
|
2019-07-20 01:49:16 -07:00
|
|
|
* flink:vkCmdSetCoarseSampleOrderNV
|
2018-09-15 18:35:16 -07:00
|
|
|
|
|
|
|
=== Issues
|
|
|
|
|
Change log for September 8, 2019 Vulkan 1.1.122 spec update:
* Update release number to 122.
Internal Issues:
* Add style guide language on not using standalone `+` signs (internal
issue 736); not using leading whitespace for markup (internal issue
747); and on keeping descriptions of a single API in a contiguous block
of markup (internal issue 949), and apply them to the specification.
* Add a glossary definition of "`constant integral expression`", pointing
to the SPIR-V "`constant instruction`" definition (internal issue 1225).
* Many minor edits to improve writing style consistency and capture
additional style guidelines (internal issue 1553).
* Clarify that <<fragops-depth-write, depth writes are not performed>> if
there is no depth framebuffer attachment (internal issue 1771).
* Allow implementations to use rectangular line style of interpolation for
<<primsrast-lines-bresenham, wide Bresenham lines>>, though replicating
attributes is still preferred. Clarify that code:FragCoord is not
replicated (internal issue 1772).
* Resolve a contradiction in valid usage statements for
slink:VkImageCreateInfo and slink:VkImageStencilUsageCreateInfoEXT
(internal issue 1773).
* Add style guide discussion of markup for indented equations, and use
markup workaround for asciidoctor 2 compatibility (internal issue 1793).
* Deprecate the `<<VK_EXT_validation_flags>>` extension in `vk.xml` and
the extension appendix (internal issue 1801).
* Add a new checker script `scripts/xml_consistency.py`. This is not
currently run as part of internal CI (internal merge request 3285).
* Correct "`an`" -> "`a`" prepositions where needed (internal merge
request 3334).
* Clarify that the <<features-uniformBufferStandardLayout,
pname:uniformBufferStandardLayout>> feature is only required when the
extension defining it is supported (internal merge request 3341).
* Bring scripts into closer sync with OpenXR, mainly through conversion of
comments to docstrings where appropriate, and add gen-scripts-docs.sh
(internal merge request 3324).
* Correct pname:maxDrawMeshTasksCount to 2^16^-1 in the <<limits-required,
Required Limits>> table (internal merge requests 3361).
New Extensions
* `<<VK_IMG_format_pvrtc>>` (public issue 512).
2019-09-08 20:41:02 -07:00
|
|
|
(1) When using shading rates specifying "`coarse`" fragments covering
|
2018-09-15 18:35:16 -07:00
|
|
|
multiple pixels, we will generate a combined coverage mask that combines
|
|
|
|
the coverage masks of all pixels covered by the fragment.
|
|
|
|
By default, these masks are combined in an implementation-dependent
|
|
|
|
order.
|
|
|
|
Should we provide a mechanism allowing applications to query or specify
|
|
|
|
an exact order?
|
|
|
|
|
|
|
|
*RESOLVED*: Yes, this feature is useful for cases where most of the fragment
|
|
|
|
shader can be evaluated once for an entire coarse fragment, but where some
|
|
|
|
per-pixel computations are also required.
|
|
|
|
For example, a per-pixel alpha test may want to kill all the samples for
|
|
|
|
some pixels in a coarse fragment.
|
|
|
|
This sort of test can be implemented using an output sample mask, but such a
|
|
|
|
shader would need to know which bit in the mask corresponds to each sample
|
|
|
|
in the coarse fragment.
|
|
|
|
We are including a mechanism to allow aplications to specify the orders of
|
|
|
|
coverage samples for each shading rate and sample count, either as static
|
|
|
|
pipeline state or dynamically via a command buffer.
|
|
|
|
This portion of the extension has its own feature bit.
|
|
|
|
|
|
|
|
We will not be providing a query to determine the implementation-dependent
|
|
|
|
default ordering.
|
|
|
|
The thinking here is that if an application cares enough about the coarse
|
|
|
|
fragment sample ordering to perform such a query, it could instead just set
|
|
|
|
its own order, also using custom per-pixel sample locations if required.
|
|
|
|
|
|
|
|
(2) For the pipeline stage
|
|
|
|
ename:VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV, should we specify a
|
|
|
|
precise location in the pipeline the shading rate image is accessed
|
|
|
|
(after geometry shading, but before the early fragment tests) or leave
|
|
|
|
it under-specified in case there are other implementations that access
|
|
|
|
the image in a different pipeline location?
|
|
|
|
|
|
|
|
*RESOLVED* We are specifying the pipeline stage to be between the final
|
|
|
|
stage used for vertex processing
|
|
|
|
(ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT) and before the first stage
|
|
|
|
used for fragment processing
|
|
|
|
(ename:VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT), which seems to be the
|
|
|
|
natural place to access the shading rate image.
|
|
|
|
|
|
|
|
(3) How do centroid-sampled variables work with fragments larger than one
|
|
|
|
pixel?
|
|
|
|
|
|
|
|
*RESOLVED* For single-pixel fragments, fragment shader inputs decorated with
|
Change log for November 12, 2018 Vulkan 1.1.92 spec update:
* Update release number to 92.
Public Issues:
* Move and modify valid usage statements dealing with pname:aspectMask in
flink:vkCmdClearColorImage, flink:vkCmdClearDepthStencilImage, and
slink:VkClearAttachment, so they are in places where all necessary
information is available (public issue 529).
* Fix math markup in <<textures-texel-anisotropic-filtering, Texel
Anisotropic Filtering>> (public pull request 840).
* Fix misspellings (public pull request 845).
Internal Issues:
* Add installation instructions and a Makefile "`chunked`" target for
chunked HTML generation (internal issue 1352).
* Fix pipeline mesh diagram style; also fix a minor bug in the classic
pipeline diagram where vertex/index buffers wrongly fed into the vertex
shader (internal issue 1436).
* Make asciidoctor ERROR output raise an error, and don't suppress
executed command output from CI make invocation (internal issue 1454).
* Minor typo fixes and clarifications for `VK_NV_raytracing`.
* Cleanup extension-specific properties
** Remove duplicated documentation for pname:maxDiscardRectangles,
pname:pointClippingBehavior, and pname:maxVertexAttribDivisor (they
shouldn't be documented with the other members of
slink:VkPhysicalDeviceLimits at all).
** Remove duplicate anchor for pname:maxVertexAttribDivisor
** Consistently document stext:VkPhysicalDevice<Extension>PropertiesKHR
*** Always document pname:sType/pname:pNext (was inconsistent before)
*** Always mention chaining to slink:VkPhysicalDeviceProperties2 (and not
as slink:VkPhysicalDeviceProperties2KHR)
*** Always include Valid Usage statements last
* Update Makefile 'checklinks' target and associated scripts, and fix
markup problems identified by checkLinks.py, so that we can rely on the
checklinks script as part of Gitlab CI.
2018-11-12 04:40:40 -08:00
|
|
|
code:Centroid are sampled at an implementation-dependent location in the
|
2018-09-15 18:35:16 -07:00
|
|
|
intersection of the area of the primitive being rasterized and the area of
|
|
|
|
the pixel that corresponds to the fragment.
|
|
|
|
With multi-pixel fragments, we follow a similar pattern, using the
|
|
|
|
intersection of the primitive and the *set* of pixels corresponding to the
|
|
|
|
fragment.
|
|
|
|
|
2018-10-09 01:12:09 +02:00
|
|
|
One important thing to keep in mind when using such "`coarse`" shading rates
|
2018-09-15 18:35:16 -07:00
|
|
|
is that fragment attributes are sampled at the center of the fragment by
|
|
|
|
default, regardless of the set of pixels/samples covered by the fragment.
|
|
|
|
For fragments with a size of 4x4 pixels, this center location will be more
|
|
|
|
than two pixels (1.5 * sqrt(2)) away from the center of the pixels at the
|
|
|
|
corners of the fragment.
|
|
|
|
When rendering a primitive that covers only a small part of a coarse
|
|
|
|
fragment, sampling a color outside the primitive can produce overly bright
|
|
|
|
or dark color values if the color values have a large gradient.
|
|
|
|
To deal with this, an application can use centroid sampling on attributes
|
2018-10-09 01:12:09 +02:00
|
|
|
where "`extrapolation`" artifacts can lead to overly bright or dark pixels.
|
2018-09-15 18:35:16 -07:00
|
|
|
Note that this same problem also exists for multisampling with single-pixel
|
|
|
|
fragments, but is less severe because it only affects certain samples of a
|
|
|
|
pixel and such bright/dark samples may be averaged with other samples that
|
|
|
|
don't have a similar problem.
|
|
|
|
|
|
|
|
=== Version History
|
|
|
|
|
Change log for August 25, 2019 Vulkan 1.1.121 spec update:
* Update release number to 121.
Github Issues:
* Add missing `structextends` attribute in `vk.xml` for
slink:VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR (public
issue 1018).
* Change attributes of flink:vkCmdCopyAccelerationStructureNV,
flink:vkCmdWriteAccelerationStructuresPropertiesNV,
flink:vkCmdBuildAccelerationStructureNV, and flink:vkCmdTraceRaysNV to
require that these commands execute outside renderpasses (public issue
1021).
* Add an issue to the `<<VK_EXT_buffer_device_address>>` appendix
discussing the introduction of new names and aliasing by equivalent old
names (public pull request 1024).
Internal Issues:
* Protect the `VK_KHR_sampler_mirror_clamp_to_edge` extension with
asciidoctor conditionals, and remove it from the core-only specification
builds, where it had previously been force-included in the Makefile. It
is now treated like any other extension (internal issue 1776).
* Edit some asciidoctor anchor names starting with `features-features-` to
just start with `features-`, since the old chapters was split into 3
pieces. There are still some mild naming inconsistencies with anchors
which may be addressed in the future (internal issue 1792).
* Add `KHR` alias for the non-suffixed extension token
ename:VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, for compatibility
with naming rules for extensions (internal issue 1796).
* Clarify requirements for external memory in NOTEs for
sname:VkExternalMemoryBufferCreateInfo, and valid usage statements for
flink:vkBindBufferMemory, slink:VkBindBufferMemoryInfo,
flink:vkBindImageMemory, and slink:VkBindImageMemoryInfo (internal merge
request 3301).
* Make extension version numbers in `vk.xml` and extension appendices
consistent. In a few cases, we could not recover history at this
granularity, and left the summary of a version's change undefined
(internal merge request 3323).
* Fix invocation of `CodeInlineMacro` in the Ruby extension backing the
`code:` macro, which was delegating to the wrong base class (internal
merge request 3331).
* Modify `reg.py` to do a better job of recognizing equivalent <enum>
definitions.
* Add a `sortorder` attribute to XML feature and extension tags.
New Extensions
* `<<VK_AMD_device_coherent_memory>>`
2019-08-25 03:57:09 -07:00
|
|
|
* Revision 3, 2019-07-18 (Mathias Schott)
|
|
|
|
- Fully list extension interfaces in this appendix.
|
2018-09-15 18:35:16 -07:00
|
|
|
* Revision 2, 2018-09-13 (Pat Brown)
|
|
|
|
- Miscellaneous edits preparing the specification for publication.
|
|
|
|
* Revision 1, 2018-08-08 (Pat Brown)
|
|
|
|
- Internal revisions
|