| // Copyright 2019-2021 The Khronos Group Inc. |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_EXT_fragment_shader_interlock.txt[] |
| |
| === Other Extension Metadata |
| |
| *Last Modified Date*:: |
| 2019-05-02 |
| *Interactions and External Dependencies*:: |
| - This extension requires |
| {spirv}/EXT/SPV_EXT_fragment_shader_interlock.html[`SPV_EXT_fragment_shader_interlock`] |
| - This extension provides API support for |
| https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt[`GL_ARB_fragment_shader_interlock`] |
| *Contributors*:: |
| - Daniel Koch, NVIDIA |
| - Graeme Leese, Broadcom |
| - Jan-Harald Fredriksen, Arm |
| - Jason Ekstrand, Intel |
| - Jeff Bolz, NVIDIA |
| - Ruihao Zhang, Qualcomm |
| - Slawomir Grajewski, Intel |
| - Spencer Fricke, Samsung |
| |
| === Description |
| |
| This extension adds support for the code:FragmentShaderPixelInterlockEXT, |
| code:FragmentShaderSampleInterlockEXT, and |
| code:FragmentShaderShadingRateInterlockEXT capabilities from the |
| `SPV_EXT_fragment_shader_interlock` extension to Vulkan. |
| |
| Enabling these capabilities provides a critical section for fragment shaders |
| to avoid overlapping pixels being processed at the same time, and certain |
| guarantees about the ordering of fragment shader invocations of fragments of |
| overlapping pixels. |
| |
| This extension can be useful for algorithms that need to access per-pixel |
| data structures via shader loads and stores. |
| Algorithms using this extension can access per-pixel data structures in |
| critical sections without other invocations accessing the same per-pixel |
| data. |
| Additionally, the ordering guarantees are useful for cases where the API |
| ordering of fragments is meaningful. |
| For example, applications may be able to execute programmable blending |
| operations in the fragment shader, where the destination buffer is read via |
| image loads and the final value is written via image stores. |
| |
| include::{generated}/interfaces/VK_EXT_fragment_shader_interlock.txt[] |
| |
| === New SPIR-V Capabilities |
| |
| * <<spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT,FragmentShaderInterlockEXT>> |
| * <<spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT,FragmentShaderPixelInterlockEXT>> |
| * <<spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT,FragmentShaderShadingRateInterlockEXT>> |
| |
| === Version History |
| |
| * Revision 1, 2019-05-24 (Piers Daniell) |
| - Internal revisions |