Vulkan
®
1.4.350 - A Specification (with all registered extensions)
The Khronos
®
Vulkan Working Group
version 1.4.350,
2026-05-13 07:07:04Z
from git branch: makepkg commit: 81b1d516cbf42f04a3c7f781977c499945b5e5dc
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. Push Constant Decorations
9.26. Static Use
9.27. Scope
9.28. Group Operations
9.29. Quad Group Operations
9.30. Derivative Operations
9.31. Helper Invocations
9.32. Cooperative Matrices
9.33. Cooperative Vectors
9.34. Validation Cache
9.35. CUDA Modules
9.36. Shader Instrumentation
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. Images
13.1. Image Coordinate Validation
13.2. Image Reads
13.3. Image Writes
13.4. SPIR-V Image Access
14. Samplers
14.1. Sampler Y′C
B
C
R
Conversion
14.2. Custom Border Colors
14.3. Sampler block matching
15. Resource Descriptors
15.1. Descriptor Types
15.2. Physical Storage Buffer Access
16. Descriptor Heaps
16.1. Writing Descriptors
16.2. Using Heaps
16.3. Shader Bindings
16.4. Packing descriptors more tightly
17. Descriptor Sets
17.1. Descriptor Set Layout
17.2. Pipeline Layouts
17.3. Allocation of Descriptor Sets
17.4. Descriptor Set Updates
17.5. Descriptor Update Templates
17.6. Descriptor Set Updates With Templates
17.7. Descriptor Set Binding
17.8. Push Descriptor Updates
17.9. Push Descriptor Updates With Descriptor Update Templates
17.10. Push Constant Updates
18. Descriptor Buffers
18.1. Putting Descriptors in Memory
18.2. Binding Descriptor Buffers
18.3. Updating Descriptor Buffers
18.4. Push Descriptors With Descriptor Buffers
18.5. Capture and Replay
19. Shader Interfaces
19.1. Shader Input and Output Interfaces
19.2. Vertex Input Interface
19.3. Fragment Output Interface
19.4. Legacy Dithering
19.5. Fragment Tile Image Interface
19.6. Tile Attachment Interface
19.7. Fragment Input Attachment Interface
19.8. Ray Tracing Pipeline Interface
19.9. Shader Resource Interface
19.10. Built-In Variables
20. Sampling
20.1. Sampling Coordinate Systems
20.2. Sampling Operations
20.3. Normalized Texel Coordinate Operations
20.4. Unnormalized Texel Coordinate Operations
20.5. Integer Texel Coordinate Operations
20.6. Image Sample Operations
20.7. Texel Footprint Evaluation
20.8. Weight Image Sampling
20.9. Block Matching
20.10. Box Filter Sampling
20.11. Image Operation Steps
20.12. LOD Query
21. Fragment Density Map Operations
21.1. Fragment Density Map Operations Overview
21.2. Fetch Density Value
21.3. Fragment Area Conversion
22. Tensor Operations
22.1. Tensor Operations Overview
22.2. Tensor Element Input Operations
22.3. Tensor Element Output Operations
22.4. Tensor Query Instructions
23. Queries
23.1. Query Pools
23.2. Query Operation
23.3. Occlusion Queries
23.4. Pipeline Statistics Queries
23.5. Timestamp Queries
23.6. Performance Queries
23.7. Transform Feedback Queries
23.8. Primitives Generated Queries
23.9. Mesh Shader Queries
23.10. Intel Performance Queries
23.11. Result Status Queries
23.12. Video Encode Feedback Queries
24. Clear Commands
24.1. Clearing Images Outside a Render Pass Instance
24.2. Clearing Images Inside a Render Pass Instance
24.3. Clear Values
24.4. Filling Memory
24.5. Updating Memory
24.6. Filling Buffers
24.7. Updating Buffers
25. Copy Commands
25.1. Copying Data Between Memory Ranges
25.2. Copying Data Between Buffers
25.3. Copying Data Between Images
25.4. Copying Data Between Memory Ranges and Images
25.5. Copying Data Between Buffers and Images
25.6. Indirect Copies
25.7. Image Copies With Scaling
25.8. Resolving Multisample Images
25.9. Buffer Markers
25.10. Copying Data Between Tensors
26. Drawing Commands
26.1. Primitive Topologies
26.2. Effective Primitive Topology
26.3. Primitive Order
26.4. Programmable Primitive Shading
26.5. Conditional Rendering
26.6. Programmable Mesh Shading
26.7. Programmable Cluster Culling Shading
27. Fixed-Function Vertex Processing
27.1. Vertex Attributes
27.2. Vertex Input Description
27.3. Vertex Attribute Divisor in Instanced Rendering
27.4. Vertex Input Address Calculation
28. Tessellation
28.1. Tessellator
28.2. Tessellator Patch Discard
28.3. Tessellator Spacing
28.4. Tessellation Primitive Ordering
28.5. Tessellator Vertex Winding Order
28.6. Triangle Tessellation
28.7. Quad Tessellation
28.8. Isoline Tessellation
28.9. Tessellation Point Mode
28.10. Tessellation Pipeline State
29. Geometry Shading
29.1. Geometry Shader Input Primitives
29.2. Geometry Shader Output Primitives
29.3. Multiple Invocations of Geometry Shaders
29.4. Geometry Shader Primitive Ordering
29.5. Geometry Shader Passthrough
30. Mesh Shading
30.1. Task Shader Input
30.2. Task Shader Output
30.3. Mesh Generation
30.4. Mesh Shader Input
30.5. Mesh Shader Output
30.6. Mesh Shader Per-View Outputs
30.7. Mesh Shader Primitive Ordering
31. Cluster Culling Shading
31.1. Cluster Culling Shader Input
31.2. Cluster Culling Shader Output
31.3. Cluster Culling Shader Cluster Ordering
31.4. Cluster Culling Shader Primitive Ordering
32. Fixed-Function Vertex Post-Processing
32.1. Transform Feedback
32.2. Viewport Swizzle
32.3. Flat Shading
32.4. Primitive Clipping
32.5. Clipping Shader Outputs
32.6. Controlling Viewport W Scaling
32.7. Coordinate Transformations
32.8. Render Pass Transform
32.9. Controlling the Viewport
33. Rasterization
33.1. Discarding Primitives Before Rasterization
33.2. Controlling the Vertex Stream Used for Rasterization
33.3. Rasterization Order
33.4. Multisampling
33.5. Custom Sample Locations
33.6. Fragment Shading Rates
33.7. Shading Rate Image
33.8. Sample Shading
33.9. Barycentric Interpolation
33.10. Points
33.11. Line Segments
33.12. Polygons
34. Fragment Operations
34.1. Discard Rectangles Test
34.2. Scissor Test
34.3. Exclusive Scissor Test
34.4. Sample Mask Test
34.5. Fragment Shading
34.6. Multisample Coverage
34.7. Depth and Stencil Operations
34.8. Depth Bounds Test
34.9. Stencil Test
34.10. Depth Test
34.11. Representative Fragment Test
34.12. Sample Counting
34.13. Fragment Coverage to Color
34.14. Coverage Reduction
35. The Framebuffer
35.1. Blending
35.2. Logical Operations
35.3. Color Write Mask
35.4. Color Write Enable
35.5. Framebuffer Query Instructions
36. Dispatching Commands
36.1. Dispatch Command for CUDA PTX Kernels
36.2. Compute Occupancy Priority
37. Device-Generated Commands
37.1. Indirect Commands Layout
37.2. Indirect Commands Generation and Execution
38. Sparse Resources
38.1. Sparse Resource Features
38.2. Sparse Buffers and Fully-Resident Images
38.3. Sparse Partially-Resident Buffers
38.4. Sparse Partially-Resident Images
38.5. Sparse Memory Aliasing
38.6. Sparse Resource Implementation Guidelines (Informative)
38.7. Sparse Resource API
39. Window System Integration (WSI)
39.1. WSI Platform
39.2. WSI Surface
39.3. Presenting Directly to Display Devices
39.4. Querying for WSI Support
39.5. Surface Queries
39.6. Full Screen Exclusive Control
39.7. Device Group Queries
39.8. Present Timing Queries
39.9. Present Wait
39.10. WSI Swapchain
39.11. HDR Metadata
39.12. Lag Control
39.13. Present Barrier
40. Deferred Host Operations
40.1. Requesting Deferral
40.2. Deferred Host Operations API
41. Private Data
42. Acceleration Structures
42.1. Acceleration Structures
42.2. Cluster Level Acceleration Structures
42.3. Partitioned Top Level Acceleration Structures
42.4. Host Acceleration Structure Operations
43. Compressed triangle data
43.1. Dense Geometry Format Version 1 (DGF1)
44. Micromap
44.1. Micromaps
44.2. Host Micromap Operations
45. Ray Traversal
45.1. Ray Intersection Candidate Determination
45.2. Ray Intersection Culling
45.3. Ray Intersection Confirmation
45.4. Ray Closest Hit Determination
45.5. Ray Result Determination
46. Ray Tracing
46.1. Shader Call Instructions
46.2. Ray Tracing Commands
46.3. Shader Binding Table
46.4. Ray Tracing Pipeline Stack
46.5. Ray Tracing Capture Replay
46.6. Ray Tracing Validation
47. Memory Decompression
48. Video Coding
48.1. Video Picture Resources
48.2. Decoded Picture Buffer
48.3. Video Profiles
48.4. Video Capabilities
48.5. Video Sessions
48.6. Video Profile Compatibility
48.7. Video Session Parameters
48.8. Video Coding Scope
48.9. Video Coding Control
48.10. Inline Queries
48.11. Video Decode Operations
48.12. H.264 Decode Operations
48.13. H.265 Decode Operations
48.14. VP9 Decode Operations
48.15. AV1 Decode Operations
48.16. Video Encode Operations
48.17. Video Encode Intra Refresh
48.18. Video Encode Rate Control
48.19. Video Encode Quantization Maps
48.20. Video Encode R′G′B′ Conversion
48.21. H.264 Encode Operations
48.22. H.265 Encode Operations
48.23. AV1 Encode Operations
49. Optical Flow
49.1. Optical Flow Queues
49.2. Optical Flow Image Formats
49.3. Optical Flow Session
50. Execution Graphs
50.1. Pipeline Creation
50.2. Initializing Scratch Memory
50.3. Dispatching a Graph
50.4. Shader Enqueue
51. External Compute Queues
52. Data graphs
52.1. Pipeline Creation
52.2. Sessions
52.3. Dispatch
52.4. Properties
52.5. Processing Engines
52.6. Operations
53. Extending Vulkan
53.1. Functionality Levels
53.2. Instance and Device Versions
53.3. Core Versions
53.4. Layers
53.5. Extensions
53.6. Extension Dependencies
53.7. Compatibility Guarantees (Informative)
54. Features
54.1. Feature Requirements
54.2. Roadmap Milestone Features
55. Limits
55.1. Limit Requirements
55.2. Additional Multisampling Capabilities
55.3. Milestone Limits
56. Formats
56.1. Format Definition
56.2. Format Properties
56.3. Required Format Support
57. Additional Capabilities
57.1. Additional Image Capabilities
57.2. Additional Buffer Capabilities
57.3. Additional Tensor Capabilities
57.4. Optional Semaphore Capabilities
57.5. Optional Fence Capabilities
57.6. Timestamp Calibration Capabilities
58. Debugging
58.1. Debug Utilities
58.2. Debug Markers
58.3. Debug Report Callbacks
58.4. Device Loss Debugging
58.5. Active Tooling Information
58.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
Roadmap 2026
Appendix G: Legacy and Superseded Functionality
List of Legacy 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: