Vulkan
®
1.3.265 - A Specification (with KHR extensions)
The Khronos
®
Vulkan Working Group
version 1.3.265,
2023-09-23 07:22:48Z
from git branch: github-main commit: 4871ab9e57fb07f98bf016cb10a3088924976e29
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
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. Common Render Pass Data Races (Informative)
9. Shaders
9.1. Shader Modules
9.2. Binding Shaders
9.3. Shader Execution
9.4. Shader Memory Access Ordering
9.5. Shader Inputs and Outputs
9.6. Vertex Shaders
9.7. Tessellation Control Shaders
9.8. Tessellation Evaluation Shaders
9.9. Geometry Shaders
9.10. Fragment Shaders
9.11. Compute Shaders
9.12. Ray Generation Shaders
9.13. Intersection Shaders
9.14. Any-Hit Shaders
9.15. Closest Hit Shaders
9.16. Miss Shaders
9.17. Callable Shaders
9.18. Interpolation decorations
9.19. Static Use
9.20. Scope
9.21. Group Operations
9.22. Quad Group Operations
9.23. Derivative Operations
9.24. Helper Invocations
9.25. Cooperative Matrices
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 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. Resource Memory Association
12.8. Resource Sharing Mode
12.9. Memory Aliasing
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
15. Shader Interfaces
15.1. Shader Input and Output Interfaces
15.2. Vertex Input Interface
15.3. Fragment Output Interface
15.4. Fragment Input Attachment Interface
15.5. Ray Tracing Pipeline Interface
15.6. Shader Resource Interface
15.7. 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. Image Operation Steps
16.10. Image Query Instructions
17. Queries
17.1. Query Pools
17.2. Query Operation
17.3. Occlusion Queries
17.4. Pipeline Statistics Queries
17.5. Timestamp Queries
17.6. Performance Queries
17.7. Result Status Queries
17.8. Video Encode Feedback Queries
18. Clear Commands
18.1. Clearing Images Outside A Render Pass Instance
18.2. Clearing Images Inside A Render Pass Instance
18.3. Clear Values
18.4. Filling Buffers
18.5. Updating Buffers
19. Copy Commands
19.1. Copying Data Between Buffers
19.2. Copying Data Between Images
19.3. Copying Data Between Buffers and Images
19.4. Image Copies with Scaling
19.5. Resolving Multisample Images
20. Drawing Commands
20.1. Primitive Topologies
20.2. Primitive Order
20.3. Programmable Primitive Shading
21. Fixed-Function Vertex Processing
21.1. Vertex Attributes
21.2. Vertex Input Description
21.3. Vertex Input Address Calculation
22. Tessellation
22.1. Tessellator
22.2. Tessellator Patch Discard
22.3. Tessellator Spacing
22.4. Tessellation Primitive Ordering
22.5. Tessellator Vertex Winding Order
22.6. Triangle Tessellation
22.7. Quad Tessellation
22.8. Isoline Tessellation
22.9. Tessellation Point Mode
22.10. Tessellation Pipeline State
23. Geometry Shading
23.1. Geometry Shader Input Primitives
23.2. Geometry Shader Output Primitives
23.3. Multiple Invocations of Geometry Shaders
23.4. Geometry Shader Primitive Ordering
24. Fixed-Function Vertex Post-Processing
24.1. Flat Shading
24.2. Primitive Clipping
24.3. Clipping Shader Outputs
24.4. Coordinate Transformations
24.5. Controlling the Viewport
25. Rasterization
25.1. Discarding Primitives Before Rasterization
25.2. Rasterization Order
25.3. Multisampling
25.4. Fragment Shading Rates
25.5. Sample Shading
25.6. Barycentric Interpolation
25.7. Points
25.8. Line Segments
25.9. Polygons
26. Fragment Operations
26.1. Scissor Test
26.2. Sample Mask Test
26.3. Fragment Shading
26.4. Multisample Coverage
26.5. Depth and Stencil Operations
26.6. Depth Bounds Test
26.7. Stencil Test
26.8. Depth Test
26.9. Sample Counting
26.10. Coverage Reduction
27. The Framebuffer
27.1. Blending
27.2. Logical Operations
27.3. Color Write Mask
28. Dispatching Commands
29. Sparse Resources
29.1. Sparse Resource Features
29.2. Sparse Buffers and Fully-Resident Images
29.3. Sparse Partially-Resident Buffers
29.4. Sparse Partially-Resident Images
29.5. Sparse Memory Aliasing
29.6. Sparse Resource Implementation Guidelines (Informative)
29.7. Sparse Resource API
30. Window System Integration (WSI)
30.1. WSI Platform
30.2. WSI Surface
30.3. Presenting Directly to Display Devices
30.4. Querying for WSI Support
30.5. Surface Queries
30.6. Device Group Queries
30.7. Present Wait
30.8. WSI Swapchain
31. Deferred Host Operations
31.1. Requesting Deferral
31.2. Deferred Host Operations API
32. Private Data
33. Acceleration Structures
33.1. Acceleration Structures
33.2. Host Acceleration Structure Operations
34. Ray Traversal
34.1. Ray Intersection Candidate Determination
34.2. Ray Intersection Culling
34.3. Ray Intersection Confirmation
34.4. Ray Closest Hit Determination
34.5. Ray Result Determination
35. Ray Tracing
35.1. Shader Call Instructions
35.2. Ray Tracing Commands
35.3. Shader Binding Table
35.4. Ray Tracing Pipeline Stack
35.5. Ray Tracing Capture Replay
36. Video Coding
36.1. Video Picture Resources
36.2. Decoded Picture Buffer
36.3. Video Profiles
36.4. Video Capabilities
36.5. Video Sessions
36.6. Video Profile Compatibility
36.7. Video Session Parameters
36.8. Video Coding Scope
36.9. Video Coding Control
36.10. Video Decode Operations
36.11. H.264 Decode Operations
36.12. H.265 Decode Operations
36.13. Video Encode Operations
37. Extending Vulkan
37.1. Instance and Device Functionality
37.2. Core Versions
37.3. Layers
37.4. Extensions
37.5. Extension Dependencies
37.6. Compatibility Guarantees (Informative)
38. Features
38.1. Feature Requirements
38.2. Profile Features
39. Limits
39.1. Limit Requirements
39.2. Profile Limits
40. Formats
40.1. Format Definition
40.2. Format Properties
40.3. Required Format Support
41. Additional Capabilities
41.1. Additional Image Capabilities
41.2. Additional Buffer Capabilities
41.3. Optional Semaphore Capabilities
41.4. Optional Fence Capabilities
42. Debugging
42.1. 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
Ray Query Precision and Operation
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
Appendix C: Compressed Image Formats
Block-Compressed Image Formats
ETC Compressed Image Formats
ASTC 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: