David Neto | 9166854 | 2016-04-21 20:50:11 -0400 | [diff] [blame] | 1 | Revision history for SPIRV-Tools |
| 2 | |
David Neto | 6b83643 | 2018-05-25 22:14:30 -0400 | [diff] [blame] | 3 | v2018.4-dev 2018-05-25 |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 4 | - General: |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame^] | 5 | - Support SPV_KHR_8bit_storage |
| 6 | - Add gclient and presubmit configurations |
| 7 | - Enable Kokoro build bots (#1625) |
| 8 | - Group tests into fewer executables, reduces load on CI |
| 9 | - Port test script to Python 3 |
| 10 | - Symbol export tests respect SPIRV_SKIP_TESTS |
| 11 | - #1596: Operand lookup succeeds if enabled by a capability |
| 12 | - #1624: Instruction lookup succeeds if enabled by a capability |
| 13 | - Refactoring namespaces: |
| 14 | - #1678: Change libspirv to spvtools |
| 15 | - Code in source/utils moved into spvtools::utils |
| 16 | - Code in source/comp moved into spvtools::comp |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 17 | - Optimizer: |
| 18 | - Remove insert-extract-elim pass. Use simplification pass instead. |
| 19 | - Preserve instruction-to-block mapping in most passes, to reduce runtime. |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame^] | 20 | - Small vector optimization for operands |
| 21 | - Add pass to move Private variables to Function. Increase opportunity to optimize. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 22 | - Fixes: |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame^] | 23 | #1120: Check static uses of entry point interfaces |
| 24 | #1372: Avoid merging some structs, to preserve names for reflection |
| 25 | #1577: Scalar replacement uses only undecorated types. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 26 | #1578: Fix handling of forward-pointer types, and types embedding pointers |
| 27 | to themselves. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 28 | #1591: Inliner: Callee variable with initializer should have a store at the call site. |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame^] | 29 | #1634: Fix crash: Use type id in vector type lookup |
| 30 | #1649: Fix assert in compact-ids pass |
| 31 | Fix constant folder: ensure it uses the right type |
| 32 | #1659: Folding rules added to IRContext. Avoids leak. |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 33 | - Validator |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame^] | 34 | - Add work-in-progress WebGPU environment. Disallows OpUndef |
| 35 | - #670, #1581: Improve error messages; disassemble instruction |
| 36 | - #491: Check structured switches |
| 37 | - #937: Check layout rules for Block and BufferBlock in Uniform, StorageBuffer, PushConstant |
| 38 | - #1281: Check invalid branches into structured constructs |
| 39 | - #1522: Disallow array-of-arrays with DescriptorSets |
David Neto | 035afb8 | 2018-06-11 11:08:52 -0400 | [diff] [blame] | 40 | - #1577: Allow duplicate pointer types. |
| 41 | - #1581: Better messages: output ID names along with numbers in more cases. |
David Neto | 9de00c9 | 2018-07-08 12:49:51 -0400 | [diff] [blame^] | 42 | - #1597: Check Vulkan 1.1 capabilities |
| 43 | - #1618: Check invalid exit from structured case construct |
| 44 | - #1622: Run IdPass before DataRulesPass |
| 45 | - #1632: Reduce test time by artificially lowering limits in limit test |
| 46 | - #1638: Block-decorated structs member order must respect offset order |
| 47 | - #1657: Improve CFG validation diagnostics |
| 48 | - Khronos SPIR-V #337: GLSL.std.450 Refract instruction Eta param can be any float scalar. |
| 49 | - #1606: PushConstant Blocks follow storage-buffer layout rules |
| 50 | - #1664: Check layout of StorageBuffer variables with Block decoration, using storage buffer |
| 51 | rules |
| 52 | - #1666: Layout validation should permit {vec3; float} packing |
| 53 | - #1637, #1668: Layout validation uses RowMajor, ArrayStride, MatrixStride properly |
| 54 | - Linker |
| 55 | - Avoid buffer overrun when creating OpModuleProcessed |
David Neto | 6b83643 | 2018-05-25 22:14:30 -0400 | [diff] [blame] | 56 | |
David Neto | 545d6ca | 2018-05-25 22:12:25 -0400 | [diff] [blame] | 57 | v2018.3 2018-05-25 |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 58 | - General: |
| 59 | - Support SPV_EXT_descriptor_indexing |
| 60 | - Support SPV_GOOGLE_decorate_string |
| 61 | - Support SPV_GOOGLE_hlsl_functionality1 |
| 62 | - Support SPV_NV_shader_subgroup_partitioned |
| 63 | - Use "unified1" grammar from SPIRV-Headers |
| 64 | - Simplify support for new extensions. Assembler, disassembler, and simple validation |
| 65 | support is automatic if new tokens are introduced with appropriate extension |
| 66 | attributes in the "unified1" SPIR-V core grammar. |
| 67 | - Disassembler: Emit more digits on floating point, to reliably reproduce all |
| 68 | significand bits. (Use std::max_digits10 instead of std::digits10) |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 69 | - Fix compilation for old XCode versions: Explicit construction required for std::set. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 70 | - Optimizer: |
| 71 | - Add --strip-reflect |
| 72 | - Add --time-report |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 73 | - Add --loop-fission |
| 74 | - Add lop fusion. |
| 75 | - Add loop peeling pass and internal utility. |
| 76 | - Improve optimizer runtime. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 77 | - Merge-return now works with structured control flow. |
| 78 | - New (faster) SSA rewriter to convert local loads and stores to SSA IDs and phis. |
| 79 | Can replace load/store elimination passes. |
| 80 | - Fix instruction folding case: insertion that feeds and extract, when the extract |
| 81 | remains. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 82 | - Fold OpDot. |
| 83 | - Fold OpFNegate. |
| 84 | - Fold multply and divide of same value. |
| 85 | - Fold FClamp feeding a compare. |
| 86 | - Fold OpLoad feeding an extract, to reduce excessive copying. (#1547) |
| 87 | - Fold Fmix feeding an extract. |
| 88 | - Use simplification pass instead of insert-extract elimination. |
| 89 | - Constant fold OpVectorTimesScalar. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 90 | - Copy propagate arrays, in simple cases. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 91 | - Aggressive dead code elimination: Can remove more instructions, e.g. derivatives. |
| 92 | - Aggressive dead code elimination: Remove Workgroup variables that are written but not read. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 93 | - Better handling of OpImageTexelPointer |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 94 | - Initial utilities for scalar evolution. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 95 | - Add Vector dead code elimination. |
| 96 | - Each pass can only run once. |
| 97 | - Allow code hosting in if-conversion. |
| 98 | - Add external interface for adding a PassToken, so external code can make their own |
| 99 | passes. |
| 100 | - Fixes: |
| 101 | #1404: Don't optimize away the compute compute workgroup size constant. |
| 102 | #1407: Remove a bad assertion |
| 103 | #1456: Fix bug in SSA rewriter related to variables updated in loops. |
| 104 | #1487: Fix long runtime in Dead insertion elimination: Don't revist select phi nodes. |
| 105 | #1492: Aggressive dead code elimination can remove OpDecorateStringGOOGLE. |
| 106 | #1527: Fix inlining of functions having OpKill and OpUnreachable. |
| 107 | #1559: Fix assert failure in reduce-load-size pass. |
| 108 | #1556: Aggressive dead code elimination: Fix handling of OpCopyMemory. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 109 | - Validator: |
| 110 | - Check Vulkan built-in variables |
| 111 | - Check Vulkan-specific atomic result type rule. |
| 112 | - Relax control barrier check for SPIR-V 1.3. Fixes #1427 |
| 113 | - Check OpPhi. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 114 | - Check OpMemoryModel. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 115 | - Stop checking sizes derived from spec-constants. |
| 116 | - Re-enable checks for OpUConvert. |
David Neto | 6a986d0 | 2018-05-25 21:58:26 -0400 | [diff] [blame] | 117 | - Vulkan: Fix check for PrimitiveId: Permit as Input in fragment shader. |
| 118 | - Validate binary version for the given target environment. |
| 119 | - Add tests for OpBranch checks. |
| 120 | - Vulkan 1.1: Check scope for non-uniform subgroup operations. |
| 121 | - Fix checks for SPV_AMD_gpu_shader_int16. |
| 122 | - Fix logical layout check for OpDecorateId. |
| 123 | - Fix checks for ViewportIndex & Layer for Vulkan and SPV_EXT_shader_viewport_index_layer. |
| 124 | - Fixes: |
| 125 | #1470: Vulkan: Don't restrict WorkgroupSize to Input storage class. |
| 126 | #1469: Vulkan: Permit Subgroup memory scope for Vulkan 1.1. |
| 127 | #1472: Per-vertex variable validation fixes. |
| 128 | #1483: Valdiate barrier execution scopes for Vulkan 1.1. |
David Neto | 5f53c42 | 2018-04-06 16:42:56 -0400 | [diff] [blame] | 129 | - Fixes: |
| 130 | #898: Linker properly removes FuncParamAttr from imported symbols. |
| 131 | #924, #1174: Fix handling of decoration groups in optimizer, linker. |
David Neto | ac43466 | 2018-03-07 17:13:18 -0500 | [diff] [blame] | 132 | |
David Neto | 8d8a712 | 2018-03-07 17:11:50 -0500 | [diff] [blame] | 133 | v2018.2 2018-03-07 |
David Neto | a0da44e | 2018-03-07 17:10:13 -0500 | [diff] [blame] | 134 | - General: |
David Neto | 8d8a712 | 2018-03-07 17:11:50 -0500 | [diff] [blame] | 135 | - Support SPIR-V 1.3 and Vulkan 1.1. |
| 136 | - Default target environment is now SPIR-V 1.3. For command-line tools, |
| 137 | use the --target-env option to override the default. Examples: |
| 138 | # Generate a SPIR-V 1.0 binary instead of SPIR-V 1.3 |
| 139 | spirv-as --target-env spv1.0 a.spvasm -o a.spv |
| 140 | spirv-as --target-env vulkan1.0 a.spvasm -o a.spv |
| 141 | # Validate as Vulkan 1.0 |
| 142 | spirv-val --target-env vulkan1.0 a.spv |
David Neto | a0da44e | 2018-03-07 17:10:13 -0500 | [diff] [blame] | 143 | - Support SPV_GOOGLE_decorate_string and SPV_GOOGLE_hlsl_functionality1 |
| 144 | - Fixes: |
| 145 | - Fix Android.mk build. Compilation was failing due to missing definitions of |
| 146 | SpvCapabilityFloat16ImageAMD and other enumerated values. |
| 147 | - Optimizer: Avoid generating duplicate names when merging types. |
| 148 | - #1375: Validator: SPV_AMD_gpu_shaer_half_float implicitly allows declaration |
| 149 | of the 16-bit floating point type. |
| 150 | - #1376: Optimizer: Avoid folding half-precision float. |
David Neto | fe21921 | 2018-03-02 14:11:58 -0500 | [diff] [blame] | 151 | |
David Neto | 6432a12 | 2018-03-02 14:10:43 -0500 | [diff] [blame] | 152 | v2018.1 2018-03-02 |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 153 | - General: |
| 154 | - Support Visual Studio 2013 again. (Continue support for VS 2015 and VS 2017.) |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 155 | - Support building SPIRV-Tools as a shared library. |
| 156 | - Improve the HLSL legalization optimization recipe. #1311 |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 157 | - Optimizer: |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 158 | - General speedups. |
David Neto | a7cec78 | 2018-03-02 14:01:28 -0500 | [diff] [blame] | 159 | - Remove generic dead code elimination functionality from transforms: |
| 160 | --eliminate-local-single-block |
| 161 | --eliminate-local-single-store |
| 162 | --eliminate-local-multi-store |
| 163 | To recover the previous behaviour, a recipe using those transforms should now |
| 164 | also invoke the --eliminate-dead-code-aggressive transform. |
| 165 | - Improve folding, including coverage for floating point, OpSelect, and arithmetic |
| 166 | with non-trivial constant operands. |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 167 | - Add loop-invariant code motion pass. |
| 168 | - Add loop-unrolling pass, for honouring unroll hits. |
| 169 | - Add loop-unswitch pass. |
| 170 | - Add instruction simplification pass. |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 171 | - Aggressive dead code elimination: Understands capability hierarchy when finding |
| 172 | instructions it can eliminate (combinators). (PR #1268) |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 173 | - CCP can now fold floating point arithmetic. #1311 |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 174 | - Validator: |
| 175 | - Validate barrier instructions. |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 176 | - Check Vulkan-specific rules for atomics. |
David Neto | a7cec78 | 2018-03-02 14:01:28 -0500 | [diff] [blame] | 177 | - Check Vulkan prohibition of Location or Component decorations on BuiltIn variables. |
| 178 | - Linker: |
| 179 | - Add --verify-ids option |
| 180 | - Add option to allow a resulting module to be partially linked. |
| 181 | - Handle OpModuleProcessed (instructions in SPIR-V layout section 7c) |
David Neto | c452bfd | 2018-02-06 11:47:44 -0500 | [diff] [blame] | 182 | - Fixes: |
| 183 | - #1265: Optimizer: Fix use-after free bug in if-conversion. (Fix object lifecycle bug |
| 184 | in type manager.) |
David Neto | b08b94e | 2018-02-27 11:48:40 -0500 | [diff] [blame] | 185 | - #1282: Fix new warnings found by GCC 8.0.1. |
| 186 | - #1285: Optimizer: Fix random failures during inlining. (Dangling references in DefUseManager) |
| 187 | - #1295: Optimizer: Fix incorrect handling of Phi nodes in CCP. |
| 188 | - #1300: Fix CCP: avoid bad CCP transitions and unsettled values. |
| 189 | - #1304: Avoid static-duration variables of class type (with constructors). |
| 190 | - #1323: Fix folding of an insert composite feeding a composite extract. |
| 191 | - #1339: Fix CCP: Handle OpConstantNull boolean values as conditions. |
| 192 | - #1341: DCEInst: Keep atomic instructions (and some others with side effects). |
David Neto | a7cec78 | 2018-03-02 14:01:28 -0500 | [diff] [blame] | 193 | - #1354: Don't fold integer division. |
| 194 | - #1357: Support OpConstantNull in folding. |
| 195 | - #1361: CCP: Fix handling of non-constant module-scope values |
David Neto | 1c0056c | 2018-02-02 11:27:07 -0500 | [diff] [blame] | 196 | |
David Neto | c430a41 | 2018-02-02 11:25:58 -0500 | [diff] [blame] | 197 | v2018.0 2018-02-02 |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 198 | - General |
| 199 | - VisualStudio 2013 is no longer supported. VisualStudio 2015 is supported. |
| 200 | - Use "include/unified1" directory from SPIRV-Headers. Requires recent SPIRV-Headers source. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 201 | - Disassembler: spirv-dis adds --color option to force color disassembly. |
Alan Baker | 80b743a | 2018-01-15 13:25:45 -0500 | [diff] [blame] | 202 | - Optimizer: |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 203 | - Add pass to eliminate dead insertions. |
| 204 | - Aggressive dead code elimination now removes OpSwitch constructs. |
| 205 | - Block merging occurs in more cases. |
| 206 | - Add driver workaround transform: replace OpUnreachable with harmless branch to merge. |
| 207 | - Improve instruction folding framework. |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 208 | - Add loop analysis. |
| 209 | - Add scalar replacement of aggregates to size-optimization recipe. |
| 210 | - Add pass to replace instructions invalid for a shader stage, with a harmless value. |
| 211 | This changes the semantics of the program! Not for general use! |
| 212 | - Rearragne and add passes to performance-optimization recipe, to produce better results. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 213 | - Validator: |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 214 | - Validate OpenCL extended instructions. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 215 | - Shaders can't perform atomics on floats. |
David Neto | bcd4f23 | 2018-02-02 11:23:33 -0500 | [diff] [blame] | 216 | - Validate memory semantics values in atomics. |
| 217 | - Validate instruction-adjacency constraints, e.g. OpPhi predecessors, merge instructions |
| 218 | immediately precede branches. |
David Neto | ba017f7 | 2018-01-12 18:52:42 -0500 | [diff] [blame] | 219 | - Fixes: |
| 220 | - PR 1198: Optimizer: Fix CCP in presence of matrix constants. |
David Neto | ae6daee | 2018-01-16 22:52:39 -0500 | [diff] [blame] | 221 | - #1199: Optimizer: Fix CCP: don't propagate spec constants. |
| 222 | - #1203: Optimizer: Fix common uniform elim bug introduced by refactoring. |
David Neto | 38f297c | 2018-01-30 17:47:00 -0500 | [diff] [blame] | 223 | - #1210: Optimizer: Aggressive dead code elimination: Fix 'break' identification. |
| 224 | - #1212: Optimizer: Aggressive dead code elimination: Was skipping too many instructions. |
| 225 | - #1214: Optimizer: Aggressive dead code elimination: Fix infinite loop. |
| 226 | - #1228: Optimizer: Fix CCP: Handling of varying Phi nodes; was resulting in infinite loop. |
| 227 | - #1245: Optimizer: Dead branch elimination: Avoid a null pointer dereference. |
| 228 | - #1250: Optimizer: Dead branch elimination: Avoid spuriously reporting a change. |
David Neto | 86dec64 | 2018-01-12 13:33:43 -0500 | [diff] [blame] | 229 | |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 230 | v2017.3 2018-01-12 |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 231 | - General: |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 232 | - Support DebugInfo extended instruction set, targeted at OpenCL environments. |
| 233 | See the SPIR-V Registry. |
| 234 | - Generate a SPIRV-Tools.pc file for pkg-config. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 235 | - Optimizer: |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 236 | - Progress for legalization of code generated from HLSL (issue #1118): |
| 237 | - Add --legalize-hlsl option to run transforms used to transform intermediate |
| 238 | code generated by HLSL to SPIR-V for Vulkan compilers. Those compilers |
| 239 | normally run these transforms automatically. This option is used for developing |
| 240 | those transforms. |
| 241 | - Add Private-to-Function variable conversion for modules with logical |
| 242 | addressing. |
| 243 | - Add --ccp: SSA Conditional Constant Propagation (CCP) |
| 244 | - Add --print-all to show disassembly for each optimization pass. |
| 245 | - Internal: Add loop descriptors and post-order tree iterator. |
| 246 | - Generalized dead branch elimination |
| 247 | - Aggressive dead code elimination (ADCE) now removes dead functions and |
| 248 | module-scope variables. |
| 249 | - Vector extract/insert elimination now optimizes through some cases of |
| 250 | VectorShuffle, and GLSL.std.450 Mix extended instruction. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 251 | - Validator: |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 252 | - Add validation for GLSL.std.450 extended instruction set. |
| 253 | - Check out of bounds composite accesses, where that's statically computable. |
| 254 | Fixes #1112. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 255 | - Check upper bits of literal numbers that aren't a multiple of 32-bits wide. |
| 256 | - More validation of primitive instructions |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 257 | - Add optional "relaxed" checking logical addressing mode to permit some |
| 258 | cases of pointer-to-pointer. Contributes to HLSL legalization (issue #1118). |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 259 | - Fixes: |
| 260 | #1100: Validator: Image operand Sample can be used with OpImageSparseFetch, |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 261 | OpImageSparseRead. |
David Neto | 2e5672d | 2017-12-19 17:50:01 -0500 | [diff] [blame] | 262 | #1108: Remove duplicates transform was incorrectly removing non-duplicate |
| 263 | decorations. |
David Neto | 902ed46 | 2018-01-12 13:32:04 -0500 | [diff] [blame] | 264 | #1111: Optimizer's type manager could reference deleted memory. |
| 265 | #1112: Fix decoration equality check, e.g. it is now symmetric. |
| 266 | #1129: Validator now disallows Dim=SupbassData for OpImageSparseRead. |
| 267 | #1143: Fix CCP: Was generating incorrect code for loops. |
| 268 | #1153: Fix CCP crash. |
| 269 | #1154: Optimizer's internal instruction-to-block mappings were sometimes |
| 270 | inconsistent. |
| 271 | #1159: Fix CCP infinite loop. |
| 272 | #1168: Fix dead branch elimination intermittently generating incorrect code. |
| 273 | Fixes https://github.com/KhronosGroup/glslang/issues/1205 |
| 274 | #1186: Fix validation of PackDouble2x32 and UnpackDouble2x32 |
David Neto | 7361034 | 2017-12-15 18:24:41 -0500 | [diff] [blame] | 275 | |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 276 | v2017.2 2017-12-15 |
| 277 | - General: |
| 278 | - Support OpenCL 1.2, 2.0 target environments, including embedded profiles |
| 279 | - Add CONTRIBUTING.md |
| 280 | - Fix exit status code for spirv-link |
| 281 | - Disassember: Enable emitting ANSI colour codes to a string |
| 282 | - Library avoids polluting global namespace. The libraries can export C and C++ |
| 283 | symbols starting with "spv", or in a C++ namespace. Add a test for this. |
| 284 | - Linux release builds include debug information, for easier profiling |
| 285 | - Build bots no longer test VisualStudio 2013 |
| 286 | - Testing dependency RE2 requires VisualStudio 2015 or later |
| 287 | - Build bots check code formatting |
Stephen McGroarty | 8ba68fa | 2017-11-27 21:21:26 +0000 | [diff] [blame] | 288 | - Optimizer: |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 289 | - Add --skip-validation to spirv-opt |
| 290 | - Add dominance tree analysis |
| 291 | - Add generic value propagation engine |
| 292 | - Add global redundancy elimination within a function |
| 293 | - Add scalar replacement of function-scope variables of composite type |
| 294 | - Aggressive dead code elimination: Remove empty loops |
| 295 | - Killing an instruction notifies the IRContext |
| 296 | - IRContext::KillInst deletes the instruction |
| 297 | - Move CFG analysis to IRContext |
| 298 | - Add constant manager |
| 299 | - Fix: Don't consider derivative instructions as combinators. |
| 300 | - Fix: Don't delete an instruction twice in local dead-code-elimination |
| 301 | - Fix: Don't consider derivative instructions as combinators. |
| 302 | - Validator: |
| 303 | - Finish checking of image instructions (Section 3.32.10) |
| 304 | - Check sparse image instructions |
| 305 | - Check OpTypeImage, OpTypeSampleImage |
| 306 | - Check composite instructions (Section 3.32.12) |
| 307 | - Check atomic instructions (Section 3.32.18) |
| 308 | - Check OpEmitStreamVertex, OpEndStreamPrimitive instructions |
| 309 | - Re-enable validation of OpCopyObject |
| 310 | - OpKill, image ImplicitLod and QueryLod instructions can only be used in Fragment |
| 311 | shaders. |
| 312 | - Fixes for image instruction validation: |
| 313 | - Lod image operand only usable with ExplicitLod and OpImageFetch |
| 314 | - ExplicitLod Lod image operand must be float scalar |
| 315 | - OpImageFectch Lod image operand must be int scalar |
| 316 | - OpImageGather component operand must be 32-bits (integer scalar) |
| 317 | - OpImageQuerySizeLod Lod must be integer scalar |
Alan Baker | 0cae89e | 2017-11-23 23:08:58 -0500 | [diff] [blame] | 318 | - Fixes: |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 319 | #622: Remove names and decorations when inlining |
| 320 | #989: Aggressive dead code elim: Don't optimize away live breaks from a loop |
| 321 | #991: Fix validation of SPV_AMD_shader_ballot |
Alan Baker | 0cae89e | 2017-11-23 23:08:58 -0500 | [diff] [blame] | 322 | #1004: Use after free of an instruction, in remove-duplicates transform |
David Neto | e1a6f8d | 2017-11-24 10:17:13 -0500 | [diff] [blame] | 323 | #1007: OpImageRead not required to return 4-component vector |
| 324 | #1009: OpImageRead can return scalar int/float types |
David Neto | 1ccfb58 | 2017-12-15 18:21:55 -0500 | [diff] [blame] | 325 | #1011: OpImageWrite should allow scalar int/float texel types |
| 326 | #1012: Fix validat Dref type check |
| 327 | #1017: Load-store elimination considers variable initializations |
| 328 | #1034: Fix Windows debug build: operator< should be a weak ordering |
| 329 | #1083: Inlining: Set parent (function) for each inlined basic block. |
| 330 | #1075: Aggressive dead code elimination: Was leaving dangling references to |
| 331 | removed blocks. |
David Neto | b0a7037 | 2017-11-23 18:16:41 -0500 | [diff] [blame] | 332 | |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 333 | v2017.1 2017-11-23 |
David Neto | 1affe5a | 2017-10-04 17:02:39 -0400 | [diff] [blame] | 334 | - Update README with details on the public_spirv_tools_dev@khronos.org mailing list. |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 335 | - General: |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 336 | - Automatically deploy built artifacts to GitHub Releases |
| 337 | - Add a Linker (module combiner). Under development. |
| 338 | - Add Android.mk for Android NDK builds. |
David Neto | 76555bd | 2017-11-08 00:23:42 -0500 | [diff] [blame] | 339 | - Add the 'effcee' library as an optional dependency for use in tests. |
| 340 | Eventually it will be a required dependency, once downstream projects have |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 341 | a chance to adjust. Requires 're2' library. |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 342 | - Avoid static-duration variables of class type (with constructors). |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 343 | - Hack around bugs in gcc-4.8.1 template handling |
| 344 | - Faster opcode lookup |
Andrey Tuganov | 82df4bb | 2017-08-30 10:13:10 -0400 | [diff] [blame] | 345 | - Validator: |
David Neto | a91cecf | 2017-09-14 10:35:22 -0400 | [diff] [blame] | 346 | - Recognize extensions listed on SPIR-V registry, |
| 347 | through #25 SPV_AMD_shader_fragment_mask |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 348 | - Validator issues an info message when it sees an unrecognized extension. |
| 349 | - Type check basic arithmetic operations |
| 350 | - Type check carry/extended arithmetic operations |
| 351 | - Type check vector arithmetic operations |
| 352 | - Type check Relational and Logical instructions |
| 353 | - Type check Bit instructions |
| 354 | - Check type uniqueness rules |
| 355 | - Check conversion instructions |
| 356 | - Check image instructions |
| 357 | - Check derivative instructions |
| 358 | - Check OpVectorShuffle |
| 359 | - Check OpBranchConditional |
| 360 | - OpModuleProcessed is only allowed after debug names section and before annotations |
| 361 | section. |
| 362 | - Checks the right kind of return is called for each function (void or non-void). |
| 363 | - Add option to relax type check when storing structs (--relax-store-struct) |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 364 | - Optimizer: |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 365 | - Refactoring internal representation of the module, including: |
| 366 | - IRContext: owns a module and manages analyses |
| 367 | - Instructions are owned by intrusive lists, and have unique IDs |
| 368 | - BasicBlock owns its instruction list. |
| 369 | - DefUseManager: change representation of uses, for faster processing |
| 370 | on large modules. |
| 371 | - Add high level recipes: -O, -Os, and -Oconfig |
| 372 | Recipes for -O and -Os are under development. |
| 373 | - Add eliminate-dead-function transform |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 374 | - Add strength reduction transform: For now, convert multiply by power of 2 |
| 375 | to a bit shift. |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 376 | - Add CFG cleanup transform |
| 377 | - Add removal of dead module-scope variables |
| 378 | - Add merge-return transform for modules without structured control flow |
| 379 | - Add redundancy elimination within a basic block (local value numbering) |
| 380 | - Extract-insert elimination: |
| 381 | - Recognize the case where the first instruction in the sequence is an |
| 382 | OpCompositeConstruct or OpConstantComposite |
| 383 | - Handle some cases of nested structs |
| 384 | - Dead branch elimination now can eliminate entire selection constructs |
| 385 | when all arms are dead. |
| 386 | - Compressing codec: |
| 387 | - Updated algorithm to 1.01, 1.02, 1.03 |
| 388 | - Not built by default. Use -DSPIRV_BUILD_COMPRESSION=ON to build. |
| 389 | - Codec can be parameterized by a customized model. |
David Neto | 25ddfec | 2017-09-02 19:01:03 -0400 | [diff] [blame] | 390 | - Fixes: |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 391 | #728: Fix decoration of inlined functions |
David Neto | 40e9c60 | 2017-09-01 18:12:15 -0400 | [diff] [blame] | 392 | #798: spirv-as should fail when given unrecognized long option |
David Neto | 25ddfec | 2017-09-02 19:01:03 -0400 | [diff] [blame] | 393 | #800: Inliner: Fix inlining function into header of multi-block loop |
David Neto | d84df94 | 2017-09-26 11:30:57 -0400 | [diff] [blame] | 394 | #824: Eliminate-local-multi-store: Fix a crash |
| 395 | #826: Elimiante-local-multi-store: Fix a crash |
David Neto | 6eaaf7b | 2017-09-27 10:03:20 -0400 | [diff] [blame] | 396 | #827: Fix crash when compact-ids transform runs before another transform. |
Andrey Tuganov | c25b5be | 2017-09-25 12:45:48 -0400 | [diff] [blame] | 397 | #834: Add Cmake option to build the compressing codec. Off by default. |
David Neto | 493c088 | 2017-11-23 18:12:23 -0500 | [diff] [blame] | 398 | #911: Fix classification of Line and NoLine instructions |
David Neto | 7e2d26c | 2017-09-01 16:28:22 -0400 | [diff] [blame] | 399 | |
David Neto | d16403a | 2017-09-01 16:24:27 -0400 | [diff] [blame] | 400 | v2017.0 2017-09-01 |
| 401 | - Update README to describe that assembler, disassembler, and binary parser support |
| 402 | are based on grammar files from the SPIRV-Headers repository. |
| 403 | |
David Neto | a0977e8 | 2017-09-01 16:14:25 -0400 | [diff] [blame] | 404 | v2016.7 2017-09-01 |
David Neto | dbc2049 | 2017-03-14 12:43:41 -0400 | [diff] [blame] | 405 | - Add SPIR-V 1.2 |
| 406 | - OpenCL 2.2 support is now based on SPIR-V 1.2 |
David Neto | 0b0454c | 2017-06-22 10:22:55 -0400 | [diff] [blame] | 407 | - Support AMD extensions in assembler, disassembler: |
| 408 | SPV_AMD_gcn_shader |
| 409 | SPV_AMD_shader_ballot |
| 410 | SPV_AMD_shader_explicit_vertex_parameter |
| 411 | SPV_AMD_shader_trinary_minmax |
| 412 | SPV_AMD_gpu_shader_half_float |
| 413 | SPV_AMD_texture_gather_bias_lod |
| 414 | SPV_AMD_gpu_shader_int16 |
| 415 | - Optimizer: Add support for: |
| 416 | - Inline all function calls in entry points. |
David Neto | 15612fe | 2017-08-01 15:33:15 -0400 | [diff] [blame] | 417 | - Flatten decoration groups. Fixes #602 |
David Neto | 0b0454c | 2017-06-22 10:22:55 -0400 | [diff] [blame] | 418 | - Id compaction (minimize Id bound). Fixes #624 |
| 419 | - Eliminate redundant composite insert followed by extract |
| 420 | - Simplify access chains to local variables |
| 421 | - Eliminate local variables with a single store, if possible |
David Neto | 15612fe | 2017-08-01 15:33:15 -0400 | [diff] [blame] | 422 | - Eliminate local variables with a several stores, if possible |
David Neto | 0b0454c | 2017-06-22 10:22:55 -0400 | [diff] [blame] | 423 | - Eliminate loads and stores in same block to local variables |
David Neto | 15612fe | 2017-08-01 15:33:15 -0400 | [diff] [blame] | 424 | - Eliminate redundant insert/extract to composite values |
| 425 | - Aggressive dead instruction elimination |
| 426 | - Eliminate dead branches |
| 427 | - Merge blocks when the second can only be preceded by the first |
David Neto | 95a600c | 2017-08-04 17:48:22 -0400 | [diff] [blame] | 428 | - Eliminate ommon uniform loads |
David Neto | 1d8efb0 | 2017-04-20 15:54:10 -0400 | [diff] [blame] | 429 | - Assembler: Add option to preserve numeric ids. Fixes #625 |
David Neto | f8cc397 | 2016-12-16 15:32:56 -0500 | [diff] [blame] | 430 | - Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V |
| 431 | assembly syntax file for Vim. |
David Neto | 699943d | 2017-01-17 15:41:23 -0500 | [diff] [blame] | 432 | - Version string: Allow overriding of wall clock timestamp with contents |
| 433 | of environment variable SOURCE_DATE_EPOCH. |
David Neto | e3632a2 | 2017-02-28 11:53:05 -0500 | [diff] [blame] | 434 | - Validator implements relaxed rules for SPV_KHR_16bit_storage. |
David Neto | 826d968 | 2017-07-04 12:27:31 -0400 | [diff] [blame] | 435 | - CMake installation rules use GNUInstallDirs. For example, libraries |
| 436 | will be installed into a lib64 directory if that's the norm for the |
| 437 | current system. |
David Neto | 37422e9 | 2016-12-19 13:26:42 -0500 | [diff] [blame] | 438 | - Fixes: |
Ehsan Nasiri | da4ae05 | 2017-02-15 13:29:33 -0500 | [diff] [blame] | 439 | #500: Parameterize validator limit checks |
David Neto | 37422e9 | 2016-12-19 13:26:42 -0500 | [diff] [blame] | 440 | #508: Support compilation under CYGWIN |
Ehsan Nasiri | 109ce22 | 2017-01-05 12:53:02 -0500 | [diff] [blame] | 441 | #517: Fix validation when continue (or case) contstruct is also the head of a |
| 442 | nested control construct. |
David Neto | dadd516 | 2017-02-09 14:23:52 -0500 | [diff] [blame] | 443 | #551: If a merge block is reachable, it must be *strictly* dominated by its |
| 444 | header. |
Adam Van Ymeren | c094970 | 2017-02-15 13:31:07 -0500 | [diff] [blame] | 445 | #548: Validator: Error when the reserved OpImageSparseSampleProj* opcodes |
| 446 | are used. |
David Neto | afc60bb | 2017-04-02 02:17:41 -0400 | [diff] [blame] | 447 | #611: spvtools::Optimizer was failing to save the module to the output |
| 448 | binary vector when all passes succeded without changes. |
David Neto | 51b6778 | 2017-05-12 17:35:18 -0400 | [diff] [blame] | 449 | #629: The inline-entry-points-all optimization could generate invalidly |
| 450 | structured code when the inlined function had early returns. |
David Neto | 35a0695 | 2017-07-04 16:24:46 -0400 | [diff] [blame] | 451 | #697: Optimizer's Instruction::ForEachInId method was skipping semantics-id |
| 452 | and scope-id. |
David Neto | 720869b | 2017-08-10 13:13:33 -0400 | [diff] [blame] | 453 | #755: Inliner: Fix inlining of callee with single Return appearing before |
| 454 | the end of the function. |
David Neto | fc60d1e | 2017-08-30 14:25:23 -0400 | [diff] [blame] | 455 | #776: Fix dead branch elimination in presence of complex but dead control |
| 456 | flow. |
David Neto | d843cae | 2017-09-01 10:15:42 -0400 | [diff] [blame] | 457 | #781: SPV_KHR_variable_pointers allows duplicate pointer types |
David Neto | 9090da5 | 2017-08-29 23:22:07 -0400 | [diff] [blame] | 458 | #782: Inliner: Fix remapping of non-label forward references in callee |
David Neto | f241374 | 2017-09-01 16:13:12 -0400 | [diff] [blame] | 459 | #787: Inliner: Fix remapping of inlined entry block when called from |
| 460 | single block loop. |
| 461 | #790: Inliner: Fix remapping of inlined entry block when callee has |
| 462 | multiple returns. |
David Neto | 68c5f04 | 2016-12-13 11:49:50 -0500 | [diff] [blame] | 463 | |
David Neto | 5f5fa3a | 2016-12-13 11:49:09 -0500 | [diff] [blame] | 464 | v2016.6 2016-12-13 |
Lei Zhang | 620f05e | 2016-09-16 16:12:04 -0400 | [diff] [blame] | 465 | - Published the C++ interface for assembling, disassembling, validation, and |
| 466 | optimization. |
David Neto | ee6c877 | 2016-10-12 10:47:28 -0400 | [diff] [blame] | 467 | - Support SPV_KHR_shader_draw_parameters in assembler, disassembler, parser. |
David Neto | 5f5fa3a | 2016-12-13 11:49:09 -0500 | [diff] [blame] | 468 | - Validator: |
| 469 | - Add validator API accepting raw binary words |
| 470 | - Increased coverage: |
| 471 | - Checks "Data rules" in Universal Validation Rules, section 2.16.1 |
| 472 | - WIP: Universal Limits. |
| 473 | - The minimum mandated upper bounds are checked. |
| 474 | - TODO: Parameterize the validator to allow larger limits accepted by |
| 475 | a more than minimally capable implementation. |
| 476 | - OpSampledImage checks |
| 477 | - OpConstantComposite checks |
| 478 | - Id bound check |
| 479 | - Disasssembler: |
| 480 | - Generates friendly GLSL-based names for more builtin variables |
| 481 | - Generates friendly names for numeric OpConstant values |
| 482 | - Vendor tool info extracted from SPIR-V XML registry file. |
Umar Arshad | a6ef1ea | 2016-09-22 10:23:08 -0400 | [diff] [blame] | 483 | - Fixes issues: |
| 484 | #429: Validator: Allow OpTypeForwardPointer and OpTypeStruct to reference |
| 485 | undefined IDs |
David Neto | 5f5fa3a | 2016-12-13 11:49:09 -0500 | [diff] [blame] | 486 | #482: Validator: OpVariable initializer can be an ID of a module-scope variable |
David Neto | 6519fce | 2016-09-16 16:40:00 -0400 | [diff] [blame] | 487 | |
David Neto | f9763ac | 2016-09-16 16:39:40 -0400 | [diff] [blame] | 488 | v2016.5 2016-09-16 |
David Neto | 9382035 | 2016-09-16 14:40:02 -0400 | [diff] [blame] | 489 | - Support SPV_KHR_shader_ballot in assembler, disassembler, parser. |
David Neto | e0dd033 | 2016-09-13 12:38:42 -0400 | [diff] [blame] | 490 | - Disassembler: Generate friendly names for built-in variables. |
David Neto | 26b51ef | 2016-09-12 16:48:05 -0400 | [diff] [blame] | 491 | - Partial fixes: |
| 492 | #359: Add Emacs helper for automatically diassembling/assembling a SPIR-V |
| 493 | binary on file load/save. |
David Neto | 5c9080e | 2016-09-14 11:04:19 -0400 | [diff] [blame] | 494 | - Fixes: |
David Neto | 247e024 | 2016-09-14 15:22:47 -0400 | [diff] [blame] | 495 | #414: Validator: Allow OpUndef for composite constants |
David Neto | 5c9080e | 2016-09-14 11:04:19 -0400 | [diff] [blame] | 496 | #415: Validator: Phi can use its own value in some cases. |
David Neto | e70a957 | 2016-09-01 15:38:53 -0400 | [diff] [blame] | 497 | |
David Neto | 9fc8658 | 2016-09-01 15:33:59 -0400 | [diff] [blame] | 498 | v2016.4 2016-09-01 |
| 499 | - Relicensed under Apache 2.0 |
qining | 380f36e | 2016-08-04 13:24:08 -0400 | [diff] [blame] | 500 | - Add optimization passes (in API and spirv-opt command) |
| 501 | - Fold spec constants defined with OpSpecConstantOp and |
| 502 | OpSpecConstantComposite to normal constants with fixed value(s). |
David Neto | 9fc8658 | 2016-09-01 15:33:59 -0400 | [diff] [blame] | 503 | - Fixes issues: |
| 504 | #318: Relicensed under Apache 2.0 |
David Neto | 0d4b73c | 2016-08-24 11:18:16 -0400 | [diff] [blame] | 505 | |
David Neto | a7a84bd | 2016-08-24 11:17:07 -0400 | [diff] [blame] | 506 | v2016.3 2016-08-24 |
David Neto | c296701 | 2016-08-05 18:19:30 -0400 | [diff] [blame] | 507 | - Add target environment enums for OpenCL 2.1, OpenCL 2.2, |
| 508 | OpenGL 4.0, OpenGL 4.1, OpenGL 4.2, OpenGL 4.3, OpenGL 4.5. |
David Neto | 996a814 | 2016-08-03 11:55:14 -0400 | [diff] [blame] | 509 | - Add spirv-cfg, an experimental tool to dump the control flow graph |
| 510 | as a GraphiViz "dot" graph |
| 511 | - Add optimization pass: Eliminate dead constants. |
David Neto | 3c35b63 | 2016-08-22 11:38:18 -0400 | [diff] [blame] | 512 | - Add spirv-lesspipe.sh filter utility |
qining | 23266c9 | 2016-08-10 16:02:18 -0400 | [diff] [blame] | 513 | - Fixes issues: |
David Neto | 7784829 | 2016-08-10 10:40:59 -0400 | [diff] [blame] | 514 | #288: Check def-use dominance rules for OpPhi (variable,parent) operands |
David Neto | a7a84bd | 2016-08-24 11:17:07 -0400 | [diff] [blame] | 515 | #339: Allow OpUndef in types-constants-global-vars section, as required |
| 516 | by SPIR-V 1.0 Rev7, 1.1 Rev 3. |
David Neto | 033b7d0 | 2016-08-12 14:19:17 -0400 | [diff] [blame] | 517 | #340: Avoid race on mkdir during build |
David Neto | 97d06a3 | 2016-08-24 09:47:49 -0400 | [diff] [blame] | 518 | #365: Relax PointSize, ClipDistance, CullDistance capability check in all |
| 519 | environments not just Vulkan 1.0. |
David Neto | aa30312 | 2016-08-05 17:10:36 -0400 | [diff] [blame] | 520 | |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 521 | v2016.2 2016-08-05 |
Umar Arshad | efc782d | 2016-07-13 18:57:52 -0400 | [diff] [blame] | 522 | - Validator is incomplete |
| 523 | - Checks ID use block is dominated by definition block |
David Neto | c978b72 | 2016-07-27 17:02:22 -0400 | [diff] [blame] | 524 | - Add optimization passes (in API and spirv-opt command) |
qining | a245062 | 2016-07-26 12:11:03 -0400 | [diff] [blame] | 525 | - Strip debug info instructions |
| 526 | - Freeze spec constant to their default values |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 527 | - Allow INotEqual as operation for OpSpecConstantOp |
David Neto | c978b72 | 2016-07-27 17:02:22 -0400 | [diff] [blame] | 528 | - Fixes bugs: |
| 529 | #270: validator: crash when continue construct is unreachable |
| 530 | #279: validator: infinite loop when analyzing some degenerate control |
| 531 | flow graphs |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 532 | #286: validator: don't incorrectly generate def-use error for |
| 533 | (variable,parent) parameters to OpPhi |
David Neto | 9acc0f1 | 2016-08-02 11:59:10 -0400 | [diff] [blame] | 534 | #290: disassembler: never generate bare % for an identifier |
David Neto | 621fa39 | 2016-08-04 14:57:09 -0400 | [diff] [blame] | 535 | #295: validator: def-use dominance check should ignore unreachable uses |
David Neto | 8e3ac3c | 2016-08-05 17:07:34 -0400 | [diff] [blame] | 536 | #276: validator: allow unreachable continue constructs |
| 537 | #297: validator: allow an unreachable block to branch to a reachable |
| 538 | merge block |
Lei Zhang | 45af1dd | 2016-07-19 15:04:43 -0400 | [diff] [blame] | 539 | |
Lei Zhang | 1e7c5cb | 2016-07-19 15:03:52 -0400 | [diff] [blame] | 540 | v2016.1 2016-07-19 |
David Neto | 06581f5 | 2016-07-07 17:03:22 -0400 | [diff] [blame] | 541 | - Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261 |
| 542 | Turn off ClipDistance and CullDistance capability checks for Vulkan. |
David Neto | 0bdcc23 | 2016-07-08 14:29:52 -0400 | [diff] [blame] | 543 | - The disassembler can emit friendly names based on debug info (OpName |
| 544 | instructions), and will infer somewhat friendly names for most types. |
| 545 | This is turned on by default for the spirv-dis command line tool. |
Lei Zhang | 1e7c5cb | 2016-07-19 15:03:52 -0400 | [diff] [blame] | 546 | - Updated to support SPIR-V 1.1 rev 2 |
| 547 | - Input StorageClass, Sampled1D capability, and SampledBuffer capability |
| 548 | do not require Shader capability anymore. |
David Neto | ce7ced1 | 2016-07-04 15:13:08 -0400 | [diff] [blame] | 549 | |
David Neto | 8405893 | 2016-06-02 15:29:13 -0400 | [diff] [blame] | 550 | v2016.0 2016-07-04 |
David Neto | 9166854 | 2016-04-21 20:50:11 -0400 | [diff] [blame] | 551 | |
| 552 | - Adds v<year>.<index> versioning, with "-dev" indicating |
| 553 | work in progress. The intent is to more easly report |
| 554 | and summarize functionality when SPIRV-Tools is incorporated |
| 555 | in downstream projects. |
| 556 | |
| 557 | - Summary of functionality (See the README.md for more): |
| 558 | - Supports SPIR-V 1.1 Rev 1 |
| 559 | - Supports SPIR-V 1.0 Rev 5 |
| 560 | - Supports GLSL std450 extended instructions 1.0 Rev 3 |
| 561 | - Supports OpenCL extended instructions 1.0 Rev 2 |
| 562 | - Assembler, disassembler are complete |
| 563 | - Supports floating point widths of 16, 32, 64 bits |
| 564 | - Supports integer widths up to 64 bits |
| 565 | - Validator is incomplete |
David Neto | 8405893 | 2016-06-02 15:29:13 -0400 | [diff] [blame] | 566 | - Checks capability requirements in most cases |
| 567 | - Checks module layout constraints |
| 568 | - Checks ID use-definition ordering constraints, |
| 569 | ignoring control flow |
| 570 | - Checks some control flow graph rules |
| 571 | - Optimizer is introduced, with few available transforms. |
David Neto | 9166854 | 2016-04-21 20:50:11 -0400 | [diff] [blame] | 572 | - Supported on Linux, OSX, Android, Windows |
David Neto | 37e4600 | 2016-06-14 11:45:35 -0400 | [diff] [blame] | 573 | |
| 574 | - Fixes bugs: |
| 575 | - #143: OpenCL pow and pown arguments |