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