yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
54947913
main
Revision history for glslang
All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
NEXT
- Deprecate the HLSL front-end. It will be removed at the next major version. See issue #4210 for details.
- Add support for GL_EXT_opacity_micromap_ray_query_mode
- Add support for GL_EXT_clip_cull_distance and GL_ARB_cull_distance
- Fix extension checks on the remaining members of a redeclared instance-named block
- Fix an out-of-range block member index when a feature is used under
#extension all : warn
16.6.0 2026-09-10
New Extensions
- Implement
GL_EXT_cooperative_matrix_maintenance1 - Implement
GL_EXT_optional_input_attachment_index - Implement
DebugEntryPointforNonSemantic.Shader.DebugInfo102
SPV_KHR_abort / abortEXT
- Require the first parameter of
abortEXTto be a string literal, emit an error if it is not - Require the first parameter of
printfto be a string literal, emit an error if it is not - Fix abort message struct layout for matrix, vector, and aggregate arguments
- Pack the abort message with scalar layout when the shader requests
GL_EXT_scalar_block_layout - Pack the abort message with scalar layout unconditionally so that consumers use one fixed set of rules
- Fix abort message type to use separate value and laid out types, removing invalid
ArrayStrideon constant types - Fix
abortto handle boolean and opaque types correctly
API Changes
- Add access to the source entry point in the C API
Bug Fixes
- Fix relaxed Vulkan access chain traversal for buffer references
- Fix 32-bit identity fillers used in 16-bit matrix constructors
- Fix out-of-bounds slot access for
atomic_uintinreserveResourceSlot - Fix out-of-bounds read when folding component-wise intrinsics on matrices
- Fix out-of-bounds dereference on undeclared ray tracing location
- Fix out-of-bounds read on empty
entryPointsinpostProcessFeatures - Fix out-of-bounds read on short
coopMatPerElementNVargument list - Fix crash on empty struct initializers in cascading error mode
- Guard empty block member list in
getBlockSize - Validate argument count in
decomposeStructBufferMethods - Require constant scope and semantics operands in
memorySemanticsCheck - Fix string escaping in preprocessed output
- Fix
Aligneddecoration onbuffer_referenceswizzle-store read-modify-write load - Fold bit-cast conversions as constant expressions
- Fold hyperbolic functions (
sinh,cosh,tanh,asinh,acosh,atanh) as constant expressions - Improve parsing of
#pragma STDGL
Performance
- Replace linear search with a hash table for composite and struct constant creation in the SPIR-V builder
16.5.0 2026-07-31
New Extensions
- Implement
GLSL_EXT_split_barrier/SPV_EXT_split_barrier - Implement
GLSL_QCOM_multiple_wait_queues - Implement
GLSL_QCOM_image_processing3 - Implement
GL_EXT_function_control_attributes
API Changes
- Expose
TVarEntryInfoas part of the public API inShaderLang.h
Bug Fixes
- Fix undefined shifts and signed overflow in
#ifexpression evaluation - Fix out-of-bounds read when indexing
idInstructionandidDescriptor - Fix null dereference in iomapper when
uniformVarMapis empty - Fix out-of-bounds read on empty array initializer in
convertInitializerList - Fix stack overflow on deeply nested macro invocations, capping macro expansion depth at 200 and emitting an error
- Fix out-of-bounds read in
handlePragmawhen#pragma STDGLhas fewer than 4 tokens - Fix crash in preprocessor output when a backslash-newline continuation appears at end of input due to column underflow
- Fix crash on excess
#endifdirectives when a malformed#ifexpression desynchronizeselseSeen/ifdepthpreprocessor counters - Fix out-of-bounds write in
memberRemapperfor nestedbuffer_referenceblocks - Fix out-of-bounds read on long vector index in
checkIndex
Other
- Update SPIR-V size optimization and HLSL legalization pass lists to match spirv-tools, and add performance optimization option
- Increase
input_attachment_indexlimit toINT_MAX - Print compile and link error logs to stderr instead of stdout
16.4.0 2026-07-14
Descriptor Heap
- Implement
GLSL_EXT_structured_descriptor_heapwith SPIR-V layout generation, heap offset access, buffer references, matrix layout decorations, and correctreadonly/writeonlyqualifier propagation for buffer and image descriptors - Fix descriptor heap-bound buffer access to use typed pointers
- Omit
NonUniformdecoration when using descriptor heaps, as the SPIR-V spec does not require it - Add
--relax-set-binding-limitsoption to allow largelayout(set)andlayout(binding)values for descriptor heap-style workflows with sparse set spaces - Reject combined image samplers with
descriptor_heap
Compute Shader Derivatives
- Fix
GL_KHR_compute_shader_derivativesregressions on shaders using theGL_NVvariant - Update compute shader derivative rules to allow texture operations with implicit derivatives without extensions, falling back to LoD 0
New Extensions
- Implement
GL_EXT_ocp_microscaling_types - Implement
GL_NV_cooperative_matrix_decode_vector - Add basic support for
GL_NV_desktop_lowp_mediump - Implement
GL_EXT_opacity_micromap_ray_query_mode
Bug Fixes
- Fix generated decoration string from
UTF8EncodingKHRtoUTFEncodingKHR - Fix missing SPIR-V extension emission for
float16derivative functions withSPV_AMD_gpu_shader_half_float - Apply
NoContractiondecoration todot()whennoContractionis set - Fix
OpStoreof buffer device address pointer to use 8-byte alignment, consistent with loads - Fix
RayTracingOpacityMicromapKHRcapability emission to only occur whengl_RayFlagsForceOpacityMicromap2StateEXTis actually used, fixing SPIR-V validation failures in ray query shaders outside ray-tracing pipeline stages - Fix
setInvertY()to apply Y-inversion to GLSL vertex, geometry, and tessellation-evaluation shaders (previously only affected HLSL) - Fix
.length()on arrays of long/cooperative vectors to useOpArrayLengthinstead of a constant component count - Fix unnecessary cooperative matrix conversions when creating arrays of KHR cooperative matrices
- Add error for cooperative matrix
*=with bf16/fp8 scalar operands - Fix out-of-bounds access in
elseSeenat maximum#if/#ifdefnesting depth - Fix out-of-bounds read on empty struct texture template types
- Fix crash in
layoutObjectCheckwhen accessing members of an empty block - Emit an error when HLSL [numthreads] is given more than three arguments instead of crashing the compiler.
- Emit error when attempting to convert a literal string to an incompatible type
- Fix
abortKHRto preserve the original user-defined string without modification - Fix out-of-bounds indexing in
TDefaultIoResolverBase::addStagewhen a negativeEShLanguagevalue is passed
Other
- Add
--discard-is-terminateoption to emitOpTerminateInvocationinstead ofOpDemoteToHelperInvocationfor GLSLdiscardwhen targeting SPIR-V 1.6+ - Add REUSE license compliance infrastructure
16.3.0 2026-05-01
Deprecation Notice
- Deprecate the HLSL front-end. See issue #4210 for details.
Other changes
- Support GL_NV_explicit_typecast
- Raise the maximum limit for specialization constant IDs
- Add explicit 8-bit and 16-bit type support for bitfieldReverse
- Implement system include directives for the standalone wrapper
- Check for invalid usage of gl_WorkGroupSize components
- HLSL: Provide string error context only if token is a string
- Fix layoutDescriptorStride bitfield truncation for large stride values
- GL_EXT_long_vector with 2-4 components no longer require LongVector capability
- Fix alignment of guard blocks
- Fix ShaderDebugInfo having invalid line numbers when generating SPIRV 1.0
- Replace ostringstream with string concat during #include preprocessing
- Check for bad parameters on long vector type
- HLSL: Check for bad integer argument on Load*, Store*, Interlocked*
- HLSL: handle type error for ternary operator
- HLSL: Ensure scope is popped even when method body fails to parse
- Avoid unneccessary copies in SpirvIntrinsics.cpp
- Unconditionally emit debug source for include files when using non-semantic debug info
- Support bfloat16 and float8 tensors
- Add small type capabilities for GLSL.STD.450
- Add initial support for NonSemantic.Shader.DebugInfo 101
- Fix access chains for GL_ARM_tensors with raw descriptor heap accesses
- Support GL_KHR_compute_shader_derivatives
- Require a quad or linear layout qualifier to be specified for GL_KHR_compute_shader_derivatives
- Supportx SPV_KHR_constant_data and SPV_KHR_abort
16.2.0 2026-01-22
- Allow gl_FragDepth identifier to be redeclared
- Replace 'GL_TASK(MESH)_SHADER_NV' with 'GL_TASK(MESH)_SHADER_EXT'
- Scalarize swizzled MeshEXT stores
- Support GL_EXT_long_vector
- Add missing preamble #define for GL_EXT_nontemporal_keyword
- Support GL_NV_push_constant_bank
- Support GL_EXT_descriptor_heap
16.1.0 2025-12-01
- Avoid emitting OpCapability RuntimeDescriptorArray when unnecessary
- Improve compilation speed when debug infomation is enabled
- Fix Debug Info for Retargeted Builtins
- Support GL_EXT_shader_invocation_reorder
- Add checks to coopMatMulAdd
- Implement stringify operator
- Add ES support for depth layout qualifier
- Add debug info for hitObjectNV
- Emit a DebugGlobalVariable instead of DebugLocalVariable for rayQueryEXT
- Add debug info for constant variable
- Improve debug line to point declaration
- Fix bugs in buffer reference alignment
- Reject string operands in binary and select ops
- Support GL_EXT_shader_64bit_indexing
- Support GLSL_EXT_uniform_buffer_unsized_array
- Add semantic check for cooperative vector loads/stores
- Improve the debug info name of opaque (sampler) types
- Support IO mapping of combined samplers and acceleration structures
- Fix bug in debug info for bool types inside SSBO/UBO
- Fix bug in debug info for struct member names
- Add methods for entry point and invert-y to C interface
16.0.0 2025-09-25
Breaking changes
- Remove spirv-remapper (ported to SPIRV-Tools as canonicalize-ids optimization pass)
Other changes
- Emit error for in/out structs containing booleans
- Fix contradictory layout link errors
- Improve error checks for float8 math
- Fix bug in cooperative matrix load/store handling of array slices
- Update memory semantic validation rules to match update to Vulkan specification
- Simplify glslang grammar for identifier lists
- Fix erroneous parse errors in variable declarations using existing struct names
- Fix type conversions for createTensorLayout/ViewNV
- Fix OpAccessChain signed index issue for small unsigned integers
- Support GLSL_QCOM_cooperative_matrix_conversion
- Allow spec constant matrix use
- Fix inconsistent labeling of capability strings
- Fix crash on unnamed function parameters under relaxed rules
- Fix exported member functions in ShaderLang.h
15.4.0 2025-06-26
- Support GL_NV_gpu_shader5/GL_ARB_gpu_shader5
- Remove BUILD_SHARED_LIBS option (defer to built-in variable)
- Remap discard to OpDemoteToHelperInvocation
- Fix typos and improve readability of help message
- Support GLSL_QCOM_tile_shading
- Emit correct capability for linear swept sphere
- Support GL_EXT_float8_e5m2_e4m3
- Move E_SPV_ARM_cooperative_matrix_layouts into GLSL.ext.ARM.h
- Support GL_ARM_tensors
15.3.0 2025-04-24
- Fix CMake find_package on Windows when building shared libraries
- Fix crash calling coopMatLoadTensorNV on an array element
- Avoid reusing array types with stride when no stride is requested
- Fix non-ASCII comments
- Support GL_EXT_bfloat16
- Fix several issues with link-time implicit array size merging
- Support DebugSourceContinued
- LiveTraverser no longer traverses switch cases that are statically not accessed
- Implement optional cross-stage check for inputs with no matching outputs
15.2.0 2025-02-24
- Fix find_package on Windows when BUILD_SHARED_LIBS=ON
- Emit error if using in/out with struct pointer
- Emit SPV_EXT_opacity_micromap if GL extension is present
- Support GL_NV_linear_swept_spheres
- Support GLSL_EXT_nontemporal_keyword
- Support GL_NV_cluster_acceleration_structure
- Support GL_NV_cooperative_vector
- Check SparseTextureOffset non-const parameters
- Support GL_EXT_texture_offset_non_const
- Revert cross-stage check for missing outputs
- Support EXT_integer_dot_product
- Add support for OpTypeRayQueryKHR and OpTypeAccelerationStructureKHR to SPVRemapper
15.1.0 2024-12-13
- Add Vulkan 1.4 target and client
- Improve conversion of uniform block to push constant
- Improve cross stage error reporting by reporting proper stager rather than "unkwown stage"
- Add warning if forward declaration uses layout qualifiers
- Implement GLSL_NV_cooperative_matrix2
- Emit OpModfStruct instead of depracated OpModf
- Add link-time cross stage optimization
- Add column to DebugLexicalBlock
- Propagate errors from symbol table initialization
- Fix nonsemantic debuginfo line attribution for cooperative matrix
15.0.0 2024-09-23
Breaking changes
- Explicitly export all symbols that are part of the public API and hide other symbols by default
Other changes
- Allow building glslang without the SPIR-V backend using the new ENABLE_SPIRV build option
- Add setResourceSetBinding method to the API
- Add interface to get the GLSL IO mapper and resolver
- Allow compute derivative modes when the workgroup dimensions are spec constants
- Improve debug location of branch/return instructions
- Silence preprocessor '#' error reporting in inactive #if/#ifdef/#elif/#else blocks
- Apply GLSL memory decorations to top-level OpVariable
- Move definition of GLSLANG_EXPORT to visibility.h
- Merge ancillary libraries into main glslang library and stub originals
- Add public setSourceFile and addSourceText methods to TShader class
- Add type checks for hitObjectNV
- Add optimizerAllowExpandedIDBound to SpvOptions
- Add SpvTools.h back to public headers
- Add cross-stage check for missing outputs
- Fix HLSL offsets for non-buffers
- Add types and functions for IO mapping to API
- Add function to set preprocessed code to API
- Add set/get version functions to API
- Expose setGlobalUniform functions to API
- Don't emit debug instructions before an OpPhi
- Add command-line and API option to enable reporting column location for compiler errors
- Improve location aliasing checks
- Support constant expression calculated by matrixCompMult
- Fix crash caused by atomicCounter() use without arguments
- Fix multi-line function call line numbers
- Add line info to OpDebugDeclare for function parameters
- Fix HLSL OpDebugFunction file name
- Fix duplicate decorations
- Enable compilation of glslang without thread support for WASI
14.3.0 2024-06-25
- Generate vector constructions more efficiently when sizes match
- Skip identity conversions for 8-bit and 16-bit types
- Add cmake aliases for public libraries
- Support ARM extended matrix layout
- Emit debug info for buffer references
- Add support for OpExtInstWithForwardRefsKHR
- Generate SPV_EXT_replicated_compisites when requested by pragma
- Reuse loads generated for repeated function arguments
- Fix gl_HitT alias of gl_RayTmax
- Fix some cases where invalid SPIR-V was being generated when using separate samplers
- Add back layoutLocation to public API
14.2.0 2024-05-02
- Improve checking for location aliasing errors
- Fix undefined behavior in parser
- Add bounds check to gl_SampleMask
- Fix alignment and padding of matrices consuming one vector
- Remove duplicate SPIR-V decorations
- Check for exponent overflow in float parser
- Fix bug in relaxed verification rules
- Fix disassembly of debugBreak
- Fix bug when importing SPIR-V extended intruction set
- Fix issues with the interaction of cooperative_matrix and spirv_intrinsics
- Support SPV_QCOM_image_processing2
- Support files with UTF8BOM character
14.1.0 2024-03-08
- Add a new --abosute-path command-line option to output absolute paths in error messages
- Support GL_EXT_control_flow_attributes2
- Support GL_ARB_shading_language_include
- Fix HLSL built-in passthrough via inout
- Enable -Wimplicit-fallthrough and fix warnings
- Fix -Wmissing_field_initializer warnings
- Document supported dependencies in known_good.json
- Clear spirv vector before use
- Emit debug info for accelerationStructure and rayQuery variables
- Support NV_shader_atomic_fp16_vector
- Support GL_EXT_expect_assume_support
- Allow external control of whether glslang will be tested or installed
- Improve debug source and line info
- Support GL_KHR_shader_subgroup_rotate
- Add SPIRV-Tools-opt dependency if ENABLE_OPT
- Support EXT_shader_quad_control
- Add OpAssumeTrueKHR and OpExpectKHR
- Support GL_EXT_maximal_reconvergence
- Remove generation of deprecated Target.cmake files
- Fix array size of gl_SampleMask and gl_SampleMaskIn
- Support GL_ARB_texture_multisample_extension
- Emit DebugTypePointer when non-semantic debug info is enabled
14.0.0 2023-12-21
Breaking changes
- The legacy libraries named HLSL and OGLCompiler have been removed. To avoid future disruptions, please use cmake's find_package mechanism rather than hardcoding library dependencies.
- Only the headers that are part of glslang's public interface are included in the install target.
- Remove OVERRIDE_MSVCCRT cmake option.
Other changes
- Fix spv_options initialization
- Fix line number for OpDebugFunction and OpDebugScope for function
- Fix SPV_KHR_cooperative_matrix enumerants
- Fix nullptr crash
- Fix GL_ARB_shader_storage_buffer_object version
- Fix interpolant ES error
- Generate DebugValue for constant arguments
- Overflow/underflow out-of-range floats to infinity/0.0 respectively
- Support SV_ViewID keywords for HLSL
- Implement relaxed rule for opaque struct members
- Add BUILD_WERROR cmake option
- Add GLSLANG_TESTS cmake option
- Always generate OpDebugBasicType for bool type
- Fix GLSL parsing of '#' when not preceded by space or tab
- Fix GL_ARB_bindless_texture availability
- Support GL_EXT_draw_instanced extension
- Support GL_EXT_texture_array extension
- Fix conversion of 64-bit unsigned integer constants to bool
- Output 8-bit and 16-bit capabilities when appropriate for OpSpecConstant
13.1.1 2023-10-16
- Initialize compile_only field in C interface
13.1.0 2023-10-13
- Support GL_EXT_texture_shadow_lod
- Support GL_NV_displacement_micromap
- Fix ByteAddressBuffer when used a function parameter
- Add more verbose messages if SPIRV-Tools is not found
- Fix names for explicitly sized types when emitting nonsemantic debug info
- Emit error for r-value arguments in atomic memory operations
- Add --no-link option
- Beautify preprocessor output format
- Fix race condition in glslangValidator
- Only set LocalSizeId mode when necessary
- Don't emit invalid debug info for buffer references
13.0.0 2023-08-23
Breaking changes
- Simplify PoolAlloc via thread_local
- Remove InitializeDLL functions
- Remove OSDependent TLS functions
- Remove GLSLANG_WEB and GLSLANG_WEB_DEVEL code paths
Other changes
- Raise CMAKE minimum to 3.17.2
- Support GL_KHR_cooperative_matrix
- Support GL_QCOM_image_processing_support
- Support outputting each module to a filename with spirv-remap
- Generate an error when gl_PrimitiveShaderRateEXT is used without enabling the extension
- Improve layout checking when GL_EXT_spirv_intrinsics is enabled
12.3.1 2023-07-20
Other changes
- Improve backward compatibility for glslangValidator rename on Windows
12.3.0 2023-07-19
Other changes
- Rename glslangValidator to glslang and create glslangValidator symlink
- Support HLSL binary literals
- Add missing initialization members for web
- Improve push_constant upgrading
- Fix race condition in spirv remap
- Support pre and post HLSL qualifier validation
- Force generateDebugInfo when non-semantic debug info is enabled
- Exit with error if output file cannot be written
- Fix struct member buffer reference decorations
12.2.0 2023-05-17
Other changes
- Support GLSL_EXT_shader_tile_image
- Support GL_EXT_ray_tracing_position_fetch
- Support custom include callbacks via the C API
- Add preamble-text command-line option
- Accept variables as parameters of spirv_decorate_id
- Fix generation of conditionals with a struct result
- Fix double expansion of macros
- Fix DebugCompilationUnit scope
- Improve line information
12.1.0 2023-03-21
Other changes
- Reject non-float inputs/outputs for version less than 120
- Fix invalid BufferBlock decoration for SPIR-V 1.3 and above
- Add HLSL relaxed-precision float/int matrix expansions
- Block decorate Vulkan structs with RuntimeArrays
- Support InterlockedAdd on float types
12.0.0 2023-01-18
Breaking changes
- An ABI was accidentally broken in #3014. Consequently, we have incremented the major revision number.
Other changes
- Add support for ARB_bindless_texture.
- Add support for GL_NV_shader_invocation_reorder.
- Fix const parameter debug types when using NonSemantic.Shader.DebugInfo.100.
- Fix NonSemantic.Shader.DebugInfo.100 disassembly.
- Fix MaxDualSourceDrawBuffersEXT usage.
- Fix structure member reference crash.
11.13.0 2022-12-06
Other changes
- Make HelperInvocation accesses volatile for SPIR-V 1.6.
- Improve forward compatibility of ResourceLimits interface
- Remove GLSLANG_ANGLE
11.12.0 2022-10-12
Other changes
- Update generator version
- Add support for GL_EXT_mesh_shader
- Add support for NonSemantic.Shader.DebugInfo.100
- Make OpEmitMeshTasksEXT a terminal instruction
- Make gl_SubGroupARB a flat in int in Vulkan
- Add support for GL_EXT_opacity_micromap
- Add preamble support to C interface
11.11.0 2022-08-11
Other changes
- Add OpSource support to C interface
- Deprecate samplerBuffer for spirv1.6 and later
- Add support for SPV_AMD_shader_early_and_late_fragment_tests
11.10.0 2022-06-02
Other changes
- Generate OpLine before OpFunction
- Add support for VK_EXT_fragment_shader_barycentric
- Add whitelist filtering for debug comments in SPIRV-Remap
- Add support for GL_EXT_ray_cull_mask
11.9.0 2022-04-06
Other changes
- Add GLSL version override functionality
- Add eliminate-dead-input-components to -Os
- Add enhanced-msgs option
- Explicitly use Python 3 for builds
11.8.0 2022-01-27
Other changes
- Add support for SPIR-V 1.6
- Add support for Vulkan 1.3
- Add --hlsl-dx-position-w option
11.7.0 2021-11-11
Other changes
- Add support for targeting Vulkan 1.2 in the C API
11.6.0 2021-08-25
Other changes
- Atomic memory function only for shader storage block member or shared variable
- Add support for gl_MaxVaryingVectors for ogl
- Fix loading bool arrays from interface blocks
- Generate separate stores for partially swizzled memory stores
- Allow layout(std430) uniform with GL_EXT_scalar_block_layout
- Support for pragma STDGL invariant(all)
- Support for GL_NV_ray_tracing_motion_blur
11.5.0 2021-06-23
Other changes
- Implement GLSL_EXT_shader_atomic_float2
- Implement GL_EXT_spirv_intrinsics
- Fixed SPIR-V remapper not remapping OpExtInst instruction set IDs
- only declare compatibility gl_ variables in compatibility mode
- Add support for float spec const vector initialization
- Implement GL_EXT_subgroup_uniform_control_flow.
- Fix arrays dimensioned with spec constant sized gl_WorkGroupSize
- Add support for 64bit integer scalar and vector types to bitCount() builtin
11.4.0 2021-04-22
Other changes
- Fix to keep source compatible with CMake 3.10.2
11.3.0 2021-04-21
Other changes
- Added --depfile
- Added --auto-sampled-textures
- Now supports InterpolateAt-based functions
- Supports cross-stage automatic IO mapping
- Supports GL_EXT_vulkan_glsl_relaxed (-R option)
11.2.0 2021-02-18
Other changes
- Removed Python requirement when not building with spirv-tools
- Add support for GL_EXT_shared_memory_block
- Implement GL_EXT_null_initializer
- Add CMake support for Fuschia
11.1.0 2020-12-07
Other changes
- Added ray-tracing extension support
11.0.0 2020-07-20
Breaking changes
Visual Studio 2013 is no longer supported
As scheduled, Microsoft Visual Studio 2013 is no longer officially supported. Please upgrade to at least Visual Studio 2015.
10.15.3847 2020-07-20
Breaking changes
- The following files have been removed:
glslang/include/revision.hglslang/include/revision.template
The GLSLANG_MINOR_VERSION and GLSLANG_PATCH_LEVEL defines have been removed
from the public headers.
Instead each build script now uses the new build_info.py
script along with the build_info.h.tmpl and this CHANGES.md file to generate
the glslang build-time generated header glslang/build_info.h.
The new public API to obtain the glslang version is glslang::GetVersion().
Other changes
glslangshared objects produced by CMake are nowSONAMEversioned using Semantic Versioning 2.0.0.
1# Revision history for `glslang` 2 3All notable changes to this project will be documented in this file. 4This project adheres to [Semantic Versioning](https://semver.org/). 5 6## NEXT 7 8* Deprecate the HLSL front-end. It will be removed at the next major version. 9See issue #4210 for details. 10 * Add support for GL_EXT_opacity_micromap_ray_query_mode 11* Add support for GL_EXT_clip_cull_distance and GL_ARB_cull_distance 12* Fix extension checks on the remaining members of a redeclared instance-named block 13* Fix an out-of-range block member index when a feature is used under `#extension all : warn` 14 15## 16.6.0 2026-09-10 16 17### New Extensions 18 19* Implement `GL_EXT_cooperative_matrix_maintenance1` 20* Implement `GL_EXT_optional_input_attachment_index` 21* Implement `DebugEntryPoint` for `NonSemantic.Shader.DebugInfo` 102 22 23### `SPV_KHR_abort` / `abortEXT` 24 25* Require the first parameter of `abortEXT` to be a string literal, emit an error if it is not 26* Require the first parameter of `printf` to be a string literal, emit an error if it is not 27* Fix abort message struct layout for matrix, vector, and aggregate arguments 28* Pack the abort message with scalar layout when the shader requests `GL_EXT_scalar_block_layout` 29* Pack the abort message with scalar layout unconditionally so that consumers use one fixed set of rules 30* Fix abort message type to use separate value and laid out types, removing invalid `ArrayStride` on constant types 31* Fix `abort` to handle boolean and opaque types correctly 32 33### API Changes 34 35* Add access to the source entry point in the C API 36 37### Bug Fixes 38 39* Fix relaxed Vulkan access chain traversal for buffer references 40* Fix 32-bit identity fillers used in 16-bit matrix constructors 41* Fix out-of-bounds slot access for `atomic_uint` in `reserveResourceSlot` 42* Fix out-of-bounds read when folding component-wise intrinsics on matrices 43* Fix out-of-bounds dereference on undeclared ray tracing location 44* Fix out-of-bounds read on empty `entryPoints` in `postProcessFeatures` 45* Fix out-of-bounds read on short `coopMatPerElementNV` argument list 46* Fix crash on empty struct initializers in cascading error mode 47* Guard empty block member list in `getBlockSize` 48* Validate argument count in `decomposeStructBufferMethods` 49* Require constant scope and semantics operands in `memorySemanticsCheck` 50* Fix string escaping in preprocessed output 51* Fix `Aligned` decoration on `buffer_reference` swizzle-store read-modify-write load 52* Fold bit-cast conversions as constant expressions 53* Fold hyperbolic functions (`sinh`, `cosh`, `tanh`, `asinh`, `acosh`, `atanh`) as constant expressions 54* Improve parsing of `#pragma STDGL` 55 56### Performance 57 58* Replace linear search with a hash table for composite and struct constant creation in the SPIR-V builder 59 60## 16.5.0 2026-07-31 61 62### New Extensions 63 64* Implement `GLSL_EXT_split_barrier` / `SPV_EXT_split_barrier` 65* Implement `GLSL_QCOM_multiple_wait_queues` 66* Implement `GLSL_QCOM_image_processing3` 67* Implement `GL_EXT_function_control_attributes` 68 69### API Changes 70 71* Expose `TVarEntryInfo` as part of the public API in `ShaderLang.h` 72 73### Bug Fixes 74 75* Fix undefined shifts and signed overflow in `#if` expression evaluation 76* Fix out-of-bounds read when indexing `idInstruction` and `idDescriptor` 77* Fix null dereference in iomapper when `uniformVarMap` is empty 78* Fix out-of-bounds read on empty array initializer in `convertInitializerList` 79* Fix stack overflow on deeply nested macro invocations, capping macro expansion depth at 200 and emitting an error 80* Fix out-of-bounds read in `handlePragma` when `#pragma STDGL` has fewer than 4 tokens 81* Fix crash in preprocessor output when a backslash-newline continuation appears at end of input due to column underflow 82* Fix crash on excess `#endif` directives when a malformed `#if` expression desynchronizes `elseSeen`/`ifdepth` preprocessor counters 83* Fix out-of-bounds write in `memberRemapper` for nested `buffer_reference` blocks 84* Fix out-of-bounds read on long vector index in `checkIndex` 85 86### Other 87 88* Update SPIR-V size optimization and HLSL legalization pass lists to match spirv-tools, and add performance optimization option 89* Increase `input_attachment_index` limit to `INT_MAX` 90* Print compile and link error logs to stderr instead of stdout 91 92## 16.4.0 2026-07-14 93 94### Descriptor Heap 95 96* Implement `GLSL_EXT_structured_descriptor_heap` with SPIR-V layout generation, heap offset access, buffer references, matrix layout decorations, and correct `readonly`/`writeonly` qualifier propagation for buffer and image descriptors 97* Fix descriptor heap-bound buffer access to use typed pointers 98* Omit `NonUniform` decoration when using descriptor heaps, as the SPIR-V spec does not require it 99* Add `--relax-set-binding-limits` option to allow large `layout(set)` and `layout(binding)` values for descriptor heap-style workflows with sparse set spaces 100* Reject combined image samplers with `descriptor_heap` 101 102### Compute Shader Derivatives 103 104* Fix `GL_KHR_compute_shader_derivatives` regressions on shaders using the `GL_NV` variant 105* Update compute shader derivative rules to allow texture operations with implicit derivatives without extensions, falling back to LoD 0 106 107### New Extensions 108 109* Implement `GL_EXT_ocp_microscaling_types` 110* Implement `GL_NV_cooperative_matrix_decode_vector` 111* Add basic support for `GL_NV_desktop_lowp_mediump` 112* Implement `GL_EXT_opacity_micromap_ray_query_mode` 113 114### Bug Fixes 115 116* Fix generated decoration string from `UTF8EncodingKHR` to `UTFEncodingKHR` 117* Fix missing SPIR-V extension emission for `float16` derivative functions with `SPV_AMD_gpu_shader_half_float` 118* Apply `NoContraction` decoration to `dot()` when `noContraction` is set 119* Fix `OpStore` of buffer device address pointer to use 8-byte alignment, consistent with loads 120* Fix `RayTracingOpacityMicromapKHR` capability emission to only occur when `gl_RayFlagsForceOpacityMicromap2StateEXT` is actually used, fixing SPIR-V validation failures in ray query shaders outside ray-tracing pipeline stages 121* Fix `setInvertY()` to apply Y-inversion to GLSL vertex, geometry, and tessellation-evaluation shaders (previously only affected HLSL) 122* Fix `.length()` on arrays of long/cooperative vectors to use `OpArrayLength` instead of a constant component count 123* Fix unnecessary cooperative matrix conversions when creating arrays of KHR cooperative matrices 124* Add error for cooperative matrix `*=` with bf16/fp8 scalar operands 125* Fix out-of-bounds access in `elseSeen` at maximum `#if`/`#ifdef` nesting depth 126* Fix out-of-bounds read on empty struct texture template types 127* Fix crash in `layoutObjectCheck` when accessing members of an empty block 128* Emit an error when HLSL [numthreads] is given more than three arguments instead of crashing the compiler. 129* Emit error when attempting to convert a literal string to an incompatible type 130* Fix `abortKHR` to preserve the original user-defined string without modification 131* Fix out-of-bounds indexing in `TDefaultIoResolverBase::addStage` when a negative `EShLanguage` value is passed 132 133### Other 134 135* Add `--discard-is-terminate` option to emit `OpTerminateInvocation` instead of `OpDemoteToHelperInvocation` for GLSL `discard` when targeting SPIR-V 1.6+ 136* Add REUSE license compliance infrastructure 137 138## 16.3.0 2026-05-01 139### Deprecation Notice 140* Deprecate the HLSL front-end. See issue #4210 for details. 141 142### Other changes 143* Support GL_NV_explicit_typecast 144* Raise the maximum limit for specialization constant IDs 145* Add explicit 8-bit and 16-bit type support for bitfieldReverse 146* Implement system include directives for the standalone wrapper 147* Check for invalid usage of gl_WorkGroupSize components 148* HLSL: Provide string error context only if token is a string 149* Fix layoutDescriptorStride bitfield truncation for large stride values 150* GL_EXT_long_vector with 2-4 components no longer require LongVector capability 151* Fix alignment of guard blocks 152* Fix ShaderDebugInfo having invalid line numbers when generating SPIRV 1.0 153* Replace ostringstream with string concat during #include preprocessing 154* Check for bad parameters on long vector type 155* HLSL: Check for bad integer argument on Load*, Store*, Interlocked* 156* HLSL: handle type error for ternary operator 157* HLSL: Ensure scope is popped even when method body fails to parse 158* Avoid unneccessary copies in SpirvIntrinsics.cpp 159* Unconditionally emit debug source for include files when using non-semantic debug info 160* Support bfloat16 and float8 tensors 161* Add small type capabilities for GLSL.STD.450 162* Add initial support for NonSemantic.Shader.DebugInfo 101 163* Fix access chains for GL_ARM_tensors with raw descriptor heap accesses 164* Support GL_KHR_compute_shader_derivatives 165* Require a quad or linear layout qualifier to be specified for GL_KHR_compute_shader_derivatives 166* Supportx SPV_KHR_constant_data and SPV_KHR_abort 167 168## 16.2.0 2026-01-22 169* Allow gl_FragDepth identifier to be redeclared 170* Replace 'GL_TASK(MESH)_SHADER_NV' with 'GL_TASK(MESH)_SHADER_EXT' 171* Scalarize swizzled MeshEXT stores 172* Support GL_EXT_long_vector 173* Add missing preamble #define for GL_EXT_nontemporal_keyword 174* Support GL_NV_push_constant_bank 175* Support GL_EXT_descriptor_heap 176 177## 16.1.0 2025-12-01 178* Avoid emitting OpCapability RuntimeDescriptorArray when unnecessary 179* Improve compilation speed when debug infomation is enabled 180* Fix Debug Info for Retargeted Builtins 181* Support GL_EXT_shader_invocation_reorder 182* Add checks to coopMatMulAdd 183* Implement stringify operator 184* Add ES support for depth layout qualifier 185* Add debug info for hitObjectNV 186* Emit a DebugGlobalVariable instead of DebugLocalVariable for rayQueryEXT 187* Add debug info for constant variable 188* Improve debug line to point declaration 189* Fix bugs in buffer reference alignment 190* Reject string operands in binary and select ops 191* Support GL_EXT_shader_64bit_indexing 192* Support GLSL_EXT_uniform_buffer_unsized_array 193* Add semantic check for cooperative vector loads/stores 194* Improve the debug info name of opaque (sampler) types 195* Support IO mapping of combined samplers and acceleration structures 196* Fix bug in debug info for bool types inside SSBO/UBO 197* Fix bug in debug info for struct member names 198* Add methods for entry point and invert-y to C interface 199 200## 16.0.0 2025-09-25 201### Breaking changes 202* Remove spirv-remapper (ported to SPIRV-Tools as canonicalize-ids optimization pass) 203 204### Other changes 205* Emit error for in/out structs containing booleans 206* Fix contradictory layout link errors 207* Improve error checks for float8 math 208* Fix bug in cooperative matrix load/store handling of array slices 209* Update memory semantic validation rules to match update to Vulkan specification 210* Simplify glslang grammar for identifier lists 211* Fix erroneous parse errors in variable declarations using existing struct names 212* Fix type conversions for createTensorLayout/ViewNV 213* Fix OpAccessChain signed index issue for small unsigned integers 214* Support GLSL_QCOM_cooperative_matrix_conversion 215* Allow spec constant matrix use 216* Fix inconsistent labeling of capability strings 217* Fix crash on unnamed function parameters under relaxed rules 218* Fix exported member functions in ShaderLang.h 219 220## 15.4.0 2025-06-26 221* Support GL_NV_gpu_shader5/GL_ARB_gpu_shader5 222* Remove BUILD_SHARED_LIBS option (defer to built-in variable) 223* Remap discard to OpDemoteToHelperInvocation 224* Fix typos and improve readability of help message 225* Support GLSL_QCOM_tile_shading 226* Emit correct capability for linear swept sphere 227* Support GL_EXT_float8_e5m2_e4m3 228* Move E_SPV_ARM_cooperative_matrix_layouts into GLSL.ext.ARM.h 229* Support GL_ARM_tensors 230 231## 15.3.0 2025-04-24 232* Fix CMake find_package on Windows when building shared libraries 233* Fix crash calling coopMatLoadTensorNV on an array element 234* Avoid reusing array types with stride when no stride is requested 235* Fix non-ASCII comments 236* Support GL_EXT_bfloat16 237* Fix several issues with link-time implicit array size merging 238* Support DebugSourceContinued 239* LiveTraverser no longer traverses switch cases that are statically not accessed 240* Implement optional cross-stage check for inputs with no matching outputs 241 242## 15.2.0 2025-02-24 243* Fix find_package on Windows when BUILD_SHARED_LIBS=ON 244* Emit error if using in/out with struct pointer 245* Emit SPV_EXT_opacity_micromap if GL extension is present 246* Support GL_NV_linear_swept_spheres 247* Support GLSL_EXT_nontemporal_keyword 248* Support GL_NV_cluster_acceleration_structure 249* Support GL_NV_cooperative_vector 250* Check SparseTextureOffset non-const parameters 251* Support GL_EXT_texture_offset_non_const 252* Revert cross-stage check for missing outputs 253* Support EXT_integer_dot_product 254* Add support for OpTypeRayQueryKHR and OpTypeAccelerationStructureKHR to SPVRemapper 255 256## 15.1.0 2024-12-13 257* Add Vulkan 1.4 target and client 258* Improve conversion of uniform block to push constant 259* Improve cross stage error reporting by reporting proper stager rather than "unkwown stage" 260* Add warning if forward declaration uses layout qualifiers 261* Implement GLSL_NV_cooperative_matrix2 262* Emit OpModfStruct instead of depracated OpModf 263* Add link-time cross stage optimization 264* Add column to DebugLexicalBlock 265* Propagate errors from symbol table initialization 266* Fix nonsemantic debuginfo line attribution for cooperative matrix 267 268## 15.0.0 2024-09-23 269### Breaking changes 270* Explicitly export all symbols that are part of the public API and hide other symbols by default 271 272### Other changes 273* Allow building glslang without the SPIR-V backend using the new ENABLE_SPIRV build option 274* Add setResourceSetBinding method to the API 275* Add interface to get the GLSL IO mapper and resolver 276* Allow compute derivative modes when the workgroup dimensions are spec constants 277* Improve debug location of branch/return instructions 278* Silence preprocessor '#' error reporting in inactive #if/#ifdef/#elif/#else blocks 279* Apply GLSL memory decorations to top-level OpVariable 280* Move definition of GLSLANG_EXPORT to visibility.h 281* Merge ancillary libraries into main glslang library and stub originals 282* Add public setSourceFile and addSourceText methods to TShader class 283* Add type checks for hitObjectNV 284* Add optimizerAllowExpandedIDBound to SpvOptions 285* Add SpvTools.h back to public headers 286* Add cross-stage check for missing outputs 287* Fix HLSL offsets for non-buffers 288* Add types and functions for IO mapping to API 289* Add function to set preprocessed code to API 290* Add set/get version functions to API 291* Expose setGlobalUniform functions to API 292* Don't emit debug instructions before an OpPhi 293* Add command-line and API option to enable reporting column location for compiler errors 294* Improve location aliasing checks 295* Support constant expression calculated by matrixCompMult 296* Fix crash caused by atomicCounter() use without arguments 297* Fix multi-line function call line numbers 298* Add line info to OpDebugDeclare for function parameters 299* Fix HLSL OpDebugFunction file name 300* Fix duplicate decorations 301* Enable compilation of glslang without thread support for WASI 302 303## 14.3.0 2024-06-25 304* Generate vector constructions more efficiently when sizes match 305* Skip identity conversions for 8-bit and 16-bit types 306* Add cmake aliases for public libraries 307* Support ARM extended matrix layout 308* Emit debug info for buffer references 309* Add support for OpExtInstWithForwardRefsKHR 310* Generate SPV_EXT_replicated_compisites when requested by pragma 311* Reuse loads generated for repeated function arguments 312* Fix gl_HitT alias of gl_RayTmax 313* Fix some cases where invalid SPIR-V was being generated when using separate samplers 314* Add back layoutLocation to public API 315 316## 14.2.0 2024-05-02 317* Improve checking for location aliasing errors 318* Fix undefined behavior in parser 319* Add bounds check to gl_SampleMask 320* Fix alignment and padding of matrices consuming one vector 321* Remove duplicate SPIR-V decorations 322* Check for exponent overflow in float parser 323* Fix bug in relaxed verification rules 324* Fix disassembly of debugBreak 325* Fix bug when importing SPIR-V extended intruction set 326* Fix issues with the interaction of cooperative_matrix and spirv_intrinsics 327* Support SPV_QCOM_image_processing2 328* Support files with UTF8BOM character 329 330## 14.1.0 2024-03-08 331* Add a new --abosute-path command-line option to output absolute paths in error messages 332* Support GL_EXT_control_flow_attributes2 333* Support GL_ARB_shading_language_include 334* Fix HLSL built-in passthrough via inout 335* Enable -Wimplicit-fallthrough and fix warnings 336* Fix -Wmissing_field_initializer warnings 337* Document supported dependencies in known_good.json 338* Clear spirv vector before use 339* Emit debug info for accelerationStructure and rayQuery variables 340* Support NV_shader_atomic_fp16_vector 341* Support GL_EXT_expect_assume_support 342* Allow external control of whether glslang will be tested or installed 343* Improve debug source and line info 344* Support GL_KHR_shader_subgroup_rotate 345* Add SPIRV-Tools-opt dependency if ENABLE_OPT 346* Support EXT_shader_quad_control 347* Add OpAssumeTrueKHR and OpExpectKHR 348* Support GL_EXT_maximal_reconvergence 349* Remove generation of deprecated Target.cmake files 350* Fix array size of gl_SampleMask and gl_SampleMaskIn 351* Support GL_ARB_texture_multisample_extension 352* Emit DebugTypePointer when non-semantic debug info is enabled 353 354## 14.0.0 2023-12-21 355 356### Breaking changes 357* The legacy libraries named HLSL and OGLCompiler have been removed. To avoid future disruptions, please use cmake's find_package mechanism rather than hardcoding library dependencies. 358* Only the headers that are part of glslang's public interface are included in the install target. 359* Remove OVERRIDE_MSVCCRT cmake option. 360 361### Other changes 362* Fix spv_options initialization 363* Fix line number for OpDebugFunction and OpDebugScope for function 364* Fix SPV_KHR_cooperative_matrix enumerants 365* Fix nullptr crash 366* Fix GL_ARB_shader_storage_buffer_object version 367* Fix interpolant ES error 368* Generate DebugValue for constant arguments 369* Overflow/underflow out-of-range floats to infinity/0.0 respectively 370* Support SV_ViewID keywords for HLSL 371* Implement relaxed rule for opaque struct members 372* Add BUILD_WERROR cmake option 373* Add GLSLANG_TESTS cmake option 374* Always generate OpDebugBasicType for bool type 375* Fix GLSL parsing of '#' when not preceded by space or tab 376* Fix GL_ARB_bindless_texture availability 377* Support GL_EXT_draw_instanced extension 378* Support GL_EXT_texture_array extension 379* Fix conversion of 64-bit unsigned integer constants to bool 380* Output 8-bit and 16-bit capabilities when appropriate for OpSpecConstant 381 382## 13.1.1 2023-10-16 383* Initialize compile_only field in C interface 384 385## 13.1.0 2023-10-13 386* Support GL_EXT_texture_shadow_lod 387* Support GL_NV_displacement_micromap 388* Fix ByteAddressBuffer when used a function parameter 389* Add more verbose messages if SPIRV-Tools is not found 390* Fix names for explicitly sized types when emitting nonsemantic debug info 391* Emit error for r-value arguments in atomic memory operations 392* Add --no-link option 393* Beautify preprocessor output format 394* Fix race condition in glslangValidator 395* Only set LocalSizeId mode when necessary 396* Don't emit invalid debug info for buffer references 397 398## 13.0.0 2023-08-23 399 400### Breaking changes 401* Simplify PoolAlloc via thread_local 402* Remove InitializeDLL functions 403* Remove OSDependent TLS functions 404* Remove GLSLANG_WEB and GLSLANG_WEB_DEVEL code paths 405 406### Other changes 407* Raise CMAKE minimum to 3.17.2 408* Support GL_KHR_cooperative_matrix 409* Support GL_QCOM_image_processing_support 410* Support outputting each module to a filename with spirv-remap 411* Generate an error when gl_PrimitiveShaderRateEXT is used without enabling the extension 412* Improve layout checking when GL_EXT_spirv_intrinsics is enabled 413 414## 12.3.1 2023-07-20 415 416### Other changes 417* Improve backward compatibility for glslangValidator rename on Windows 418 419## 12.3.0 2023-07-19 420 421### Other changes 422* Rename glslangValidator to glslang and create glslangValidator symlink 423* Support HLSL binary literals 424* Add missing initialization members for web 425* Improve push_constant upgrading 426* Fix race condition in spirv remap 427* Support pre and post HLSL qualifier validation 428* Force generateDebugInfo when non-semantic debug info is enabled 429* Exit with error if output file cannot be written 430* Fix struct member buffer reference decorations 431 432## 12.2.0 2023-05-17 433 434### Other changes 435* Support GLSL_EXT_shader_tile_image 436* Support GL_EXT_ray_tracing_position_fetch 437* Support custom include callbacks via the C API 438* Add preamble-text command-line option 439* Accept variables as parameters of spirv_decorate_id 440* Fix generation of conditionals with a struct result 441* Fix double expansion of macros 442* Fix DebugCompilationUnit scope 443* Improve line information 444 445## 12.1.0 2023-03-21 446 447### Other changes 448* Reject non-float inputs/outputs for version less than 120 449* Fix invalid BufferBlock decoration for SPIR-V 1.3 and above 450* Add HLSL relaxed-precision float/int matrix expansions 451* Block decorate Vulkan structs with RuntimeArrays 452* Support InterlockedAdd on float types 453 454## 12.0.0 2023-01-18 455 456### Breaking changes 457* An ABI was accidentally broken in #3014. Consequently, we have incremented the major revision number. 458 459### Other changes 460* Add support for ARB_bindless_texture. 461* Add support for GL_NV_shader_invocation_reorder. 462* Fix const parameter debug types when using NonSemantic.Shader.DebugInfo.100. 463* Fix NonSemantic.Shader.DebugInfo.100 disassembly. 464* Fix MaxDualSourceDrawBuffersEXT usage. 465* Fix structure member reference crash. 466 467## 11.13.0 2022-12-06 468 469### Other changes 470* Make HelperInvocation accesses volatile for SPIR-V 1.6. 471* Improve forward compatibility of ResourceLimits interface 472* Remove GLSLANG_ANGLE 473 474## 11.12.0 2022-10-12 475 476### Other changes 477* Update generator version 478* Add support for GL_EXT_mesh_shader 479* Add support for NonSemantic.Shader.DebugInfo.100 480* Make OpEmitMeshTasksEXT a terminal instruction 481* Make gl_SubGroupARB a flat in int in Vulkan 482* Add support for GL_EXT_opacity_micromap 483* Add preamble support to C interface 484 485## 11.11.0 2022-08-11 486 487### Other changes 488* Add OpSource support to C interface 489* Deprecate samplerBuffer for spirv1.6 and later 490* Add support for SPV_AMD_shader_early_and_late_fragment_tests 491 492## 11.10.0 2022-06-02 493 494### Other changes 495* Generate OpLine before OpFunction 496* Add support for VK_EXT_fragment_shader_barycentric 497* Add whitelist filtering for debug comments in SPIRV-Remap 498* Add support for GL_EXT_ray_cull_mask 499 500## 11.9.0 2022-04-06 501 502### Other changes 503* Add GLSL version override functionality 504* Add eliminate-dead-input-components to -Os 505* Add enhanced-msgs option 506* Explicitly use Python 3 for builds 507 508## 11.8.0 2022-01-27 509 510### Other changes 511* Add support for SPIR-V 1.6 512* Add support for Vulkan 1.3 513* Add --hlsl-dx-position-w option 514 515## 11.7.0 2021-11-11 516 517### Other changes 518* Add support for targeting Vulkan 1.2 in the C API 519 520## 11.6.0 2021-08-25 521 522### Other changes 523* Atomic memory function only for shader storage block member or shared variable 524* Add support for gl_MaxVaryingVectors for ogl 525* Fix loading bool arrays from interface blocks 526* Generate separate stores for partially swizzled memory stores 527* Allow layout(std430) uniform with GL_EXT_scalar_block_layout 528* Support for pragma STDGL invariant(all) 529* Support for GL_NV_ray_tracing_motion_blur 530 531## 11.5.0 2021-06-23 532 533### Other changes 534* Implement GLSL_EXT_shader_atomic_float2 535* Implement GL_EXT_spirv_intrinsics 536* Fixed SPIR-V remapper not remapping OpExtInst instruction set IDs 537* only declare compatibility gl_ variables in compatibility mode 538* Add support for float spec const vector initialization 539* Implement GL_EXT_subgroup_uniform_control_flow. 540* Fix arrays dimensioned with spec constant sized gl_WorkGroupSize 541* Add support for 64bit integer scalar and vector types to bitCount() builtin 542 543## 11.4.0 2021-04-22 544 545### Other changes 546* Fix to keep source compatible with CMake 3.10.2 547 548## 11.3.0 2021-04-21 549 550### Other changes 551* Added --depfile 552* Added --auto-sampled-textures 553* Now supports InterpolateAt-based functions 554* Supports cross-stage automatic IO mapping 555* Supports GL_EXT_vulkan_glsl_relaxed (-R option) 556 557## 11.2.0 2021-02-18 558 559### Other changes 560* Removed Python requirement when not building with spirv-tools 561* Add support for GL_EXT_shared_memory_block 562* Implement GL_EXT_null_initializer 563* Add CMake support for Fuschia 564 565## 11.1.0 2020-12-07 566 567### Other changes 568* Added ray-tracing extension support 569 570## 11.0.0 2020-07-20 571 572### Breaking changes 573 574#### Visual Studio 2013 is no longer supported 575 576[As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals), 577Microsoft Visual Studio 2013 is no longer officially supported. Please upgrade 578to at least Visual Studio 2015. 579 580## 10.15.3847 2020-07-20 581 582### Breaking changes 583 584* The following files have been removed: 585* `glslang/include/revision.h` 586* `glslang/include/revision.template` 587 588The `GLSLANG_MINOR_VERSION` and `GLSLANG_PATCH_LEVEL` defines have been removed 589from the public headers. \ 590Instead each build script now uses the new `build_info.py` 591script along with the `build_info.h.tmpl` and this `CHANGES.md` file to generate 592the glslang build-time generated header `glslang/build_info.h`. 593 594The new public API to obtain the `glslang` version is `glslang::GetVersion()`. 595 596### Other changes 597* `glslang` shared objects produced by CMake are now `SONAME` versioned using 598[Semantic Versioning 2.0.0](https://semver.org/).