CHANGES 6.8 KB

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