13 Facts About SPIR-V

1.

SPIR-V was introduced in 2015 by the Khronos Group, and has since replaced the original SPIR, which was introduced in 2012.

FactSnippet No. 1,263,485
2.

Purposes of SPIR-V are to natively represent the primitives needed by compute and graphics; to separate high-level language from the interface to compute and graphics drivers; to be the distribution form, or distribute fully compiled binaries; to be a fully self-contained specification; and to support multiple APIs.

FactSnippet No. 1,263,486
3.

Example, SPIR-V allows the Vulkan API to use any shading language, including GLSL and HLSL.

FactSnippet No. 1,263,487
4.

SPIR-V can be compiled into several shading languages using SPIRV-Cross, so that these languages can be interconverted.

FactSnippet No. 1,263,488
5.

In target platforms, ingesting SPIR-V removes the need to build a high-level language source compiler into device drivers, which reduces driver complexity.

FactSnippet No. 1,263,489

Related searches

Vulkan API LLVM OpenCL
6.

SPIR prior to the 2015 SPIR-V release was based on the LLVM Intermediate Representation.

FactSnippet No. 1,263,490
7.

Support for ingestion of SPIR-V is incorporated in the core specification of OpenCL 2.

FactSnippet No. 1,263,491
8.

SPIR-V is a high-level intermediate language, exchanged in binary form.

FactSnippet No. 1,263,492
9.

SPIR-V can be extended by writing extensions to add semantics, or reserving ranges of the token values for the party's use.

FactSnippet No. 1,263,493
10.

SPIR-V can express calls to functions in a different compilation unit.

FactSnippet No. 1,263,494
11.

The standard version of SPIR-V uses this feature for OpenCL compute kernels, but not for shader stages, which the graphical APIs want fully linked into a single SPIR-V module.

FactSnippet No. 1,263,495
12.

SPIR-V module is used by a client API to support that module's features, which are classified through capabilities, and declared early in the module.

FactSnippet No. 1,263,496
13.

SPIR-V has been used to help deal with multiple versions of source-level languages.

FactSnippet No. 1,263,497