binary usually also passed through some general optimizations. SPIR-V's binary representation also offers some degree of obfuscation, which might appeal to some software vendors as a form of intellectual property protection; however, SPIR-V contains ample information for reflection and tools exist that translate SPIR-V back into high quality, human readable high level code. A UMD needs only apply optimizations, that are specific to the supported hardware. SPIR-V Specification (Provisional) GLSL IR cgit.freedesktop.org/mesa/mesa/tree/src/compiler/glsl/README XDC2014, Matt Turner: , Matt Turner - GLSL compiler: Where we've been and where we're going XDC2015, Matt Turner: , Mesa IR NIR NIR (New Internal Representation) was introduced to overcome TGSI limitations. NIR was extended in last und actual releases as base of Spir-V support and is since 2016 main development area. LLVMpipe, i965, RadeonSI, Nouveau, freedreno, vc4 are changed to NIR from TGSI. RADV, Zink and other new drivers starts with NIR. All drivers with full OpenGL 4.6 support are related to NIR by SPIR-V support. Also AMD r600 has a fork with NIR for better support of HD5000 and HD6000 series. This option for r600 is default since Mesa 21.0. Connor Abbott - NIR, or moving beyond GLSL IR in Mesa XDC2014 (Mesa-dev) 2014-12-15 Reintroducing NIR, a new IR for mesa cgit.freedesktop.org/mesa/mesa/tree/src/compiler/nir/README fosdem.org/2016/schedule/event/i965_nir/attachments/slides/1113/export/events/attachments/i965_nir/slides/1113/nir_vec4_i965_fosdem_2016_rc1.pdf NIR in RadeonSI Nouveau update 2018 Nouveau with NIR in Mesa 19.3 TGSI The Tungsten Graphics Shader Infrastructure (TGSI) was introduced in 2008 by Tungsten Graphics. All Gallium3D-style UMDs ingest TGSI. NIR is now Main development area, so TGSI is only for older driver like r300g default infrastructure and will be deprecated in some years. GLSL-To-TGSI code will be deleted in Mesa 22.2. Default is newer NIR-to-TGSI with GLSL-to-NIR for all native NIR drivers. Some older TGSI drivers are supported with this NIR Code path. Later NIR-To-TGSI will be deprecated for native NIR drivers only. LLVM IR The UMDs radeonsi and llvmpipe do not output machine code, but instead LLVM IR. From here on, LLVM does optimizations and the compilation to machine code. This does mean, that a certain minimum version of LLVM has to be installed as well. RADV ACO IR RADV ACO uses own IR that is close to NIR, for optimizing and generating end binary code for Vulkan SPIR-V shaders on top of Radeon GPUs (GCN 1+, aka GFX6+) GPUs. As of version 20.1.0 the ACO is only used in RADV (Vulkan driver) and not in RadeonSI yet. Mesa's