mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-11-22 11:40:05 +00:00
205 lines
9.0 KiB
Plaintext
205 lines
9.0 KiB
Plaintext
Revision history for SPIRV-Tools
|
|
|
|
v2017.1-dev 2017-09-01
|
|
- Update README with details on the public_spirv_tools_dev@khronos.org mailing list.
|
|
- General:
|
|
- Avoid static-duration variables of class type (with constructors).
|
|
- Validator:
|
|
- Type check basic arithmetic operations
|
|
- Type check Relational and Logical instructions
|
|
- Type check Bit instructions
|
|
- OpModuleProcessed is only allowed after debug names section and before annotations
|
|
section.
|
|
- Recognize extensions listed on SPIR-V registry,
|
|
through #25 SPV_AMD_shader_fragment_mask
|
|
- Optimizer:
|
|
- Add eliminater-dead-function transform
|
|
- Add strength reduction transform: For now, convert multiply by power of 2
|
|
to a bit shift.
|
|
- Extract-insert elimination: Recognize the case where the first instruction
|
|
in the sequence is an OpCompositeConstruct or OpConstantComposite
|
|
- Fixes:
|
|
#798: spirv-as should fail when given unrecognized long option
|
|
#800: Inliner: Fix inlining function into header of multi-block loop
|
|
#824: Eliminate-local-multi-store: Fix a crash
|
|
#826: Elimiante-local-multi-store: Fix a crash
|
|
#827: Fix crash when compact-ids transform runs before another transform.
|
|
#834: Add Cmake option to build the compressing codec. Off by default.
|
|
|
|
v2017.0 2017-09-01
|
|
- Update README to describe that assembler, disassembler, and binary parser support
|
|
are based on grammar files from the SPIRV-Headers repository.
|
|
|
|
v2016.7 2017-09-01
|
|
- Add SPIR-V 1.2
|
|
- OpenCL 2.2 support is now based on SPIR-V 1.2
|
|
- Support AMD extensions in assembler, disassembler:
|
|
SPV_AMD_gcn_shader
|
|
SPV_AMD_shader_ballot
|
|
SPV_AMD_shader_explicit_vertex_parameter
|
|
SPV_AMD_shader_trinary_minmax
|
|
SPV_AMD_gpu_shader_half_float
|
|
SPV_AMD_texture_gather_bias_lod
|
|
SPV_AMD_gpu_shader_int16
|
|
- Optimizer: Add support for:
|
|
- Inline all function calls in entry points.
|
|
- Flatten decoration groups. Fixes #602
|
|
- Id compaction (minimize Id bound). Fixes #624
|
|
- Eliminate redundant composite insert followed by extract
|
|
- Simplify access chains to local variables
|
|
- Eliminate local variables with a single store, if possible
|
|
- Eliminate local variables with a several stores, if possible
|
|
- Eliminate loads and stores in same block to local variables
|
|
- Eliminate redundant insert/extract to composite values
|
|
- Aggressive dead instruction elimination
|
|
- Eliminate dead branches
|
|
- Merge blocks when the second can only be preceded by the first
|
|
- Eliminate ommon uniform loads
|
|
- Assembler: Add option to preserve numeric ids. Fixes #625
|
|
- Add build target spirv-tools-vimsyntax to generate spvasm.vim, a SPIR-V
|
|
assembly syntax file for Vim.
|
|
- Version string: Allow overriding of wall clock timestamp with contents
|
|
of environment variable SOURCE_DATE_EPOCH.
|
|
- Validator implements relaxed rules for SPV_KHR_16bit_storage.
|
|
- CMake installation rules use GNUInstallDirs. For example, libraries
|
|
will be installed into a lib64 directory if that's the norm for the
|
|
current system.
|
|
- Fixes:
|
|
#500: Parameterize validator limit checks
|
|
#508: Support compilation under CYGWIN
|
|
#517: Fix validation when continue (or case) contstruct is also the head of a
|
|
nested control construct.
|
|
#551: If a merge block is reachable, it must be *strictly* dominated by its
|
|
header.
|
|
#548: Validator: Error when the reserved OpImageSparseSampleProj* opcodes
|
|
are used.
|
|
#611: spvtools::Optimizer was failing to save the module to the output
|
|
binary vector when all passes succeded without changes.
|
|
#629: The inline-entry-points-all optimization could generate invalidly
|
|
structured code when the inlined function had early returns.
|
|
#697: Optimizer's Instruction::ForEachInId method was skipping semantics-id
|
|
and scope-id.
|
|
#755: Inliner: Fix inlining of callee with single Return appearing before
|
|
the end of the function.
|
|
#776: Fix dead branch elimination in presence of complex but dead control
|
|
flow.
|
|
#781: SPV_KHR_variable_pointers allows duplicate pointer types
|
|
#782: Inliner: Fix remapping of non-label forward references in callee
|
|
#787: Inliner: Fix remapping of inlined entry block when called from
|
|
single block loop.
|
|
#790: Inliner: Fix remapping of inlined entry block when callee has
|
|
multiple returns.
|
|
|
|
v2016.6 2016-12-13
|
|
- Published the C++ interface for assembling, disassembling, validation, and
|
|
optimization.
|
|
- Support SPV_KHR_shader_draw_parameters in assembler, disassembler, parser.
|
|
- Validator:
|
|
- Add validator API accepting raw binary words
|
|
- Increased coverage:
|
|
- Checks "Data rules" in Universal Validation Rules, section 2.16.1
|
|
- WIP: Universal Limits.
|
|
- The minimum mandated upper bounds are checked.
|
|
- TODO: Parameterize the validator to allow larger limits accepted by
|
|
a more than minimally capable implementation.
|
|
- OpSampledImage checks
|
|
- OpConstantComposite checks
|
|
- Id bound check
|
|
- Disasssembler:
|
|
- Generates friendly GLSL-based names for more builtin variables
|
|
- Generates friendly names for numeric OpConstant values
|
|
- Vendor tool info extracted from SPIR-V XML registry file.
|
|
- Fixes issues:
|
|
#429: Validator: Allow OpTypeForwardPointer and OpTypeStruct to reference
|
|
undefined IDs
|
|
#482: Validator: OpVariable initializer can be an ID of a module-scope variable
|
|
|
|
v2016.5 2016-09-16
|
|
- Support SPV_KHR_shader_ballot in assembler, disassembler, parser.
|
|
- Disassembler: Generate friendly names for built-in variables.
|
|
- Partial fixes:
|
|
#359: Add Emacs helper for automatically diassembling/assembling a SPIR-V
|
|
binary on file load/save.
|
|
- Fixes:
|
|
#414: Validator: Allow OpUndef for composite constants
|
|
#415: Validator: Phi can use its own value in some cases.
|
|
|
|
v2016.4 2016-09-01
|
|
- Relicensed under Apache 2.0
|
|
- Add optimization passes (in API and spirv-opt command)
|
|
- Fold spec constants defined with OpSpecConstantOp and
|
|
OpSpecConstantComposite to normal constants with fixed value(s).
|
|
- Fixes issues:
|
|
#318: Relicensed under Apache 2.0
|
|
|
|
v2016.3 2016-08-24
|
|
- Add target environment enums for OpenCL 2.1, OpenCL 2.2,
|
|
OpenGL 4.0, OpenGL 4.1, OpenGL 4.2, OpenGL 4.3, OpenGL 4.5.
|
|
- Add spirv-cfg, an experimental tool to dump the control flow graph
|
|
as a GraphiViz "dot" graph
|
|
- Add optimization pass: Eliminate dead constants.
|
|
- Add spirv-lesspipe.sh filter utility
|
|
- Fixes issues:
|
|
#288: Check def-use dominance rules for OpPhi (variable,parent) operands
|
|
#339: Allow OpUndef in types-constants-global-vars section, as required
|
|
by SPIR-V 1.0 Rev7, 1.1 Rev 3.
|
|
#340: Avoid race on mkdir during build
|
|
#365: Relax PointSize, ClipDistance, CullDistance capability check in all
|
|
environments not just Vulkan 1.0.
|
|
|
|
v2016.2 2016-08-05
|
|
- Validator is incomplete
|
|
- Checks ID use block is dominated by definition block
|
|
- Add optimization passes (in API and spirv-opt command)
|
|
- Strip debug info instructions
|
|
- Freeze spec constant to their default values
|
|
- Allow INotEqual as operation for OpSpecConstantOp
|
|
- Fixes bugs:
|
|
#270: validator: crash when continue construct is unreachable
|
|
#279: validator: infinite loop when analyzing some degenerate control
|
|
flow graphs
|
|
#286: validator: don't incorrectly generate def-use error for
|
|
(variable,parent) parameters to OpPhi
|
|
#290: disassembler: never generate bare % for an identifier
|
|
#295: validator: def-use dominance check should ignore unreachable uses
|
|
#276: validator: allow unreachable continue constructs
|
|
#297: validator: allow an unreachable block to branch to a reachable
|
|
merge block
|
|
|
|
v2016.1 2016-07-19
|
|
- Fix https://github.com/KhronosGroup/SPIRV-Tools/issues/261
|
|
Turn off ClipDistance and CullDistance capability checks for Vulkan.
|
|
- The disassembler can emit friendly names based on debug info (OpName
|
|
instructions), and will infer somewhat friendly names for most types.
|
|
This is turned on by default for the spirv-dis command line tool.
|
|
- Updated to support SPIR-V 1.1 rev 2
|
|
- Input StorageClass, Sampled1D capability, and SampledBuffer capability
|
|
do not require Shader capability anymore.
|
|
|
|
v2016.0 2016-07-04
|
|
|
|
- Adds v<year>.<index> versioning, with "-dev" indicating
|
|
work in progress. The intent is to more easly report
|
|
and summarize functionality when SPIRV-Tools is incorporated
|
|
in downstream projects.
|
|
|
|
- Summary of functionality (See the README.md for more):
|
|
- Supports SPIR-V 1.1 Rev 1
|
|
- Supports SPIR-V 1.0 Rev 5
|
|
- Supports GLSL std450 extended instructions 1.0 Rev 3
|
|
- Supports OpenCL extended instructions 1.0 Rev 2
|
|
- Assembler, disassembler are complete
|
|
- Supports floating point widths of 16, 32, 64 bits
|
|
- Supports integer widths up to 64 bits
|
|
- Validator is incomplete
|
|
- Checks capability requirements in most cases
|
|
- Checks module layout constraints
|
|
- Checks ID use-definition ordering constraints,
|
|
ignoring control flow
|
|
- Checks some control flow graph rules
|
|
- Optimizer is introduced, with few available transforms.
|
|
- Supported on Linux, OSX, Android, Windows
|
|
|
|
- Fixes bugs:
|
|
- #143: OpenCL pow and pown arguments
|