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′CBCR 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

    Loading… please wait.

    Version 1.2.148
    Last updated 2020-06-30 22:29:37 +0200