Vulkan
®
1.3.264 - A Specification (with all registered extensions)
The Khronos
®
Vulkan Working Group
version 1.3.264,
2023-09-19 20:08:58Z
from git branch: VK_EXT_present_timing commit: 23ebbecac0b3f21b7887e2a515f94882e93c4c47
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. Common Object Types
3.12. 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. 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)
9. Shaders
9.1. Shader Modules
9.2. Shader Module Identifiers
9.3. Binding Shaders
9.4. Shader Execution
9.5. Shader Memory Access Ordering
9.6. Shader Inputs and Outputs
9.7. Task Shaders
9.8. Mesh Shaders
9.9. Cluster Culling Shaders
9.10. Vertex Shaders
9.11. Tessellation Control Shaders
9.12. Tessellation Evaluation Shaders
9.13. Geometry Shaders
9.14. Fragment Shaders
9.15. Compute Shaders
9.16. Ray Generation Shaders
9.17. Intersection Shaders
9.18. Any-Hit Shaders
9.19. Closest Hit Shaders
9.20. Miss Shaders
9.21. Callable Shaders
9.22. Interpolation decorations
9.23. Static Use
9.24. Scope
9.25. Group Operations
9.26. Quad Group Operations
9.27. Derivative Operations
9.28. Helper Invocations
9.29. Cooperative Matrices
9.30. Validation Cache
10. Pipelines
10.1. Compute Pipelines
10.2. Graphics Pipelines
10.3. Ray Tracing Pipelines
10.4. Pipeline Destruction
10.5. Multiple Pipeline Creation
10.6. Pipeline Derivatives
10.7. Pipeline Cache
10.8. Specialization Constants
10.9. Pipeline Libraries
10.10. Pipeline Binding
10.11. Dynamic State
10.12. Pipeline Properties and Shader Information
10.13. Pipeline Compiler Control
10.14. 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. Images
12.4. Image Layouts
12.5. Image Views
12.6. Acceleration Structures
12.7. Micromaps
12.8. Resource Memory Association
12.9. Resource Sharing Mode
12.10. Memory Aliasing
12.11. Buffer Collections
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 Input Attachment Interface
15.6. Ray Tracing Pipeline Interface
15.7. Shader Resource Interface
15.8. 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. Queries
18.1. Query Pools
18.2. Query Operation
18.3. Occlusion Queries
18.4. Pipeline Statistics Queries
18.5. Timestamp Queries
18.6. Performance Queries
18.7. Transform Feedback Queries
18.8. Primitives Generated Queries
18.9. Mesh Shader Queries
18.10. Intel performance queries
18.11. Result Status Queries
18.12. Video Encode Feedback Queries
19. Clear Commands
19.1. Clearing Images Outside A Render Pass Instance
19.2. Clearing Images Inside A Render Pass Instance
19.3. Clear Values
19.4. Filling Buffers
19.5. Updating Buffers
20. Copy Commands
20.1. Copying Data Between Buffers
20.2. Copying Data Between Images
20.3. Copying Data Between Buffers and Images
20.4. Indirect Copies
20.5. Image Copies with Scaling
20.6. Resolving Multisample Images
20.7. Buffer Markers
21. Drawing Commands
21.1. Primitive Topologies
21.2. Primitive Order
21.3. Programmable Primitive Shading
21.4. Conditional Rendering
21.5. Programmable Mesh Shading
21.6. Programmable Cluster Culling Shading
22. Fixed-Function Vertex Processing
22.1. Vertex Attributes
22.2. Vertex Input Description
22.3. Vertex Attribute Divisor in Instanced Rendering
22.4. Vertex Input Address Calculation
23. Tessellation
23.1. Tessellator
23.2. Tessellator Patch Discard
23.3. Tessellator Spacing
23.4. Tessellation Primitive Ordering
23.5. Tessellator Vertex Winding Order
23.6. Triangle Tessellation
23.7. Quad Tessellation
23.8. Isoline Tessellation
23.9. Tessellation Point Mode
23.10. Tessellation Pipeline State
24. Geometry Shading
24.1. Geometry Shader Input Primitives
24.2. Geometry Shader Output Primitives
24.3. Multiple Invocations of Geometry Shaders
24.4. Geometry Shader Primitive Ordering
24.5. Geometry Shader Passthrough
25. Mesh Shading
25.1. Task Shader Input
25.2. Task Shader Output
25.3. Mesh Generation
25.4. Mesh Shader Input
25.5. Mesh Shader Output
25.6. Mesh Shader Per-View Outputs
25.7. Mesh Shader Primitive Ordering
26. Cluster Culling Shading
26.1. Cluster Culling Shader Input
26.2. Cluster Culling Shader Output
26.3. Cluster Culling Shader Cluster Ordering
26.4. Cluster Culling Shader Primitive Ordering
27. Fixed-Function Vertex Post-Processing
27.1. Transform Feedback
27.2. Viewport Swizzle
27.3. Flat Shading
27.4. Primitive Clipping
27.5. Clipping Shader Outputs
27.6. Controlling Viewport W Scaling
27.7. Coordinate Transformations
27.8. Render Pass Transform
27.9. Controlling the Viewport
28. Rasterization
28.1. Discarding Primitives Before Rasterization
28.2. Controlling the Vertex Stream Used for Rasterization
28.3. Rasterization Order
28.4. Multisampling
28.5. Custom Sample Locations
28.6. Fragment Shading Rates
28.7. Shading Rate Image
28.8. Sample Shading
28.9. Barycentric Interpolation
28.10. Points
28.11. Line Segments
28.12. Polygons
29. Fragment Operations
29.1. Discard Rectangles Test
29.2. Scissor Test
29.3. Exclusive Scissor Test
29.4. Sample Mask Test
29.5. Fragment Shading
29.6. Multisample Coverage
29.7. Depth and Stencil Operations
29.8. Depth Bounds Test
29.9. Stencil Test
29.10. Depth Test
29.11. Representative Fragment Test
29.12. Sample Counting
29.13. Fragment Coverage To Color
29.14. Coverage Reduction
30. The Framebuffer
30.1. Blending
30.2. Logical Operations
30.3. Color Write Mask
30.4. Color Write Enable
30.5. Framebuffer Query Instructions
31. Dispatching Commands
32. Device-Generated Commands
32.1. Indirect Commands Layout
32.2. Indirect Commands Generation And Execution
33. Sparse Resources
33.1. Sparse Resource Features
33.2. Sparse Buffers and Fully-Resident Images
33.3. Sparse Partially-Resident Buffers
33.4. Sparse Partially-Resident Images
33.5. Sparse Memory Aliasing
33.6. Sparse Resource Implementation Guidelines (Informative)
33.7. Sparse Resource API
34. Window System Integration (WSI)
34.1. WSI Platform
34.2. WSI Surface
34.3. Presenting Directly to Display Devices
34.4. Querying for WSI Support
34.5. Surface Queries
34.6. Full Screen Exclusive Control
34.7. Device Group Queries
34.8. Present Timing Queries
34.9. Present Wait
34.10. WSI Swapchain
34.11. Hdr Metadata
34.12. Present Barrier
35. Deferred Host Operations
35.1. Requesting Deferral
35.2. Deferred Host Operations API
36. Private Data
37. Acceleration Structures
37.1. Acceleration Structures
37.2. Host Acceleration Structure Operations
38. Micromap
38.1. Micromaps
38.2. Host Micromap Operations
39. Ray Traversal
39.1. Ray Intersection Candidate Determination
39.2. Ray Intersection Culling
39.3. Ray Intersection Confirmation
39.4. Ray Closest Hit Determination
39.5. Ray Result Determination
40. Ray Tracing
40.1. Shader Call Instructions
40.2. Ray Tracing Commands
40.3. Shader Binding Table
40.4. Ray Tracing Pipeline Stack
40.5. Ray Tracing Capture Replay
41. Memory Decompression
42. Video Coding
42.1. Video Picture Resources
42.2. Decoded Picture Buffer
42.3. Video Profiles
42.4. Video Capabilities
42.5. Video Sessions
42.6. Video Profile Compatibility
42.7. Video Session Parameters
42.8. Video Coding Scope
42.9. Video Coding Control
42.10. Video Decode Operations
42.11. H.264 Decode Operations
42.12. H.265 Decode Operations
42.13. Video Encode Operations
42.14. Encode H.264
42.15. Encode H.265
43. Optical Flow
43.1. Optical Flow Queues
43.2. Optical Flow Image Formats
43.3. Optical Flow Session
44. Extending Vulkan
44.1. Instance and Device Functionality
44.2. Core Versions
44.3. Layers
44.4. Extensions
44.5. Extension Dependencies
44.6. Compatibility Guarantees (Informative)
45. Features
45.1. Feature Requirements
45.2. Profile Features
46. Limits
46.1. Limit Requirements
46.2. Additional Multisampling Capabilities
46.3. Profile Limits
47. Formats
47.1. Format Definition
47.2. Format Properties
47.3. Required Format Support
48. Additional Capabilities
48.1. Additional Image Capabilities
48.2. Additional Buffer Capabilities
48.3. Optional Semaphore Capabilities
48.4. Optional Fence Capabilities
48.5. Timestamp Calibration Capabilities
49. Debugging
49.1. Debug Utilities
49.2. Debug Markers
49.3. Debug Report Callbacks
49.4. Device Loss Debugging
49.5. Active Tooling Information
Appendix A: Vulkan Environment for SPIR-V
Versions and Formats
Capabilities
Validation Rules within a Module
Precision and Operation of SPIR-V Instructions
Signedness of SPIR-V Image Accesses
Image Format and Type Matching
Compatibility Between SPIR-V Image Formats 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)
Version 1.3
Version 1.2
Version 1.1
Version 1.0
Appendix E: Layers & Extensions (Informative)
Extension Dependencies
List of Current Extensions
List of Provisional Extensions
List of Deprecated Extensions
Appendix F: Vulkan Roadmap Milestones
Roadmap 2022
Appendix G: API Boilerplate
Vulkan Header Files
Window System-Specific Header Control (Informative)
Provisional Extension Header Control (Informative)
Video Std Headers
Appendix H: Invariance
Repeatability
Multi-pass Algorithms
Invariance Rules
Tessellation Invariance
Appendix I: Lexicon
Glossary
Common Abbreviations
Video-Specific Abbreviations
Prefixes
Appendix J: Credits (Informative)
Working Group Contributors to Vulkan
Other Credits
Loading… please wait.
Search: