Generate build information from CHANGES.md
This PR significantly reworks the way glslang is versioned.
Instead of committing changes to the `GLSLANG_MINOR_VERSION` define in
`glslang/Public/ShaderLang.h`, and using `make-revision` to generate
`GLSLANG_PATCH_LEVEL` in `glslang/Include/revision.h`, all version
information is now derived from the new `CHANGES.md` file.
`CHANGES.md` acts as the single source of truth for glslang version
information, along with a convenient place to put all release notes for
each notable change made.
`CHANGES.md` is parsed using the new `build_info.py` python script.
This script can read basic template files to produce new source files,
which it does to read the new `build_info.h.tmpl` to generate (at build
time) a glslang private header at
`<build-dir>/include/glslang/build_info.h`.
I've written generators for each of the CMake, Bazel, gn, and
`Android.mk` build scripts.
The new version code conforms to the Semantic Versioning 2.0 spec.
This new version is also used by the CMake rules to produce versioned
shared objects, including a major-versioned SONAME.
New APIs:
---------
* `glslang::GetVersion()` returns a `Version` struct with the version
major, minor, patch and flavor.
Breaking API changes:
---------------------
* The public defines `GLSLANG_MINOR_VERSION` and `GLSLANG_PATCH_LEVEL`
have been entirely removed.
* `glslang/Public/ShaderLang.h` and `glslang/Include/revision.h` have
been deleted.
* Instead, `<build-dir>/include/glslang/build_info.h` is created in
the build directory, and `<build-dir>/include` is a CMake `PUBLIC`
(dependee-inherited) include directory for the glslang targets.
* `<build-dir>/include/glslang/build_info.h` contains the following
new #defines:
`GLSLANG_VERSION_MAJOR`, `GLSLANG_VERSION_MINOR`,
`GLSLANG_VERSION_PATCH`, `GLSLANG_VERSION_FLAVOR`,
`GLSLANG_VERSION_GREATER_THAN(major, minor, patch)`,
`GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch)`,
`GLSLANG_VERSION_LESS_THAN(major, minor, patch)`,
`GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch)`
* The CMake install output directory contains a copy of
`build_info.h` at: `include/glslang/build_info.h`
* Python3 is now always required to build glslang (likely always
required for transitive dependency builds).
2020-06-17 10:17:19 +00:00
|
|
|
# Revision history for `glslang`
|
|
|
|
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
This project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
|
|
2021-08-25 19:32:27 +00:00
|
|
|
## 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
|
|
|
|
|
2021-06-23 19:47:39 +00:00
|
|
|
## 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
|
|
|
|
|
2021-04-23 00:09:42 +00:00
|
|
|
## 11.4.0 2021-04-22
|
|
|
|
|
|
|
|
### Other changes
|
|
|
|
* Fix to keep source compatible with CMake 3.10.2
|
|
|
|
|
2021-04-22 00:42:12 +00:00
|
|
|
## 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)
|
|
|
|
|
2021-02-22 19:11:47 +00:00
|
|
|
## 11.2.0 2021-02-18
|
2021-02-18 19:04:17 +00:00
|
|
|
|
|
|
|
### 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
|
|
|
|
|
2021-02-22 19:11:47 +00:00
|
|
|
## 11.1.0 2020-12-07
|
|
|
|
|
|
|
|
### Other changes
|
|
|
|
* Added ray-tracing extension support
|
|
|
|
|
2020-07-20 15:26:34 +00:00
|
|
|
## 11.0.0 2020-07-20
|
|
|
|
|
2020-07-20 15:32:30 +00:00
|
|
|
### Breaking changes
|
|
|
|
|
|
|
|
#### Visual Studio 2013 is no longer supported
|
|
|
|
|
|
|
|
[As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals),
|
|
|
|
Microsoft Visual Studio 2013 is no longer officially supported. Please upgrade
|
|
|
|
to at least Visual Studio 2015.
|
2020-07-20 15:26:34 +00:00
|
|
|
|
2020-07-20 15:24:30 +00:00
|
|
|
## 10.15.3847 2020-07-20
|
Generate build information from CHANGES.md
This PR significantly reworks the way glslang is versioned.
Instead of committing changes to the `GLSLANG_MINOR_VERSION` define in
`glslang/Public/ShaderLang.h`, and using `make-revision` to generate
`GLSLANG_PATCH_LEVEL` in `glslang/Include/revision.h`, all version
information is now derived from the new `CHANGES.md` file.
`CHANGES.md` acts as the single source of truth for glslang version
information, along with a convenient place to put all release notes for
each notable change made.
`CHANGES.md` is parsed using the new `build_info.py` python script.
This script can read basic template files to produce new source files,
which it does to read the new `build_info.h.tmpl` to generate (at build
time) a glslang private header at
`<build-dir>/include/glslang/build_info.h`.
I've written generators for each of the CMake, Bazel, gn, and
`Android.mk` build scripts.
The new version code conforms to the Semantic Versioning 2.0 spec.
This new version is also used by the CMake rules to produce versioned
shared objects, including a major-versioned SONAME.
New APIs:
---------
* `glslang::GetVersion()` returns a `Version` struct with the version
major, minor, patch and flavor.
Breaking API changes:
---------------------
* The public defines `GLSLANG_MINOR_VERSION` and `GLSLANG_PATCH_LEVEL`
have been entirely removed.
* `glslang/Public/ShaderLang.h` and `glslang/Include/revision.h` have
been deleted.
* Instead, `<build-dir>/include/glslang/build_info.h` is created in
the build directory, and `<build-dir>/include` is a CMake `PUBLIC`
(dependee-inherited) include directory for the glslang targets.
* `<build-dir>/include/glslang/build_info.h` contains the following
new #defines:
`GLSLANG_VERSION_MAJOR`, `GLSLANG_VERSION_MINOR`,
`GLSLANG_VERSION_PATCH`, `GLSLANG_VERSION_FLAVOR`,
`GLSLANG_VERSION_GREATER_THAN(major, minor, patch)`,
`GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch)`,
`GLSLANG_VERSION_LESS_THAN(major, minor, patch)`,
`GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch)`
* The CMake install output directory contains a copy of
`build_info.h` at: `include/glslang/build_info.h`
* Python3 is now always required to build glslang (likely always
required for transitive dependency builds).
2020-06-17 10:17:19 +00:00
|
|
|
|
|
|
|
### 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
|
|
|
|
* `glslang` shared objects produced by CMake are now `SONAME` versioned using
|
|
|
|
[Semantic Versioning 2.0.0](https://semver.org/).
|