VK_EXT_sample_locations(3)

# VK_EXT_sample_locations(3) Manual Page

## Name

VK_EXT_sample_locations - device extension

Loading… please wait.

## Registered Extension Number

144

## Revision

1

## Ratification Status

Not ratified

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2
or
Version 1.1

## Contact

- Daniel Rakos drakos-amd

## 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 VkSampleLocationsInfoEXT structure can be specified for each situation where an explicit or automatic layout transition has to take place. VkSampleLocationsInfoEXT can be chained from VkImageMemoryBarrier structures to provide sample locations for layout transitions performed by vkCmdWaitEvents and vkCmdPipelineBarrier calls, and VkRenderPassSampleLocationsBeginInfoEXT can be chained from VkRenderPassBeginInfo to provide sample locations for layout transitions performed implicitly by a render pass instance.

## New Commands

- vkCmdSetSampleLocationsEXT

- vkGetPhysicalDeviceMultisamplePropertiesEXT

## New Structures

- VkAttachmentSampleLocationsEXT

- VkMultisamplePropertiesEXT

- VkSampleLocationEXT

- VkSubpassSampleLocationsEXT

- Extending VkImageMemoryBarrier, VkImageMemoryBarrier2:

  - VkSampleLocationsInfoEXT

- Extending VkPhysicalDeviceProperties2:

  - VkPhysicalDeviceSampleLocationsPropertiesEXT

- Extending VkPipelineMultisampleStateCreateInfo:

  - VkPipelineSampleLocationsStateCreateInfoEXT

- Extending VkRenderPassBeginInfo:

  - VkRenderPassSampleLocationsBeginInfoEXT

## New Enum Constants

- `VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME`

- `VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION`

- Extending VkDynamicState:

  - `VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT`

- Extending VkImageCreateFlagBits:

  - `VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT`

  - `VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT`

  - `VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT`

  - `VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT`

## Version History

- Revision 1, 2017-08-02 (Daniel Rakos)

  - Internal revisions

## See Also

VkAttachmentSampleLocationsEXT, VkMultisamplePropertiesEXT, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPipelineSampleLocationsStateCreateInfoEXT, VkRenderPassSampleLocationsBeginInfoEXT, VkSampleLocationEXT, VkSampleLocationsInfoEXT, VkSubpassSampleLocationsEXT, vkCmdSetSampleLocationsEXT, vkGetPhysicalDeviceMultisamplePropertiesEXT

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0