aboutsummaryrefslogtreecommitdiff
path: root/CHANGES
blob: b6b97c71f6248a06c69c5e0f8bb1a705f2c4fbed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
Revision history for Shaderc

v2020.4-dev 2020-09-02
 - Start v2020.4-dev

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