Vulkan
®
1.3.265 - A Specification
The Khronos
®
Vulkan Working Group
version 1.3.265,
2023-09-23 07:34:06Z
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. Interpolation decorations
9.13. Static Use
9.14. Scope
9.15. Group Operations
9.16. Quad Group Operations
9.17. Derivative Operations
9.18. Helper Invocations
10. Pipelines
10.1. Compute Pipelines
10.2. Graphics Pipelines
10.3. Pipeline Destruction
10.4. Multiple Pipeline Creation
10.5. Pipeline Derivatives
10.6. Pipeline Cache
10.7. Specialization Constants
10.8. Pipeline Binding
10.9. Dynamic State
10.10. 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. Resource Memory Association
12.7. Resource Sharing Mode
12.8. 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. Shader Resource Interface
15.6. 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
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. Sample Shading
25.5. Points
25.6. Line Segments
25.7. 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. Private Data
31. Extending Vulkan
31.1. Instance and Device Functionality
31.2. Core Versions
31.3. Layers
31.4. Extensions
31.5. Extension Dependencies
31.6. Compatibility Guarantees (Informative)
32. Features
32.1. Feature Requirements
32.2. Profile Features
33. Limits
33.1. Limit Requirements
33.2. Profile Limits
34. Formats
34.1. Format Definition
34.2. Format Properties
34.3. Required Format Support
35. Additional Capabilities
35.1. Additional Image Capabilities
35.2. Additional Buffer Capabilities
35.3. Optional Semaphore Capabilities
35.4. Optional Fence Capabilities
36. Debugging
36.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
Appendix B: Memory Model
Agent
Memory Location
Allocation
Memory Operation
Reference
Program-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 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
Prefixes
Appendix J: Credits (Informative)
Working Group Contributors to Vulkan
Other Credits
Loading… please wait.
Search: