Vulkan
®
1.4.326 - A Specification (with all registered extensions)
The Khronos
®
Vulkan Working Group
version 1.4.326,
2025-08-29 19:07:58Z
from git branch: github-main commit: 9c6d565f72ba6929c239c3e20f90b6375acad3bd
Table of Contents
1. Preamble
2. Introduction
2.1. Document Conventions
3. Fundamentals
3.1. Host and Device Environment
3.2. Execution Model
3.3. Object Model
3.4. Application Binary Interface
3.5. Command Syntax and Duration
3.6. Threading Behavior
3.7. Valid Usage
3.8.
VkResult
Return Codes
3.9. Numeric Representation and Computation
3.10. Fixed-Point Data Conversions
3.11. String Representation
3.12. Common Object Types
3.13. API Name Aliases
4. Initialization
4.1. Command Function Pointers
4.2. Instances
5. Devices and Queues
5.1. Physical Devices
5.2. Devices
5.3. Queues
6. Command Buffers
6.1. Command Buffer Lifecycle
6.2. Command Pools
6.3. Command Buffer Allocation and Management
6.4. Command Buffer Recording
6.5. Command Buffer Submission
6.6. Queue Forward Progress
6.7. Secondary Command Buffer Execution
6.8. Nested Command Buffers
6.9. Command Buffer Device Mask
7. Synchronization and Cache Control
7.1. Execution and Memory Dependencies
7.2. Implicit Synchronization Guarantees
7.3. Fences
7.4. Semaphores
7.5. Events
7.6. Pipeline Barriers
7.7. Memory Barriers
7.8. Wait Idle Operations
7.9. Host Write Ordering Guarantees
7.10. Synchronization and Multiple Physical Devices
7.11. Calibrated Timestamps
8. Render Pass
8.1. Render Pass Objects
8.2. Render Pass Creation
8.3. Render Pass Compatibility
8.4. Framebuffers
8.5. Render Pass Load Operations
8.6. Render Pass Store Operations
8.7. Render Pass Multisample Resolve Operations
8.8. Render Pass Commands
8.9. Render Pass Creation Feedback
8.10. Common Render Pass Data Races (Informative)
8.11. Tile Shading Render Pass
9. Shaders
9.1. Shader Objects
9.2. Shader Modules
9.3. Shader Module Identifiers
9.4. Binding Shaders
9.5. Shader Execution
9.6. Shader Out-of-Bounds Memory Access
9.7. Shader Memory Access Ordering
9.8. Shader Inputs and Outputs
9.9. Task Shaders
9.10. Mesh Shaders
9.11. Cluster Culling Shaders
9.12. Vertex Shaders
9.13. Tessellation Control Shaders
9.14. Tessellation Evaluation Shaders
9.15. Geometry Shaders
9.16. Fragment Shaders
9.17. Compute Shaders
9.18. Ray Generation Shaders
9.19. Intersection Shaders
9.20. Any-Hit Shaders
9.21. Closest Hit Shaders
9.22. Miss Shaders
9.23. Callable Shaders
9.24. Interpolation Decorations
9.25. Static Use
9.26. Scope
9.27. Group Operations
9.28. Quad Group Operations
9.29. Derivative Operations
9.30. Helper Invocations
9.31. Cooperative Matrices
9.32. Cooperative Vectors
9.33. Validation Cache
9.34. CUDA Modules
10. Pipelines
10.1. Multiple Pipeline Creation
10.2. Pipeline Creation Flags
10.3. Compute Pipelines
10.4. Graphics Pipelines
10.5. Ray Tracing Pipelines
10.6. Pipeline Destruction
10.7. Pipeline Derivatives
10.8. Pipeline Cache
10.9. Pipeline Binaries
10.10. Specialization Constants
10.11. Pipeline Libraries
10.12. Pipeline Binding
10.13. Dynamic State
10.14. Pipeline Properties and Shader Information
10.15. Pipeline Compiler Control
10.16. Pipeline Creation Feedback
11. Memory Allocation
11.1. Host Memory
11.2. Device Memory
12. Resource Creation
12.1. Buffers
12.2. Buffer Views
12.3. Buffer Device Addresses
12.4. Images
12.5. Image Layouts
12.6. Image Views
12.7. Acceleration Structures
12.8. Micromaps
12.9. Resource Memory Association
12.10. Resource Sharing Mode
12.11. Memory Aliasing
12.12. Buffer Collections
12.13. Tensors
12.14. Tensor Views
13. Samplers
13.1. Sampler Y′C
B
C
R
Conversion
14. Resource Descriptors
14.1. Descriptor Types
14.2. Descriptor Sets
14.3. Physical Storage Buffer Access
14.4. Descriptor Buffers
15. Shader Interfaces
15.1. Shader Input and Output Interfaces
15.2. Vertex Input Interface
15.3. Fragment Output Interface
15.4. Legacy Dithering
15.5. Fragment Tile Image Interface
15.6. Tile Attachment Interface
15.7. Fragment Input Attachment Interface
15.8. Ray Tracing Pipeline Interface
15.9. Shader Resource Interface
15.10. Built-In Variables
16. Image Operations
16.1. Image Operations Overview
16.2. Conversion Formulas
16.3. Texel Input Operations
16.4. Texel Output Operations
16.5. Normalized Texel Coordinate Operations
16.6. Unnormalized Texel Coordinate Operations
16.7. Integer Texel Coordinate Operations
16.8. Image Sample Operations
16.9. Texel Footprint Evaluation
16.10. Weight Image Sampling
16.11. Block Matching
16.12. Box Filter Sampling
16.13. Image Operation Steps
16.14. Image Query Instructions
17. Fragment Density Map Operations
17.1. Fragment Density Map Operations Overview
17.2. Fetch Density Value
17.3. Fragment Area Conversion
18. Tensor Operations
18.1. Tensor Operations Overview
18.2. Tensor Element Input Operations
18.3. Tensor Element Output Operations
18.4. Tensor Query Instructions
19. Queries
19.1. Query Pools
19.2. Query Operation
19.3. Occlusion Queries
19.4. Pipeline Statistics Queries
19.5. Timestamp Queries
19.6. Performance Queries
19.7. Transform Feedback Queries
19.8. Primitives Generated Queries
19.9. Mesh Shader Queries
19.10. Intel Performance Queries
19.11. Result Status Queries
19.12. Video Encode Feedback Queries
20. Clear Commands
20.1. Clearing Images Outside a Render Pass Instance
20.2. Clearing Images Inside a Render Pass Instance
20.3. Clear Values
20.4. Filling Buffers
20.5. Updating Buffers
21. Copy Commands
21.1. Copying Data Between Buffers
21.2. Copying Data Between Images
21.3. Copying Data Between Buffers and Images
21.4. Indirect Copies
21.5. Image Copies With Scaling
21.6. Resolving Multisample Images
21.7. Buffer Markers
21.8. Copying Data Between Tensors
22. Drawing Commands
22.1. Primitive Topologies
22.2. Effective Primitive Topology
22.3. Primitive Order
22.4. Programmable Primitive Shading
22.5. Conditional Rendering
22.6. Programmable Mesh Shading
22.7. Programmable Cluster Culling Shading
23. Fixed-Function Vertex Processing
23.1. Vertex Attributes
23.2. Vertex Input Description
23.3. Vertex Attribute Divisor in Instanced Rendering
23.4. Vertex Input Address Calculation
24. Tessellation
24.1. Tessellator
24.2. Tessellator Patch Discard
24.3. Tessellator Spacing
24.4. Tessellation Primitive Ordering
24.5. Tessellator Vertex Winding Order
24.6. Triangle Tessellation
24.7. Quad Tessellation
24.8. Isoline Tessellation
24.9. Tessellation Point Mode
24.10. Tessellation Pipeline State
25. Geometry Shading
25.1. Geometry Shader Input Primitives
25.2. Geometry Shader Output Primitives
25.3. Multiple Invocations of Geometry Shaders
25.4. Geometry Shader Primitive Ordering
25.5. Geometry Shader Passthrough
26. Mesh Shading
26.1. Task Shader Input
26.2. Task Shader Output
26.3. Mesh Generation
26.4. Mesh Shader Input
26.5. Mesh Shader Output
26.6. Mesh Shader Per-View Outputs
26.7. Mesh Shader Primitive Ordering
27. Cluster Culling Shading
27.1. Cluster Culling Shader Input
27.2. Cluster Culling Shader Output
27.3. Cluster Culling Shader Cluster Ordering
27.4. Cluster Culling Shader Primitive Ordering
28. Fixed-Function Vertex Post-Processing
28.1. Transform Feedback
28.2. Viewport Swizzle
28.3. Flat Shading
28.4. Primitive Clipping
28.5. Clipping Shader Outputs
28.6. Controlling Viewport W Scaling
28.7. Coordinate Transformations
28.8. Render Pass Transform
28.9. Controlling the Viewport
29. Rasterization
29.1. Discarding Primitives Before Rasterization
29.2. Controlling the Vertex Stream Used for Rasterization
29.3. Rasterization Order
29.4. Multisampling
29.5. Custom Sample Locations
29.6. Fragment Shading Rates
29.7. Shading Rate Image
29.8. Sample Shading
29.9. Barycentric Interpolation
29.10. Points
29.11. Line Segments
29.12. Polygons
30. Fragment Operations
30.1. Discard Rectangles Test
30.2. Scissor Test
30.3. Exclusive Scissor Test
30.4. Sample Mask Test
30.5. Fragment Shading
30.6. Multisample Coverage
30.7. Depth and Stencil Operations
30.8. Depth Bounds Test
30.9. Stencil Test
30.10. Depth Test
30.11. Representative Fragment Test
30.12. Sample Counting
30.13. Fragment Coverage to Color
30.14. Coverage Reduction
31. The Framebuffer
31.1. Blending
31.2. Logical Operations
31.3. Color Write Mask
31.4. Color Write Enable
31.5. Framebuffer Query Instructions
32. Dispatching Commands
32.1. Dispatch Command for CUDA PTX Kernels
33. Device-Generated Commands
33.1. Indirect Commands Layout
33.2. Indirect Commands Generation and Execution
34. Sparse Resources
34.1. Sparse Resource Features
34.2. Sparse Buffers and Fully-Resident Images
34.3. Sparse Partially-Resident Buffers
34.4. Sparse Partially-Resident Images
34.5. Sparse Memory Aliasing
34.6. Sparse Resource Implementation Guidelines (Informative)
34.7. Sparse Resource API
35. Window System Integration (WSI)
35.1. WSI Platform
35.2. WSI Surface
35.3. Presenting Directly to Display Devices
35.4. Querying for WSI Support
35.5. Surface Queries
35.6. Full Screen Exclusive Control
35.7. Device Group Queries
35.8. Display Timing Queries
35.9. Present Wait
35.10. WSI Swapchain
35.11. HDR Metadata
35.12. Lag Control
35.13. Present Barrier
36. Deferred Host Operations
36.1. Requesting Deferral
36.2. Deferred Host Operations API
37. Private Data
38. Acceleration Structures
38.1. Acceleration Structures
38.2. Cluster Level Acceleration Structures
38.3. Partitioned Top Level Acceleration Structures
38.4. Host Acceleration Structure Operations
39. Compressed triangle data
39.1. Dense Geometry Format Version 1 (DGF1)
40. Micromap
40.1. Micromaps
40.2. Host Micromap Operations
41. Ray Traversal
41.1. Ray Intersection Candidate Determination
41.2. Ray Intersection Culling
41.3. Ray Intersection Confirmation
41.4. Ray Closest Hit Determination
41.5. Ray Result Determination
42. Ray Tracing
42.1. Shader Call Instructions
42.2. Ray Tracing Commands
42.3. Shader Binding Table
42.4. Ray Tracing Pipeline Stack
42.5. Ray Tracing Capture Replay
42.6. Ray Tracing Validation
43. Memory Decompression
44. Video Coding
44.1. Video Picture Resources
44.2. Decoded Picture Buffer
44.3. Video Profiles
44.4. Video Capabilities
44.5. Video Sessions
44.6. Video Profile Compatibility
44.7. Video Session Parameters
44.8. Video Coding Scope
44.9. Video Coding Control
44.10. Inline Queries
44.11. Video Decode Operations
44.12. H.264 Decode Operations
44.13. H.265 Decode Operations
44.14. VP9 Decode Operations
44.15. AV1 Decode Operations
44.16. Video Encode Operations
44.17. Video Encode Intra Refresh
44.18. Video Encode Rate Control
44.19. Video Encode Quantization Maps
44.20. H.264 Encode Operations
44.21. H.265 Encode Operations
44.22. AV1 Encode Operations
45. Optical Flow
45.1. Optical Flow Queues
45.2. Optical Flow Image Formats
45.3. Optical Flow Session
46. Execution Graphs
46.1. Pipeline Creation
46.2. Initializing Scratch Memory
46.3. Dispatching a Graph
46.4. Shader Enqueue
47. External Compute Queues
48. Data graphs
48.1. Pipeline Creation
48.2. Sessions
48.3. Dispatch
48.4. Properties
48.5. Processing Engines
48.6. Operations
49. Extending Vulkan
49.1. Functionality Levels
49.2. Instance and Device Versions
49.3. Core Versions
49.4. Layers
49.5. Extensions
49.6. Extension Dependencies
49.7. Compatibility Guarantees (Informative)
50. Features
50.1. Feature Requirements
50.2. Profile Features
51. Limits
51.1. Limit Requirements
51.2. Additional Multisampling Capabilities
51.3. Profile Limits
52. Formats
52.1. Format Definition
52.2. Format Properties
52.3. Required Format Support
53. Additional Capabilities
53.1. Additional Image Capabilities
53.2. Additional Buffer Capabilities
53.3. Additional Tensor Capabilities
53.4. Optional Semaphore Capabilities
53.5. Optional Fence Capabilities
53.6. Timestamp Calibration Capabilities
54. Debugging
54.1. Debug Utilities
54.2. Debug Markers
54.3. Debug Report Callbacks
54.4. Device Loss Debugging
54.5. Active Tooling Information
54.6. Frame Boundary
Appendix A: Vulkan Environment for SPIR-V
Versions and Formats
Capabilities
Validation Rules Within a Module
Precision and Operation of SPIR-V Instructions
Buffer Indexing Calculations
Signedness of SPIR-V Image Accesses
Image Format and Type Matching
Compatibility Between SPIR-V Image Dimensions and Vulkan ImageView Types
Compatibility Between SPIR-V Image Formats and Vulkan Formats
Ray Query Precision and Operation
Compatibility Between SPIR-V Tensor Element Types And Vulkan Formats
Appendix B: Memory Model
Agent
Memory Location
Allocation
Memory Operation
Reference
Program-Order
Shader Call Related
Shader Call Order
Scope
Atomic Operation
Scoped Modification Order
Memory Semantics
Release Sequence
Synchronizes-With
System-Synchronizes-With
Private vs. Non-Private
Inter-Thread-Happens-Before
Happens-Before
Availability and Visibility
Availability, Visibility, and Domain Operations
Availability and Visibility Semantics
Per-Instruction Availability and Visibility Semantics
Location-Ordered
Data Race
Visible-To
Acyclicity
Shader I/O
Deallocation
Descriptions (Informative)
Tessellation Output Ordering
Cooperative Matrix Memory Access
Appendix C: Compressed Image Formats
Block-Compressed Image Formats
ETC Compressed Image Formats
ASTC Compressed Image Formats
PVRTC Compressed Image Formats
Appendix D: Core Revisions (Informative)
Vulkan Version 1.4
Vulkan Version 1.3
Vulkan Version 1.2
Vulkan Version 1.1
Vulkan Version 1.0
Appendix E: Layers & Extensions (Informative)
Extension Dependencies
Extension Interactions
List of Current Extensions
List of Provisional Extensions
List of Deprecated Extensions
Appendix F: Vulkan Roadmap Milestones
Roadmap 2022
Roadmap 2024
Appendix G: Deprecation
Deprecated Functionality
Appendix H: API Boilerplate
Vulkan Header Files
Window System-Specific Header Control (Informative)