1include::meta/VK_EXT_sample_locations.txt[] 2 3*Last Modified Date*:: 4 2017-08-02 5*Contributors*:: 6 - Mais Alnasser, AMD 7 - Matthaeus G. Chajdas, AMD 8 - Maciej Jesionowski, AMD 9 - Daniel Rakos, AMD 10 - Slawomir Grajewski, Intel 11 - Jeff Bolz, NVIDIA 12 - Bill Licea-Kane, Qualcomm 13 14This extension allows an application to modify the locations of samples 15within a pixel used in rasterization. 16Additionally, it allows applications to specify different sample locations 17for each pixel in a group of adjacent pixels, which can: increase 18antialiasing quality (particularly if a custom resolve shader is used that 19takes advantage of these different locations). 20 21It is common for implementations to optimize the storage of depth values by 22storing values that can: be used to reconstruct depth at each sample 23location, rather than storing separate depth values for each sample. 24For example, the depth values from a single triangle may: be represented 25using plane equations. 26When the depth value for a sample is needed, it is automatically evaluated 27at the sample location. 28Modifying the sample locations causes the reconstruction to no longer 29evaluate the same depth values as when the samples were originally 30generated, thus the depth aspect of a depth/stencil attachment must: be 31cleared before rendering to it using different sample locations. 32 33Some implementations may: need to evaluate depth image values while 34performing image layout transitions. 35To accommodate this, instances of the slink:VkSampleLocationsInfoEXT 36structure can: be specified for each situation where an explicit or 37automatic layout transition has to take place. 38slink:VkSampleLocationsInfoEXT can: be chained from 39slink:VkImageMemoryBarrier structures to provide sample locations for layout 40transitions performed by flink:vkCmdWaitEvents and 41flink:vkCmdPipelineBarrier calls, and 42slink:VkRenderPassSampleLocationsBeginInfoEXT can: be chained from 43slink:VkRenderPassBeginInfo to provide sample locations for layout 44transitions performed implicitly by a render pass instance. 45 46=== New Object Types 47 48None. 49 50=== New Enum Constants 51 52 * Extending elink:VkImageCreateFlagBits: 53 ** ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT 54 * Extending elink:VkStructureType: 55 ** ename:VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT 56 ** ename:VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT 57 ** ename:VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT 58 ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT 59 ** ename:VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT 60 * Extending elink:VkDynamicState: 61 ** ename:VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT 62 63=== New Enums 64 65None. 66 67=== New Structures 68 69 * slink:VkSampleLocationEXT 70 * slink:VkSampleLocationsInfoEXT 71 * slink:VkAttachmentSampleLocationsEXT 72 * slink:VkSubpassSampleLocationsEXT 73 * slink:VkRenderPassSampleLocationsBeginInfoEXT 74 * slink:VkPipelineSampleLocationsStateCreateInfoEXT 75 * slink:VkPhysicalDeviceSampleLocationsPropertiesEXT 76 * slink:VkMultisamplePropertiesEXT 77 78=== New Functions 79 80 * flink:vkCmdSetSampleLocationsEXT 81 * flink:vkGetPhysicalDeviceMultisamplePropertiesEXT 82 83=== Issues 84 85None. 86 87=== Version History 88 89 * Revision 1, 2017-08-02 (Daniel Rakos) 90 - Internal revisions 91