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## 15.1.0 2024-12-13 7* Add Vulkan 1.4 target and client 8* Improve conversion of uniform block to push constant 9* Improve cross stage error reporting by reporting proper stager rather than "unkwown stage" 10* Add warning if forward declaration uses layout qualifiers 11* Implement GLSL_NV_cooperative_matrix2 12* Emit OpModfStruct instead of depracated OpModf 13* Add link-time cross stage optimization 14* Add column to DebugLexicalBlock 15* Propagate errors from symbol table initialization 16* Fix nonsemantic debuginfo line attribution for cooperative matrix 17 18## 15.0.0 2024-09-23 19### Breaking changes 20* Explicitly export all symbols that are part of the public API and hide other symbols by default 21 22### Other changes 23* Allow building glslang without the SPIR-V backend using the new ENABLE_SPIRV build option 24* Add setResourceSetBinding method to the API 25* Add interface to get the GLSL IO mapper and resolver 26* Allow compute derivative modes when the workgroup dimensions are spec constants 27* Improve debug location of branch/return instructions 28* Silence preprocessor '#' error reporting in inactive #if/#ifdef/#elif/#else blocks 29* Apply GLSL memory decorations to top-level OpVariable 30* Move definition of GLSLANG_EXPORT to visibility.h 31* Merge ancillary libraries into main glslang library and stub originals 32* Add public setSourceFile and addSourceText methods to TShader class 33* Add type checks for hitObjectNV 34* Add optimizerAllowExpandedIDBound to SpvOptions 35* Add SpvTools.h back to public headers 36* Add cross-stage check for missing outputs 37* Fix HLSL offsets for non-buffers 38* Add types and functions for IO mapping to API 39* Add function to set preprocessed code to API 40* Add set/get version functions to API 41* Expose setGlobalUniform functions to API 42* Don't emit debug instructions before an OpPhi 43* Add command-line and API option to enable reporting column location for compiler errors 44* Improve location aliasing checks 45* Support constant expression calculated by matrixCompMult 46* Fix crash caused by atomicCounter() use without arguments 47* Fix multi-line function call line numbers 48* Add line info to OpDebugDeclare for function parameters 49* Fix HLSL OpDebugFunction file name 50* Fix duplicate decorations 51* Enable compilation of glslang without thread support for WASI 52 53## 14.3.0 2024-06-25 54* Generate vector constructions more efficiently when sizes match 55* Skip identity conversions for 8-bit and 16-bit types 56* Add cmake aliases for public libraries 57* Support ARM extended matrix layout 58* Emit debug info for buffer references 59* Add support for OpExtInstWithForwardRefsKHR 60* Generate SPV_EXT_replicated_compisites when requested by pragma 61* Reuse loads generated for repeated function arguments 62* Fix gl_HitT alias of gl_RayTmax 63* Fix some cases where invalid SPIR-V was being generated when using separate samplers 64* Add back layoutLocation to public API 65 66## 14.2.0 2024-05-02 67* Improve checking for location aliasing errors 68* Fix undefined behavior in parser 69* Add bounds check to gl_SampleMask 70* Fix alignment and padding of matrices consuming one vector 71* Remove duplicate SPIR-V decorations 72* Check for exponent overflow in float parser 73* Fix bug in relaxed verification rules 74* Fix disassembly of debugBreak 75* Fix bug when importing SPIR-V extended intruction set 76* Fix issues with the interaction of cooperative_matrix and spirv_intrinsics 77* Support SPV_QCOM_image_processing2 78* Support files with UTF8BOM character 79 80## 14.1.0 2024-03-08 81* Add a new --abosute-path command-line option to output absolute paths in error messages 82* Support GL_EXT_control_flow_attributes2 83* Support GL_ARB_shading_language_include 84* Fix HLSL built-in passthrough via inout 85* Enable -Wimplicit-fallthrough and fix warnings 86* Fix -Wmissing_field_initializer warnings 87* Document supported dependencies in known_good.json 88* Clear spirv vector before use 89* Emit debug info for accelerationStructure and rayQuery variables 90* Support NV_shader_atomic_fp16_vector 91* Support GL_EXT_expect_assume_support 92* Allow external control of whether glslang will be tested or installed 93* Improve debug source and line info 94* Support GL_KHR_shader_subgroup_rotate 95* Add SPIRV-Tools-opt dependency if ENABLE_OPT 96* Support EXT_shader_quad_control 97* Add OpAssumeTrueKHR and OpExpectKHR 98* Support GL_EXT_maximal_reconvergence 99* Remove generation of deprecated Target.cmake files 100* Fix array size of gl_SampleMask and gl_SampleMaskIn 101* Support GL_ARB_texture_multisample_extension 102* Emit DebugTypePointer when non-semantic debug info is enabled 103 104## 14.0.0 2023-12-21 105 106### Breaking changes 107* 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. 108* Only the headers that are part of glslang's public interface are included in the install target. 109* Remove OVERRIDE_MSVCCRT cmake option. 110 111### Other changes 112* Fix spv_options initialization 113* Fix line number for OpDebugFunction and OpDebugScope for function 114* Fix SPV_KHR_cooperative_matrix enumerants 115* Fix nullptr crash 116* Fix GL_ARB_shader_storage_buffer_object version 117* Fix interpolant ES error 118* Generate DebugValue for constant arguments 119* Overflow/underflow out-of-range floats to infinity/0.0 respectively 120* Support SV_ViewID keywords for HLSL 121* Implement relaxed rule for opaque struct members 122* Add BUILD_WERROR cmake option 123* Add GLSLANG_TESTS cmake option 124* Always generate OpDebugBasicType for bool type 125* Fix GLSL parsing of '#' when not preceded by space or tab 126* Fix GL_ARB_bindless_texture availability 127* Support GL_EXT_draw_instanced extension 128* Support GL_EXT_texture_array extension 129* Fix conversion of 64-bit unsigned integer constants to bool 130* Output 8-bit and 16-bit capabilities when appropriate for OpSpecConstant 131 132## 13.1.1 2023-10-16 133* Initialize compile_only field in C interface 134 135## 13.1.0 2023-10-13 136* Support GL_EXT_texture_shadow_lod 137* Support GL_NV_displacement_micromap 138* Fix ByteAddressBuffer when used a function parameter 139* Add more verbose messages if SPIRV-Tools is not found 140* Fix names for explicitly sized types when emitting nonsemantic debug info 141* Emit error for r-value arguments in atomic memory operations 142* Add --no-link option 143* Beautify preprocessor output format 144* Fix race condition in glslangValidator 145* Only set LocalSizeId mode when necessary 146* Don't emit invalid debug info for buffer references 147 148## 13.0.0 2023-08-23 149 150### Breaking changes 151* Simplify PoolAlloc via thread_local 152 * Remove InitializeDLL functions 153 * Remove OSDependent TLS functions 154* Remove GLSLANG_WEB and GLSLANG_WEB_DEVEL code paths 155 156### Other changes 157* Raise CMAKE minimum to 3.17.2 158* Support GL_KHR_cooperative_matrix 159* Support GL_QCOM_image_processing_support 160* Support outputting each module to a filename with spirv-remap 161* Generate an error when gl_PrimitiveShaderRateEXT is used without enabling the extension 162* Improve layout checking when GL_EXT_spirv_intrinsics is enabled 163 164## 12.3.1 2023-07-20 165 166### Other changes 167* Improve backward compatibility for glslangValidator rename on Windows 168 169## 12.3.0 2023-07-19 170 171### Other changes 172* Rename glslangValidator to glslang and create glslangValidator symlink 173* Support HLSL binary literals 174* Add missing initialization members for web 175* Improve push_constant upgrading 176* Fix race condition in spirv remap 177* Support pre and post HLSL qualifier validation 178* Force generateDebugInfo when non-semantic debug info is enabled 179* Exit with error if output file cannot be written 180* Fix struct member buffer reference decorations 181 182## 12.2.0 2023-05-17 183 184### Other changes 185* Support GLSL_EXT_shader_tile_image 186* Support GL_EXT_ray_tracing_position_fetch 187* Support custom include callbacks via the C API 188* Add preamble-text command-line option 189* Accept variables as parameters of spirv_decorate_id 190* Fix generation of conditionals with a struct result 191* Fix double expansion of macros 192* Fix DebugCompilationUnit scope 193* Improve line information 194 195## 12.1.0 2023-03-21 196 197### Other changes 198* Reject non-float inputs/outputs for version less than 120 199* Fix invalid BufferBlock decoration for SPIR-V 1.3 and above 200* Add HLSL relaxed-precision float/int matrix expansions 201* Block decorate Vulkan structs with RuntimeArrays 202* Support InterlockedAdd on float types 203 204## 12.0.0 2023-01-18 205 206### Breaking changes 207* An ABI was accidentally broken in #3014. Consequently, we have incremented the major revision number. 208 209### Other changes 210* Add support for ARB_bindless_texture. 211* Add support for GL_NV_shader_invocation_reorder. 212* Fix const parameter debug types when using NonSemantic.Shader.DebugInfo.100. 213* Fix NonSemantic.Shader.DebugInfo.100 disassembly. 214* Fix MaxDualSourceDrawBuffersEXT usage. 215* Fix structure member reference crash. 216 217## 11.13.0 2022-12-06 218 219### Other changes 220* Make HelperInvocation accesses volatile for SPIR-V 1.6. 221* Improve forward compatibility of ResourceLimits interface 222* Remove GLSLANG_ANGLE 223 224## 11.12.0 2022-10-12 225 226### Other changes 227* Update generator version 228* Add support for GL_EXT_mesh_shader 229* Add support for NonSemantic.Shader.DebugInfo.100 230* Make OpEmitMeshTasksEXT a terminal instruction 231* Make gl_SubGroupARB a flat in int in Vulkan 232* Add support for GL_EXT_opacity_micromap 233* Add preamble support to C interface 234 235## 11.11.0 2022-08-11 236 237### Other changes 238* Add OpSource support to C interface 239* Deprecate samplerBuffer for spirv1.6 and later 240* Add support for SPV_AMD_shader_early_and_late_fragment_tests 241 242## 11.10.0 2022-06-02 243 244### Other changes 245* Generate OpLine before OpFunction 246* Add support for VK_EXT_fragment_shader_barycentric 247* Add whitelist filtering for debug comments in SPIRV-Remap 248* Add support for GL_EXT_ray_cull_mask 249 250## 11.9.0 2022-04-06 251 252### Other changes 253* Add GLSL version override functionality 254* Add eliminate-dead-input-components to -Os 255* Add enhanced-msgs option 256* Explicitly use Python 3 for builds 257 258## 11.8.0 2022-01-27 259 260### Other changes 261* Add support for SPIR-V 1.6 262* Add support for Vulkan 1.3 263* Add --hlsl-dx-position-w option 264 265## 11.7.0 2021-11-11 266 267### Other changes 268* Add support for targeting Vulkan 1.2 in the C API 269 270## 11.6.0 2021-08-25 271 272### Other changes 273* Atomic memory function only for shader storage block member or shared variable 274* Add support for gl_MaxVaryingVectors for ogl 275* Fix loading bool arrays from interface blocks 276* Generate separate stores for partially swizzled memory stores 277* Allow layout(std430) uniform with GL_EXT_scalar_block_layout 278* Support for pragma STDGL invariant(all) 279* Support for GL_NV_ray_tracing_motion_blur 280 281## 11.5.0 2021-06-23 282 283### Other changes 284* Implement GLSL_EXT_shader_atomic_float2 285* Implement GL_EXT_spirv_intrinsics 286* Fixed SPIR-V remapper not remapping OpExtInst instruction set IDs 287* only declare compatibility gl_ variables in compatibility mode 288* Add support for float spec const vector initialization 289* Implement GL_EXT_subgroup_uniform_control_flow. 290* Fix arrays dimensioned with spec constant sized gl_WorkGroupSize 291* Add support for 64bit integer scalar and vector types to bitCount() builtin 292 293## 11.4.0 2021-04-22 294 295### Other changes 296* Fix to keep source compatible with CMake 3.10.2 297 298## 11.3.0 2021-04-21 299 300### Other changes 301* Added --depfile 302* Added --auto-sampled-textures 303* Now supports InterpolateAt-based functions 304* Supports cross-stage automatic IO mapping 305* Supports GL_EXT_vulkan_glsl_relaxed (-R option) 306 307## 11.2.0 2021-02-18 308 309### Other changes 310* Removed Python requirement when not building with spirv-tools 311* Add support for GL_EXT_shared_memory_block 312* Implement GL_EXT_null_initializer 313* Add CMake support for Fuschia 314 315## 11.1.0 2020-12-07 316 317### Other changes 318* Added ray-tracing extension support 319 320## 11.0.0 2020-07-20 321 322### Breaking changes 323 324#### Visual Studio 2013 is no longer supported 325 326[As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals), 327Microsoft Visual Studio 2013 is no longer officially supported. Please upgrade 328to at least Visual Studio 2015. 329 330## 10.15.3847 2020-07-20 331 332### Breaking changes 333 334* The following files have been removed: 335 * `glslang/include/revision.h` 336 * `glslang/include/revision.template` 337 338The `GLSLANG_MINOR_VERSION` and `GLSLANG_PATCH_LEVEL` defines have been removed 339from the public headers. \ 340Instead each build script now uses the new `build_info.py` 341script along with the `build_info.h.tmpl` and this `CHANGES.md` file to generate 342the glslang build-time generated header `glslang/build_info.h`. 343 344The new public API to obtain the `glslang` version is `glslang::GetVersion()`. 345 346### Other changes 347* `glslang` shared objects produced by CMake are now `SONAME` versioned using 348 [Semantic Versioning 2.0.0](https://semver.org/). 349