Vulkan
®
1.2.148 - A Specification (with all registered extensions)
The Khronos
®
Vulkan Working Group
version 1.2.148,
2020-07-20 22:46:07Z
from git branch: master commit: a5c4300540d423f1cbd813afbf45f213ad8863ed
Table of Contents
1. Introduction
1.1. Document Conventions
2. Fundamentals
2.1. Host and Device Environment
2.2. Execution Model
2.3. Object Model
2.4. Application Binary Interface
2.5. Command Syntax and Duration
2.6. Threading Behavior
2.7. Errors
2.8. Numeric Representation and Computation
2.9. Fixed-Point Data Conversions
2.10. Common Object Types
3. Initialization
3.1. Command Function Pointers
3.2. Instances
4. Devices and Queues
4.1. Physical Devices
4.2. Devices
4.3. Queues
5. Command Buffers
5.1. Command Buffer Lifecycle
5.2. Command Pools
5.3. Command Buffer Allocation and Management
5.4. Command Buffer Recording
5.5. Command Buffer Submission
5.6. Queue Forward Progress
0. Preamble
5.7. Secondary Command Buffer Execution
5.8. Command Buffer Device Mask
6. Synchronization and Cache Control
6.1. Execution and Memory Dependencies
6.2. Implicit Synchronization Guarantees
6.3. Fences
6.4. Semaphores
6.5. Events
6.6. Pipeline Barriers
6.7. Memory Barriers
6.8. Wait Idle Operations
6.9. Host Write Ordering Guarantees
6.10. Synchronization and Multiple Physical Devices
6.11. Calibrated timestamps
7. Render Pass
7.1. Render Pass Creation
7.2. Render Pass Compatibility
7.3. Framebuffers
7.4. Render Pass Commands
8. Shaders
8.1. Shader Modules
8.2. Shader Execution
8.3. Shader Memory Access Ordering
8.4. Shader Inputs and Outputs
8.5. Task Shaders
8.6. Mesh Shaders
8.7. Vertex Shaders
8.8. Tessellation Control Shaders
8.9. Tessellation Evaluation Shaders
8.10. Geometry Shaders
8.11. Fragment Shaders
8.12. Compute Shaders
8.13. Interpolation Decorations
8.14. Ray Generation Shaders
8.15. Intersection Shaders
8.16. Any-Hit Shaders
8.17. Closest Hit Shaders
8.18. Miss Shaders
8.19. Callable Shaders
8.20. Static Use
8.21. Scope
8.22. Group Operations
8.23. Quad Group Operations
8.24. Derivative Operations
8.25. Helper Invocations
8.26. Cooperative Matrices
8.27. Validation Cache
9. Pipelines
9.1. Compute Pipelines
9.2. Graphics Pipelines
9.3. Pipeline destruction
9.4. Multiple Pipeline Creation
9.5. Pipeline Derivatives
9.6. Pipeline Cache
9.7. Specialization Constants
9.8. Pipeline Libraries
9.9. Pipeline Binding
9.10. Dynamic State
9.11. Pipeline Shader Information
9.12. Pipeline Compiler Control
9.13. Ray Tracing Pipeline
9.14. Pipeline Creation Feedback
10. Memory Allocation
10.1. Host Memory
10.2. Device Memory
11. Resource Creation
11.1. Buffers
11.2. Buffer Views
11.3. Images
11.4. Image Layouts
11.5. Image Views
11.6. Resource Memory Association
11.7. Resource Sharing Mode
11.8. Memory Aliasing
11.9. Acceleration Structures
12. Samplers
12.1. Sampler Y′C
B
C
R
conversion
13. Resource Descriptors
13.1. Descriptor Types
13.2. Descriptor Sets
13.3. Physical Storage Buffer Access
14. Shader Interfaces
14.1. Shader Input and Output Interfaces
14.2. Vertex Input Interface
14.3. Fragment Output Interface
14.4. Fragment Input Attachment Interface
14.5. Ray Tracing Pipeline Interface
14.6. Shader Resource Interface
14.7. Built-In Variables
15. Image Operations
15.1. Image Operations Overview
15.2. Conversion Formulas
15.3. Texel Input Operations
15.4. Texel Output Operations
15.5. Normalized Texel Coordinate Operations
15.6. Unnormalized Texel Coordinate Operations
15.7. Integer Texel Coordinate Operations
15.8. Image Sample Operations
15.9. Texel Footprint Evaluation
15.10. Image Operation Steps
16. Fragment Density Map Operations
16.1. Fragment Density Map Operations Overview
16.2. Fetch Density Value
16.3. Fragment Area Conversion
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. Transform Feedback Queries
17.8. Intel performance 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. Common Operation
19.2. Copying Data Between Buffers
19.3. Copying Data Between Images
19.4. Copying Data Between Buffers and Images
19.5. Image Copies with Scaling
19.6. Resolving Multisample Images
19.7. Buffer Markers
20. Drawing Commands
20.1. Primitive Topologies
20.2. Primitive Order
20.3. Programmable Primitive Shading
20.4. Conditional Rendering
20.5. Programmable Mesh Shading
21. Fixed-Function Vertex Processing
21.1. Vertex Attributes
21.2. Vertex Input Description
21.3. Vertex Attribute Divisor in Instanced Rendering
21.4. Example
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
23.5. Geometry Shader Passthrough
24. Mesh Shading
24.1. Task Shader Input
24.2. Task Shader Output
24.3. Mesh Generation
24.4. Mesh Shader Input
24.5. Mesh Shader Output Primitives
24.6. Mesh Shader Per-View Outputs
24.7. Mesh Shader Primitive Ordering
25. Fixed-Function Vertex Post-Processing
25.1. Transform Feedback
25.2. Viewport Swizzle
25.3. Flat Shading
25.4. Primitive Clipping
25.5. Clipping Shader Outputs
25.6. Controlling Viewport W Scaling
25.7. Coordinate Transformations
25.8. Render Pass Transform
25.9. Controlling the Viewport
26. Rasterization
26.1. Discarding Primitives Before Rasterization
26.2. Controlling the Vertex Stream Used for Rasterization
26.3. Rasterization Order
26.4. Multisampling
26.5. Custom Sample Locations
26.6. Shading Rate Image
26.7. Sample Shading
26.8. Barycentric Interpolation
26.9. Points
26.10. Line Segments
26.11. Polygons
27. Fragment Operations
27.1. Discard Rectangles Test
27.2. Scissor Test
27.3. Exclusive Scissor Test
27.4. Sample Mask Test
27.5. Multisample Coverage
27.6. Depth and Stencil Operations
27.7. Depth Bounds Test
27.8. Stencil Test
27.9. Depth Test
27.10. Representative Fragment Test
27.11. Sample Counting
27.12. Fragment Coverage To Color
27.13. Coverage Reduction
28. The Framebuffer
28.1. Blending
28.2. Logical Operations
28.3. Color Write Mask
29. Dispatching Commands
30. Device-Generated Commands
30.1. Indirect Commands Layout
30.2. Indirect Commands Generation And Execution
31. Sparse Resources
31.1. Sparse Resource Features
31.2. Sparse Buffers and Fully-Resident Images
31.3. Sparse Partially-Resident Buffers
31.4. Sparse Partially-Resident Images
31.5. Sparse Memory Aliasing
31.6. Sparse Resource Implementation Guidelines
31.7. Sparse Resource API
32. Window System Integration (WSI)
32.1. WSI Platform
32.2. WSI Surface
32.3. Presenting Directly to Display Devices
32.4. Querying for WSI Support
32.5. Surface Queries
32.6. Full Screen Exclusive Control
32.7. Device Group Queries
32.8. Display Timing Queries
32.9. WSI Swapchain
32.10. Hdr Metadata
33. Deferred Host Operations
33.1. Requesting Deferral
33.2. Deferred Host Operations API
34. Private Data
35. Ray Traversal
35.1. Ray Intersection Candidate Determination
35.2. Ray Intersection Culling
35.3. Ray Intersection Confirmation
35.4. Ray Closest Hit Determination
35.5. Ray Result Determination
36. Ray Tracing
36.1. Shader Call Instructions
36.2. Ray Tracing Commands
36.3. Shader Binding Table
36.4. Acceleration Structures
36.5. Host Acceleration Structure 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
39. Limits
39.1. Limit Requirements
39.2. Additional Multisampling Capabilities
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
41.5. Timestamp Calibration Capabilities
42. Debugging
42.1. Debug Utilities
42.2. Debug Markers
42.3. Debug Report Callbacks
42.4. Device Loss Debugging
42.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
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
Informative Descriptions
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.2
Version 1.1
Appendix E: Layers & Extensions (Informative)
List of Current Extensions
List of Provisional Extensions
List of Deprecated Extensions
Appendix F: API Boilerplate
Vulkan Header Files
Window System-Specific Header Control (Informative)
Provisional Extension Header Control (Informative)
Appendix G: Invariance
Repeatability
Multi-pass Algorithms
Invariance Rules
Tessellation Invariance
Glossary
Common Abbreviations
Prefixes
Appendix H: Credits (Informative)
Working Group Contributors to Vulkan
Other Credits
Search:
Loading… please wait.