Vulkan
®
1.4.328 - A Specification (with all registered extensions)
The Khronos
®
Vulkan Working Group
version 1.4.328,
2025-10-07 03:10:39Z
from git branch: makepkg commit: d38733398a4bec673bd5d24c904d4739a45f020d
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. 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
14. Samplers
14.1. Sampler Y′C
B
C
R
Conversion
15. Resource Descriptors
15.1. Descriptor Types
15.2. Descriptor Sets
15.3. Physical Storage Buffer Access
15.4. Descriptor Buffers
16. Shader Interfaces
16.1. Shader Input and Output Interfaces
16.2. Vertex Input Interface
16.3. Fragment Output Interface
16.4. Legacy Dithering
16.5. Fragment Tile Image Interface
16.6. Tile Attachment Interface
16.7. Fragment Input Attachment Interface
16.8. Ray Tracing Pipeline Interface
16.9. Shader Resource Interface
16.10. Built-In Variables
17. Image Operations
17.1. Image Operations Overview
17.2. Sampling Operations
17.3. Normalized Texel Coordinate Operations
17.4. Unnormalized Texel Coordinate Operations
17.5. Integer Texel Coordinate Operations
17.6. Image Sample Operations
17.7. Texel Footprint Evaluation
17.8. Weight Image Sampling
17.9. Block Matching
17.10. Box Filter Sampling
17.11. Image Operation Steps
17.12. Image Query Instructions
18. Fragment Density Map Operations
18.1. Fragment Density Map Operations Overview
18.2. Fetch Density Value
18.3. Fragment Area Conversion
19. Tensor Operations
19.1. Tensor Operations Overview
19.2. Tensor Element Input Operations
19.3. Tensor Element Output Operations
19.4. Tensor Query Instructions
20. Queries
20.1. Query Pools
20.2. Query Operation
20.3. Occlusion Queries
20.4. Pipeline Statistics Queries
20.5. Timestamp Queries
20.6. Performance Queries
20.7. Transform Feedback Queries
20.8. Primitives Generated Queries
20.9. Mesh Shader Queries
20.10. Intel Performance Queries
20.11. Result Status Queries
20.12. Video Encode Feedback Queries
21. Clear Commands
21.1. Clearing Images Outside a Render Pass Instance
21.2. Clearing Images Inside a Render Pass Instance
21.3. Clear Values
21.4. Filling Buffers
21.5. Updating Buffers
22. Copy Commands
22.1. Copying Data Between Buffers
22.2. Copying Data Between Images
22.3. Copying Data Between Buffers and Images
22.4. Indirect Copies
22.5. Image Copies With Scaling
22.6. Resolving Multisample Images
22.7. Buffer Markers
22.8. Copying Data Between Tensors
23. Drawing Commands
23.1. Primitive Topologies
23.2. Effective Primitive Topology
23.3. Primitive Order
23.4. Programmable Primitive Shading
23.5. Conditional Rendering
23.6. Programmable Mesh Shading
23.7. Programmable Cluster Culling Shading
24. Fixed-Function Vertex Processing
24.1. Vertex Attributes
24.2. Vertex Input Description
24.3. Vertex Attribute Divisor in Instanced Rendering
24.4. Vertex Input Address Calculation
25. Tessellation
25.1. Tessellator
25.2. Tessellator Patch Discard
25.3. Tessellator Spacing
25.4. Tessellation Primitive Ordering
25.5. Tessellator Vertex Winding Order
25.6. Triangle Tessellation
25.7. Quad Tessellation
25.8. Isoline Tessellation
25.9. Tessellation Point Mode
25.10. Tessellation Pipeline State
26. Geometry Shading
26.1. Geometry Shader Input Primitives
26.2. Geometry Shader Output Primitives
26.3. Multiple Invocations of Geometry Shaders
26.4. Geometry Shader Primitive Ordering
26.5. Geometry Shader Passthrough
27. Mesh Shading
27.1. Task Shader Input
27.2. Task Shader Output
27.3. Mesh Generation
27.4. Mesh Shader Input
27.5. Mesh Shader Output
27.6. Mesh Shader Per-View Outputs
27.7. Mesh Shader Primitive Ordering
28. Cluster Culling Shading
28.1. Cluster Culling Shader Input
28.2. Cluster Culling Shader Output
28.3. Cluster Culling Shader Cluster Ordering
28.4. Cluster Culling Shader Primitive Ordering
29. Fixed-Function Vertex Post-Processing
29.1. Transform Feedback
29.2. Viewport Swizzle
29.3. Flat Shading
29.4. Primitive Clipping
29.5. Clipping Shader Outputs
29.6. Controlling Viewport W Scaling
29.7. Coordinate Transformations
29.8. Render Pass Transform
29.9. Controlling the Viewport
30. Rasterization
30.1. Discarding Primitives Before Rasterization
30.2. Controlling the Vertex Stream Used for Rasterization
30.3. Rasterization Order
30.4. Multisampling
30.5. Custom Sample Locations
30.6. Fragment Shading Rates
30.7. Shading Rate Image
30.8. Sample Shading
30.9. Barycentric Interpolation
30.10. Points
30.11. Line Segments
30.12. Polygons
31. Fragment Operations
31.1. Discard Rectangles Test
31.2. Scissor Test
31.3. Exclusive Scissor Test
31.4. Sample Mask Test
31.5. Fragment Shading
31.6. Multisample Coverage
31.7. Depth and Stencil Operations
31.8. Depth Bounds Test
31.9. Stencil Test
31.10. Depth Test
31.11. Representative Fragment Test
31.12. Sample Counting
31.13. Fragment Coverage to Color
31.14. Coverage Reduction
32. The Framebuffer
32.1. Blending
32.2. Logical Operations
32.3. Color Write Mask
32.4. Color Write Enable
32.5. Framebuffer Query Instructions
33. Dispatching Commands
33.1. Dispatch Command for CUDA PTX Kernels
34. Device-Generated Commands
34.1. Indirect Commands Layout
34.2. Indirect Commands Generation and Execution
35. Sparse Resources
35.1. Sparse Resource Features
35.2. Sparse Buffers and Fully-Resident Images
35.3. Sparse Partially-Resident Buffers
35.4. Sparse Partially-Resident Images
35.5. Sparse Memory Aliasing
35.6. Sparse Resource Implementation Guidelines (Informative)
35.7. Sparse Resource API
36. Window System Integration (WSI)
36.1. WSI Platform
36.2. WSI Surface
36.3. Presenting Directly to Display Devices
36.4. Querying for WSI Support
36.5. Surface Queries
36.6. Full Screen Exclusive Control
36.7. Device Group Queries
36.8. Display Timing Queries
36.9. Present Wait
36.10. WSI Swapchain
36.11. HDR Metadata
36.12. Lag Control
36.13. Present Barrier
37. Deferred Host Operations
37.1. Requesting Deferral
37.2. Deferred Host Operations API
38. Private Data
39. Acceleration Structures
39.1. Acceleration Structures
39.2. Cluster Level Acceleration Structures
39.3. Partitioned Top Level Acceleration Structures
39.4. Host Acceleration Structure Operations
40. Compressed triangle data
40.1. Dense Geometry Format Version 1 (DGF1)
41. Micromap
41.1. Micromaps
41.2. Host Micromap Operations
42. Ray Traversal
42.1. Ray Intersection Candidate Determination
42.2. Ray Intersection Culling
42.3. Ray Intersection Confirmation
42.4. Ray Closest Hit Determination
42.5. Ray Result Determination
43. Ray Tracing
43.1. Shader Call Instructions
43.2. Ray Tracing Commands
43.3. Shader Binding Table
43.4. Ray Tracing Pipeline Stack
43.5. Ray Tracing Capture Replay
43.6. Ray Tracing Validation
44. Memory Decompression
45. Video Coding
45.1. Video Picture Resources
45.2. Decoded Picture Buffer
45.3. Video Profiles
45.4. Video Capabilities
45.5. Video Sessions
45.6. Video Profile Compatibility
45.7. Video Session Parameters
45.8. Video Coding Scope
45.9. Video Coding Control
45.10. Inline Queries
45.11. Video Decode Operations
45.12. H.264 Decode Operations
45.13. H.265 Decode Operations
45.14. VP9 Decode Operations
45.15. AV1 Decode Operations
45.16. Video Encode Operations
45.17. Video Encode Intra Refresh
45.18. Video Encode Rate Control
45.19. Video Encode Quantization Maps
45.20. Video Encode R′G′B′ Conversion
45.21. H.264 Encode Operations
45.22. H.265 Encode Operations
45.23. AV1 Encode Operations
46. Optical Flow
46.1. Optical Flow Queues
46.2. Optical Flow Image Formats
46.3. Optical Flow Session
47. Execution Graphs
47.1. Pipeline Creation
47.2. Initializing Scratch Memory
47.3. Dispatching a Graph
47.4. Shader Enqueue
48. External Compute Queues
49. Data graphs
49.1. Pipeline Creation
49.2. Sessions
49.3. Dispatch
49.4. Properties
49.5. Processing Engines
49.6. Operations
50. Extending Vulkan
50.1. Functionality Levels
50.2. Instance and Device Versions
50.3. Core Versions
50.4. Layers
50.5. Extensions
50.6. Extension Dependencies
50.7. Compatibility Guarantees (Informative)
51. Features
51.1. Feature Requirements
51.2. Profile Features
52. Limits
52.1. Limit Requirements
52.2. Additional Multisampling Capabilities
52.3. Profile Limits
53. Formats
53.1. Format Definition
53.2. Format Properties
53.3. Required Format Support
54. Additional Capabilities
54.1. Additional Image Capabilities
54.2. Additional Buffer Capabilities
54.3. Additional Tensor Capabilities
54.4. Optional Semaphore Capabilities
54.5. Optional Fence Capabilities
54.6. Timestamp Calibration Capabilities
55. Debugging
55.1. Debug Utilities
55.2. Debug Markers
55.3. Debug Report Callbacks
55.4. Device Loss Debugging
55.5. Active Tooling Information
55.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: