// Copyright 2017-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0

include::{generated}/meta/{refprefix}VK_EXT_sample_locations.txt[]

=== Other Extension Metadata

*Last Modified Date*::
    2017-08-02
*Contributors*::
  - Mais Alnasser, AMD
  - Matthaeus G. Chajdas, AMD
  - Maciej Jesionowski, AMD
  - Daniel Rakos, AMD
  - Slawomir Grajewski, Intel
  - Jeff Bolz, NVIDIA
  - Bill Licea-Kane, Qualcomm

=== Description

This extension allows an application to modify the locations of samples
within a pixel used in rasterization.
Additionally, it allows applications to specify different sample locations
for each pixel in a group of adjacent pixels, which can: increase
antialiasing quality (particularly if a custom resolve shader is used that
takes advantage of these different locations).

It is common for implementations to optimize the storage of depth values by
storing values that can: be used to reconstruct depth at each sample
location, rather than storing separate depth values for each sample.
For example, the depth values from a single triangle may: be represented
using plane equations.
When the depth value for a sample is needed, it is automatically evaluated
at the sample location.
Modifying the sample locations causes the reconstruction to no longer
evaluate the same depth values as when the samples were originally
generated, thus the depth aspect of a depth/stencil attachment must: be
cleared before rendering to it using different sample locations.

Some implementations may: need to evaluate depth image values while
performing image layout transitions.
To accommodate this, instances of the slink:VkSampleLocationsInfoEXT
structure can: be specified for each situation where an explicit or
automatic layout transition has to take place.
slink:VkSampleLocationsInfoEXT can: be chained from
slink:VkImageMemoryBarrier structures to provide sample locations for layout
transitions performed by flink:vkCmdWaitEvents and
flink:vkCmdPipelineBarrier calls, and
slink:VkRenderPassSampleLocationsBeginInfoEXT can: be chained from
slink:VkRenderPassBeginInfo to provide sample locations for layout
transitions performed implicitly by a render pass instance.

include::{generated}/interfaces/VK_EXT_sample_locations.txt[]

=== Version History

 * Revision 1, 2017-08-02 (Daniel Rakos)
   - Internal revisions
