| Revision history for Shaderc |
| |
| v2021.0 2021-04-21 |
| - Refresh dependencies (in DEPS): |
| - SPIRV-Tools v2021.1 |
| - SPIRV-Headers snapshot 2021-04-21 |
| - Glslang 11.2.0, snapshot 2021-04-21 |
| - Fixes: |
| #1174: Windows Bazel support: rename internal headers io.* to io_shaderc.* |
| |
| v2020.5 2021-02-19 |
| - Refresh dependencies (in DEPS): |
| - SPIRV-Tools v2020.7 + 1 patch |
| - Glslang 11.1.0 |
| - Add option to skip building examples |
| - Fixes: |
| #1153: Improve file+line parsing from Glslang messages |
| |
| v2020.4 2020-12-09 |
| - Removed svpc |
| - Fixed issues with embedders getting duplicate symbols |
| - Converted C-style casts to static_cast |
| - Rolled ahead to fix/pickup Vulkan Raytracing support |
| |
| v2020.3 2020-09-02 |
| - General: |
| - Last release with spvc |
| - Cleaned up issues discovered by Infer |
| - spvc: |
| - Added support for Dawn using deprecated Options constructor |
| - Adding support for the additional fixed sample mask in MSL |
| |
| v2020.2 2020-07-23 |
| - General: |
| - Remove VS2013 support |
| - Support both posix and non-posix MinGW toolchains |
| - Support optionally building Tint tooling for WGSL |
| - Add -h option to glslc, spvc; same as --help |
| - Add source file license checker |
| - BUILD.gn improvements |
| |
| - glslc, libshaderc: |
| - Update to Glslang generator 9 |
| - Add interface to support 16bit types in HLSL |
| - Add glslc hidden experimental option -mfmt=wgsl; requires Tint |
| |
| - spvc: |
| - Add minimum buffer size for Dawn reflection |
| |
| v2020.1 2020-06-09 |
| This is the last version that officially supports VS2013. |
| |
| - General: |
| - Added warning signs about unsupported downloads (#1041) |
| - Added .NET bindings to README.md (#1060) |
| - Only add -fPIC if supported by the compiler. (#1061) |
| |
| - glslc, libshaderc: |
| - Removed Singleton pattern around access to glslang (#1059) |
| |
| - spvc: |
| - Added concept of comparison sampler to API (#1036) |
| - Added support for options.hlsl.nonwritable_uav_texture_as_srv (#1048) |
| - Support forcing storage buffers to be always declared as UAV. (#1076) |
| |
| v2020.0 2020-03-06 |
| - General: |
| - Getting spirv.hpp from SPIRV-Headers instead of not glslang (#992) |
| - Added clarification about status of artifacts in downloads.md (#1012) |
| |
| - glslc, libshaderc: |
| - Added support for new Glslang profile enum, EProfileCount (#973) |
| - Updated user documentation for -S in glslc (#978) |
| - Add documentation for Vulkan 1.2 and SPIR-V 1.5 (#980) |
| - Removed NV_EXTENSIONS conditionals (#1003) |
| - Added support for generating WebGPU SPIR-V to libshaderc (#1021) |
| - Rolled in all DEPS for provisional SPIR-V extensions for raytracing |
| |
| - spvc: |
| - Normalized API behaviour (#967) |
| - Added source_set target for libshaderc_spvc (#976) |
| - Added in support for spvc logging to the terminal (#981) |
| - Internal refactoring to reduce boiler plate in API implementations (#984) |
| - Added newline to logging messages to make them readable (#985) |
| - Added reflection support for Dawn: |
| - storage textures (#1001) |
| - storage texture format (#1005) |
| - texture dimension for storage textures (#1008) |
| - is storage texture declared as multisampled texture (#1011) |
| - Converted compile options to require explicit environments (#1019) |
| - Added knob to control force_zero_initialized_variables in SPIRV-Cross (#1028) |
| |
| v2019.1 2020-01-22 |
| - glslc, libshaderc: |
| - Add -fnan-clamp: Generate code for max and min builtins so that, |
| given a NaN operand, will return the other operand. Similarly, the |
| clamp builtin favours non-NaN operands, as if clamp was implemented |
| as the composition of max and min. |
| - Add -finvert-y |
| - Using SetBeforeHlslLegalization for more relaxed validation rules |
| - Added support for SPIR-V 1.5 |
| - Add --emit-line-directive option |
| - Added support for Vulkan 1.2 |
| - spvc: |
| - Add many options: |
| --flatten-multidimensional-arrays |
| --es |
| --no-es |
| --glsl-emit-push-constant-as-ubo |
| --msl-swizzle-texture-samples |
| --msl-platform=ios|macos |
| --msl-pad-fragment-output |
| --msl-capture-output |
| --msl-domain-lower-left |
| --msl-argument-buffers |
| --msl-discrete-descriptor-set=<number> |
| --hlsl-enable-compat |
| - Reintroduce shaderc_spvc_compile_options_set_shader_model |
| - Added option to inject robust buffer access code |
| - Added support for emitting ToVulkan shaders |
| - Added spirv-opt based IR generation as alternative to built in spirv_cross IR gen |
| - Added API for specifying source and target execution environments |
| - Added option & reflection API methods neede by Dawn |
| - Substantial internal refactoring and code cleanup |
| - Large number of breaking changes to the API |
| - Replaced shaderc_spvc_compile_options_set_shader_model with |
| shaderc_spvc_compile_options_set_hlsl_shader_model |
| - Compiler initialization and shader generation moved into seperate calls |
| - Seperated return codes from shaderc ones |
| - Many small API changes |
| - Improvements to testing |
| - Refactoring and clean up of run_spirv_cross_tests.py |
| - Seperation of expectations into known failures, known invalids, and cases |
| that need investigation |
| - Tweaks and fixes to substantially increase passing cases |
| - Added support for running tests using spvc IR generation |
| - Infrastructure |
| - Update DEPS with cross-verified commits from associated repos. |
| - Add utils/roll-deps |
| - Infrastructure: |
| - Removed Appveyor artifacts link |
| - Improvements and clean up of DEPS rolling scripts |
| - Enabled warnings about implicit fallthrough |
| - Enabled improper semicolon warnings |
| - Restricted -fPIC to platforms that support it |
| - Converted remaining scripts to use Python 3 |
| - Replaced nosetest with unittest |
| - Removed assumptions aabout location of spirv-tools, effcee, and RE2 |
| - Migrated BUILD.gn spirv_cross dependency to local repo |
| - Fixes: |
| - Fix duplicate install paths when using VisualStudio |
| - Fixed BUILD.gn for Chromium, Dawn & Fuchsia |
| - Explicitly enabled HLSL support in glslang |
| - Added installing necessary headers in Android.mk |
| - Removed unsupported Unicode characters |
| - Fixed detection of spirv-headers directory |
| #666: Update Docker file to use Python3 |
| |
| v2019.0 2019-06-04 |
| - Add optional spvc, libshaderc_spvc as wrapper around SPIRV-Cross: |
| - Rejects bad modules by running the SPIR-V validator first |
| - Skips exception-heavy SPIRV-Cross SPIR-V parser |
| - Support NV extensions for shader stages |
| - Require SPIRV-Tools and SPIRV-Headers with SPIR-V 1.4 support |
| Build support: |
| - Use KhronosGroup/glslang instead of google/glslang |
| - Stop running tests on VS 2013 (googletest no longer supports VS2013) |
| - Require Python3 for building |
| - Support Chromium's GN build system |
| - Kokoro build fixes |
| - Cmake build fixes: Only build subdirs if those targets are not yet defined |
| - Use Android.mk from Glslang |
| - Dockerfile gets re2 and effcee sources |
| - Fixes for newer googletest |
| - Add address sanitizer presubmit bot |
| - Generate config files for pkg-config |
| Spvc: |
| - Add option to specify source environment. Spvc will transform from source |
| to target environment if they are different. This only works for WebGPU0 |
| and Vulkan 1.1. |
| Fixes: |
| #499: In HLSL compilation, relax layout and logical pointer validation rules |
| prior to running the legalization recipe. |
| |
| v2018.0 2018-10-01 |
| - Support -fhlsl_functionality1 (also -fhlsl-functionality1) |
| - Support NVIDIA Turing extensions. Requires updated Glslang and SPIRV-Tools. |
| - Use SPIR-V optimization and HLSL legalization recipes from SPIRV-Tools. |
| - Pass target environment into SPIRV-Tools code, e.g. from --target-env vulkan1.1 |
| - Add SONAME=1 property to shared library |
| - Support GN build for Chromium |
| Fixes: |
| #469: Add virtual dtor to classes with virtual functions. |
| #457: Fix writing SPIR-V binaries to standard output on Windows. |
| |
| v2017.2 2018-02-27 |
| - Add a shared library version of libshaderc |
| - Support GLSL 4.6 and ESSL 3.2 |
| - Fail compilation if a resource does not have a binding. |
| - Add options for automatically setting bindings for (uniform) resources that |
| don't have bindings set in shader source. |
| - Add options for automatically setting locations for pipline inputs and outputs. |
| - Add option for using HLSL IO mappings as expressed in source. |
| - Add options for setting resource binding base numbers. |
| - Add option to use HLSL resource register numbers for bindings. |
| - HLSL compilation now defaults to HLSL packing rules. |
| (This change is inherited from Glslang commit 7cca140.) |
| - HLSL compilation runs SPIR-V "legalization" transforms to reduce |
| manipulation of opaque handles (e.g. images), to satisfy Vulkan rules. |
| - Adapt to Glslang generator version numbers: |
| - To 2: a fix for code generation for atomicCounterDecrement. |
| - To 3: change memory barrier semantics masks |
| - To 4: generate more access chains for swizzles |
| - CMake install rules uses GNUInstallDirs. For example, install to lib64 |
| when that is the norm for the target system. |
| |
| v2017.1 2017-03-10 |
| - Add option to automatically assign bindings to uniform variables |
| that don't have an explicit 'binding' layout in the shader source. |
| - Enable NVIDIA extensions by default in GLSL compilation |
| - README mentions language bindings provided by 3rd parties. |
| - README describes the known-good branch on GitHub |
| - Fixed examples in shaderc.h; added C API use to examples/online-compile |
| - Fixes issues: |
| #289: Don't output an object file when compilation fails. |
| #296: Enable use of the CMake in Android Studio. |
| |
| v2016.2 2016-12-13 |
| - Describe Shaderc's level of stability. |
| - Support HLSL compilation, exposing functionality in Glslang. |
| - Supported in C, C++ API |
| - glslc accepts "-x hlsl", and assumes .hlsl files are HLSL. |
| - glslc accepts "-fentry-point=<name>" to set entry point name, |
| overriding default value "main". |
| - Support setting shader resource limits in C, C++ APIs, and in |
| glslc |
| - glslc adds -flimit=<setting> |
| - glslc adds --show-limits to display defaults and valid resource |
| limit syntax. |
| - glslc adds "-flimit-file <file>" support to read Glslang resource |
| configuration files, i.e. the output of "glslangValidator -c". |
| - Enable AMD extensions by default in GLSL compilation |
| - Fixes issues: |
| #281: Work around Android build issue with abspath on Windows |
| #283: Increase default maxDrawBuffers to 4, to match Vulkan/GLES3.0 |
| |
| v2016.1 2016-10-12 |
| - C API for assembling now takes an options object |
| - Support compilation options to optimize for size. |
| - Maintain compatibility with recent SPIRV-Tools and Glslang versions. |
| - Update examples. |
| - Build cleanups. |
| - Fixes issues: |
| #238: Fix invocation of python scripts during build |
| |
| v2016.0 2016-07-07 |
| |
| - Adds v<year>.<index> versioning, with "-dev" suffix to indicate work in |
| progress. The intent is to summarize and report functionalities more easily |
| for incorporating into downstream projects. |
| |
| - Summary of functionalities (See the README.md for more details): |
| - Provides libraries and command line tools for generating SPIR-V modules |
| - Supports GLSL source code or SPIR-V assembly as input |
| - Supports SPIR-V binary or assembly text as output |
| - Command line options follow GCC/Clang conventions |
| - Supports various semantics (OpenGL, OpenGL Compatible and Vulkan) |
| - Supports #include |
| - Supports user-defined macros |
| - Supports dependency information dumping |