Publish the C++ interface.
[platform/upstream/SPIRV-Tools.git] / CHANGES
1 Revision history for SPIRV-Tools
2
3 v2016.6-dev 2016-09-16
4  - Published the C++ interface for assembling, disassembling, validation, and
5    optimization.
6
7 v2016.5 2016-09-16
8  - Support SPV_KHR_shader_ballot in assembler, disassembler, parser.
9  - Disassembler: Generate friendly names for built-in variables.
10  - Partial fixes:
11    #359: Add Emacs helper for automatically diassembling/assembling a SPIR-V
12      binary on file load/save.
13  - Fixes:
14    #414: Validator: Allow OpUndef for composite constants
15    #415: Validator: Phi can use its own value in some cases.
16
17 v2016.4 2016-09-01
18  - Relicensed under Apache 2.0
19  - Add optimization passes (in API and spirv-opt command)
20    - Fold spec constants defined with OpSpecConstantOp and
21        OpSpecConstantComposite to normal constants with fixed value(s).
22  - Fixes issues:
23    #318: Relicensed under Apache 2.0
24
25 v2016.3 2016-08-24
26  - Add target environment enums for OpenCL 2.1, OpenCL 2.2,
27    OpenGL 4.0, OpenGL 4.1, OpenGL 4.2, OpenGL 4.3, OpenGL 4.5.
28  - Add spirv-cfg, an experimental tool to dump the control flow graph
29    as a GraphiViz "dot" graph
30  - Add optimization pass: Eliminate dead constants.
31  - Add spirv-lesspipe.sh filter utility
32  - Fixes issues:
33    #288: Check def-use dominance rules for OpPhi (variable,parent) operands
34    #339: Allow OpUndef in types-constants-global-vars section, as required
35      by SPIR-V 1.0 Rev7, 1.1 Rev 3.
36    #340: Avoid race on mkdir during build
37    #365: Relax PointSize, ClipDistance, CullDistance capability check in all
38      environments not just Vulkan 1.0.
39
40 v2016.2 2016-08-05
41  - Validator is incomplete
42    - Checks ID use block is dominated by definition block
43  - Add optimization passes (in API and spirv-opt command)
44    - Strip debug info instructions
45    - Freeze spec constant to their default values
46  - Allow INotEqual as operation for OpSpecConstantOp
47  - Fixes bugs:
48    #270: validator: crash when continue construct is unreachable
49    #279: validator: infinite loop when analyzing some degenerate control
50      flow graphs
51    #286: validator: don't incorrectly generate def-use error for
52          (variable,parent) parameters to OpPhi
53    #290: disassembler: never generate bare % for an identifier
54    #295: validator: def-use dominance check should ignore unreachable uses
55    #276: validator: allow unreachable continue constructs
56    #297: validator: allow an unreachable block to branch to a reachable
57          merge block
58
59 v2016.1 2016-07-19
60  - Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261
61    Turn off ClipDistance and CullDistance capability checks for Vulkan.
62  - The disassembler can emit friendly names based on debug info (OpName
63    instructions), and will infer somewhat friendly names for most types.
64    This is turned on by default for the spirv-dis command line tool.
65  - Updated to support SPIR-V 1.1 rev 2
66    - Input StorageClass, Sampled1D capability, and SampledBuffer capability
67      do not require Shader capability anymore.
68
69 v2016.0 2016-07-04
70
71  - Adds v<year>.<index> versioning, with "-dev" indicating
72    work in progress.  The intent is to more easly report
73    and summarize functionality when SPIRV-Tools is incorporated
74    in downstream projects.
75
76  - Summary of functionality (See the README.md for more):
77    - Supports SPIR-V 1.1 Rev 1
78    - Supports SPIR-V 1.0 Rev 5
79    - Supports GLSL std450 extended instructions 1.0 Rev 3
80    - Supports OpenCL extended instructions 1.0 Rev 2
81    - Assembler, disassembler are complete
82      - Supports floating point widths of 16, 32, 64 bits
83      - Supports integer widths up to 64 bits
84    - Validator is incomplete
85      - Checks capability requirements in most cases
86      - Checks module layout constraints
87      - Checks ID use-definition ordering constraints,
88        ignoring control flow
89      - Checks some control flow graph rules
90    - Optimizer is introduced, with few available transforms.
91    - Supported on Linux, OSX, Android, Windows
92
93  - Fixes bugs:
94    - #143: OpenCL pow and pown arguments