Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
AgeCommit message (Collapse)Author
2022-11-10Instrument: Change output buffer offset definitions (#4961)Jeremy Gebben
Add a flags field at the first offset within this buffer. Define flags to allow buffer OOB checking to be enabled or disabled at run time. This is to support VK_EXT_pipeline_robustnes.
2022-11-10spirv-val: Multiple interface var with same SC (#4969)Spencer Fricke
* spirv-val: Multiple interface var with same SC * spirv-val: Use C style headers
2022-11-08Add pass to eliminate dead output components (#4982)Greg Fischer
This pass eliminates components of output variables that are not stored to. Currently this just eliminates trailing components of arrays and structs, all of which are dead. WARNING: This pass is not designed to be a standalone pass as it can cause interface incompatibiliies with the following shader in the pipeline. See the comment in optimizer.hpp for best usage. This pass is currently available only through the API; it is not available in the CLI. This commit also fixes a bug in CreateDecoration() which is part of the system of generating SPIR-V from the Type manager.
2022-11-08spirv-opt: Add const folding for CompositeInsert (#4943)Spencer Fricke
* spirv-opt: Add const folding pass for CompositeInsert * spirv-opt: Fix anas stack-use-after-scope
2022-11-07spirv-val: Add VUID label for 07703 (#4980)Spencer Fricke
2022-11-05Switch SPIRV-Tools to use spirv.hpp11 internally (#4981)alan-baker
Fixes #4960 * Switches to using enum classes with an underlying type to avoid undefined behaviour
2022-11-02Add passes to eliminate dead output stores (#4970)Greg Fischer
This adds two passes to accomplish this: one pass to analyze a shader to determine the input slots that are live. The second pass is run on the preceding shader to eliminate any stores to output slots that are not consumed by the following shader. These passes support vert, tesc, tese, geom, and frag shaders. These passes are currently only available through the API. These passes together with dead code elimination, and elimination of dead input and output components and variables (WIP), will allow users to do dead code elimination across shader boundaries.
2022-10-28Prevent eliminating case constructs in block merging (#4976)alan-baker
Fixes #4918 * Prevent block merging from producing an invalid case construct by merging a switch target/default with another construct's merge or continue block * This is to satisfy the structural dominance requirement between the switch header and the case constructs
2022-10-28Only validate full layout in Vulkan environments (#4972)alan-baker
Fixes #4671 Fixes https://crbug.com/oss-fuzz/43265 * Only validate full layout in a vulkan environment * Universal validation still checks that the right decorations are present, but the values are only considered for vulkan * One exception is that invalid overlaps are only checked for vulkan * This is a pragmatic choice as SPIR-V doesn't define the size of types so the amount of universal checking would be quite limited * Removed redundant check for GLSLShared and GLSLPacked decorations * Should never have been validated as part of universal validation * make conditionals independent
2022-10-27spirv-val: Label new Vulkan OpPtrAccessChain VUs (#4975)Spencer Fricke
2022-10-27Revert "test" (#4974)Nathan Gauër
This reverts commit da215f10c991675b9c1ecb7eef2378e23b2d1276.
2022-10-26testNathan Gauër
2022-10-24Prevent null pointer from being dereferenced (#4971)alan-baker
Fixes https://crbug.com/oss-fuzz/48553 * Assign a reflexive dominator if no other dominator can be found using forward traversals * This prevents a null dereference of a pointer in the sorting of the output
2022-10-24spirv-val: Add OpPtrAccessChain Base checks (#4965)Spencer Fricke
2022-10-20spirv-val: Improve PR 4831 error message (#4968)Spencer Fricke
2022-10-17spirv-val: Add remaining Component decoration validation (#4966)Spencer Fricke
2022-10-06Support Narrow Types in BitCast Folding Rule (#4941)gmitrano-unity
* Support Narrow Types in BitCast Folding Rule This change adds support for narrow types in the BitCastScalarOrVector folding rule. According to Section 2.2.1 of the SPIR-V spec, types that are narrower than 32 bits are automatically either sign extended, or zero extended depending on the type. With that guaranteed, we should be able to use the first 32-bit word of any narrow type for the folding logic without performing any special conversions. In order to reduce code duplication, this change moves the GetU32BitValue and GetU64BitValue functions from IntConstant to ScalarConstant. Without this move, we would have needed an identical version of GetU32BitValue on FloatConstant. * Add Tests for 16-bit BitCast Folding This change adds several new test cases to the IntegerInstructionFoldingTest which trigger the 16-bit BitCast logic. The logic for half types was also added to the integer case since we can't easily validate half float types in C++ code. It's easier to validate them as unsigned integers instead. Pllus this also allows us to verify the SPIR-V constant sign extension logic too. * Add 8-Bit Folding Test Cases This change adds a couple more test cases to the integer instruction folding test suite in order to ensure that the BitCast logic also works correctly with the Int8 shader capability.
2022-10-06spirv-val: Add SPV_ARM_core_builtins validation (#4958)Kévin Petit
Signed-off-by: Kevin Petit <kevin.petit@arm.com> Change-Id: If1680a823aea9662d44def1ec6fe6ac334c00574 Signed-off-by: Kevin Petit <kevin.petit@arm.com>
2022-09-30spirv-val: Add an option to use friendly names or not (#4951)Shahbaz Youssefi
The always-friendly messages make it harder to debug when the disassembly is later generated without friendly names. Additionally, the friendly-name-mapper is slow. Disabling it improves performance of an ANGLE test that creates numerous shaders by ~5%.
2022-09-29spirv-val: Consistently quote ids in messages (#4950)Shahbaz Youssefi
Half the messages used to output 'id[%name]' and half id[%name]. With this change, all messages consistently output 'id[%name]'. Some typos are also fixed in the process.
2022-09-23spirv-opt: Remove unused folding rule (#4942)Spencer Fricke
2022-09-23spirv-val: Add initial SPV_EXT_mesh_shader validation (#4924)Spencer Fricke
* Move TaskEXT check to OpEmitMeshTasksEXT * Add MeshNV for Execution Model alias
2022-09-23Fix CreatDebugInlinedAt to not invoke def_use_mgr (#4939)Greg Fischer
2022-09-23spirv-opt: Fix stacked CompositeExtract constant folds (#4932)Spencer Fricke
This was spotted in the Validation Layers where OpSpecConstantOp %x CompositeExtract %y 0 was being folded to a constant, but anything that was using it wasn't recognizing it as a constant, the simple fix was to add a const_mgr->MapInst(new_const_inst); so the next instruction knew it was a const
2022-09-21Remove `spvOpcodeTerminatesExecution` (#4931)Steven Perron
* Remove `spvOpcodeTerminatesExecution` This function is the same as `spvOpcodeIsAbort` except for OpUnreachable. The names are so close in meaning that it is hard to distinguish them. I've removed `spvOpcodeTerminatesExecution` since it is used in only a single place. I've special cased OpUnreachable in that location. At the same time, I fixed up some comments related to the use of the TerminatesExecution and IsAbort functions. Following up on #4930. * Fix comments
2022-09-21Fix builtin validator for unimplemented opcodes. (#4940)Diego Novillo
This prevents spurious build failures when new opcodeds are added in SPIRV-Headers. It moves all the unhandled opcodes to the `default` case.
2022-09-21spirv-val: Make it legal to use arrays of ray queries (#4938)Ricardo Garcia
Private arrays of ray queries are legal to use. Several CTS tests check they work properly but were being rejected by spirv-val.
2022-09-21Cleanup code for 272e4b3d0 (#4934)Greg Fischer
Removed now unused DebugDeclare visibility logic for generating DebugValue. Also eliminated the phi sort introduced in 272e4b3. This should have been removed in the first commit.
2022-09-16spirv-val: Fix comment for checking extended alignments (#4937)David Neto
* getBaseAlignment with roundUp true is called the "extended" by the Vulka spec. * roundUp also affects matrix alignment, not just struct and array
2022-09-16spirv-val: Update VUID from 1.3.228 Vulkan spec (#4936)Spencer Fricke
Co-authored-by: alan-baker <alanbaker@google.com>
2022-09-16spirv-val: Label VUID 07290 (#4927)Spencer Fricke
2022-09-16spirv-val: Label ShaderRecordBufferKHR VUID (#4926)Spencer Fricke
2022-09-13Fix missing and incorrect DebugValues (#4929)Greg Fischer
Specificially, fixes DebugValues coming out of eliminate-local-single-store and eliminate-local-multi-store AKA SSA rewrite.
2022-09-12Also consider EmitMeshTasksEXT terminator in spirv-opt. (#4930)Hans-Kristian Arntzen
Not sure why this is repeated for validation and optimizer, but ...
2022-09-09Fix DebugInlinedAt Line operand (#4928)Jeremy Hayes
Line instructions may be OpLine or DebugLine. This commit adds support for DebugLine.
2022-09-07spirv-diff: Allow no SpecId (#4904)Spencer Fricke
2022-09-07spirv-val: consider OpEmitMeshTasksEXT a terminator instruction (#4923)Spencer Fricke
2022-09-02Support building on OpenBSD (#4912)Brad Smith
2022-09-02Improve time to build dominators (#4916)Steven Perron
Changed a couple small parts of the algorithm to reduce time to build the dominator trees. There should be no visible changes. Add a depth first search algorithm that does not run a function on backedges. The check if an edge is a back edge is time consuming, and pointless if the function run on it is a nop.
2022-09-02build: cmake: Add support for GNU/Hurd (#4895)Samuel Thibault
2022-09-02spirv-opt: Remove unused fold spec const code (#4906)Spencer Fricke
2022-09-02Implement tool changes for SPV_EXT_mesh_shader. (#4915)tmp-1.3.230Pankaj Mistry
- Added validation rule to support EXT_mesh_shader from SPIRV 1.4 onwards
2022-09-01Instrument: Add OpNames to generated functions and variables (#4873)jeremyg-lunarg
Add name annotations to the generated instrumentation code to make it easier to understand. Example spirv-cross output: vec4 _140; if (0u < inst_bindless_direct_read_4(0u, 0u, 1u, uint(_19))) { _140 = texture(textures[nonuniformEXT(_19)], inUV); } else { inst_bindless_stream_write_4(50u, 1u, uint(_19), 0u); _140 = vec4(0.0); }
2022-09-01Fix ADCE to mark scope and inlined_at of line instructions as live. (#4910)Greg Fischer
2022-08-31Improve algorithm to reorder blocks in a function (#4911)Steven Perron
* Improve algorithm to reorder blocks in a function In dead branch elimination, blocks can end up in a the wrong order, so there is code to reorder the blocks in structured order. The problem is that the algorithm to do that is very poor. It involves many searchs in the function for the correct position to place the block, as well as moving many block in the vector. The solution is to write a specialized function in the function class that will reorder the blocks in structured order. After computing the structured order, reordering the block can be done in linear time, with very little overhead.
2022-08-29spirv-val: Better message for using OpTypeBool in input/output (#4901)Spencer Fricke
2022-08-29spirv-val: Use lookup table for Decoration string (#4903)Spencer Fricke
2022-08-29spirv-val: Add SPV_KHR_ray_tracing storage class (#4868)Spencer Fricke
* Added VUID labels
2022-08-23Disable DebugInfoMgr during the entire CompactIds pass (#4905)Greg Fischer
This is because the DebugInfo manager requires valid SPIR-V which is not always true during this pass. Add comment
2022-08-18spirv-val: SBT Index for OpExecuteCallableKHR (#4900)Spencer Fricke