Lines Matching +full:vulkan +full:- +full:tools
1 Revision history for SPIRV-Tools
3 v2023.6 2023-12-18
4 - General
5 - update_build_version.py produce deterministic header. (#5426)
6 - Support missing git in update_build_version.py (#5473)
7 - Optimizer
8 - Add ComputeDerivativeGroup*NV capabilities to trim capabilities pass. (#5430)
9 - Do not crash when tryingto fold unsupported spec constant (#5496)
10 - instrument: Fix handling of gl_InvocationID (#5493)
11 - Fix nullptr argument in MarkInsertChain (#5465)
12 - opt: support 64-bit OpAccessChain index in FixStorageClass (#5446)
13 - opt: add StorageImageReadWithoutFormat to cap trim (#5475)
14 - opt: add PhysicalStorageBufferAddresses to trim (#5476)
15 - Fix array size calculation (#5463
16 - Validator
17 - spirv-val: Loosen restriction on base type of DebugTypePointer and DebugTypeQualifier (#5479)
18 - spirv-val: Add WorkgroupMemoryExplicitLayoutKHR check for Block (#5461)
20 v2023.5 2023-10-15
21 - General
22 - Support 2 Intel extensions (#5357)
23 - SPV_QCOM_image_processing support (#5223)
24 - Optimizer
25 - opt: fix StorageInputOutput16 trimming. (#5359)
26 - opt: add StoragePushConstant16 to trim pass (#5366)
27 - opt: enable StorageUniform16 (#5371)
28 - opt: add bitmask support for capability trimming (#5372)
29 - opt: Add SwitchDescriptorSetPass (#5375)
30 - opt: add FragmentShader*InterlockEXT to capability trim pass (#5390)
31 - opt: add Int64 capability to trim pass (#5398)
32 - opt: add Float64 capability to trim pass (#5428)
33 - opt: add raytracing/rayquery to trim pass (#5397)
34 - opt: add ImageMSArray capability to trim pass. (#5395)
35 - Add SPV_KHR_physical_storage_buffer to allowlists (#5402)
36 - Add SPV_EXT_fragment_shader_interlock to allow lists (#5393)
37 - Make sure that fragment shader interlock instructions are not removed by DCE (#5400)
38 - instrument: Use Import linkage for instrumentation functions (#5355)
39 - Add a new legalization pass to dedupe invocation interlock instructions (#5409)
40 - instrument: Ensure linking works even of nothing is changed (#5419)
41 - Validator
42 - Move token version/cap/ext checks from parsing to validation (#5370)
43 - val: re-add ImageMSArray validation (#5394)
44 - Linker
45 - linker: Add --use-highest-version option
47 v2023.4 2023-07-17
48 - General
49 - Set cmake_policy CMP0128 (#5341)
50 - Add python3 requirement for the script (#5326)
51 - Add support for LiteralFloat type (#5323)
52 - SPV_KHR_cooperative_matrix (#5286)
53 - Allow OpTypeBool in UniformConstant (#5237)
54 - Allow physical storage buffer pointer in IO (#5251)
55 - Remove const zero image operands (#5232)
56 - Optimizer
57 - Enable vector constant folding (#4913) (#5272)
58 - Fold negation of integer vectors (#5269)
59 - Add folding rule for OpTranspose (#5241)
60 - Add SPV_NV_bindless_texture to spirv optimizations (#5231)
61 - Fix incorrect half float conversion (#5349)
62 - Add SPV_EXT_shader_atomic_float_add to allow lists (#5348)
63 - Instrument
64 - instrument: Cast gl_VertexIndex and InstanceIndex to uint (#5319)
65 - instrument: Fix buffer address length calculations (#5257)
66 - instrument: Reduce number of inst_bindless_stream_write_6 calls (#5327)
67 - Validator
68 - Validate GroupNonUniform instructions (#5296)
69 - spirv-val: Label SPV_KHR_cooperative_matrix VUID (#5301)
70 - Validate layouts for PhysicalStorageBuffer pointers (#5291)
71 - spirv-val: Remove VUID from 1.3.251 spec (#5244)
72 - Diff
73 - spirv-diff: Update test expectations (#5264)
74 - spirv-diff: Leave undefined ids unpaired. (#5262)
75 - spirv-diff: Properly match SPV_KHR_ray_query types. (#5259)
76 - diff: Don't give up entry point matching too early. (#5224)
78 v2023.3 2023-05-15
79 - General
80 - Update spirv_headers to include SPV_KHR_ray_tracing_position_fetch (#5205)
81 - spirv-tools: Add support for QNX (#5211)
82 - build: set std=c++17 for BUILD.gn (#5162)
83 - Optimizer
84 - Run ADCE when the printf extension is used. (#5215)
85 - Don't convert struct members to half (#5201)
86 - Apply scalar replacement on vars with Pointer decorations (#5208)
87 - opt: Fix null deref in OpMatrixTimesVector and OpVectorTimesMatrix (#5199)
88 - instrument: Add set and binding to bindless error records (#5204)
89 - instrument: Change descriptor state storage format (#5178)
90 - Fix LICMPass (#5087)
91 - Add Vulkan memory model to allow lists (#5173)
92 - Do not remove control barrier after spv1.3 (#5174)
93 - Validator
94 - spirv-val: Label Interface Location/Component VUIDs (#5221)
95 - Add support for SPV_EXT_shader_tile_image (#5188)
96 - Fix vector OpConstantComposite type validation (#5191)
97 - spirv-val: Label new Vulkan VUID 07951 (#5154)
98 - Fuzz
99 - Do not define GOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE if it is already defined. (#5200)
101 v2023.2 2023-03-10
102 - General
103 - build: move from c++11 to c++17 (#4983)
104 - tools: refactorize tools flags parsing. (#5111)
105 - Add C interface for Optimizer (#5030)
106 - libspirv.cpp: adds c++ api for spvBinaryParse (#5109)
107 - build: change the way we set cxx version for bazel. (#5114)
108 - Optimizer
109 - Fix null pointer in FoldInsertWithConstants. (#5093)
110 - Fix removal of dependent non-semantic instructions (#5122)
111 - Remove duplicate lists of constant and type opcodes (#5106)
112 - opt: fix spirv ABI on Linux again. (#5113)
113 - Validator
114 - Validate decoration of structs with RuntimeArray (#5094)
115 - Validate operand type before operating on it (#5092)
116 - spirv-val: Conditional Branch without an exit is invalid in loop header (#5069)
117 - spirv-val: Initial SPV_EXT_mesh_shader builtins (#5080)
119 v2023.1 2023-01-17
120 - General
121 - Renamed "master" to "main" (issue#5051)
122 - Validate version 5 of clspv reflection (#5050)
123 - Remove testing support for VS2015 (#5027)
124 - Fix undef behaviour in hex float parsing (#5025)
125 - Require C++11 *or later* (#5020)
126 - Instrument
127 - Instrument: Fix bindless checking for BufferDeviceAddress (#5049)
128 - Optimizer
129 - Optimize allocation of spvtools::opt::Instruction::operands_ (#5024)
130 - spirv-opt: Fix OpCompositeInsert with Null Constant (#5008)
131 - spirv-opt: Handle null CompositeInsert (#4998)
132 - Add option to ADCE to remove output variables from interface. (#4994)
133 - Add support for tesc, tese and geom to EliminateDead*Components (#4990)
134 - Add pass to eliminate dead output components (#4982)
135 - spirv-opt: Add const folding for CompositeInsert (#4943)
136 - Add passes to eliminate dead output stores (#4970)
137 - Prevent eliminating case constructs in block merging (#4976)
138 - Validator
139 - Fix layout validation (#5015)
140 - Fix use of invalid analysis (#5013)
141 - Fix infinite loop in validator (#5006)
142 - Add validation support for SPV_NV_shader_invocation_reorder. (#4979)
143 - Only validate full layout in Vulkan environments (#4972)
144 - spirv-val: Label new Vulkan OpPtrAccessChain VUs (#4975)
145 - spirv-val: Add OpPtrAccessChain Base checks (#4965)
148 v2022.4 2022-10-12
149 - General
150 - Support Narrow Types in BitCast Folding Rule (#4941)
151 - spirv-diff: Allow no SpecId (#4904)
152 - build: cmake: Add support for GNU/Hurd (#4895)
153 - Implement tool changes for SPV_EXT_mesh_shader. (#4915)
154 - Validator
155 - spirv-val: Add SPV_ARM_core_builtins validation (#4958)
156 - spirv-val: Add an option to use friendly names or not (#4951)
157 - spirv-val: Consistently quote ids in messages (#4950)
158 - spirv-val: Add initial SPV_EXT_mesh_shader validation (#4924)
159 - spirv-val: Make it legal to use arrays of ray queries (#4938)
160 - spirv-val: Better message for using OpTypeBool in input/output (#4901)
161 - spirv-val: Add SPV_KHR_ray_tracing storage class (#4868)
162 - Optimizer
163 - spirv-opt: Fix stacked CompositeExtract constant folds (#4932)
164 - Improve time to build dominators (#4916)
165 - Fix ADCE to mark scope and inlined_at of line instructions as live. (#4910)
166 - Improve algorithm to reorder blocks in a function (#4911)
167 - Add structs to eliminate dead input components (#4894)
168 - spirv-opt: fix copy-propagate-arrays index opti on structs. (#4891)
169 - Fix ADCE to not eliminate top level DebugInfo instructions (#4889)
170 - Fix array copy propagation (#4890)
172 v2022.3 2022-08-08
173 - General
174 - Add SPV_KHR_fragment_shader_barycentric support (#4805)
175 - Add support for SPV_KHR_subgroup_rotate (#4786)
176 - use exec_tools instead of tools for better RBE compatibility (#4837)
177 - Write binary files to stdout in binary on windows. (#4834)
178 - Allow spirv-opt print-all to show pretty IDs (#4888)
179 - Validator
180 - spirv-val: Add PerVertexKHR (#4807)
181 - spirv-opt : Add FixFuncCallArgumentsPass (#4775)
182 - spirv-val: Add CullMaskKHR support (#4792)
183 - Require ColMajor or RowMajor for matrices (#4878)
184 - spirv-val: Add SPV_KHR_ray_query (#4848)
185 - spirv-val: Add SPV_KHR_ray_tracing instructions (#4871)
186 - Implement SPV_NV_bindless_texture related changes (#4847)
187 - spirv-val: Add OpConvertUToAccelerationStructureKHR (#4838)
188 - spirv-val: Add support for SPV_AMD_shader_early_and_late_fragment_tests (#4812)
189 - Optimizer
190 - Fold multiply and subtraction into FMA with negation (#4808)
191 - Add more folding for composite instructions (#4802)
192 - spirv-opt: add pass for interface variable scalar replacement (#4779)
193 - Don't try to unroll loop with step count 0. (#4769)
194 - spirv-opt: SPV_NV_bindless_texture related changes (#4870)
195 - Linker
196 - linker: Recalculate interface variables (#4784)
198 v2022.2 2022-04-07
199 - General
200 - Add OpModuleProcessed to debug opcode (#4694)
201 - Optimizer
202 - Complete handling of RayQueryKHR type (#4690)
203 - Have scalar replacement use undef instead of null (#4691)
204 - Optimize Instruction::Instruction (#4705)
205 - Handle propagation of arrays with decorations (#4717)
206 - spirv-opt: Add OpExecutionModeId support (#4719)
207 - Optimize Type::HashValue (#4707)
208 - Optimize DefUseManager allocations (#4709)
209 - Add pass to remove DontInline function control (#4747)
210 - Better handling of 0xFFFFFFFF when folding vector shuffle (#4743)
211 - Reset the id bound on the module in compact ids (#4744)
212 - spirv-opt: (WIP) Eliminate Dead Input Component Pass (#4720)
213 - Support SPV_KHR_uniform_group_instructions (#4734)
214 - Handle shaders without execution model in spread-volatile-semantics (#4766)
215 - Validator
216 - Fix handling of Nontemporal image operand (#4692)
217 - [spirv-val] Allow 0 Component Count for DebugTypeArray for Shader (#4706)
218 - spirv-val: Validate DebugTypeMatrix (#4732)
219 - spirv-val: Label Vulkan VUID 04734 (#4739)
220 - spirv-val: Label VUID 06491 (#4745)
221 - spirv-val: Disallow array of push constants (#4742)
222 - spirv-val: Label Vulkan RuntimeArray VUID (#4749)
223 - spirv-val: Add Vulkan Image VUID 06214 (#4750)
224 - spirv-val: Add Vulkan Dref not allowed 3D dim VUID (#4751)
225 - spirv-val: Label and add test for PSB Aligned (#4756)
226 - spirv-val: Add Vulkan 32-bit bit op Base (#4758)
227 - spirv-val: Add more Vulkan VUID labels (#4764)
228 - Diff
229 - Introduce spirv-diff (#4611)
230 - Stabilize the output of spirv-diff (#4698)
231 - spirv-diff: Handle OpSpecConstant array sizes (#4700)
232 - spirv-diff: Match OpSpecConstantComposite correctly (#4704)
233 - spirv-diff: Use GetSingleWord*Operand (#4768)
234 - spirv-diff: Basic support for OpTypeForwardPointer (#4761)
235 - spirv-diff: Fix OpTypeFunction matching w.r.t operand count (#4771)
237 v2022.1 2022-01-26
238 - General
239 - Add SPIR-V 1.6 support to wasm build (#4674)
240 - Improvements to disassembly within PassManager (#4677)
241 - Basic support for SPIR-V 1.6 (#4663)
242 - reflect debug (#4662)
243 - Fix endianness of string literals (#4622)
244 - Optimizer
245 - spirv-opt: add pass to Spread Volatile semantics (#4667)
246 - Fix constant propagation and folding of FClamp instructions (#4651)
247 - Manually fold floating point division by zero (#4637)
248 - Allow ADCE to remove dead inputs (#4629)
249 - Linker
250 - Linker improvements (#4679)
253 - Validator
254 - val: interface struct with builtins must be Block (#4665)
255 - Fuzzer
256 - Avoid id bound errors during opt fuzzing (#4658)
257 - Avoid uninitialised read when parsing hex float (#4646)
259 v2021.4 2021-11-11
260 - General
261 - Add a WebAssembly build (#3752)
262 - Make cxx exceptions controllable (#4591)
263 - Validator
264 - Improve decoration validation (#4490)
265 - Optimizer
266 - Add spirv-opt pass to replace descriptor accesses based on variable indices (#4574)
267 - Do not fold snegate feeding sdiv (#4600)
268 - Handle overflowing id in merge return (#4606)
269 - Fuzzer
270 - Add libFuzzer target for spirv-fuzz (#4434)
271 - Linter
273 v2021.3 2021-08-24
274 - General
275 - Initial support for SPV_KHR_integer_dot_product (#4327)
276 - Add non-semantic vulkan extended instruction set (#4362)
277 - Add common enum for debug info instructions from either opencl or vulkan (#4377)
278 - Validator
279 - Add validation for SPV_EXT_shader_atomic_float16_add (#4325)
280 - Disallow loading a runtime-sized array (#4473)
281 - spirv-val: Validate vulkan debug info similarly to opencl debug info (#4466)
282 - Optimizer
283 - spirv-opt: support SPV_EXT_shader_image_int64 (#4379)
284 - spirv-opt: Add dataflow analysis framework (#4402)
285 - Add control dependence analysis to opt (#4380)
286 - Add spirv-opt convert-to-sampled-image pass (#4340)
287 - spirv-opt: Add handling of vulkan debug info to DebugInfoManager (#4423)
288 - Fuzz
289 - spirv-fuzz: support AtomicLoad (#4330)
290 - spirv-fuzz: Support AtomicStore (#4440)
291 …- spirv-fuzz: TransformationWrapVectorSynonym that rewrites scalar operations using vectors (#4376)
292 - spirv-fuzz: Add minimal SPIR-V example to test shaders (#4415)
293 - spirv-fuzz: support building using gn (#4365)
294 - Linter
295 - Add new target for spirv-lint (#4446)
296 - spirv-lint: add basic CLI argument handling (#4478)
297 - Add divergence analysis to linter (#4465)
299 v2021.2 2021-06-18
300 - General
301 - Support SPV_KHR_subgroup_uniform_control_flow (#4318)
302 - Support Intel extensions for fixed point and hls-float (#4321)
303 - Fix crash when optimizing shaders with DebugPrintf (#4280)
305 - Validator
306 - Support Vulkan Storage Class for Execution Model (#4212)
308 - Optimizer
309 - Handle SPV_KHR_vulkan_memory_model in dead-code elimination (#4320)
310 - Support folding OpBitcast with numeric constants (#4247)
312 - Fuzz
313 - Add tests for MaybeGet* functions in fuzzerutil (#4284)
314 - Fix OutlineFunction in presence of unreachable blocks (#4308)
315 - Fix def-use update in PermutePhiOperands (#4309)
316 - Swap positions of two functions in a module (#4236)
318 v2021.1 2021-04-19
319 - General
320 - Support SPV_KHR_linkonce_odr, SPV_KHR_expect_assume (#4161)
321 - Fixes for the vscode language server extension (#4150)
322 - Validator
323 - Add validation for SPV_EXT_shader_atomic_float_min_max (#4105)
324 - Add Vulkan Execution Scope checks (#4183)
325 - Vulkan 64-bit OpAtomicStore check (#4163)
326 - Optimizer
327 - Add interpolate legalization pass (#4220)
328 - Fuzz
329 - Various performance optimizations
330 - Do not add too many dead blocks (#4217)
331 - Add WGSL compatibility flag to context (#4193)
332 - Add persistent state to the fuzzer (#4137)
334 v2020.7 2021-02-16
335 - General
336 - Support pending Intel extensions (#4116)
337 - Remove WebGPU support (#4108)
338 - Validator
339 - Vulkan image gather constant component (#4133)
340 - Add Vulkan PSB64 convert VUID (#4122)
341 - Validate SPV_KHR_workgroup_memory_explicit_layout (#4128)
342 - Validate VK_KHR_zero_initialize_workgroup_memory (#4124)
343 - Add Vulkan image gather offset VUID (#4118)
344 - Label Vulkan atomic semantics VUIDs (#4120)
345 - Label VUID 04662 (#4123)
346 - Label VUID 04683 (#4121)
347 - Add Vulkan EXT builtins (#4115)
348 - Validate Sampled=1 for Vulkan ImageQuerySizeLod, ImageQueryLevels, ImageQueryLod (#4103)
349 - Add Vulkan Memory Scope VUs (#4106)
350 - Add Vulkan Addressing Model check (#4107)
351 - Vulkan atomic storage class (#4079)
352 - Label standalone Vulkan VUID (#4091)
353 - Add Vulkan decroation VUID (#4090)
354 - Add Vulkan FP Mode VUID (#4088)
355 - Fix Vulkan image sampled check (#4085)
356 - Add Vulkan ForwardPointer VUID (#4089)
357 - Add Vulkan ImageTexelPointer format check (#4087)
358 - Add Vulkan Group Operation VUID (#4086)
359 - Add first StandAlone VUID 04633 (#4077)
360 - Add Subgroup VUIDs (#4074)
361 - validate return type of OpImageRead (#4072)
362 - tighter validation of multisampled images (#4059)
363 - validate OpTypeImage Sampled values for environemnts (#4064)
364 - validate StorageImageMultisampled capability (#4062)
365 - Add last TessLevelOuter and TessLevelInner VUID (#4055)
366 - Add last ClipDistance and CullDistance VUID (#4054)
367 - Add last ViewportIndex and Layer VUID (#4053)
368 - Add last Position VUID (#4052)
369 - Allow forward pointer to be used in types generally (#4044)
370 - Optimizer
371 - Mark module as modified if convert-to-half removes decorations (#4127)
372 - Fix binding number calculation in desc sroa (#4095)
373 - Run DCE when SPV_KHR_shader_clock is used (#4049)
374 - Debug Info
375 - Set correct scope and line info for DebugValue (#4125)
376 - Avoid integrity check failures caused by propagating line instructions (#4096)
377 - Linker
378 - Linker usability improvements (#4084)
379 - Instrumentation
380 - Generate differentiated error codes for buffer oob checking (#4097)
381 - Fuzz
382 - Fix OpPhi handling in DuplicateRegionWithSelection (#4065)
384 v2020.6 2020-12-07
385 - General
387 - Disassembler
389 - Optimizer
390 - Take new (raytracing) termination instructions into account. (#4050)
391 - Do run DCE if SPV_KHR_ray_query is used. (#4047)
392 - Handle 8-bit index in elim dead member (#4043)
393 - Add texel buffer out-of-bounds checking instrumentation (#4038)
394 - Update MeshShadingNV dependencies (and land Ray tracing updates) (#4028)
395 - Fix buffer oob instrumentation for matrix refs (#4025)
396 - Fix SSA re-writing in the presence of variable pointers. (#4010)
397 - Add support to prevent functions from being inlined if they have
399 - Add SPV_EXT_shader_image_int64 (#3852)
400 - Support SPV_KHR_fragment_shading_rate (#3943)
401 - Fix use-after-move in val/validate.cpp (#3848)
402 - Debug Info
403 - properly preserve DebugValue indexes operand (#4022)
404 - Add DebugValue for invisible store in single_store_elim (#4002)
405 - Propagate OpLine to all applied instructions in spirv-opt (#3951)
406 - Add DebugValue for DebugDecl invisible to value assignment (#3973)
407 - Add DebugValue for function param regardless of scope (#3923)
408 - Debug info preservation in convert-local-access-chains pass (#3835)
409 - Debug info preservation in redundancy-elimination pass (#3839)
410 - Debug info preservation in if-conversion pass (#3861)
411 - Validator
412 - Add validation support for the ray tracing built-in variables (#4041)
413 - Use less stack space when validating Vulkan builtins (#4019)
414 - Fix SPV_KHR_fragment_shading_rate VUID label (#4014)
415 - Label Layer and ViewportIndex VUIDs (#4013)
416 - Allow the ViewportIndex and Layer built-ins on SPIR-V 1.5 (#3986)
417 - Fix validation of OpPhi instructions (#3919)
418 - Fuzz
419 - Fix facts arising from CompositeConstruct (#4034)
420 - Do not flatten conditionals that create synonyms (#4030)
421 - Add support for reining in rogue fuzzer passes (#3987)
422 - Fix assertion failure in FuzzerPassAddCompositeExtract (#3995)
423 - Fix invalid equation facts (#4009)
424 - Fix bugs in TransformationFlattenConditionalBranch (#4006)
425 - Fix bug related to transformation applicability (#3990)
426 - Add expand vector reduction transformation (#3869)
427 - Add FuzzerPassAddCompositeExtract (#3904)
428 - Fix mismatch with shrinker step limit (#3985)
429 - Fix off-by-one error in replayer (#3982)
430 - Get order right for OpSelect arguments (#3974)
431 - Do not add synonym-creating loops in dead blocks (#3975)
432 - Skip OpTypeSampledImage when propagating up (#3976)
433 - Pass OpUndef in function call if needed (#3978)
434 - Fix off-by-one in TransformationCompositeConstruct (#3979)
435 - Tolerate absent ids in data synonym fact management (#3966)
436 - Fix to id availability (#3971)
437 - Fix operand types (#3962)
438 - Don't flatten conditional if condition is irrelevant (#3944)
439 - Do not produce OpPhis of type OpTypeSampledImage (#3964)
440 - Restrict fuzzer pass to reachable blocks (#3970)
441 - Handle more types when extending OpPhi instructions (#3969)
442 - Skip early terminator wrappers when merging returns (#3968)
443 - Avoid irrelevant constants in synonym-creating loops (#3967)
444 - Skip dead blocks in FuzzerPassAddOpPhiSynonyms (#3965)
445 - Avoid the type manager when looking for struct types (#3963)
446 - Fix to TransformationDuplicateRegionWithSelection (#3941)
447 - Skip OpFunction when replacing irrelevant ids (#3932)
448 - Use component-wise selectors when flattening conditional branches (#3921)
449 - Avoid void struct member when outlining functions (#3936)
450 - Do not allow Block-decorated structs when adding parameters (#3931)
451 - Fix to operand id type (#3937)
452 - Handle dead blocks in TransformationEquationInstruction (#3933)
453 - Do not allow sampled image load when flattening conditionals (#3930)
454 - Take care of OpPhi instructions when inlining (#3939)
455 - Fix to TransformationInlineFunction (#3913)
456 - Wrap early terminators before merging returns (#3925)
457 - Lower probability of adding bit instruction synonyms (#3917)
458 - Fix handling of OpPhi in FlattenConditionalBranch (#3916)
459 - Avoid creating blocks without parents (#3908)
460 - Do not allow creation of constants of block-decorated structs (#3903)
461 - Fixes related to irrelevant ids (#3901)
462 - Fix to transformation that adds a synonym via a loop (#3898)
463 - Fix to duplicate region with selection (#3896)
464 - Do not expose synonym facts for non-existent ids (#3891)
465 - Do not add synonyms involving irrelevant ids (#3890)
466 - Do not replace irrelevant ids that are not in blocks (#3892)
467 - Wrap OpKill and similar in function calls (#3884)
468 - Integrate spirv-reduce with shrinker (#3849)
469 - Report fresh ids in transformations (#3856)
470 - Support OpNot bit instruction case (#3841)
471 - Return IR and transformation context after replay (#3846)
473 v2020.5 2020-09-22
474 - General
475 - Enable building with BUILD_SHARED_LIBS=1 (#3490)
476 - Avoid using /MP4 for clang on windows. (#3662)
477 - Fix compiler error on macOS with XCode12. (#3836)
478 - Optimizer
479 - Preserve OpenCL.DebugInfo.100 through private-to-local pass (#3571)
480 - Preserve debug info in scalar replacement pass (#3461)
481 - Debug info preservation in loop-unroll pass (#3548)
482 - Preserve debug info in dead-insert-elim pass (#3652)
483 - Improve non-semantic instruction handling in the optimizer (#3693)
484 - Let ADCE pass check DebugScope (#3703)
485 - Add undef for inlined void function (#3720)
486 - Fix SSA-rewrite to remove DebugDeclare for variables without loads (#3719)
487 - Handle DebugScope in compact-ids pass (#3724)
488 - Add buffer oob check to bindless instrumentation (#3800)
489 - Validator
490 - Update OpenCL capabilities validation (#3149)
491 - Validator support for non-semantic clspv reflection (#3618)
492 - OpenCL.DebugInfo.100 DebugTypeArray with variable size (#3549)
493 - Only validation locations for appropriate execution models (#3656)
494 - Validate more OpenCL.DebugInfo.100 instructions (#3684)
495 - Allow DebugTypeTemplate for Type operand (#3702)
496 - spirv-val: Add Vulkan VUID labels to BuiltIn (#3756)
497 - Allow SPV_KHR_8bit_storage extension. (#3780)
498 - Validate SPIRV Version number when parsing binary header (#3834)
499 - Reduce
500 - Support reducing a specific function (#3774)
501 - Fuzz
502 - adds TransformationReplaceCopyObjectWithStoreLoad (#3567)
503 - adds TransformationReplaceCopyMemoryWithLoadStore (#3575)
504 - adds TransformationReplaceLoadStoreWithCopyMemory (#3586)
505 - Implement the OpOuterProduct linear algebra case (#3617)
506 - Pass to replace int operands with ints of opposite signedness (#3612)
507 - TransformationMoveInstructionDown (#3477)
508 - Add TransformationMakeVectorOperationDynamic (#3597)
509 - TransformationReplaceAddSubMulWithCarryingExtended (#3598)
510 - FuzzerPassPropagateInstructionsUp (#3478)
511 - add FuzzerPassAddCompositeInserts (#3606)
512 - Add inline function transformation (#3517)
513 - Transformation to replace the use of an irrelevant id (#3697)
514 - Add SPIRV_FUZZ_PROTOC_COMMAND (#3789)
515 - Add TransformationDuplicateRegionWithSelection (#3773)
516 - Transformation to flatten conditional branch (#3667)
517 - Handle OpPhis in TransformationInlineFunction (#3833)
518 - Create synonym of int constant using a loop (#3790)
519 - Support dead blocks in TransformationAddSynonym (#3832)
520 - Linker
522 v2020.4 2020-07-22
523 - General
524 - Changed variable names to be more descriptive (#3433)
525 - Add support to GPU-AV instrumentation for Task and Mesh shaders (#3512)
526 - Permit Simple and GLSL450 memory model in WEBGPU_0 (#3463)
527 - Support SPV_KHR_terminate_invocation (#3568)
528 - Optimizer
529 - Preserving debug information in optimizations
531 - Eliminate branches with condition of OpConstantNull (#3438)
532 - Use structured order to unroll loops. (#3443)
533 - Updated desc_sroa to support flattening structures (#3448)
534 - Support OpCompositeExtract pattern in desc_sroa (#3456)
535 - Fix ADCE pass bug for mulitple entries (#3470)
536 - Sink pointer instructions in merge return (#3569)
537 - Validator
538 - Validate location assignments (#3308)
539 - Fix reachability in the validator (#3541)
540 - Reduce
541 - Fuzz
542 - Add support for OpSpecConstant* (#3373)
543 - Add replace linear algebra instruction transformation (#3402)
544 - Implement vector shuffle fuzzer pass (#3412)
545 - Swap operands in OpBranchConditional (#3423)
546 - Permute OpPhi instruction operands (#3421)
547 - Add FuzzerPassAddCopyMemoryInstructions (#3391)
548 - TransformationInvertComparisonOperator (#3475)
549 - Add variables with workgroup storage class (#3485)
550 - Add image sample unused components transformation (#3439)
551 - TransformationReplaceParameterWithGlobal (#3434)
552 - Support adding dead break from back-edge block (#3519)
553 - Fuzzer pass to interchange zero-like constants (#3524)
554 - Linker
556 v2020.3 2020-05-27
557 - General
558 - Prevent Effcee from installing things when building spirv-tools with testing enabled (#3256)
559 - Update acorn version (#3294)
560 - If SPIRV-Headers is in our tree, include it as subproject (#3299)
561 - allow cross compiling for Windows Store, UWP, etc. (#3330)
562 - Optimizer
563 - Remove deprecated interfaces from instrument passes (#3361)
564 - Preserve debug info in inline pass (#3349)
565 - Handle more cases in dead member elim (#3289)
566 - Preserve debug info in eliminate-dead-functions (#3251)
567 - Fix Struct CFG analysis for single block loop (#3293)
568 - Add tests for recently added command line option (#3297)
569 - Consider sampled images as read-only storage (#3295)
570 - Allow various validation options to be passed to spirv-opt (#3314)
571 - Add debug information analysis (#3305)
572 - Preserve debug info for wrap-opkill (#3331)
573 - refactor inlining pass (#3328)
574 - Add unrolling to performance passes (#3082)
575 - Validator
576 - Add validation support for ImageGatherBiasLodAMD (#3363)
577 - Validate ShaderCallKHR memory scope (#3332)
578 - Validate Buffer and BufferBlock apply only to struct types (#3259)
579 - Reduce
580 - increase default step limit (#3327)
581 - Remove unused uniforms and similar (#3321)
582 - Fuzz
583 - Add support for StorageBuffer (#3348)
584 - Add validator options (#3254)
585 - Limit adding of new variables to 'basic' types (#3257)
586 - Transformation to add OpConstantNull (#3273)
587 - Handling of more fuzzing opportunities (#3277, #3280, #3281, #3290, #3292)
588 - Respect rules for OpSampledImage (#3287)
589 - Do not outline regions that produce pointer outputs (#3291)
590 - Linker
592 v2020.2 2020-03-26
593 - General:
594 - Support extended instructions in the vscode language server
595 - Make spvOpcodeString part of the public API (#3174)
596 - Added guide to writing a spirv-fuzz fuzzer pass (#3190)
597 - Add support for KHR_ray_{query,tracing} extensions (#3235)
598 - Optimizer
599 - Debug Printf support (#3215)
600 - Add data structure for DebugScope, DebugDeclare in spirv-opt (#3183)
601 - Fix identification of Vulkan images and buffers (#3253)
602 - Validator
603 - Add support for SPV_AMD_shader_image_load_store_lod (#3186)
604 - Add validation rules for OpenCL.DebugInfo.100 extension (#3133)
605 - Adding WebGPU specific Workgroup scope rule (#3204)
606 - Disallow phis of images, samplers and sampled images (#3246)
607 - Reduce
608 - Fuzz
609 - Fuzzer passes to add local and global variables (#3175)
610 - Add fuzzer passes to add loads/stores (#3176)
611 - Fuzzer pass to add function calls (#3178)
612 - Fuzzer pass that adds access chains (#3182)
613 - Fuzzer pass to add equation instructions (#3202)
614 - Add swap commutable operands transformation (#3205)
615 - Add fuzzer pass to permute function parameters (#3212)
616 - Allow OpPhi operand to be replaced with a composite synonym (#3221)
617 - Linker
619 v2020.1 2020-02-03
620 - General:
621 - Add support for SPV_KHR_non_semantic_info (#3110)
622 - Support OpenCL.DebugInfo.100 extended instruction set (#3080)
623 - Added support for Vulkan 1.2
624 - Add API function to better handle getting the necessary environment (#3142)
625 - Clarify mapping of target env to SPIR-V version (#3150)
626 - Implement constant folding for many transcendentals (#3166)
627 - Optimizer
628 - Change default version for CreatInstBindlessCheckPass to 2 (#3096, #3119)
629 - Better handling of OpLine on merge blocks (#3130)
630 - Use placeholder switch instead of placeholder loop in MergeReturn pass. (#3151)
631 - Handle TimeAMD in AmdExtensionToKhrPass. (#3168)
632 - Validator
633 - Fix structured exit validation (#3141)
634 - Reduce
635 - Fuzz
636 - Fuzzer pass to merge blocks (#3097)
637 - Transformation to add a new function to a module (#3114)
638 - Add fuzzer pass to perform module donation (#3117)
639 - Fuzzer passes to create and branch to new dead blocks (#3135)
640 - Fuzzer pass to add composite types (#3171)
641 - Linker:
642 - Remove names and decorations of imported symbols (#3081)
644 v2019.5 2019-12-11
645 - General:
646 - Export SPIRV-Tools targets on installation
647 - SPIRV-Tools support for SPIR-V 1.5 (#2865)
648 - Add WebGPU SPIR-V Assembler in JavaScript. (#2876)
649 - Add Bazel build configuration. (#2891)
650 - Add support for building with emscripten (#2948)
651 - Update SPIR-V binary header test for SPIR-V 1.5 (#2967)
652 - Add fuzzer for spirv-as call path (#2976)
653 - Improved CMake install step. (#2963)
654 - Add fuzzer for spirv-dis call path (#2977)
655 - Ensure timestamp does not vary with timezone. (#2982)
656 - Add a vscode extension for SPIR-V disassembly files (#2987)
657 - Add iOS as a supported platform (#3001)
658 - utils/vscode: Add SPIR-V language server support
659 - Respect CMAKE_INSTALL_LIBDIR in installed CMake files (#3054)
660 - Permit the debug instructions in WebGPU SPIR-V (#3063)
661 - Add support for Fuchsia. (#3062)
662 - Optimizer
663 - Add descriptor array scalar replacement (#2742)
664 - Add pass to wrap OpKill in a function call (#2790)
665 - Fold FMix during constant folding. (#2818)
666 - Add pass to replace AMD shader ballot extension (#2811)
667 - Add pass to make Float32 operation relax precision (#2808)
668 - Add pass to make relax precision operation Float16 (#2808)
669 - Add pass to replace uses of 3 AMD extensions (#2814)
670 - Fold Min, Max, and Clamp instructions. (#2836)
671 - Better handling of OpKill in continues (#2842,#2922,#2933)
672 - Enable OpTypeCooperativeMatrix specialization (#2927)
673 - Support constant-folding UConvert and SConvert (#2960)
674 - Update Offset to ConstOffset bitmask if operand is constant. (#3024)
675 - Improve RegisterSizePasses (#3059)
676 - Folding: perform add and sub on mismatched integer types (#3084)
677 - Graphics robust access: use signed clamp (#3073)
679 - Instrument: Fix version 2 output record write for tess eval shaders. (#2782)
680 - Instrument: Add support for Buffer Device Address extension (#2792)
681 - Fix check for changed binary in API call. (#2798)
682 - For WebGPU<->Vulkan optimization, set correct execution environment (#2834)
683 - Handle OpConstantNull in copy-prop-arrays. (#2870)
684 - Use OpReturn* in wrap-opkill (#2886)
685 - Validator
686 - Add generic builtin validation of target (#2843)
687 - Extra resource interface validation (#2864)
688 - Adding valilidation checks for OpEntryPoint duplicate names and execution mode (#2862)
689 - Relaxed bitcast with pointers (#2878)
690 - Validate physical storage buffer restrictions (#2930)
691 - Add SPV_KHR_shader_clock validation (#2879, #3013)
692 - Validate that selections are structured (#2962)
693 - Disallow use of OpCompositeExtract/OpCompositeInsert with no indices (#2980)
694 - Check that derivatives operate on 32-bit values (#2983)
695 - Validate array stride does not cause overlap (#3028)
696 - Validate nested constructs (#3068)
698 - Fix validation of constant matrices (#2794)
699 - Update "remquor" validation
700 - Only allow previously declared forward refs in structs (#2920)
701 - Reduce
702 - Remove relaxed precision decorations (#2797)
703 - Reduce/fuzz: improve command line args (#2932)
704 - Improve remove unref instr pass (#2945)
706 - Fuzz
707 - Fix add-dead-break and add-dead-continue passes to respect dominance (#2838)
708 - Add fuzzer pass to copy objects (#2853)
709 - Add fuzzer pass to replace ids with synonyms (#2857)
710 - Allow validation during spirv-fuzz replay (#2873)
711 - Employ the "swarm testing" idea in spirv-fuzz (#2890)
712 - reduce/fuzz: improve command line args (#2932)
713 - option to convert shader into a form that renders red (#2934)
714 - Add fuzzer pass to change selection controls (#2944)
715 - add transformation and pass to construct composites (#2941)
716 - Add fuzzer pass to change loop controls (#2949)
717 - Add fuzzer pass to change function controls (#2951)
718 - Add fuzzer pass to add NoContraction decorations (#2950)
719 - Add missing functionality for matrix composites (#2974)
720 - Fuzzer pass to adjust memory access operands (#2968)
721 - Transformation to extract from a composite object (#2991)
722 - Vector shuffle transformation (#3015)
723 - Improve debugging facilities (#3074)
724 - Function outlining fuzzer pass (#3078)
727 v2019.4 2019-08-08
728 - General:
729 - Memory model support for SPIR-V 1.4
730 - Add new spirv-fuzz tool
731 - Add option for base branch in check_code_format.sh
732 - Removed MarkV and Stats code. (#2576)
733 - Instrument: Add version 2 of record formats (#2630)
734 - Linker: Better type comparison for OpTypeArray and OpTypeForwardPointer (#2580)
735 - Optimizer
736 - Bindless Validation: Instrument descriptor-based loads and stores (#2583)
737 - Better folding for OpSpecConstantOp (#2585, #2614)
738 - Add in individual flags for Vulkan <-> WebGPU passes (#2615)
739 - Handle nested breaks from switches. (#2624)
740 - Optimizer: Handle array type with OpSpecConstantOp length (#2652)
741 - Perform merge return with single return in loop. (#2714)
742 - Add --preserve-bindings and --preserve-spec-constants (#2693)
743 - Remove Common Uniform Elimination Pass (#2731)
744 - Allow ray tracing shaders in inst bindle check pass. (#2733)
745 - Add pass to inject code for robust-buffer-access semantics (#2771)
746 - Treat access chain indexes as signed in SROA (#2776)
747 - Handle RelaxedPrecision in SROA (#2788)
748 - Add descriptor array scalar replacement (#2742)
750 - Handle decorations better in some optimizations (#2716)
751 - Change the order branches are simplified in dead branch elim (#2728)
752 - Fix bug in merge return (#2734)
753 - SSA rewriter: Don't use trivial phis (#2757)
754 - Record correct dominators in merge return (#2760)
755 - Process OpDecorateId in ADCE (#2761)
756 - Fix check for unreachable blocks in merge-return (#2762)
757 - Handle out-of-bounds scalar replacements. (#2767)
758 - Don't move debug or decorations when folding (#2772)
759 - Protect against out-of-bounds references when folding OpCompositeExtract (#2774)
760 - Validator
761 - Validate loop merge (#2579)
762 - Validate construct exits (#2459)
763 - Validate OpenCL memory and addressing model environment rules (#2589)
764 - Validate OpenCL environment rules for OpTypeImage (#2606)
765 - Allow breaks to switch merge from nested construct (#2604)
766 - Validate OpenCL environment rules for OpImageWrite (#2619)
767 - Allow arrays of out per-primitive builtins for mesh shaders (#2617)
768 - Validate OpenCL rules for ImageRead and OpImageSampleExplicitLod (#2643)
769 - Add validation for SPV_EXT_fragment_shader_interlock (#2650)
770 - Add builtin validation for SPV_NV_shader_sm_builtins (#2656)
771 - Add validation for Subgroup builtins (#2637)
772 - Validate variable initializer type (#2668)
773 - Disallow stores to UBOs (#2651)A
774 - Validate Volatile memory semantics bit (#2672)
775 - Basic validation for Component decorations (#2679)
776 - Validate that in OpenGL env block variables have Binding (#2685)
777 - Validate usage of 8- and 16-bit types with only storage capabilities (#2704)
778 - Add validation for SPV_EXT_demote_to_helper_invocation (#2707)
779 - Extra small storage validation (#2732)
780 - For Vulkan, disallow structures containing opaque types (#2546)
781 - Validate storage class OpenCL environment rules for atomics (#2750)
782 - Update OpControlBarriers rules for WebGPU (#2769)
783 - Update OpMemoryBarriers rules for WebGPU (#2775)
784 - Update WebGPU validation rules of OpAtomic*s (#2777)
786 - Disallow merge targeting block with OpLoopMerge (#2610)
787 - Update vloadn and vstoren validation to match the OpenCL Extended
789 - Update memory scope rules for WebGPU (#2725)
790 - Allow LOD ops in compute shaders with derivative group execution modes (#2752)
791 - Reduce
794 v2019.3 2019-05-14
795 - General:
796 - Require Python 3 since Python 2 will out of service soon.
797 - Add a continuous test that does memory checks using the address sanitizer.
798 - Fix the build files so the SPIRV_USE_SANITIZER=address build works.
799 - Packaging top of tree build artifacts again.
800 - Added support for SPIR-V 1.4. (#2550)
801 - Optimizer
802 - Remove duplicates from list of interface IDs in OpEntryPoint instruction (#2449)
803 - Bindless Validation: Descriptor Initialization Check (#2419)
804 - Add option to validate after each pass (#2462)
805 - Add legalization pass to fix mismatched pointer (#2430, #2535)
806 - Add error messages when the input contains unknown instructions. (#2487)
807 - Add pass to convert from WebGPU Spir-V to Vulkan Spir-V and back. (#2495)
809 - #2412: Dead memeber elimination should not change input and output variables.
810 - #2405: Fix OpDot folding of half float vectors.
811 - #2391: Dead branch elim should not fold away back edges.
812 - #2441: Removing decorations when doing constant propagation.
813 - #2455: Maintain inst to block mapping in merge return.
814 - #2453: Fix merge return in the face of breaks.
815 - #2456: Handle dead infinite loops in DCE.
816 - #2458: Handle variable pointer in some optimizations.
817 - #2452: Fix dead branch elimination to handle unreachable blocks better.
818 - #2528: Fix undefined bit shift in sroa.
819 - #2539: Change implementation of post order CFG traversal.
820 - Validator
821 - Add validation of storage classes for WebGPU (#2446)
822 - Add validation for ExecutionMode in WebGPU (#2443)
823 - Implement WebGPU specific CFG validation (#2386)
824 - Allow NonWritable to target struct members. (#2420)
825 - Allow storage type mismatch for parameter in relaxed addressing mode.
826 - Allow non memory objects as parameter in relaxed addressing mode.
827 - Disallow nested Blocks and buffer blocks (#2410).
828 - Add validation for SPV_NV_cooperative_matrix (#2404)
829 - Add --strip-atomic-counter-memory (#2413)
830 - Check OpSampledImage is only passed into valid instructions (#2467)
831 - Handle function decls in Structured CFG analysis (#2474)
832 - Validate that OpUnreacahble is not statically reachable (#2473)
833 - Add pass to generate needed initializers for WebGPU (#2481)
834 - Allow images without format for OpenCL. (#2470)
835 - Remove unreachable block validation (#2525)
836 - Reduce runtime of array layout checks (#2534)
837 - Add validation specific to OpExecutionModeId (#2536)
838 - Validate sign of int types. (#2549)
839 - VK_KHR_uniform_buffer_standard_layout validation (#2562)
841 - #2439: Add missing DepthGreater case to Fragment only check.
842 - #2168: Disallow BufferBlock on StorageBuffer variables for Vulkan.
843 - #2408: Restrict and Aliased decorations cannot be applied to the same id.
844 - #2447: Improve function call parameter check.
845 - Reduce
846 - Add Pass to remove unreferenced blocks. (#2398)
847 - Allows passing options to the validator. (#2401)
848 - Improve reducer algorithm and other changes (#2472)
849 - Add Pass to remove selections (#2485)
850 - Add passes to simplify branches (#2507)
852 - #2478: fix loop to selection pass for loops with combined header/continue block
854 v2019.2 2019-02-20
855 - General:
856 - Support SPV_EXT_physical_storage_buffer
857 - A number of memory leak have been fixed.
858 - Removed use of deprecated Google test macro:
859 - Changed the BUILD.gn to only build tests in Chromium.
860 - Optimizer
861 - Upgrade memory model improvments for modf and frexp.
862 - Add a new pass to move loads closer to their uses: code sinking.
863 - Invalidating the type manager now invalidates the constnat manager.
864 - Expand instrumentation pass for bindless bounds checking to runtime-sized descriptor arrays.
865 - Add a new pass that removes members from structs that are not used: dead member elimination.
867 - #2292: Remove undefined behaviour when folding bit shifts.
868 - #2294: Fixes for instrumentation code.
869 - #2293: Fix overflow when folding -INT_MIN.
870 - #2374: Don't merge unreachable blocks when merging blocks.
871 - Validator
872 - Support SPV_KHR_no_integer_wrap and related decorations.
873 - Validate Vulkan rules for OpTypeRuntimeArray.
874 - Validate NonWritable decoration.
875 - Many WebGPU specific validation rules were added.
876 - Validate variable pointer related function call rules.
877 - Better error messages.
879 - #2307: Check forwards references in OpTypeArray.
880 - #2315, #2303: Fixed the layout check for relaxed layout.
881 - #1628: Emit an error when an OpSwitch target is not an OpLabel.
882 - Reduce
883 - Added more documentation for spirv-reduce.
884 - Add ability to remove OpPhi instructions.
885 - Add ability to merge two basic blocks.
886 - Add ability to remove unused functions and unused basic blocks.
889 v2019.1 2019-01-07
890 - General:
891 - Created a new tool called spirv-reduce.
892 - Add cmake option to turn off SPIRV_TIMER_ENABLED (#2103)
893 - New optimization pass to update the memory model from GLSL450 to VulkanKHR.
894 - Recognize OpTypeAccelerationStructureNV as a type instruction and ray tracing storage classes.
895 - Fix GCC8 build.
896 - Add --target-env flag to spirv-opt.
897 - Add --webgpu-mode flag to run optimizations for webgpu.
898 - The output disassembled line number stead of byte offset in validation errors. (#2091)
899 - Optimizer
900 - Added the instrumentation passes for bindless validation.
901 - Added passes to help preserve OpLine information (#2027)
902 - Add basic support for EXT_fragment_invocation_density (#2100)
903 - Fix invalid OpPhi generated by merge-return. (#2172)
904 - Constant and type manager have been turned into analysies. (#2251)
906 - #2018: Don't inline functions with a return in a structured CFG contstruct.
907 - #2047: Fix bug in folding when volatile stores are present.
908 - #2053: Fix check for when folding floating pointer values is allowed.
909 - #2130: Don't inline recursive functions.
910 - #2202: Handle multiple edges between two basic blocks in SSA-rewriter.
911 - #2205: Don't unswitch a latch condition during loop unswitch.
912 - #2245: Don't fold branch in loop unswitch. Run dead branch elimination to fold them.
913 - #2204: Fix eliminate common uniform to place OpPhi instructions correctly.
914 - #2247: Fix type mismatches caused by scalar replacement.
915 - #2248: Fix missing OpPhi after merge return.
916 - #2211: After merge return, fix invalid continue target.
917 - #2210: Fix loop invariant code motion to not place code between merge instruction and branch.
918 - #2258: Handle CompositeInsert with no indices in VDCE.
919 - #2261: Have replace load size handle extact with no index.
920 - Validator
921 - Changed the naming convention of outputing ids with names in diagnostic messages.
922 - Added validation rules for UniformConstant variables in Vulkan.
923 - #1949: Validate uniform variable type in Vulkan
924 - Ensure for OpVariable that result type and storage class operand agree (#2052)
925 - Validator: Support VK_EXT_scalar_block_layout
926 - Added Vulkan memory model semantics validation
927 - Added validation checkes spefic to WebGPU environment.
928 - Add support for VK_EXT_Transform_feedback capabilities (#2088)
929 - Add validation for OpArrayLength. (#2117)
930 - Ensure that function parameter's type is not void (#2118)
931 - Validate pointer variables (#2111)
932 - Add check for QueueFamilyKHMR memory scope (#2144)
933 - Validate PushConstants annotation and type (#2140)
934 - Allow Float16/Int8 for Vulkan 1.0 (#2153)
935 - Check binding annotations in resource variables (#2151, #2167)
936 - Validate OpForwardPointer (#2156)
937 - Validate operation for OpSpecConstantOp (#2260)
939 - #2049: Allow InstanceId for NV ray tracing
940 - Reduce
941 - Initial commit wit a few passes to reduce test cases.
942 - Validation is run after each reduction step.
946 v2018.6 2018-11-07
947 - General:
948 - Added support for the Nvidia Turing and ray tracing extensions.
949 - Make C++11 the CXX standard in CMakeLists.txt.
950 - Enabled a parallel build for MSVC.
951 - Enable pre-compiled headers for MSVC.
952 - Added a code of conduct.
953 - EFFCEE and RE2 are now required when build the tests.
954 - Optimizer
955 - Unrolling loops marked for unrolling in the legalization passes.
956 - Improved the compile time of loop unrolling.
957 - Changee merge-return to create a placeholder loop around the function.
958 - Small improvement to merge-blocks to allow it to merge more often.
959 - Enforce an upper bound for the ids, and add option to set it.
960 - #1966: Report error if there are unreachable block before running merge return
962 - #1917: Allow 0 (meaning unlimited) as a parameter to --scalar-replacement
963 - #1915: Improve handling of group decorations.
964 - #1942: Fix incorrect uses of the constant manager. Avoids type mismatches in generated code.
965 - #1997: Fix dead branch elimination when there is a loop in folded selection.
966 - #1991: Fixes legality check in if-conversion.
967 - #1987: Add nullptr check to array copy propagation.
968 - #1984: Better handling of OpUnreachable in ADCE.
969 - #1983: Run merge return on reachable functions only.
970 - #1956: Handled atomic operations in ADCE.
971 - #1963: Fold integer divisions by 0 to 0.
972 - #2019: Handle MemberDecorateStringGOOGLE in ADCE and strip reflect.
973 - Validator
974 - Added validation for OpGroupNonUniformBallotBitCount.
975 - Added validation for the Vulkan memory model.
976 - Added support for VK_KHR_shader_atddomic_int64.
977 - Added validation for execution modes.
978 - Added validation for runtime array layouts.
979 - Added validation for 8-bit storage.
980 - Added validation of OpPhi instructions with pointer result type.
981 - Added checks for the Vulkan memory model.
982 - Validate MakeTexelAvailableKHR and MakeTexelVisibleKHR
983 - Allow atomic function pointer for OpenCL.
984 - FPRounding mode checks were implemented.
985 - Added validation for the id bound with an option to set the max id bound.
987 - #1882: Improve the validation of decorations to reduce memory usage.
988 - #1891: Fix an potential infinite loop in dead-branch-elimination.
989 - #1405: Validate the storage class of boolean objects.
990 - #1880: Identify arrays of type void as invalid.
991 - #487: Validate OpImageTexelPointer.
992 - #1922: Validate OpPhi instructions are at the start of a block correctly.
993 - #1923: Validate function scope variable are at the start of the entry block.
995 v2018.5 2018-09-07
996 - General:
997 - Support SPV_KHR_vulkan_memory_model
998 - Update Dim capabilities, to match SPIR-V 1.3 Rev 4
999 - Automated build bots no run tests for the VS2013 case
1000 - Support Chromium GN build
1001 - Use Kokoro bots:
1002 - Disable Travis-CI bots
1003 - Disable AppVeyor VisualStudio Release builds. Keep VS 2017 Debug build
1004 - Don't check export symbols on OSX (Darwin): some installations don't have 'objdump'
1005 - Reorganize source files and namespaces
1006 - Fixes for ClangTidy, and whitespace (passes 'git cl presumit --all -uf')
1007 - Fix unused param compile warnings/errors when Effcee not present
1008 - Avoid including time headers when timer functionality is disabled
1009 - Avoid too-stringent warnings flags for Clang on Windows
1010 - Internal refactoring
1011 - Add hooks for automated fuzzing
1012 - Add testing of command line executables
1013 - #1688: Use binary mode on stdin; fixes "spirv-dis <foo.spv" on Windows
1014 - Optimizer
1015 - The optimizer validates the module before it begins
1016 - Add API to register passes by string name
1017 - Fold a vector shuffle feeding a vector shuffle
1018 - Add -combine-access-chains transform
1019 - Refactor how IRContext is handled by passes
1020 - Improve bookkeeping for instruction result type and result id
1021 - Fix over-duplication of decorations
1022 - Fix handling of exits from selections in dead-branch elimination, and dead code
1024 - Fix handling of certain kinds of flow control in merge-return
1026 - #1721: Fix size bug when folding vector shuffles
1027 - #1722: Fix size infinite loop when folding vector shuffles
1028 - #1724: Fix finding a constant of a specific type
1029 - #1727: Dead branch elim: Reorder blocks if needed to satisfy dominance rule
1030 - #1729: Handle VariablePointers cases in various optimizations
1031 - #1731: Fix vector shuffle with literal id indicating undef value
1032 - #1736: Fix handling of decorations and phis in merge-return
1033 - #1787: Fix handling of decorations related to access chains
1034 - #1865: Avoid leaking memory for SPIR-V constant values
1035 - Validator
1036 - Improve error messages
1037 - Avoid platform-dependent traversal ordering, to ensure consistent messages
1038 - Use libspirv::Instruction where possible
1039 - Add option to skip all block layout checks
1040 - Validate all type IDs
1041 - Validate uses of OpFunction
1042 - Validate uses of OpTypeFunction
1043 - Disallow a struct containing its own type https://crbug.com/874372
1044 - #1685: Vulkan permits non-monotonic offsets for block members
1045 - #1697: Enforce block layout rules even when using relaxed block layout option
1046 - #1719: Fix line number for vector shuffle valiation error
1047 - #1789: Avoid assertion failure when validating some functions
1048 - #1800: Fix validation of OpCopyMemorySized
1049 - #1822: Stop enforcing struct member offset montonicity
1050 - #1831: Disallow void members in structs
1052 v2018.4 2018-07-08
1053 - General:
1054 - Support SPV_KHR_8bit_storage
1055 - Add gclient and presubmit configurations
1056 - Enable Kokoro build bots (#1625)
1057 - Group tests into fewer executables, reduces load on CI
1058 - Port test script to Python 3
1059 - Symbol export tests respect SPIRV_SKIP_TESTS
1060 - #1596: Operand lookup succeeds if enabled by a capability
1061 - #1624: Instruction lookup succeeds if enabled by a capability
1062 - Refactoring namespaces:
1063 - #1678: Change libspirv to spvtools
1064 - Code in source/utils moved into spvtools::utils
1065 - Code in source/comp moved into spvtools::comp
1066 - Optimizer:
1067 - Remove insert-extract-elim pass. Use simplification pass instead.
1068 - Preserve instruction-to-block mapping in most passes, to reduce runtime.
1069 - Small vector optimization for operands
1070 - Add pass to move Private variables to Function. Increase opportunity to optimize.
1071 - Fixes:
1075 #1578: Fix handling of forward-pointer types, and types embedding pointers
1079 #1649: Fix assert in compact-ids pass
1082 - Validator
1083 - Add work-in-progress WebGPU environment. Disallows OpUndef
1084 - #670, #1581: Improve error messages; disassemble instruction
1085 - #491: Check structured switches
1086 - #937: Check layout rules for Block and BufferBlock in Uniform, StorageBuffer, PushConstant
1087 - #1281: Check invalid branches into structured constructs
1088 - #1522: Disallow array-of-arrays with DescriptorSets
1089 - #1577: Allow duplicate pointer types.
1090 - #1581: Better messages: output ID names along with numbers in more cases.
1091 - #1597: Check Vulkan 1.1 capabilities
1092 - #1618: Check invalid exit from structured case construct
1093 - #1622: Run IdPass before DataRulesPass
1094 - #1632: Reduce test time by artificially lowering limits in limit test
1095 - #1638: Block-decorated structs member order must respect offset order
1096 - #1657: Improve CFG validation diagnostics
1097 - Khronos SPIR-V #337: GLSL.std.450 Refract instruction Eta param can be any float scalar.
1098 - #1606: PushConstant Blocks follow storage-buffer layout rules
1099 - #1664: Check layout of StorageBuffer variables with Block decoration, using storage buffer
1101 - #1666: Layout validation should permit {vec3; float} packing
1102 - #1637, #1668: Layout validation uses RowMajor, ArrayStride, MatrixStride properly
1103 - Linker
1104 - Avoid buffer overrun when creating OpModuleProcessed
1106 v2018.3 2018-05-25
1107 - General:
1108 - Support SPV_EXT_descriptor_indexing
1109 - Support SPV_GOOGLE_decorate_string
1110 - Support SPV_GOOGLE_hlsl_functionality1
1111 - Support SPV_NV_shader_subgroup_partitioned
1112 - Use "unified1" grammar from SPIRV-Headers
1113 - Simplify support for new extensions. Assembler, disassembler, and simple validation
1115 attributes in the "unified1" SPIR-V core grammar.
1116 - Disassembler: Emit more digits on floating point, to reliably reproduce all
1118 - Fix compilation for old XCode versions: Explicit construction required for std::set.
1119 - Optimizer:
1120 - Add --strip-reflect
1121 - Add --time-report
1122 - Add --loop-fission
1123 - Add lop fusion.
1124 - Add loop peeling pass and internal utility.
1125 - Improve optimizer runtime.
1126 - Merge-return now works with structured control flow.
1127 - New (faster) SSA rewriter to convert local loads and stores to SSA IDs and phis.
1129 - Fix instruction folding case: insertion that feeds and extract, when the extract
1131 - Fold OpDot.
1132 - Fold OpFNegate.
1133 - Fold multply and divide of same value.
1134 - Fold FClamp feeding a compare.
1135 - Fold OpLoad feeding an extract, to reduce excessive copying. (#1547)
1136 - Fold Fmix feeding an extract.
1137 - Use simplification pass instead of insert-extract elimination.
1138 - Constant fold OpVectorTimesScalar.
1139 - Copy propagate arrays, in simple cases.
1140 - Aggressive dead code elimination: Can remove more instructions, e.g. derivatives.
1141 - Aggressive dead code elimination: Remove Workgroup variables that are written but not read.
1142 - Better handling of OpImageTexelPointer
1143 - Initial utilities for scalar evolution.
1144 - Add Vector dead code elimination.
1145 - Each pass can only run once.
1146 - Allow code hosting in if-conversion.
1147 - Add external interface for adding a PassToken, so external code can make their own
1149 - Fixes:
1156 #1559: Fix assert failure in reduce-load-size pass.
1158 - Validator:
1159 - Check Vulkan built-in variables
1160 - Check Vulkan-specific atomic result type rule.
1161 - Relax control barrier check for SPIR-V 1.3. Fixes #1427
1162 - Check OpPhi.
1163 - Check OpMemoryModel.
1164 - Stop checking sizes derived from spec-constants.
1165 - Re-enable checks for OpUConvert.
1166 - Vulkan: Fix check for PrimitiveId: Permit as Input in fragment shader.
1167 - Validate binary version for the given target environment.
1168 - Add tests for OpBranch checks.
1169 - Vulkan 1.1: Check scope for non-uniform subgroup operations.
1170 - Fix checks for SPV_AMD_gpu_shader_int16.
1171 - Fix logical layout check for OpDecorateId.
1172 - Fix checks for ViewportIndex & Layer for Vulkan and SPV_EXT_shader_viewport_index_layer.
1173 - Fixes:
1174 #1470: Vulkan: Don't restrict WorkgroupSize to Input storage class.
1175 #1469: Vulkan: Permit Subgroup memory scope for Vulkan 1.1.
1176 #1472: Per-vertex variable validation fixes.
1177 #1483: Valdiate barrier execution scopes for Vulkan 1.1.
1178 - Fixes:
1182 v2018.2 2018-03-07
1183 - General:
1184 - Support SPIR-V 1.3 and Vulkan 1.1.
1185 - Default target environment is now SPIR-V 1.3. For command-line tools,
1186 use the --target-env option to override the default. Examples:
1187 # Generate a SPIR-V 1.0 binary instead of SPIR-V 1.3
1188 spirv-as --target-env spv1.0 a.spvasm -o a.spv
1189 spirv-as --target-env vulkan1.0 a.spvasm -o a.spv
1190 # Validate as Vulkan 1.0
1191 spirv-val --target-env vulkan1.0 a.spv
1192 - Support SPV_GOOGLE_decorate_string and SPV_GOOGLE_hlsl_functionality1
1193 - Fixes:
1194 - Fix Android.mk build. Compilation was failing due to missing definitions of
1196 - Optimizer: Avoid generating duplicate names when merging types.
1197 - #1375: Validator: SPV_AMD_gpu_shaer_half_float implicitly allows declaration
1198 of the 16-bit floating point type.
1199 - #1376: Optimizer: Avoid folding half-precision float.
1201 v2018.1 2018-03-02
1202 - General:
1203 - Support Visual Studio 2013 again. (Continue support for VS 2015 and VS 2017.)
1204 - Support building SPIRV-Tools as a shared library.
1205 - Improve the HLSL legalization optimization recipe. #1311
1206 - Optimizer:
1207 - General speedups.
1208 - Remove generic dead code elimination functionality from transforms:
1209 --eliminate-local-single-block
1210 --eliminate-local-single-store
1211 --eliminate-local-multi-store
1213 also invoke the --eliminate-dead-code-aggressive transform.
1214 - Improve folding, including coverage for floating point, OpSelect, and arithmetic
1215 with non-trivial constant operands.
1216 - Add loop-invariant code motion pass.
1217 - Add loop-unrolling pass, for honouring unroll hits.
1218 - Add loop-unswitch pass.
1219 - Add instruction simplification pass.
1220 - Aggressive dead code elimination: Understands capability hierarchy when finding
1222 - CCP can now fold floating point arithmetic. #1311
1223 - Validator:
1224 - Validate barrier instructions.
1225 - Check Vulkan-specific rules for atomics.
1226 - Check Vulkan prohibition of Location or Component decorations on BuiltIn variables.
1227 - Linker:
1228 - Add --verify-ids option
1229 - Add option to allow a resulting module to be partially linked.
1230 - Handle OpModuleProcessed (instructions in SPIR-V layout section 7c)
1231 - Fixes:
1232 - #1265: Optimizer: Fix use-after free bug in if-conversion. (Fix object lifecycle bug
1234 - #1282: Fix new warnings found by GCC 8.0.1.
1235 - #1285: Optimizer: Fix random failures during inlining. (Dangling references in DefUseManager)
1236 - #1295: Optimizer: Fix incorrect handling of Phi nodes in CCP.
1237 - #1300: Fix CCP: avoid bad CCP transitions and unsettled values.
1238 - #1304: Avoid static-duration variables of class type (with constructors).
1239 - #1323: Fix folding of an insert composite feeding a composite extract.
1240 - #1339: Fix CCP: Handle OpConstantNull boolean values as conditions.
1241 - #1341: DCEInst: Keep atomic instructions (and some others with side effects).
1242 - #1354: Don't fold integer division.
1243 - #1357: Support OpConstantNull in folding.
1244 - #1361: CCP: Fix handling of non-constant module-scope values
1246 v2018.0 2018-02-02
1247 - General
1248 - VisualStudio 2013 is no longer supported. VisualStudio 2015 is supported.
1249 - Use "include/unified1" directory from SPIRV-Headers. Requires recent SPIRV-Headers source.
1250 - Disassembler: spirv-dis adds --color option to force color disassembly.
1251 - Optimizer:
1252 - Add pass to eliminate dead insertions.
1253 - Aggressive dead code elimination now removes OpSwitch constructs.
1254 - Block merging occurs in more cases.
1255 - Add driver workaround transform: replace OpUnreachable with harmless branch to merge.
1256 - Improve instruction folding framework.
1257 - Add loop analysis.
1258 - Add scalar replacement of aggregates to size-optimization recipe.
1259 - Add pass to replace instructions invalid for a shader stage, with a harmless value.
1261 - Rearragne and add passes to performance-optimization recipe, to produce better results.
1262 - Validator:
1263 - Validate OpenCL extended instructions.
1264 - Shaders can't perform atomics on floats.
1265 - Validate memory semantics values in atomics.
1266 - Validate instruction-adjacency constraints, e.g. OpPhi predecessors, merge instructions
1268 - Fixes:
1269 - PR 1198: Optimizer: Fix CCP in presence of matrix constants.
1270 - #1199: Optimizer: Fix CCP: don't propagate spec constants.
1271 - #1203: Optimizer: Fix common uniform elim bug introduced by refactoring.
1272 - #1210: Optimizer: Aggressive dead code elimination: Fix 'break' identification.
1273 - #1212: Optimizer: Aggressive dead code elimination: Was skipping too many instructions.
1274 - #1214: Optimizer: Aggressive dead code elimination: Fix infinite loop.
1275 - #1228: Optimizer: Fix CCP: Handling of varying Phi nodes; was resulting in infinite loop.
1276 - #1245: Optimizer: Dead branch elimination: Avoid a null pointer dereference.
1277 - #1250: Optimizer: Dead branch elimination: Avoid spuriously reporting a change.
1279 v2017.3 2018-01-12
1280 - General:
1281 - Support DebugInfo extended instruction set, targeted at OpenCL environments.
1282 See the SPIR-V Registry.
1283 - Generate a SPIRV-Tools.pc file for pkg-config.
1284 - Optimizer:
1285 - Progress for legalization of code generated from HLSL (issue #1118):
1286 - Add --legalize-hlsl option to run transforms used to transform intermediate
1287 code generated by HLSL to SPIR-V for Vulkan compilers. Those compilers
1290 - Add Private-to-Function variable conversion for modules with logical
1292 - Add --ccp: SSA Conditional Constant Propagation (CCP)
1293 - Add --print-all to show disassembly for each optimization pass.
1294 - Internal: Add loop descriptors and post-order tree iterator.
1295 - Generalized dead branch elimination
1296 - Aggressive dead code elimination (ADCE) now removes dead functions and
1297 module-scope variables.
1298 - Vector extract/insert elimination now optimizes through some cases of
1300 - Validator:
1301 - Add validation for GLSL.std.450 extended instruction set.
1302 - Check out of bounds composite accesses, where that's statically computable.
1304 - Check upper bits of literal numbers that aren't a multiple of 32-bits wide.
1305 - More validation of primitive instructions
1306 - Add optional "relaxed" checking logical addressing mode to permit some
1307 cases of pointer-to-pointer. Contributes to HLSL legalization (issue #1118).
1308 - Fixes:
1311 #1108: Remove duplicates transform was incorrectly removing non-duplicate
1318 #1154: Optimizer's internal instruction-to-block mappings were sometimes
1325 v2017.2 2017-12-15
1326 - General:
1327 - Support OpenCL 1.2, 2.0 target environments, including embedded profiles
1328 - Add CONTRIBUTING.md
1329 - Fix exit status code for spirv-link
1330 - Disassember: Enable emitting ANSI colour codes to a string
1331 - Library avoids polluting global namespace. The libraries can export C and C++
1333 - Linux release builds include debug information, for easier profiling
1334 - Build bots no longer test VisualStudio 2013
1335 - Testing dependency RE2 requires VisualStudio 2015 or later
1336 - Build bots check code formatting
1337 - Optimizer:
1338 - Add --skip-validation to spirv-opt
1339 - Add dominance tree analysis
1340 - Add generic value propagation engine
1341 - Add global redundancy elimination within a function
1342 - Add scalar replacement of function-scope variables of composite type
1343 - Aggressive dead code elimination: Remove empty loops
1344 - Killing an instruction notifies the IRContext
1345 - IRContext::KillInst deletes the instruction
1346 - Move CFG analysis to IRContext
1347 - Add constant manager
1348 - Fix: Don't consider derivative instructions as combinators.
1349 - Fix: Don't delete an instruction twice in local dead-code-elimination
1350 - Fix: Don't consider derivative instructions as combinators.
1351 - Validator:
1352 - Finish checking of image instructions (Section 3.32.10)
1353 - Check sparse image instructions
1354 - Check OpTypeImage, OpTypeSampleImage
1355 - Check composite instructions (Section 3.32.12)
1356 - Check atomic instructions (Section 3.32.18)
1357 - Check OpEmitStreamVertex, OpEndStreamPrimitive instructions
1358 - Re-enable validation of OpCopyObject
1359 - OpKill, image ImplicitLod and QueryLod instructions can only be used in Fragment
1361 - Fixes for image instruction validation:
1362 - Lod image operand only usable with ExplicitLod and OpImageFetch
1363 - ExplicitLod Lod image operand must be float scalar
1364 - OpImageFectch Lod image operand must be int scalar
1365 - OpImageGather component operand must be 32-bits (integer scalar)
1366 - OpImageQuerySizeLod Lod must be integer scalar
1367 - Fixes:
1371 #1004: Use after free of an instruction, in remove-duplicates transform
1372 #1007: OpImageRead not required to return 4-component vector
1376 #1017: Load-store elimination considers variable initializations
1382 v2017.1 2017-11-23
1383 - Update README with details on the [email protected] mailing list.
1384 - General:
1385 - Automatically deploy built artifacts to GitHub Releases
1386 - Add a Linker (module combiner). Under development.
1387 - Add Android.mk for Android NDK builds.
1388 - Add the 'effcee' library as an optional dependency for use in tests.
1391 - Avoid static-duration variables of class type (with constructors).
1392 - Hack around bugs in gcc-4.8.1 template handling
1393 - Faster opcode lookup
1394 - Validator:
1395 - Recognize extensions listed on SPIR-V registry,
1397 - Validator issues an info message when it sees an unrecognized extension.
1398 - Type check basic arithmetic operations
1399 - Type check carry/extended arithmetic operations
1400 - Type check vector arithmetic operations
1401 - Type check Relational and Logical instructions
1402 - Type check Bit instructions
1403 - Check type uniqueness rules
1404 - Check conversion instructions
1405 - Check image instructions
1406 - Check derivative instructions
1407 - Check OpVectorShuffle
1408 - Check OpBranchConditional
1409 - OpModuleProcessed is only allowed after debug names section and before annotations
1411 - Checks the right kind of return is called for each function (void or non-void).
1412 - Add option to relax type check when storing structs (--relax-store-struct)
1413 - Optimizer:
1414 - Refactoring internal representation of the module, including:
1415 - IRContext: owns a module and manages analyses
1416 - Instructions are owned by intrusive lists, and have unique IDs
1417 - BasicBlock owns its instruction list.
1418 - DefUseManager: change representation of uses, for faster processing
1420 - Add high level recipes: -O, -Os, and -Oconfig
1421 Recipes for -O and -Os are under development.
1422 - Add eliminate-dead-function transform
1423 - Add strength reduction transform: For now, convert multiply by power of 2
1425 - Add CFG cleanup transform
1426 - Add removal of dead module-scope variables
1427 - Add merge-return transform for modules without structured control flow
1428 - Add redundancy elimination within a basic block (local value numbering)
1429 - Extract-insert elimination:
1430 - Recognize the case where the first instruction in the sequence is an
1432 - Handle some cases of nested structs
1433 - Dead branch elimination now can eliminate entire selection constructs
1435 - Compressing codec:
1436 - Updated algorithm to 1.01, 1.02, 1.03
1437 - Not built by default. Use -DSPIRV_BUILD_COMPRESSION=ON to build.
1438 - Codec can be parameterized by a customized model.
1439 - Fixes:
1441 #798: spirv-as should fail when given unrecognized long option
1442 #800: Inliner: Fix inlining function into header of multi-block loop
1443 #824: Eliminate-local-multi-store: Fix a crash
1444 #826: Elimiante-local-multi-store: Fix a crash
1445 #827: Fix crash when compact-ids transform runs before another transform.
1449 v2017.0 2017-09-01
1450 - Update README to describe that assembler, disassembler, and binary parser support
1451 are based on grammar files from the SPIRV-Headers repository.
1453 v2016.7 2017-09-01
1454 - Add SPIR-V 1.2
1455 - OpenCL 2.2 support is now based on SPIR-V 1.2
1456 - Support AMD extensions in assembler, disassembler:
1464 - Optimizer: Add support for:
1465 - Inline all function calls in entry points.
1466 - Flatten decoration groups. Fixes #602
1467 - Id compaction (minimize Id bound). Fixes #624
1468 - Eliminate redundant composite insert followed by extract
1469 - Simplify access chains to local variables
1470 - Eliminate local variables with a single store, if possible
1471 - Eliminate local variables with a several stores, if possible
1472 - Eliminate loads and stores in same block to local variables
1473 - Eliminate redundant insert/extract to composite values
1474 - Aggressive dead instruction elimination
1475 - Eliminate dead branches
1476 - Merge blocks when the second can only be preceded by the first
1477 - Eliminate ommon uniform loads
1478 - Assembler: Add option to preserve numeric ids. Fixes #625
1479 - Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V
1481 - Version string: Allow overriding of wall clock timestamp with contents
1483 - Validator implements relaxed rules for SPV_KHR_16bit_storage.
1484 - CMake installation rules use GNUInstallDirs. For example, libraries
1487 - Fixes:
1498 #629: The inline-entry-points-all optimization could generate invalidly
1500 #697: Optimizer's Instruction::ForEachInId method was skipping semantics-id
1501 and scope-id.
1507 #782: Inliner: Fix remapping of non-label forward references in callee
1513 v2016.6 2016-12-13
1514 - Published the C++ interface for assembling, disassembling, validation, and
1516 - Support SPV_KHR_shader_draw_parameters in assembler, disassembler, parser.
1517 - Validator:
1518 - Add validator API accepting raw binary words
1519 - Increased coverage:
1520 - Checks "Data rules" in Universal Validation Rules, section 2.16.1
1521 - WIP: Universal Limits.
1522 - The minimum mandated upper bounds are checked.
1523 - TODO: Parameterize the validator to allow larger limits accepted by
1525 - OpSampledImage checks
1526 - OpConstantComposite checks
1527 - Id bound check
1528 - Disasssembler:
1529 - Generates friendly GLSL-based names for more builtin variables
1530 - Generates friendly names for numeric OpConstant values
1531 - Vendor tool info extracted from SPIR-V XML registry file.
1532 - Fixes issues:
1535 #482: Validator: OpVariable initializer can be an ID of a module-scope variable
1537 v2016.5 2016-09-16
1538 - Support SPV_KHR_shader_ballot in assembler, disassembler, parser.
1539 - Disassembler: Generate friendly names for built-in variables.
1540 - Partial fixes:
1541 #359: Add Emacs helper for automatically diassembling/assembling a SPIR-V
1543 - Fixes:
1547 v2016.4 2016-09-01
1548 - Relicensed under Apache 2.0
1549 - Add optimization passes (in API and spirv-opt command)
1550 - Fold spec constants defined with OpSpecConstantOp and
1552 - Fixes issues:
1555 v2016.3 2016-08-24
1556 - Add target environment enums for OpenCL 2.1, OpenCL 2.2,
1558 - Add spirv-cfg, an experimental tool to dump the control flow graph
1560 - Add optimization pass: Eliminate dead constants.
1561 - Add spirv-lesspipe.sh filter utility
1562 - Fixes issues:
1563 #288: Check def-use dominance rules for OpPhi (variable,parent) operands
1564 #339: Allow OpUndef in types-constants-global-vars section, as required
1565 by SPIR-V 1.0 Rev7, 1.1 Rev 3.
1568 environments not just Vulkan 1.0.
1570 v2016.2 2016-08-05
1571 - Validator is incomplete
1572 - Checks ID use block is dominated by definition block
1573 - Add optimization passes (in API and spirv-opt command)
1574 - Strip debug info instructions
1575 - Freeze spec constant to their default values
1576 - Allow INotEqual as operation for OpSpecConstantOp
1577 - Fixes bugs:
1581 #286: validator: don't incorrectly generate def-use error for
1584 #295: validator: def-use dominance check should ignore unreachable uses
1589 v2016.1 2016-07-19
1590 - Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261
1591 Turn off ClipDistance and CullDistance capability checks for Vulkan.
1592 - The disassembler can emit friendly names based on debug info (OpName
1594 This is turned on by default for the spirv-dis command line tool.
1595 - Updated to support SPIR-V 1.1 rev 2
1596 - Input StorageClass, Sampled1D capability, and SampledBuffer capability
1599 v2016.0 2016-07-04
1601 - Adds v<year>.<index> versioning, with "-dev" indicating
1603 and summarize functionality when SPIRV-Tools is incorporated
1606 - Summary of functionality (See the README.md for more):
1607 - Supports SPIR-V 1.1 Rev 1
1608 - Supports SPIR-V 1.0 Rev 5
1609 - Supports GLSL std450 extended instructions 1.0 Rev 3
1610 - Supports OpenCL extended instructions 1.0 Rev 2
1611 - Assembler, disassembler are complete
1612 - Supports floating point widths of 16, 32, 64 bits
1613 - Supports integer widths up to 64 bits
1614 - Validator is incomplete
1615 - Checks capability requirements in most cases
1616 - Checks module layout constraints
1617 - Checks ID use-definition ordering constraints,
1619 - Checks some control flow graph rules
1620 - Optimizer is introduced, with few available transforms.
1621 - Supported on Linux, OSX, Android, Windows
1623 - Fixes bugs:
1624 - #143: OpenCL pow and pown arguments