Revision history for Shaderc

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
