11Revision history for SPIRV-Tools
22
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
4118 - General:
5119   - Support SPV_EXT_descriptor_indexing
6120   - Support SPV_GOOGLE_decorate_string
@@ -12,31 +126,69 @@ v2018.3-dev 2018-04-06
12126     attributes in the "unified1" SPIR-V core grammar.
13127   - Disassembler: Emit more digits on floating point, to reliably reproduce all
14128     significand bits.  (Use std::max_digits10 instead of std::digits10)
129+    - Fix compilation for old XCode versions: Explicit construction required for std::set.
15130 - Optimizer:
16131   - Add --strip-reflect
17132   - Add --time-report
133+    - Add --loop-fission
134+    - Add lop fusion.
135+    - Add loop peeling pass and internal utility.
136+    - Improve optimizer runtime.
18137   - Merge-return now works with structured control flow.
19138   - New (faster) SSA rewriter to convert local loads and stores to SSA IDs and phis.
20139     Can replace load/store elimination passes.
21140   - Fix instruction folding case: insertion that feeds and extract, when the extract
22141     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.
23150   - 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.
24153   - Better handling of OpImageTexelPointer
25-    - Add loop peeling internal utility.
26154   - 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.
27169 - Validator:
28170   - Check Vulkan built-in variables
29171   - Check Vulkan-specific atomic result type rule.
30172   - Relax control barrier check for SPIR-V 1.3.  Fixes #1427
31173   - Check OpPhi.
174+    - Check OpMemoryModel.
32175   - Stop checking sizes derived from spec-constants.
33176   - 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.
34189 - Fixes:
35190   #898: Linker properly removes FuncParamAttr from imported symbols.
36191   #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.
40192
41193v2018.2 2018-03-07
42194 - General:
0 commit comments