• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2019-2024 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5include::{generated}/meta/{refprefix}VK_EXT_fragment_shader_interlock.adoc[]
6
7=== Other Extension Metadata
8
9*Last Modified Date*::
10    2019-05-02
11*Interactions and External Dependencies*::
12  - This extension provides API support for
13    {GLregistry}/ARB/ARB_fragment_shader_interlock.txt[`GL_ARB_fragment_shader_interlock`]
14*Contributors*::
15  - Daniel Koch, NVIDIA
16  - Graeme Leese, Broadcom
17  - Jan-Harald Fredriksen, Arm
18  - Faith Ekstrand, Intel
19  - Jeff Bolz, NVIDIA
20  - Ruihao Zhang, Qualcomm
21  - Slawomir Grajewski, Intel
22  - Spencer Fricke, Samsung
23
24=== Description
25
26This extension adds support for the code:FragmentShaderPixelInterlockEXT,
27code:FragmentShaderSampleInterlockEXT, and
28code:FragmentShaderShadingRateInterlockEXT capabilities from the
29`SPV_EXT_fragment_shader_interlock` extension to Vulkan.
30
31Enabling these capabilities provides a critical section for fragment shaders
32to avoid overlapping pixels being processed at the same time, and certain
33guarantees about the ordering of fragment shader invocations of fragments of
34overlapping pixels.
35
36This extension can be useful for algorithms that need to access per-pixel
37data structures via shader loads and stores.
38Algorithms using this extension can access per-pixel data structures in
39critical sections without other invocations accessing the same per-pixel
40data.
41Additionally, the ordering guarantees are useful for cases where the API
42ordering of fragments is meaningful.
43For example, applications may be able to execute programmable blending
44operations in the fragment shader, where the destination buffer is read via
45image loads and the final value is written via image stores.
46
47include::{generated}/interfaces/VK_EXT_fragment_shader_interlock.adoc[]
48
49=== New SPIR-V Capabilities
50
51  * <<spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT,
52    code:FragmentShaderInterlockEXT>>
53  * <<spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT,
54    code:FragmentShaderPixelInterlockEXT>>
55  * <<spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT,
56    code:FragmentShaderShadingRateInterlockEXT>>
57
58=== Version History
59
60  * Revision 1, 2019-05-24 (Piers Daniell)
61  ** Internal revisions
62