Skip to content

Releases: KhronosGroup/SPIRV-Tools

v2025.4

26 Sep 13:15
7f2d9ee

Choose a tag to compare

Prepare release v2025.4 (#6335)

v2025.3

26 Sep 13:14
33e0256

Choose a tag to compare

Prepare release v2025.3 (#6192)

V2025.2

26 Sep 13:14
a62abcb

Choose a tag to compare

[OPT] Don't fold n % 1.0 (#6100)

If values are not whole number, then the result is not 0. For example,
`(1.5 % 1.0) == 0.5`.

Fixes #6097

Release v2025.1

22 Apr 14:56
f289d04

Choose a tag to compare

  • General
    • diff: Fix crash in OpString matching (#5988)
    • Add SPV_AMDX_shader_enqueue version 2 support (#5838)
    • add support for SPV_INTEL_subgroup_matrix_multiply_accumulate (#5928)
    • update cmake_minimum_required to 3.22.1 (#5925)
    • Add OpImageSampleFootprintNV to IsAllowedSampledImageOperand (#5914)
    • assembler: ensure progress when seeking the version string (#5910)
  • Optimizer
    • opt: keep all OpSource instructions (#5901)
    • [opt] Fix bug opt::InstructionBuilder::AddVariable (#6007)
    • [OPT] Add SPV_KHR_ray_tracing to allow list (#5941)
    • opt: keep all OpSource instructions (#5901)
  • Validator
    • spirv-val: Add AllowVulkan32BitBitwise option (#6001)
    • Fix untyped pointer comparison validation (#6004)
    • spirv-val: Update VUIDs for 308 header (#5990)
    • spirv-val: fix env parsing for vk1.1spv1.4 (#5985)
    • Add validation for SPV_NV_linear_swept_spheres. (#5975)
    • Add validation SPV_NV_cluster_acceleration_structure. (#5974)
    • Improve the instruction diagnostic for some access chain errors (#5978)
    • Update physical storage buffer validation to match SPIR-V 1.6.5 (#5977)
    • Validate SPV_NV_cooperative_vector (#5972)
    • Fix layout checks with untyped pointers (#5970)
    • spirv-val: Update mislabeled VUIDs (#5964)
    • More explicit layout validation (#5958)
    • spirv-val: Add VK_KHR_maintenance8 support (#5951)
    • Add EXT_mesh_shader validation support (#5640)
    • spirv-val: Remove OpenCL ivec3 req (#5940)
    • spirv-val: Validate zero product workgroup size (#5407)
    • Relax DebugLine validation (#5916)
  • Linker
    • linker: remove LinkOnceODR decorations when linking executables (#5979)
    • fix: handle LinkOnceODR correctly (#5938)

Release v2024.4

22 Apr 15:19
4d2f0b4

Choose a tag to compare

  • General
    • Add FPEncoding operand type. (#5726)
    • Support SPV_KHR_untyped_pointers (#5736)
    • add support for SPV_INTEL_global_variable_host_access (#5786)
    • Add support for SPV_KHR_compute_shader_derivative (#5817)
    • Accept hex representation as binary input (#5870)
    • Vulkan 1.4 support (#5899)
  • Optimizer
    • Add knowledge of cooperative matrices (#5720)
    • Add struct-packing pass and unit test. (#5778)
  • Validator
    • Validate presence of Stride operand to OpCooperativeMatrix{Load,Store}KHR (#5777)
    • Update sampled image validation (#5789)
    • Disallow stores according to VUID 06924 (#5368)
    • Add validation for SPV_NV_tensor_addressing and SPV_NV_cooperative_matrix2 (#5865)
  • Linker
    • allow linking functions with different pointer arguments (#5534)

Release v2024.3

25 Jun 13:59
0cfe9e7

Choose a tag to compare

  • General
  • Optimizer
    • Do not fold mul and adds to generate fmas (#5682)
    • add OpExtInst forward ref fixup pass (#5708)
  • Validator
    • Separate Location check for tess patch (#5654)
    • Validate MemoryAccessMask of OpCooperativeMatrixStoreKHR (#5668)
    • OpSampledImage extra validation (#5695)
    • add support for OpExtInstWithForwardRefs (#5698)A
  • Disassembler
    • add decorations to comments (#5675)
    • Add --nested-indent and --reorder-blocks (#5671)

Release v2024.2

25 Jun 14:00
dd4b663

Choose a tag to compare

  • General
    • Add SPIRV_TOOLS_EXPORT to public C++ API (#5591)
    • Use bazel 7 and bzlmod (#5601)
  • Optimizer
    • opt: add GroupNonUniformPartitionedNV capability to trim pass (#5648)
    • Fix rebuilding types with circular references. (#5637)
    • Add AliasedPointer decoration (#5635)
    • add support for vulkan-shader-profiler external passes (#5512)
  • Validator
    • A fix to support of SPV_QCOM_image_processing2 (#5646)
    • spirv-val: Add Vulkan check for Rect Dim in OpTypeImage (#5644)
    • Validate duplicate decorations and execution modes (#5641)
    • Validator: Support SPV_NV_raw_access_chains (#5568)

Release v2024.1

29 Mar 10:02
04896c4

Choose a tag to compare

IMPORTANT:
This release is the last one we will publish here until further notice. The official SDK releases can be found on LunarG's website. They offer 2 options: the prebuilt & tested binaries, or a list of known-good commits to build your own release binaries.

  • General
    • Add tooling support for SPV_KHR_maximal_reconvergence (#5542)
    • Add support for SPV_KHR_float_controls2 (#5543)
    • SPV_KHR_quad_control (#5547)
    • Fold 64-bit int operations (#5561)
    • update image enum tests to remove Kernel capability (#5562)
    • Support operand kind for SPV_INTEL_maximum_registers (#5580)
    • SPV_NV_shader_atomic_fp16_vector (#5581)
    • Support for SPV_QCOM_image_processing2 (#5582)
    • Fix access chain struct checks (#5592)
  • Optimizer
    • opt: add Int16 and Float16 to capability trim pass (#5519)
    • Add preserver-interface option to spirv-opt (#5524)
    • spirv-opt: Fix OpCompositeExtract relaxation with struct operands (#5536)
    • opt: Add VulkanMemoryModelDeviceScope to trim (#5544)
    • opt: Add TrimCapabilities pass to spirv-opt tool (#5545)
    • Add modify-maximal-reconvergence to spirv-opt help (#5546)
    • opt: add SPV_EXT_mesh_shader to opt allowlist (#5551)
    • opt: Add OpEntryPoint to DescriptorScalarReplacement pass (#5553)
    • opt: prevent meld to merge block with MaximalReconvergence (#5557)
    • [OPT] Use new instruction folder for for all opcodes in spec consti folding (#5569)
    • [OPT] Identify arrays with unknown length in copy prop arrays (#5570)
    • [OPT] Add removed unused interface var pass to legalization passes (#5579)
  • Validator
    • spirv-val: Re-enable OpControlBarrier VU (#5527)
    • spirv-val: Add Mesh Primitive Built-In validaiton (#5529)
    • spirv-val: Validate PhysicalStorageBuffer Stage Interface (#5539)
    • spirv-val: Multiple interface var with same SC (#5528)
    • spirv-val: Revert Validate PhysicalStorageBuffer Stage Interface (#5575)
    • spirv-val: Make Constant evaluation consistent (#5587)

SPIRV-Tools v2023.2

30 Mar 06:47
44d72a9

Choose a tag to compare

  • General
    • build: move from c++11 to c++17 (#4983)
    • tools: refactorize tools flags parsing. (#5111)
    • Add C interface for Optimizer (#5030)
    • libspirv.cpp: adds c++ api for spvBinaryParse (#5109)
    • build: change the way we set cxx version for bazel. (#5114)
  • Optimizer
    • Fix null pointer in FoldInsertWithConstants. (#5093)
    • Fix removal of dependent non-semantic instructions (#5122)
    • Remove duplicate lists of constant and type opcodes (#5106)
    • opt: fix spirv ABI on Linux again. (#5113)
  • Validator
    • Validate decoration of structs with RuntimeArray (#5094)
    • Validate operand type before operating on it (#5092)
    • spirv-val: Conditional Branch without an exit is invalid in loop header (#5069)
    • spirv-val: Initial SPV_EXT_mesh_shader builtins (#5080)

SPIRV-Tools v2023.1

18 Jan 21:57
63de608

Choose a tag to compare

v2023.1 2023-01-17

  • General
    • Renamed "master" to "main" (issue#5051)
    • Validate version 5 of clspv reflection (#5050)
    • Remove testing support for VS2015 (#5027)
    • Fix undef behaviour in hex float parsing (#5025)
    • Require C++11 or later (#5020)
  • Instrument
    • Instrument: Fix bindless checking for BufferDeviceAddress (#5049)
  • Optimizer
    • Optimize allocation of spvtools::opt::Instruction::operands_ (#5024)
    • spirv-opt: Fix OpCompositeInsert with Null Constant (#5008)
    • spirv-opt: Handle null CompositeInsert (#4998)
    • Add option to ADCE to remove output variables from interface. (#4994)
    • Add support for tesc, tese and geom to EliminateDead*Components (#4990)
    • Add pass to eliminate dead output components (#4982)
    • spirv-opt: Add const folding for CompositeInsert (#4943)
    • Add passes to eliminate dead output stores (#4970)
    • Prevent eliminating case constructs in block merging (#4976)
  • Validator
    • Fix layout validation (#5015)
    • Fix use of invalid analysis (#5013)
    • Fix infinite loop in validator (#5006)
    • Add validation support for SPV_NV_shader_invocation_reorder. (#4979)
    • Only validate full layout in Vulkan environments (#4972)
    • spirv-val: Label new Vulkan OpPtrAccessChain VUs (#4975)
    • spirv-val: Add OpPtrAccessChain Base checks (#4965)