Name Strings
SPV_INTEL_device_barrier
Contact
To report problems with this extension, please open a new issue at:
Contributors
-
Ben Ashbaugh, Intel
-
Michael Aziz, Intel
-
Pawel Jurek, Intel
-
Victor Mustya, Intel
-
John Pennycook, Intel
-
Alexey Sachkov, Intel
-
Dmitry Sidorov, Intel
Notice
Copyright (c) 2026 Intel Corporation. All rights reserved.
Status
-
Complete
Version
Last Modified Date |
2026-08-28 |
Revision |
1 |
Dependencies
This extension is written against the SPIR-V Specification, Version 1.6 Revision 7.
This extension requires SPIR-V 1.0.
Overview
This extension adds a new SPIR-V capability that indicates that this SPIR-V module uses Device as the Scope for Execution for OpControlBarrier. Specifying Device as the Scope for Execution for OpControlBarrier waits for all invocations of the module from all workgroups in a kernel dispatch to reach the current point of execution before any are allowed to continue.
Extension Name
To use this extension within a SPIR-V module, the following OpExtension must be present in the module:
OpExtension "SPV_INTEL_device_barrier"
Modifications to the SPIR-V Specification, Version 1.6
BuiltIn
Modify Section 3.2.20, "BuiltIn", adding these rows to the BuiltIn table:
| BuiltIn | Enabling Capabilities | |
|---|---|---|
6186 |
DeviceBarrierExecutionValidINTEL |
DeviceBarrierINTEL |
Capabilities
Modify Section 3.2.30, "Capability", adding these rows to the Capability table:
| Capability | Implicitly Declares | |
|---|---|---|
6185 |
DeviceBarrierINTEL |
|
Issues
-
Is it correct to describe this functionality as a "device barrier"?
RESOLVED: Strictly speaking the "device barrier" described by this extension is only synchronizing the work-items in the current dispatch or ND-range, and not all work-items that may be executing on a device from other dispatches Using "device" does seem to be consistent with other uses of "device" in SPIR-V, though, including the Device scope, so we will continue describe the functionality as a "device barrier".
-
How does this extension interact with the split barrier extension SPV_INTEL_split_barrier?
RESOLVED: Currently, there is no interaction, and Device may only be used as a Scope for Execution for an OpControlBarrier instruction. This restriction may be lifted at some point in the future.
-
How does the DeviceBarrierINTEL capability relate to the DeviceBarrierExecutionValidINTEL built-in?
RESOLVED: The DeviceBarrierINTEL capability allows the SPIR-V module to contain an OpControlBarrier instruction with Device as the Scope for Execution. An implementation supporting the DeviceBarrierINTEL capability must compile SPIR-V modules containing OpControlBarrier instructions with Device as the Scope for Execution, even if there are scenarios when behavior is undefined if the OpControlBarrier instruction is executed. Without this capability, a SPIR-V module that statically passes Device to OpControlBarrier as the Scope for Execution may be considered invalid, and SPIR-V consumers may assume that a dynamically passed Scope for Execution to OpControlBarrier will never be Device.
Some client APIs may require a kernel to be dispatched in a special way in order for the invocations in a kernel dispatch to synchronize. The DeviceBarrierExecutionValidINTEL built-in indicates whether behavior is defined when an invocation executes an OpControlBarrier instruction with Device as the Scope for Execution, or whether behavior is undefined. All built-in variables decorated with DeviceBarrierExecutionValidINTEL will have the same value for all invocations in a kernel dispatch.
Revision History
| Rev | Date | Author | Changes |
|---|---|---|---|
1 |
2026-08-28 |
Ben Ashbaugh |
Initial revision for publication |