yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

Wint3rNightAdd GL_EXT_clip_cull_distance and GL_ARB_cull_distance54947913

main
24.8 KiB598 linesraw

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 DebugEntryPoint for NonSemantic.Shader.DebugInfo 102

SPV_KHR_abort / abortEXT

  • Require the first parameter of abortEXT to be a string literal, emit an error if it is not
  • Require the first parameter of printf to 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 ArrayStride on constant types
  • Fix abort to 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_uint in reserveResourceSlot
  • 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 entryPoints in postProcessFeatures
  • Fix out-of-bounds read on short coopMatPerElementNV argument 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 Aligned decoration on buffer_reference swizzle-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 TVarEntryInfo as part of the public API in ShaderLang.h

Bug Fixes

  • Fix undefined shifts and signed overflow in #if expression evaluation
  • Fix out-of-bounds read when indexing idInstruction and idDescriptor
  • Fix null dereference in iomapper when uniformVarMap is 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 handlePragma when #pragma STDGL has 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 #endif directives when a malformed #if expression desynchronizes elseSeen/ifdepth preprocessor counters
  • Fix out-of-bounds write in memberRemapper for nested buffer_reference blocks
  • 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_index limit to INT_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_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
  • Fix descriptor heap-bound buffer access to use typed pointers
  • Omit NonUniform decoration when using descriptor heaps, as the SPIR-V spec does not require it
  • Add --relax-set-binding-limits option to allow large layout(set) and layout(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_derivatives regressions on shaders using the GL_NV variant
  • 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 UTF8EncodingKHR to UTFEncodingKHR
  • Fix missing SPIR-V extension emission for float16 derivative functions with SPV_AMD_gpu_shader_half_float
  • Apply NoContraction decoration to dot() when noContraction is set
  • Fix OpStore of buffer device address pointer to use 8-byte alignment, consistent with loads
  • 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
  • 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 use OpArrayLength instead 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 elseSeen at maximum #if/#ifdef nesting depth
  • Fix out-of-bounds read on empty struct texture template types
  • Fix crash in layoutObjectCheck when 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 abortKHR to preserve the original user-defined string without modification
  • Fix out-of-bounds indexing in TDefaultIoResolverBase::addStage when a negative EShLanguage value is passed

Other

  • Add --discard-is-terminate option to emit OpTerminateInvocation instead of OpDemoteToHelperInvocation for GLSL discard when 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.h
    • glslang/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

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.
9  See 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/).