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