Vulkan
®
1.4.321 - A Specification (with all registered extensions)
The Khronos
®
Vulkan Working Group
version 1.4.321,
2025-07-15 19:31:31Z
from git branch: makepkg commit: dad857284bf63d027ac9d6a97e9a1689831bab0d
Table of Contents
Titlepage
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. Compute Pipelines
10.3. Graphics Pipelines
10.4. Ray Tracing Pipelines
10.5. Pipeline Destruction
10.6. Pipeline Derivatives
10.7. Pipeline Cache
10.8. Pipeline Binaries
10.9. Specialization Constants
10.10. Pipeline Libraries
10.11. Pipeline Binding
10.12. Dynamic State
10.13. Pipeline Properties and Shader Information
10.14. Pipeline Compiler Control
10.15. 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. Present Wait
35.11. WSI Swapchain
35.12. HDR Metadata
35.13. Lag Control
35.14. 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. Micromap
39.1. Micromaps
39.2. Host Micromap Operations
40. Ray Traversal
40.1. Ray Intersection Candidate Determination
40.2. Ray Intersection Culling
40.3. Ray Intersection Confirmation
40.4. Ray Closest Hit Determination
40.5. Ray Result Determination
41. Ray Tracing
41.1. Shader Call Instructions
41.2. Ray Tracing Commands
41.3. Shader Binding Table
41.4. Ray Tracing Pipeline Stack
41.5. Ray Tracing Capture Replay
41.6. Ray Tracing Validation
42. Memory Decompression
43. Video Coding
43.1. Video Picture Resources
43.2. Decoded Picture Buffer
43.3. Video Profiles
43.4. Video Capabilities
43.5. Video Sessions
43.6. Video Profile Compatibility
43.7. Video Session Parameters
43.8. Video Coding Scope
43.9. Video Coding Control
43.10. Inline Queries
43.11. Video Decode Operations
43.12. H.264 Decode Operations
43.13. H.265 Decode Operations
43.14. VP9 Decode Operations
43.15. AV1 Decode Operations
43.16. Video Encode Operations
43.17. Video Encode Intra Refresh
43.18. Video Encode Rate Control
43.19. Video Encode Quantization Maps
43.20. H.264 Encode Operations
43.21. H.265 Encode Operations
43.22. AV1 Encode Operations
44. Optical Flow
44.1. Optical Flow Queues
44.2. Optical Flow Image Formats
44.3. Optical Flow Session
45. Execution Graphs
45.1. Pipeline Creation
45.2. Initializing Scratch Memory
45.3. Dispatching a Graph
45.4. Shader Enqueue
46. External Compute Queues
47. Data graphs
47.1. Pipeline Creation
47.2. Sessions
47.3. Dispatch
47.4. Properties
47.5. Processing Engines
47.6. Operations
48. Extending Vulkan
48.1. Instance and Device Functionality
48.2. Core Versions
48.3. Layers
48.4. Extensions
48.5. Extension Dependencies
48.6. Compatibility Guarantees (Informative)
49. Features
49.1. Feature Requirements
49.2. Profile Features
50. Limits
50.1. Limit Requirements
50.2. Additional Multisampling Capabilities
50.3. Profile Limits
51. Formats
51.1. Format Definition
51.2. Format Properties
51.3. Required Format Support
52. Additional Capabilities
52.1. Additional Image Capabilities
52.2. Additional Buffer Capabilities
52.3. Additional Tensor Capabilities
52.4. Optional Semaphore Capabilities
52.5. Optional Fence Capabilities
52.6. Timestamp Calibration Capabilities
53. Debugging
53.1. Debug Utilities
53.2. Debug Markers
53.3. Debug Report Callbacks
53.4. Device Loss Debugging
53.5. Active Tooling Information
53.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)
Provisional Extension Header Control (Informative)
Video Std Headers
Appendix I: Invariance
Repeatability
Multi-Pass Algorithms
Invariance Rules
Tessellation Invariance
Appendix J: Lexicon
Glossary
Common Abbreviations
Video-Specific Abbreviations
Prefixes
Appendix K: Credits (Informative)
Working Group Contributors to Vulkan
Other Credits
Loading… please wait.
Search: