Skip to content

Releases: KhronosGroup/SPIRV-Tools

Release v2026.3

Choose a tag to compare

@github-actions github-actions released this 11 Aug 17:13
b707790
  • General
    • Support SPV_QCOM_multiple_wait_queues, SPV_KHR_opacity_micromap, and SPV_EXT_ocp_microscaling_types (#6671, #6670, #6772)
    • Add ArmExperimentalMLOperations and NonSemantic.Graph.DebugInfo instruction sets (#6692, #6666)
    • Fix unbounded memory usage in FriendlyNameMapper (#6763)
    • Improved hex-float compilation and float equality testing (#6778, #6783)
    • Various build system and dependency updates (Bazel, GN, Protobuf, Abseil)
  • Optimizer
    • Stability fixes for DeadBranchElimPass, CodeSinkingPass, and OrderBlocks (#6764, #6703, #6676)
    • Improved handling of tensor constants, non-semantic instructions, and loop decorations (#6684, #6721, #6719, #6690)
    • Add folding rule for extract from copy logical and prevent word limit overflows (#6725, #6722)
  • Validator
    • Support SPV_EXT_ocp_microscaling_types, SPV_EXT_split_barrier, and SPV_ARM_graph (#6779, #6732, #6694)
    • Support for SPV_NV_cooperative_matrix_decode_vector and Intel extensions (#6693, #6717, #6665)
    • Enhanced error reporting with source line printing and Shader Debug Info (#6648, #6698, #6691, #6686, #6685, #6681)
    • Correctness fixes for ray queries, descriptors, OpSpecConstantOp, and array validation (#6710, #6729, #6731, #6777, #6709)
    • Disallow duplicate targets for OpGroupDecorate and multiple graph entry points (#6720, #6754)
  • Assembler/Disassembler
    • Support for SPV_QCOM_image_processing3 (#6776)
    • Performance and correctness improvements in the disassembler and tools (#6757, #6650)

Release v2026.2

Choose a tag to compare

@github-actions github-actions released this 28 May 18:23
0539c81
  • General
    • Fix build for NonSemanticShaderDebugInfo in GN (#6647)
    • Support SPV_KHR_abort and SPV_KHR_constant_data (#6625)
    • Support versioned NonSemanticShaderDebugInfo imports (#6555)
    • Fix C++20 compilation issue with large integer literals (#6557)
    • Remove SVA (Shader Validation Assistant) (#6550)
    • Improved Kokoro build configuration and storage usage (#6573, #6551)
    • Various dependency rolls and CI updates
  • Optimizer
    • Fold OpCompositeExtract feeding from OpCopyLogical or OpLoad (#6614)
    • Fix DebugValue placements and initialization (#6599, #6626)
    • Support OpConstantCompositeReplicateEXT in constant manager (#6616)
    • Aggressive DCE support for untyped pointers and OpUntypedVariableKHR (#6602, #6607)
    • Optimize SPV_EXT_opacity_micromap and SPV_EXT_shader_invocation_reorder (#6571)
    • Add LegalizeMultidimArrayPass and improve access chain reordering (#6535, #6545)
    • Added various folding and reassociation rules (#6453, #6504, #6454, #6456)
    • Support for optimizing SPV_NV_push_constant_bank (#6547)
  • Validator
    • Add validation for 4-bit integer types (#6644)
    • Support and validate SPV_KHR_constant_data (OpConstantDataKHR, OpSpecConstantDataKHR) (#6646, #6643, #6642)
    • Validate NonSemanticShaderDebugInfo 101 and versioned imports (#6635, #6555)
    • Improve validation for Intel SPIR-V extensions and various KHR/EXT extensions (#6232, #6589, #6583, etc.)
    • Extensive validation coverage for OpSpecConstantOp (#6596, #6585, #6582, #6579, #6578, #6576)
    • Check output location uniqueness for GeometryStreams (#6630)
    • Improved validation for variables, constants, and types (#6634, #6598, #6595, #6568)
    • Added validation for several new opcodes and capabilities (OpGroupAsyncCopy, OpLifetimeStart/Stop, etc.) (#6519, #6514, #6515)
  • Assembler/Disassembler
    • Add --handle-unknown-opcodes flag to spirv-dis (#6604)
    • Handle leading + in hex float literals in assembler (#6565)
    • Validate bit width of float types with explicit encodings in assembler (#6562)

Release v2026.1

Choose a tag to compare

@github-actions github-actions released this 26 Jan 15:39
fbe4f3a
  • General
    • spirv-tools: Fix infinite recursion in SmallVector::operator== on MSVC (#6470)
    • Add support for SPV_NV_push_constant_bank (#6507)
    • Enable UseMultiToolTask for msbuild performance (#6472)
    • Fix asan error in stack usage (#6434)
    • Fix crash in array length validation (#6500)
    • Fix infinite loop in logical pointer validation (#6450)
    • Implement SPV_EXT_descriptor_heap (#6503)
  • Optimizer
    • Adding constant folding for NMin, NMax and NClamp (#6433)
    • Also remap DebugScope instructions (#6501)
    • Change ValueNumber to use spivOpcodeIsCommutativeBinaryOperator (#6431)
    • Extending factoring folding rules to support subtraction (#6432)
    • Extending negation folding rules (#6444)
    • Folding Rules For Common Comparisons (#6437)
    • Folding rules for negation and cancellation (#6452)
    • Harden CFGCleanupPass against ID overflow (#6439)
    • Harden CombineAccessChainsPass against ID overflow (#6440)
    • Harden CopyPropagateArraysPass against ID overflow (#6441)
    • Remove lingering debug-scopes. (#6416)
    • add adce test for debug declare (#6462)
    • fix adce when ns debug info present (#6217) (#6420)
  • Validator
    • Handle OpTypeVectorIdEXT in validate_interfaces.cpp (#6492)
    • Validate SPV_EXT_long_vector (#6471)
    • Validate floats/int Image Operands are 32-bit (#6477)
    • Add Mesh Shading Read Output check (#6426)
    • Add Mesh/Task to check for LocalSize (#6459)
    • Add missing LOD non-zero MS (#6496)
    • Add width to IsFloatScalarType (#6489)
    • Better atomic storage class message (#6425)
    • Better error message when types are the same (#6427)
    • Check Mesh Topology builtin by entry point (#6457)
    • Check for CoopMat scope (#6442)
    • Combine Image Coordinate checks (#6494)
    • Fix crash with bad OpUntypedArrayLengthKHR (#6493)
    • Label VUID 10823 (#6488)
    • Provide RuntimeDescriptorArray hint in message (#6448)
    • Use new StorageClassToString util (#6460)
    • Use validation_state.cpp helpers (#6478)
    • Validate ImageQuerySizeLod is 32-bit (#6479)
    • Validate Mesh Shader output are an array (#6449)
    • add missing relational ops to InvalidTypePass (#6495)
  • Diff
    • diff: Match OpExtInst in debug and types/values sections (#6430)

Release v2025.5

Choose a tag to compare

@github-actions github-actions released this 16 Dec 14:52
262bdab
  • General
  • Validator
  • Optimizer
    • spirv-opt: Add a folding rule for OpBitReverse and fix OpBitCast to support lower to higher bit conversions. (#6321)
    • spirv-opt: Add basic support for graphs (#6351)
    • spirv-opt: Adding folding rules for bitwise and (#6361)
    • spirv-opt: Adding normal form to ValueNumber calculation (#6371)
    • spirv-opt: Cache IsReadOnlyLoad in ValueNumberTable (#6385)
    • spirv-opt: Clone decorations when unrolling loops (#6373)
    • spirv-opt: Correct ADCE bug keeping dead DebugValue Value operands (#6368)
    • spirv-opt: Fix constant folding for OpBitcast on signed integers. (#6378)
    • spirv-opt: Fix id overflow in ConvertToSampledImage (#6339)
    • spirv-opt: Handle ID overflow in AggressiveDCEPass (#6366)
    • spirv-opt: Handle ID overflow in SplitCombinedImageSamplerPass (#6406)
    • spirv-opt: Handle id overflow in CCP and constant folding (#6367)
    • spirv-opt: Handle id overflow in MergeReturnPass (#6340)
    • spirv-opt: Handle id overflow in amd_ext_to_khr (#6403)
    • Add SPV_KHR_maximal_reconvergence to the allowlist (#6372)
    • Adding folding rules for commutive bitwise operations (xor/or/and). (#6358)
    • [OPT] Move definition of Pass::Status to Utils (#6402)
  • Validator:
    • spirv-val: Add LocalInvocationIndex checks (#6395)
    • spirv-val: Add validation for SPV_KHR_fma (#6388)
    • spirv-val: Break up the 3000 line ValidateExtInst function (#6364)
    • spirv-val: Fix VUID churn for 10685 (#6389)
    • spirv-val: Improve Explicit Layout message (#6331)
    • spirv-val: Use spvOpcodeString consistently (#6393)
    • Relax validation rule for DebugGlobalVariable variable (#6382)
    • Validate SPV_EXT_shader_64bit_indexing (#6376)
    • Validate logical pointer restrictions (#6240)
    • [tools/val] fix u8str for real this time (#6341)
    • Add VK_EXT_shader_uniform_buffer_unsized_array (#6386)
  • Assembler
    • Add as/dis support for Arm.MotionEngine.100 extended instruction set (#6284)
    • spirv-as: fix command line for stdin as input (#6398)

v2025.4

Choose a tag to compare

@s-perron s-perron released this 26 Sep 13:15
7f2d9ee
Prepare release v2025.4 (#6335)

v2025.3

Choose a tag to compare

@s-perron s-perron released this 26 Sep 13:14
33e0256
Prepare release v2025.3 (#6192)

V2025.2

Choose a tag to compare

@s-perron s-perron released this 26 Sep 13:14
a62abcb
[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

Choose a tag to compare

@github-actions github-actions released this 22 Apr 14:56
f289d04
  • 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

Choose a tag to compare

@github-actions github-actions released this 22 Apr 15:19
4d2f0b4
  • 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

Choose a tag to compare

@github-actions github-actions released this 25 Jun 13:59
0cfe9e7
  • 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)