1 Revision history for SPIRV-Tools
5 - OpenCL 2.2 support is now based on SPIR-V 1.2
6 - Support AMD extensions in assembler, disassembler:
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 of 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 loads and stores in same block to local variables
22 - Assembler: Add option to preserve numeric ids. Fixes #625
23 - Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V
24 assembly syntax file for Vim.
25 - Version string: Allow overriding of wall clock timestamp with contents
26 of environment variable SOURCE_DATE_EPOCH.
27 - Validator implements relaxed rules for SPV_KHR_16bit_storage.
28 - CMake installation rules use GNUInstallDirs. For example, libraries
29 will be installed into a lib64 directory if that's the norm for the
32 #500: Parameterize validator limit checks
33 #508: Support compilation under CYGWIN
34 #517: Fix validation when continue (or case) contstruct is also the head of a
35 nested control construct.
36 #551: If a merge block is reachable, it must be *strictly* dominated by its
38 #548: Validator: Error when the reserved OpImageSparseSampleProj* opcodes
40 #611: spvtools::Optimizer was failing to save the module to the output
41 binary vector when all passes succeded without changes.
42 #629: The inline-entry-points-all optimization could generate invalidly
43 structured code when the inlined function had early returns.
44 #697: Optimizer's Instruction::ForEachInId method was skipping semantics-id
48 - Published the C++ interface for assembling, disassembling, validation, and
50 - Support SPV_KHR_shader_draw_parameters in assembler, disassembler, parser.
52 - Add validator API accepting raw binary words
54 - Checks "Data rules" in Universal Validation Rules, section 2.16.1
55 - WIP: Universal Limits.
56 - The minimum mandated upper bounds are checked.
57 - TODO: Parameterize the validator to allow larger limits accepted by
58 a more than minimally capable implementation.
59 - OpSampledImage checks
60 - OpConstantComposite checks
63 - Generates friendly GLSL-based names for more builtin variables
64 - Generates friendly names for numeric OpConstant values
65 - Vendor tool info extracted from SPIR-V XML registry file.
67 #429: Validator: Allow OpTypeForwardPointer and OpTypeStruct to reference
69 #482: Validator: OpVariable initializer can be an ID of a module-scope variable
72 - Support SPV_KHR_shader_ballot in assembler, disassembler, parser.
73 - Disassembler: Generate friendly names for built-in variables.
75 #359: Add Emacs helper for automatically diassembling/assembling a SPIR-V
76 binary on file load/save.
78 #414: Validator: Allow OpUndef for composite constants
79 #415: Validator: Phi can use its own value in some cases.
82 - Relicensed under Apache 2.0
83 - Add optimization passes (in API and spirv-opt command)
84 - Fold spec constants defined with OpSpecConstantOp and
85 OpSpecConstantComposite to normal constants with fixed value(s).
87 #318: Relicensed under Apache 2.0
90 - Add target environment enums for OpenCL 2.1, OpenCL 2.2,
91 OpenGL 4.0, OpenGL 4.1, OpenGL 4.2, OpenGL 4.3, OpenGL 4.5.
92 - Add spirv-cfg, an experimental tool to dump the control flow graph
93 as a GraphiViz "dot" graph
94 - Add optimization pass: Eliminate dead constants.
95 - Add spirv-lesspipe.sh filter utility
97 #288: Check def-use dominance rules for OpPhi (variable,parent) operands
98 #339: Allow OpUndef in types-constants-global-vars section, as required
99 by SPIR-V 1.0 Rev7, 1.1 Rev 3.
100 #340: Avoid race on mkdir during build
101 #365: Relax PointSize, ClipDistance, CullDistance capability check in all
102 environments not just Vulkan 1.0.
105 - Validator is incomplete
106 - Checks ID use block is dominated by definition block
107 - Add optimization passes (in API and spirv-opt command)
108 - Strip debug info instructions
109 - Freeze spec constant to their default values
110 - Allow INotEqual as operation for OpSpecConstantOp
112 #270: validator: crash when continue construct is unreachable
113 #279: validator: infinite loop when analyzing some degenerate control
115 #286: validator: don't incorrectly generate def-use error for
116 (variable,parent) parameters to OpPhi
117 #290: disassembler: never generate bare % for an identifier
118 #295: validator: def-use dominance check should ignore unreachable uses
119 #276: validator: allow unreachable continue constructs
120 #297: validator: allow an unreachable block to branch to a reachable
124 - Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261
125 Turn off ClipDistance and CullDistance capability checks for Vulkan.
126 - The disassembler can emit friendly names based on debug info (OpName
127 instructions), and will infer somewhat friendly names for most types.
128 This is turned on by default for the spirv-dis command line tool.
129 - Updated to support SPIR-V 1.1 rev 2
130 - Input StorageClass, Sampled1D capability, and SampledBuffer capability
131 do not require Shader capability anymore.
135 - Adds v<year>.<index> versioning, with "-dev" indicating
136 work in progress. The intent is to more easly report
137 and summarize functionality when SPIRV-Tools is incorporated
138 in downstream projects.
140 - Summary of functionality (See the README.md for more):
141 - Supports SPIR-V 1.1 Rev 1
142 - Supports SPIR-V 1.0 Rev 5
143 - Supports GLSL std450 extended instructions 1.0 Rev 3
144 - Supports OpenCL extended instructions 1.0 Rev 2
145 - Assembler, disassembler are complete
146 - Supports floating point widths of 16, 32, 64 bits
147 - Supports integer widths up to 64 bits
148 - Validator is incomplete
149 - Checks capability requirements in most cases
150 - Checks module layout constraints
151 - Checks ID use-definition ordering constraints,
152 ignoring control flow
153 - Checks some control flow graph rules
154 - Optimizer is introduced, with few available transforms.
155 - Supported on Linux, OSX, Android, Windows
158 - #143: OpenCL pow and pown arguments