1
1
Revision history for SPIRV-Tools
2
2
3
- v2018.3-dev 2018-04-06
3
+ v2018.6-dev 2018-09-07
4
+ - Start v2018.6-dev
5
+
6
+ v2018.5 2018-09-07
7
+ - General:
8
+ - Support SPV_KHR_vulkan_memory_model
9
+ - Update Dim capabilities, to match SPIR-V 1.3 Rev 4
10
+ - Automated build bots no run tests for the VS2013 case
11
+ - Support Chromium GN build
12
+ - Use Kokoro bots:
13
+ - Disable Travis-CI bots
14
+ - Disable AppVeyor VisualStudio Release builds. Keep VS 2017 Debug build
15
+ - Don't check export symbols on OSX (Darwin): some installations don't have 'objdump'
16
+ - Reorganize source files and namespaces
17
+ - Fixes for ClangTidy, and whitespace (passes 'git cl presumit --all -uf')
18
+ - Fix unused param compile warnings/errors when Effcee not present
19
+ - Avoid including time headers when timer functionality is disabled
20
+ - Avoid too-stringent warnings flags for Clang on Windows
21
+ - Internal refactoring
22
+ - Add hooks for automated fuzzing
23
+ - Add testing of command line executables
24
+ - #1688: Use binary mode on stdin; fixes "spirv-dis <foo.spv" on Windows
25
+ - Optimizer
26
+ - The optimizer validates the module before it begins
27
+ - Add API to register passes by string name
28
+ - Fold a vector shuffle feeding a vector shuffle
29
+ - Add -combine-access-chains transform
30
+ - Refactor how IRContext is handled by passes
31
+ - Improve bookkeeping for instruction result type and result id
32
+ - Fix over-duplication of decorations
33
+ - Fix handling of exits from selections in dead-branch elimination, and dead code
34
+ elimination.
35
+ - Fix handling of certain kinds of flow control in merge-return
36
+ Fixes:
37
+ - #1721: Fix size bug when folding vector shuffles
38
+ - #1722: Fix size infinite loop when folding vector shuffles
39
+ - #1724: Fix finding a constant of a specific type
40
+ - #1727: Dead branch elim: Reorder blocks if needed to satisfy dominance rule
41
+ - #1729: Handle VariablePointers cases in various optimizations
42
+ - #1731: Fix vector shuffle with literal id indicating undef value
43
+ - #1736: Fix handling of decorations and phis in merge-return
44
+ - #1787: Fix handling of decorations related to access chains
45
+ - #1865: Avoid leaking memory for SPIR-V constant values
46
+ - Validator
47
+ - Improve error messages
48
+ - Avoid platform-dependent traversal ordering, to ensure consistent messages
49
+ - Use libspirv::Instruction where possible
50
+ - Add option to skip all block layout checks
51
+ - Validate all type IDs
52
+ - Validate uses of OpFunction
53
+ - Validate uses of OpTypeFunction
54
+ - Disallow a struct containing its own type https://crbug.com/874372
55
+ - #1685: Vulkan permits non-monotonic offsets for block members
56
+ - #1697: Enforce block layout rules even when using relaxed block layout option
57
+ - #1719: Fix line number for vector shuffle valiation error
58
+ - #1789: Avoid assertion failure when validating some functions
59
+ - #1800: Fix validation of OpCopyMemorySized
60
+ - #1822: Stop enforcing struct member offset montonicity
61
+ - #1831: Disallow void members in structs
62
+
63
+ v2018.4 2018-07-08
64
+ - General:
65
+ - Support SPV_KHR_8bit_storage
66
+ - Add gclient and presubmit configurations
67
+ - Enable Kokoro build bots (#1625)
68
+ - Group tests into fewer executables, reduces load on CI
69
+ - Port test script to Python 3
70
+ - Symbol export tests respect SPIRV_SKIP_TESTS
71
+ - #1596: Operand lookup succeeds if enabled by a capability
72
+ - #1624: Instruction lookup succeeds if enabled by a capability
73
+ - Refactoring namespaces:
74
+ - #1678: Change libspirv to spvtools
75
+ - Code in source/utils moved into spvtools::utils
76
+ - Code in source/comp moved into spvtools::comp
77
+ - Optimizer:
78
+ - Remove insert-extract-elim pass. Use simplification pass instead.
79
+ - Preserve instruction-to-block mapping in most passes, to reduce runtime.
80
+ - Small vector optimization for operands
81
+ - Add pass to move Private variables to Function. Increase opportunity to optimize.
82
+ - Fixes:
83
+ #1120: Check static uses of entry point interfaces
84
+ #1372: Avoid merging some structs, to preserve names for reflection
85
+ #1577: Scalar replacement uses only undecorated types.
86
+ #1578: Fix handling of forward-pointer types, and types embedding pointers
87
+ to themselves.
88
+ #1591: Inliner: Callee variable with initializer should have a store at the call site.
89
+ #1634: Fix crash: Use type id in vector type lookup
90
+ #1649: Fix assert in compact-ids pass
91
+ Fix constant folder: ensure it uses the right type
92
+ #1659: Folding rules added to IRContext. Avoids leak.
93
+ - Validator
94
+ - Add work-in-progress WebGPU environment. Disallows OpUndef
95
+ - #670, #1581: Improve error messages; disassemble instruction
96
+ - #491: Check structured switches
97
+ - #937: Check layout rules for Block and BufferBlock in Uniform, StorageBuffer, PushConstant
98
+ - #1281: Check invalid branches into structured constructs
99
+ - #1522: Disallow array-of-arrays with DescriptorSets
100
+ - #1577: Allow duplicate pointer types.
101
+ - #1581: Better messages: output ID names along with numbers in more cases.
102
+ - #1597: Check Vulkan 1.1 capabilities
103
+ - #1618: Check invalid exit from structured case construct
104
+ - #1622: Run IdPass before DataRulesPass
105
+ - #1632: Reduce test time by artificially lowering limits in limit test
106
+ - #1638: Block-decorated structs member order must respect offset order
107
+ - #1657: Improve CFG validation diagnostics
108
+ - Khronos SPIR-V #337: GLSL.std.450 Refract instruction Eta param can be any float scalar.
109
+ - #1606: PushConstant Blocks follow storage-buffer layout rules
110
+ - #1664: Check layout of StorageBuffer variables with Block decoration, using storage buffer
111
+ rules
112
+ - #1666: Layout validation should permit {vec3; float} packing
113
+ - #1637, #1668: Layout validation uses RowMajor, ArrayStride, MatrixStride properly
114
+ - Linker
115
+ - Avoid buffer overrun when creating OpModuleProcessed
116
+
117
+ v2018.3 2018-05-25
4
118
- General:
5
119
- Support SPV_EXT_descriptor_indexing
6
120
- Support SPV_GOOGLE_decorate_string
@@ -12,31 +126,69 @@ v2018.3-dev 2018-04-06
12
126
attributes in the "unified1" SPIR-V core grammar.
13
127
- Disassembler: Emit more digits on floating point, to reliably reproduce all
14
128
significand bits. (Use std::max_digits10 instead of std::digits10)
129
+ - Fix compilation for old XCode versions: Explicit construction required for std::set.
15
130
- Optimizer:
16
131
- Add --strip-reflect
17
132
- Add --time-report
133
+ - Add --loop-fission
134
+ - Add lop fusion.
135
+ - Add loop peeling pass and internal utility.
136
+ - Improve optimizer runtime.
18
137
- Merge-return now works with structured control flow.
19
138
- New (faster) SSA rewriter to convert local loads and stores to SSA IDs and phis.
20
139
Can replace load/store elimination passes.
21
140
- Fix instruction folding case: insertion that feeds and extract, when the extract
22
141
remains.
142
+ - Fold OpDot.
143
+ - Fold OpFNegate.
144
+ - Fold multply and divide of same value.
145
+ - Fold FClamp feeding a compare.
146
+ - Fold OpLoad feeding an extract, to reduce excessive copying. (#1547)
147
+ - Fold Fmix feeding an extract.
148
+ - Use simplification pass instead of insert-extract elimination.
149
+ - Constant fold OpVectorTimesScalar.
23
150
- Copy propagate arrays, in simple cases.
151
+ - Aggressive dead code elimination: Can remove more instructions, e.g. derivatives.
152
+ - Aggressive dead code elimination: Remove Workgroup variables that are written but not read.
24
153
- Better handling of OpImageTexelPointer
25
- - Add loop peeling internal utility.
26
154
- Initial utilities for scalar evolution.
155
+ - Add Vector dead code elimination.
156
+ - Each pass can only run once.
157
+ - Allow code hosting in if-conversion.
158
+ - Add external interface for adding a PassToken, so external code can make their own
159
+ passes.
160
+ - Fixes:
161
+ #1404: Don't optimize away the compute compute workgroup size constant.
162
+ #1407: Remove a bad assertion
163
+ #1456: Fix bug in SSA rewriter related to variables updated in loops.
164
+ #1487: Fix long runtime in Dead insertion elimination: Don't revist select phi nodes.
165
+ #1492: Aggressive dead code elimination can remove OpDecorateStringGOOGLE.
166
+ #1527: Fix inlining of functions having OpKill and OpUnreachable.
167
+ #1559: Fix assert failure in reduce-load-size pass.
168
+ #1556: Aggressive dead code elimination: Fix handling of OpCopyMemory.
27
169
- Validator:
28
170
- Check Vulkan built-in variables
29
171
- Check Vulkan-specific atomic result type rule.
30
172
- Relax control barrier check for SPIR-V 1.3. Fixes #1427
31
173
- Check OpPhi.
174
+ - Check OpMemoryModel.
32
175
- Stop checking sizes derived from spec-constants.
33
176
- Re-enable checks for OpUConvert.
177
+ - Vulkan: Fix check for PrimitiveId: Permit as Input in fragment shader.
178
+ - Validate binary version for the given target environment.
179
+ - Add tests for OpBranch checks.
180
+ - Vulkan 1.1: Check scope for non-uniform subgroup operations.
181
+ - Fix checks for SPV_AMD_gpu_shader_int16.
182
+ - Fix logical layout check for OpDecorateId.
183
+ - Fix checks for ViewportIndex & Layer for Vulkan and SPV_EXT_shader_viewport_index_layer.
184
+ - Fixes:
185
+ #1470: Vulkan: Don't restrict WorkgroupSize to Input storage class.
186
+ #1469: Vulkan: Permit Subgroup memory scope for Vulkan 1.1.
187
+ #1472: Per-vertex variable validation fixes.
188
+ #1483: Valdiate barrier execution scopes for Vulkan 1.1.
34
189
- Fixes:
35
190
#898: Linker properly removes FuncParamAttr from imported symbols.
36
191
#924, #1174: Fix handling of decoration groups in optimizer, linker.
37
- #1404: Don't optimize away the compute compute workgroup size constant.
38
- #1407: Remove a bad assertion
39
- #1456: Fix bug in SSA rewriter related to variables updated in loops.
40
192
41
193
v2018.2 2018-03-07
42
194
- General:
0 commit comments