SPIR-V, Extended Instruction Set, and Extension Specifications
SPIR-V is a binary intermediate language for representing
graphical-shader stages and compute kernels for multiple Khronos APIs,
including OpenCL, OpenGL, and Vulkan.
SPIR-V defines a new language and is a successor to the original
Khronos SPIR, which supported only OpenCL device programs.
This registry contains or points to:
SPIR-V 1.5 Unified Specification, Headers, and Grammar
SPIR-V 1.5 was released Sep 13, 2019, and includes all previous versions.
SPIR-V 1.4 was released May 7, 2019.
- SPIR-V 1.5 Unified Specification, Revision 3, 24-Apr-2020
- Header files are available in the Khronos GitHub project
SPIRV-Headers in the directory
include/spirv/unified1/:
- Machine-readable JSON grammar:
Extended Instruction Sets and Headers
There are separate specifications describing extended instruction sets:
-
OpenCL C Language
-
Graphics Shading Languages
-
OpenCL Debug Information, Version 2, Revision 2
OpenCL Debug Information, Version 1
SPIR-V Extension Specifications
These are located in the Khronos GitHub project SPIRV-Registry.
New extensions can be proposed as a PR to that repository.
-
SPV_AMD_shader_explicit_vertex_parameter
-
SPV_AMD_shader_trinary_minmax
-
SPV_AMD_gcn_shader
-
SPV_KHR_shader_ballot
-
SPV_AMD_shader_ballot
-
SPV_AMD_gpu_shader_half_float
-
SPV_KHR_shader_draw_parameters
-
SPV_KHR_subgroup_vote
-
SPV_KHR_16bit_storage
-
SPV_KHR_device_group
-
SPV_KHR_multiview
-
SPV_NVX_multiview_per_view_attributes
-
SPV_NV_viewport_array2
-
SPV_NV_stereo_view_rendering
-
SPV_NV_sample_mask_override_coverage
-
SPV_NV_geometry_shader_passthrough
-
SPV_AMD_texture_gather_bias_lod
-
SPV_KHR_storage_buffer_storage_class
-
SPV_KHR_variable_pointers
-
SPV_AMD_gpu_shader_int16
-
SPV_KHR_post_depth_coverage
-
SPV_KHR_shader_atomic_counter_ops
-
SPV_EXT_shader_stencil_export
-
SPV_EXT_shader_viewport_index_layer
-
SPV_AMD_shader_image_load_store_lod
-
SPV_AMD_shader_fragment_mask
-
SPV_EXT_fragment_fully_covered
-
SPV_AMD_gpu_shader_half_float_fetch
-
SPV_GOOGLE_decorate_string
-
SPV_GOOGLE_hlsl_functionality1
-
SPV_NV_shader_subgroup_partitioned
-
SPV_EXT_descriptor_indexing
-
SPV_KHR_8bit_storage
-
SPV_KHR_vulkan_memory_model
-
SPV_NV_ray_tracing
-
SPV_NV_compute_shader_derivatives
-
SPV_NV_fragment_shader_barycentric
-
SPV_NV_mesh_shader
-
SPV_NV_shader_image_footprint
-
SPV_NV_shading_rate
-
SPV_INTEL_subgroups
-
SPV_INTEL_media_block_io
-
SPV_INTEL_device_side_avc_motion_estimation
-
SPV_EXT_fragment_invocation_density
-
SPV_KHR_no_integer_wrap_decoration
-
SPV_KHR_float_controls
-
SPV_EXT_physical_storage_buffer
-
SPV_INTEL_fpga_memory_attributes
-
SPV_NV_cooperative_matrix
-
SPV_INTEL_shader_integer_functions2
-
SPV_INTEL_fpga_loop_controls
-
SPV_EXT_fragment_shader_interlock
-
SPV_NV_shader_sm_builtins
-
SPV_KHR_shader_clock
-
SPV_INTEL_unstructured_loop_controls
-
SPV_EXT_demote_to_helper_invocation
-
SPV_INTEL_fpga_reg
-
SPV_INTEL_blocking_pipes
-
SPV_KHR_physical_storage_buffer
Vendor and Token Registry
The SPIR-V Vendor and Token Registry is an XML file serving as the canonical document defining reserved vendor IDs
and binary token ranges.
It is available in the Khronos GitHub project at
spir-v.xml.
If you need a vendor ID, or a reserved range of opcode or operand token values for your
implementation, please file an issue or pull request in the
SPIRV-Headers
project.
Older Specification Versions
Older specifications are superceded by the Unified Specification.
Providing Feedback on the Registry
Khronos welcomes feedback on SPIR-V. To provide feedback, please file an
issue in the SPIRV-Headers
project.