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