Update CHANGES for fix to 776
[platform/upstream/SPIRV-Tools.git] / CHANGES
1 Revision history for SPIRV-Tools
2
3 v2016.7-dev 2017-01-06
4  - Add SPIR-V 1.2
5  - OpenCL 2.2 support is now based on SPIR-V 1.2
6  - Support AMD extensions in assembler, disassembler:
7     SPV_AMD_gcn_shader
8     SPV_AMD_shader_ballot
9     SPV_AMD_shader_explicit_vertex_parameter
10     SPV_AMD_shader_trinary_minmax
11     SPV_AMD_gpu_shader_half_float
12     SPV_AMD_texture_gather_bias_lod
13     SPV_AMD_gpu_shader_int16
14  - Optimizer: Add support for:
15    - Inline all function calls in entry points.
16    - Flatten decoration groups.  Fixes #602
17    - Id compaction (minimize Id bound).  Fixes #624
18    - Eliminate redundant composite insert followed by extract
19    - Simplify access chains to local variables
20    - Eliminate local variables with a single store, if possible
21    - Eliminate local variables with a several stores, if possible
22    - Eliminate loads and stores in same block to local variables
23    - Eliminate redundant insert/extract to composite values
24    - Aggressive dead instruction elimination
25    - Eliminate dead branches
26    - Merge blocks when the second can only be preceded by the first
27    - Eliminate ommon uniform loads
28  - Assembler: Add option to preserve numeric ids. Fixes #625
29  - Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V
30    assembly syntax file for Vim.
31  - Version string: Allow overriding of wall clock timestamp with contents
32    of environment variable SOURCE_DATE_EPOCH.
33  - Validator implements relaxed rules for SPV_KHR_16bit_storage.
34  - CMake installation rules use GNUInstallDirs.  For example, libraries
35    will be installed into a lib64 directory if that's the norm for the
36    current system.
37  - Fixes:
38    #500: Parameterize validator limit checks
39    #508: Support compilation under CYGWIN
40    #517: Fix validation when continue (or case) contstruct is also the head of a
41      nested control construct.
42    #551: If a merge block is reachable, it must be *strictly* dominated by its
43      header.
44    #548: Validator: Error when the reserved OpImageSparseSampleProj* opcodes
45      are used.
46    #611: spvtools::Optimizer was failing to save the module to the output
47      binary vector when all passes succeded without changes.
48    #629: The inline-entry-points-all optimization could generate invalidly
49      structured code when the inlined function had early returns.
50    #697: Optimizer's Instruction::ForEachInId method was skipping semantics-id
51      and scope-id.
52    #755: Inliner: Fix inlining of callee with single Return appearing before
53      the end of the function.
54    #776: Fix dead branch elimination in presence of complex but dead control
55      flow.
56    #782: Inliner: Fix remapping of non-label forward references in callee
57
58 v2016.6 2016-12-13
59  - Published the C++ interface for assembling, disassembling, validation, and
60    optimization.
61  - Support SPV_KHR_shader_draw_parameters in assembler, disassembler, parser.
62  - Validator:
63    - Add validator API accepting raw binary words
64    - Increased coverage:
65      - Checks "Data rules" in Universal Validation Rules, section 2.16.1
66      - WIP: Universal Limits.
67        - The minimum mandated upper bounds are checked.
68        - TODO: Parameterize the validator to allow larger limits accepted by
69          a more than minimally capable implementation.
70    - OpSampledImage checks
71    - OpConstantComposite checks
72    - Id bound check
73  - Disasssembler:
74    - Generates friendly GLSL-based names for more builtin variables
75    - Generates friendly names for numeric OpConstant values
76    - Vendor tool info extracted from SPIR-V XML registry file.
77  - Fixes issues:
78    #429: Validator: Allow OpTypeForwardPointer and OpTypeStruct to reference
79      undefined IDs
80    #482: Validator: OpVariable initializer can be an ID of a module-scope variable
81
82 v2016.5 2016-09-16
83  - Support SPV_KHR_shader_ballot in assembler, disassembler, parser.
84  - Disassembler: Generate friendly names for built-in variables.
85  - Partial fixes:
86    #359: Add Emacs helper for automatically diassembling/assembling a SPIR-V
87      binary on file load/save.
88  - Fixes:
89    #414: Validator: Allow OpUndef for composite constants
90    #415: Validator: Phi can use its own value in some cases.
91
92 v2016.4 2016-09-01
93  - Relicensed under Apache 2.0
94  - Add optimization passes (in API and spirv-opt command)
95    - Fold spec constants defined with OpSpecConstantOp and
96        OpSpecConstantComposite to normal constants with fixed value(s).
97  - Fixes issues:
98    #318: Relicensed under Apache 2.0
99
100 v2016.3 2016-08-24
101  - Add target environment enums for OpenCL 2.1, OpenCL 2.2,
102    OpenGL 4.0, OpenGL 4.1, OpenGL 4.2, OpenGL 4.3, OpenGL 4.5.
103  - Add spirv-cfg, an experimental tool to dump the control flow graph
104    as a GraphiViz "dot" graph
105  - Add optimization pass: Eliminate dead constants.
106  - Add spirv-lesspipe.sh filter utility
107  - Fixes issues:
108    #288: Check def-use dominance rules for OpPhi (variable,parent) operands
109    #339: Allow OpUndef in types-constants-global-vars section, as required
110      by SPIR-V 1.0 Rev7, 1.1 Rev 3.
111    #340: Avoid race on mkdir during build
112    #365: Relax PointSize, ClipDistance, CullDistance capability check in all
113      environments not just Vulkan 1.0.
114
115 v2016.2 2016-08-05
116  - Validator is incomplete
117    - Checks ID use block is dominated by definition block
118  - Add optimization passes (in API and spirv-opt command)
119    - Strip debug info instructions
120    - Freeze spec constant to their default values
121  - Allow INotEqual as operation for OpSpecConstantOp
122  - Fixes bugs:
123    #270: validator: crash when continue construct is unreachable
124    #279: validator: infinite loop when analyzing some degenerate control
125      flow graphs
126    #286: validator: don't incorrectly generate def-use error for
127          (variable,parent) parameters to OpPhi
128    #290: disassembler: never generate bare % for an identifier
129    #295: validator: def-use dominance check should ignore unreachable uses
130    #276: validator: allow unreachable continue constructs
131    #297: validator: allow an unreachable block to branch to a reachable
132          merge block
133
134 v2016.1 2016-07-19
135  - Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261
136    Turn off ClipDistance and CullDistance capability checks for Vulkan.
137  - The disassembler can emit friendly names based on debug info (OpName
138    instructions), and will infer somewhat friendly names for most types.
139    This is turned on by default for the spirv-dis command line tool.
140  - Updated to support SPIR-V 1.1 rev 2
141    - Input StorageClass, Sampled1D capability, and SampledBuffer capability
142      do not require Shader capability anymore.
143
144 v2016.0 2016-07-04
145
146  - Adds v<year>.<index> versioning, with "-dev" indicating
147    work in progress.  The intent is to more easly report
148    and summarize functionality when SPIRV-Tools is incorporated
149    in downstream projects.
150
151  - Summary of functionality (See the README.md for more):
152    - Supports SPIR-V 1.1 Rev 1
153    - Supports SPIR-V 1.0 Rev 5
154    - Supports GLSL std450 extended instructions 1.0 Rev 3
155    - Supports OpenCL extended instructions 1.0 Rev 2
156    - Assembler, disassembler are complete
157      - Supports floating point widths of 16, 32, 64 bits
158      - Supports integer widths up to 64 bits
159    - Validator is incomplete
160      - Checks capability requirements in most cases
161      - Checks module layout constraints
162      - Checks ID use-definition ordering constraints,
163        ignoring control flow
164      - Checks some control flow graph rules
165    - Optimizer is introduced, with few available transforms.
166    - Supported on Linux, OSX, Android, Windows
167
168  - Fixes bugs:
169    - #143: OpenCL pow and pown arguments