vulkan-3.24.4: Bindings to the Vulkan graphics API.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_sample_locations

Description

Name

VK_EXT_sample_locations - device extension

VK_EXT_sample_locations

Name String
VK_EXT_sample_locations
Extension Type
Device extension
Registered Extension Number
144
Revision
1
Extension and Version Dependencies
  • Requires support for Vulkan 1.0
  • Requires VK_KHR_get_physical_device_properties2 to be enabled for any device-level functionality
Contact

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 SampleLocationsInfoEXT structure can be specified for each situation where an explicit or automatic layout transition has to take place. SampleLocationsInfoEXT can be chained from ImageMemoryBarrier structures to provide sample locations for layout transitions performed by cmdWaitEvents and cmdPipelineBarrier calls, and RenderPassSampleLocationsBeginInfoEXT can be chained from RenderPassBeginInfo to provide sample locations for layout transitions performed implicitly by a render pass instance.

New Commands

New Structures

New Enum Constants

Version History

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

    • Internal revisions

See Also

AttachmentSampleLocationsEXT, MultisamplePropertiesEXT, PhysicalDeviceSampleLocationsPropertiesEXT, PipelineSampleLocationsStateCreateInfoEXT, RenderPassSampleLocationsBeginInfoEXT, SampleLocationEXT, SampleLocationsInfoEXT, SubpassSampleLocationsEXT, cmdSetSampleLocationsEXT, getPhysicalDeviceMultisamplePropertiesEXT

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.

Synopsis

Documentation

cmdSetSampleLocationsEXT Source #

Arguments

:: forall io. MonadIO io 
=> CommandBuffer

commandBuffer is the command buffer into which the command will be recorded.

-> SampleLocationsInfoEXT

pSampleLocationsInfo is the sample locations state to set.

-> io () 

vkCmdSetSampleLocationsEXT - Set sample locations dynamically for a command buffer

Description

This command sets the custom sample locations for subsequent drawing commands when the graphics pipeline is created with DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT set in PipelineDynamicStateCreateInfo::pDynamicStates, and when the PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable property of the bound graphics pipeline is TRUE. Otherwise, this state is specified by the PipelineSampleLocationsStateCreateInfoEXT::sampleLocationsInfo values used to create the currently active pipeline.

Valid Usage

  • If PhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations is FALSE then the current render pass must have been begun by specifying a RenderPassSampleLocationsBeginInfoEXT structure whose pPostSubpassSampleLocations member contains an element with a subpassIndex matching the current subpass index and the sampleLocationsInfo member of that element must match the sample locations state pointed to by pSampleLocationsInfo

Valid Usage (Implicit)

  • pSampleLocationsInfo must be a valid pointer to a valid SampleLocationsInfoEXT structure
  • commandBuffer must be in the recording state
  • The CommandPool that commandBuffer was allocated from must support graphics operations
  • This command must only be called outside of a video coding scope

Host Synchronization

  • Host access to commandBuffer must be externally synchronized
  • Host access to the CommandPool that commandBuffer was allocated from must be externally synchronized

Command Properties

'

Command Buffer LevelsRender Pass ScopeVideo Coding ScopeSupported Queue TypesCommand Type
Primary SecondaryBoth Outside Graphics State

See Also

VK_EXT_sample_locations, CommandBuffer, SampleLocationsInfoEXT

getPhysicalDeviceMultisamplePropertiesEXT Source #

Arguments

:: forall io. MonadIO io 
=> PhysicalDevice

physicalDevice is the physical device from which to query the additional multisampling capabilities.

physicalDevice must be a valid PhysicalDevice handle

-> ("samples" ::: SampleCountFlagBits)

samples is a SampleCountFlagBits value specifying the sample count to query capabilities for.

samples must be a valid SampleCountFlagBits value

-> io MultisamplePropertiesEXT 

vkGetPhysicalDeviceMultisamplePropertiesEXT - Report sample count specific multisampling capabilities of a physical device

Valid Usage (Implicit)

See Also

VK_EXT_sample_locations, MultisamplePropertiesEXT, PhysicalDevice, SampleCountFlagBits

data SampleLocationEXT Source #

VkSampleLocationEXT - Structure specifying the coordinates of a sample location

Description

The domain space of the sample location coordinates has an upper-left origin within the pixel in framebuffer space.

The values specified in a SampleLocationEXT structure are always clamped to the implementation-dependent sample location coordinate range [sampleLocationCoordinateRange[0],sampleLocationCoordinateRange[1]] that can be queried using PhysicalDeviceSampleLocationsPropertiesEXT.

See Also

VK_EXT_sample_locations, SampleLocationsInfoEXT

Constructors

SampleLocationEXT 

Fields

  • x :: Float

    x is the horizontal coordinate of the sample’s location.

  • y :: Float

    y is the vertical coordinate of the sample’s location.

Instances

Instances details
Storable SampleLocationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

Show SampleLocationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

Eq SampleLocationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

FromCStruct SampleLocationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

ToCStruct SampleLocationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

Zero SampleLocationEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

data SampleLocationsInfoEXT Source #

VkSampleLocationsInfoEXT - Structure specifying a set of sample locations

Description

This structure can be used either to specify the sample locations to be used for rendering or to specify the set of sample locations an image subresource has been last rendered with for the purposes of layout transitions of depth/stencil images created with IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT.

The sample locations in pSampleLocations specify sampleLocationsPerPixel number of sample locations for each pixel in the grid of the size specified in sampleLocationGridSize. The sample location for sample i at the pixel grid location (x,y) is taken from pSampleLocations[(x + y × sampleLocationGridSize.width) × sampleLocationsPerPixel + i].

If the render pass has a fragment density map, the implementation will choose the sample locations for the fragment and the contents of pSampleLocations may be ignored.

Valid Usage

  • sampleLocationsCount must equal sampleLocationsPerPixel × sampleLocationGridSize.width × sampleLocationGridSize.height

Valid Usage (Implicit)

  • If sampleLocationsCount is not 0, pSampleLocations must be a valid pointer to an array of sampleLocationsCount SampleLocationEXT structures

See Also

VK_EXT_sample_locations, AttachmentSampleLocationsEXT, Extent2D, PipelineSampleLocationsStateCreateInfoEXT, SampleCountFlagBits, SampleLocationEXT, StructureType, SubpassSampleLocationsEXT, cmdSetSampleLocationsEXT

Constructors

SampleLocationsInfoEXT 

Fields

data AttachmentSampleLocationsEXT Source #

VkAttachmentSampleLocationsEXT - Structure specifying the sample locations state to use in the initial layout transition of attachments

Description

If the image referenced by the framebuffer attachment at index attachmentIndex was not created with IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT then the values specified in sampleLocationsInfo are ignored.

Valid Usage (Implicit)

See Also

VK_EXT_sample_locations, RenderPassSampleLocationsBeginInfoEXT, SampleLocationsInfoEXT

Constructors

AttachmentSampleLocationsEXT 

Fields

  • attachmentIndex :: Word32

    attachmentIndex is the index of the attachment for which the sample locations state is provided.

    attachmentIndex must be less than the attachmentCount specified in RenderPassCreateInfo the render pass specified by RenderPassBeginInfo::renderPass was created with

  • sampleLocationsInfo :: SampleLocationsInfoEXT

    sampleLocationsInfo is the sample locations state to use for the layout transition of the given attachment from the initial layout of the attachment to the image layout specified for the attachment in the first subpass using it.

    sampleLocationsInfo must be a valid SampleLocationsInfoEXT structure

data SubpassSampleLocationsEXT Source #

VkSubpassSampleLocationsEXT - Structure specifying the sample locations state to use for layout transitions of attachments performed after a given subpass

Description

If the image referenced by the depth/stencil attachment used in the subpass identified by subpassIndex was not created with IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT or if the subpass does not use a depth/stencil attachment, and PhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations is TRUE then the values specified in sampleLocationsInfo are ignored.

Valid Usage (Implicit)

See Also

VK_EXT_sample_locations, RenderPassSampleLocationsBeginInfoEXT, SampleLocationsInfoEXT

Constructors

SubpassSampleLocationsEXT 

Fields

data RenderPassSampleLocationsBeginInfoEXT Source #

VkRenderPassSampleLocationsBeginInfoEXT - Structure specifying sample locations to use for the layout transition of custom sample locations compatible depth/stencil attachments

Valid Usage (Implicit)

  • If attachmentInitialSampleLocationsCount is not 0, pAttachmentInitialSampleLocations must be a valid pointer to an array of attachmentInitialSampleLocationsCount valid AttachmentSampleLocationsEXT structures
  • If postSubpassSampleLocationsCount is not 0, pPostSubpassSampleLocations must be a valid pointer to an array of postSubpassSampleLocationsCount valid SubpassSampleLocationsEXT structures

See Also

VK_EXT_sample_locations, AttachmentSampleLocationsEXT, StructureType, SubpassSampleLocationsEXT

Constructors

RenderPassSampleLocationsBeginInfoEXT 

Fields

  • attachmentInitialSampleLocations :: Vector AttachmentSampleLocationsEXT

    pAttachmentInitialSampleLocations is a pointer to an array of attachmentInitialSampleLocationsCount AttachmentSampleLocationsEXT structures specifying the attachment indices and their corresponding sample location state. Each element of pAttachmentInitialSampleLocations can specify the sample location state to use in the automatic layout transition performed to transition a depth/stencil attachment from the initial layout of the attachment to the image layout specified for the attachment in the first subpass using it.

  • postSubpassSampleLocations :: Vector SubpassSampleLocationsEXT

    pPostSubpassSampleLocations is a pointer to an array of postSubpassSampleLocationsCount SubpassSampleLocationsEXT structures specifying the subpass indices and their corresponding sample location state. Each element of pPostSubpassSampleLocations can specify the sample location state to use in the automatic layout transition performed to transition the depth/stencil attachment used by the specified subpass to the image layout specified in a dependent subpass or to the final layout of the attachment in case the specified subpass is the last subpass using that attachment. In addition, if PhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations is FALSE, each element of pPostSubpassSampleLocations must specify the sample location state that matches the sample locations used by all pipelines that will be bound to a command buffer during the specified subpass. If variableSampleLocations is TRUE, the sample locations used for rasterization do not depend on pPostSubpassSampleLocations.

data PipelineSampleLocationsStateCreateInfoEXT Source #

VkPipelineSampleLocationsStateCreateInfoEXT - Structure specifying sample locations for a pipeline

Valid Usage (Implicit)

See Also

VK_EXT_sample_locations, Bool32, SampleLocationsInfoEXT, StructureType

Constructors

PipelineSampleLocationsStateCreateInfoEXT 

Fields

data PhysicalDeviceSampleLocationsPropertiesEXT Source #

VkPhysicalDeviceSampleLocationsPropertiesEXT - Structure describing sample location limits that can be supported by an implementation

Description

If the PhysicalDeviceSampleLocationsPropertiesEXT structure is included in the pNext chain of the PhysicalDeviceProperties2 structure passed to getPhysicalDeviceProperties2, it is filled in with each corresponding implementation-dependent property.

Valid Usage (Implicit)

See Also

VK_EXT_sample_locations, Bool32, Extent2D, SampleCountFlags, StructureType

Constructors

PhysicalDeviceSampleLocationsPropertiesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceSampleLocationsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

Show PhysicalDeviceSampleLocationsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

FromCStruct PhysicalDeviceSampleLocationsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

ToCStruct PhysicalDeviceSampleLocationsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

Zero PhysicalDeviceSampleLocationsPropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

data MultisamplePropertiesEXT Source #

VkMultisamplePropertiesEXT - Structure returning information about sample count specific additional multisampling capabilities

Valid Usage (Implicit)

See Also

VK_EXT_sample_locations, Extent2D, StructureType, getPhysicalDeviceMultisamplePropertiesEXT

Constructors

MultisamplePropertiesEXT 

Fields

Instances

Instances details
Storable MultisamplePropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

Show MultisamplePropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

FromCStruct MultisamplePropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

ToCStruct MultisamplePropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

Zero MultisamplePropertiesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_sample_locations

type EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" Source #

pattern EXT_SAMPLE_LOCATIONS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #