/ appendices / VK_EXT_fragment_shader_interlock.txt
VK_EXT_fragment_shader_interlock.txt
 1  include::meta/VK_EXT_fragment_shader_interlock.txt[]
 2  
 3  *Last Modified Data*::
 4      2019-05-02
 5  *Interactions and External Dependencies*::
 6    - This extension requires the
 7      https://www.khronos.org/registry/spir-v/extensions/EXT/SPV_EXT_fragment_shader_interlock.html[+SPV_EXT_fragment_shader_interlock+]
 8      SPIR-V extension.
 9    - This extension requires the
10      https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_fragment_shader_interlock.txt[+GL_ARB_fragment_shader_interlock+],
11      extensions for GLSL source languages.
12  *Contributors*::
13    - Daniel Koch, NVIDIA
14    - Graeme Leese, Broadcom
15    - Jan-Harald Fredriksen, Arm
16    - Jason Ekstrand, Intel
17    - Jeff Bolz, NVIDIA
18    - Ruihao Zhang, Qualcomm
19    - Slawomir Grajewski, Intel
20    - Spencer Fricke, Samsung
21  
22  This extension adds support for the code:FragmentShaderPixelInterlockEXT,
23  code:FragmentShaderSampleInterlockEXT, and
24  code:FragmentShaderShadingRateInterlockEXT capabilities from the
25  +SPV_EXT_fragment_shader_interlock+ extension to Vulkan.
26  
27  Enabling these capabilities provides a critical section for fragment shaders
28  to avoid overlapping pixels being processed at the same time, and certain
29  guarantees about the ordering of fragment shader invocations of fragments of
30  overlapping pixels.
31  
32  This extension can be useful for algorithms that need to access per-pixel
33  data structures via shader loads and stores.
34  Algorithms using this extension can access per-pixel data structures in
35  critical sections without other invocations accessing the same per-pixel
36  data.
37  Additionally, the ordering guarantees are useful for cases where the API
38  ordering of fragments is meaningful.
39  For example, applications may be able to execute programmable blending
40  operations in the fragment shader, where the destination buffer is read via
41  image loads and the final value is written via image stores.
42  
43  === New Object Types
44  
45  None.
46  
47  === New Enum Constants
48  
49    * Extending elink:VkStructureType:
50    ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
51  
52  === New Enums
53  
54  None.
55  
56  === New Structures
57  
58    * Extending slink:VkPhysicalDeviceFeatures2:
59    ** slink:VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT
60  
61  === New Functions
62  
63  None.
64  
65  === New SPIR-V Capabilities
66  
67    * <<spirvenv-capabilities-table-fragmentShaderInterlock,FragmentShaderInterlockEXT>>
68    * <<spirvenv-capabilities-table-fragmentShaderInterlock,FragmentShaderPixelInterlockEXT>>
69    * <<spirvenv-capabilities-table-fragmentShaderInterlock,FragmentShaderShadingRateInterlockEXT>>
70  
71  === Issues
72  
73  None.
74  
75  === Version History
76  
77    * Revision 1, 2019-05-24 (Piers Daniell)
78      - Internal revisions