Revision history for Shaderc

v2019.1-dev 2019-06-04
 - 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
 - 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
 - Infrastructure
   - Update DEPS with cross-verified commits from associated repos.
   - Add utils/roll-deps
 - Fixes:
   - Fix duplicate install paths when using VisualStudio
   #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
