Commit Graph

3528 Commits

Author SHA1 Message Date
alan-baker
d35a78db57
Switch SPIRV-Tools to use spirv.hpp11 internally (#4981)
Fixes #4960

* Switches to using enum classes with an underlying type to avoid
  undefined behaviour
2022-11-04 17:27:10 -04:00
Greg Fischer
c8e1588cfa
Add passes to eliminate dead output stores (#4970)
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-11-02 11:23:25 -06:00
alan-baker
a52de681dd
Prevent eliminating case constructs in block merging (#4976)
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-28 14:13:20 -04:00
alan-baker
4563d90934
Only validate full layout in Vulkan environments (#4972)
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-28 11:52:28 -04:00
Spencer Fricke
9f3a4afae4
spirv-val: Label new Vulkan OpPtrAccessChain VUs (#4975) 2022-10-27 10:10:27 -04:00
Nathan Gauër
b49a2caa7c
Revert "test" (#4974)
This reverts commit da215f10c9.
2022-10-27 14:17:31 +02:00
Nathan Gauër
da215f10c9 test 2022-10-26 16:42:29 +00:00
alan-baker
7326b967a5
Prevent null pointer from being dereferenced (#4971)
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-24 15:16:33 -04:00
Spencer Fricke
0ebf830572
spirv-val: Add OpPtrAccessChain Base checks (#4965) 2022-10-24 12:45:08 -04:00
Spencer Fricke
eb113f0fdf
spirv-val: Improve PR 4831 error message (#4968) 2022-10-20 10:51:43 -04:00
Spencer Fricke
ecd5b9c167
spirv-val: Add remaining Component decoration validation (#4966) 2022-10-17 16:54:39 -04:00
Diego Novillo
b53d3a6be3 Start SPIRV-Tools v2022.5 2022-10-12 12:17:13 -04:00
Diego Novillo
eb0a36633d Finalize SPIRV-Tools v2022.4 2022-10-12 12:15:28 -04:00
Diego Novillo
4a6290b56e Update CHANGES 2022-10-12 09:41:52 -04:00
Diego Novillo
a9291988df Roll external/spirv-headers/ 4bd8fc0c8..85a1ed200 (4 commits)
4bd8fc0c8c...85a1ed200d

$ git log 4bd8fc0c8..85a1ed200 --date=short --no-merges --format='%ad %ae %s'
2022-10-05 dkoch Fix extension for RayTracingOpacityMicromapEXT
2022-10-04 kpet Add support for texel buffers to clspv non-semantic instruction set
2022-10-04 hugo registered ID for Shady
2022-08-23 ewerness VK_EXT_opacity_micromap

Created with:
  roll-dep external/spirv-headers
2022-10-12 09:29:45 -04:00
Diego Novillo
a25a9d0b5e Roll external/re2/ 5723bb895..d2836d1b1 (11 commits)
5723bb8950...d2836d1b1c

$ git log 5723bb895..d2836d1b1 --date=short --no-merges --format='%ad %ae %s'
2022-10-10 jimquinn custom comparator for prefilter exact strings
2022-10-06 jimquinn reduce string copies in prefilter
2022-09-14 junyer Update Unicode data to 15.0.0.
2022-08-26 junyer Add Clang 15 to the build matrix.
2022-08-24 junyer Document why `RE2` objects are neither copyable nor movable.
2022-08-08 junyer Address some more `-Wunreachable-code` warnings.
2022-08-05 junyer Attempt to address some `-Wunreachable-code` warnings.
2022-08-04 junyer Remove the use of `six` from `unicode.py`.
2022-08-03 junyer Remove guards for SWIG.
2022-06-03 hannahshisfb fix 64 to 32 bit clang conversion warning
2022-05-31 junyer Optimise the layout of the `RE2` class.

Created with:
  roll-dep external/re2
2022-10-12 09:29:43 -04:00
Diego Novillo
59043d1776 Roll external/googletest/ 548b13dc3..d9bb8412d (78 commits)
548b13dc3c...d9bb8412d6

$ git log 548b13dc3..d9bb8412d --date=short --no-merges --format='%ad %ae %s'
2022-10-07 ferenc.gm Suggests a release with fixed CMakeLists.txt
2022-10-07 absl-team Update the POSIX Extended section of the Regular Expression Wikipedia page
2022-10-06 absl-team [fuchsia] Use __builtin_trap to trigger gunit_break_on_failure on non-x86 arch
2022-10-05 absl-team Makes Clang compilations via Ninja on Windows define _DLL only for shared CRT builds, as one would already expect from MSVC builds. (Previously, static Clang/Ninja builds on Windows also implicitly defined _DLL, which was problematic.)
2022-09-30 absl-team Uses a simpler mechanism to disable the copying of GoogleTest test suites, to move code out of the TEST_P macro.
2022-09-28 absl-team Rollback: Moves boilerplate disabling copy constructor/assignment from GoogleTest's TEST_P macro into a header file to avoid triggering warnings in user code.
2022-09-28 absl-team Rollback: Uses a simpler mechanism to disable the copying of GoogleTest test suites.
2022-09-28 absl-team Uses a simpler mechanism to disable the copying of GoogleTest test suites.
2022-09-28 absl-team Moves boilerplate disabling copy constructor/assignment from GoogleTest's TEST_P macro into a header file to avoid triggering warnings in user code.
2022-09-27 absl-team Add GoogleTest workaround for MSVC crash with Address Sanitizer (ASAN) on version 17.3.3
2022-09-27 cclauss Branding: macOS
2022-09-27 cclauss Upgrade GitHub Actions Checkout
2022-09-20 maratek Port GoogleTest to QuRT (Hexagon RTOS)
2022-09-18 426690+softwaregravy Update link to Bazel installation guide
2022-09-13 dmauro Fix MSVC C++14 flag for GitHub workflow
2022-09-13 dmauro Rollback 4fa8cfe3f4dee8975ee02d98633a5245ab67c6d7
2022-09-09 absl-team Use UnorderedElementsAre in example about using matchers with maps
2022-09-08 absl-team Remove obsolete MSVC warning pragmas for Invalid<T>()
2022-09-01 absl-team Fixed header guards to match style guide conventions.
2022-08-26 absl-team Consider all TERM values ending in "-256color" to be color supporting. In particular this handles TERM=hterm-256color correctly.
2022-08-22 hardikv Add support of 19-member structs to gmock UnpackStructImpl.
2022-08-19 keithbsmiley bazel: move -std=c++14 to .bazelrc
2022-08-16 dmauro Update README.md to point to the Foundational C++ Support Policy
2022-08-12 dmauro Add --features=external_include_paths to Bazel CI to ignore warnings from dependencies
2022-08-08 dinor gtest_unittest: Call FAIL() in lambda, fix incorrect fatality expectation
2022-08-04 dinor Explicitly instantiate matchee std::string in MatchesRegex
2022-07-31 bmburstein Custom type with Combine(). Fix for #3781
2022-07-28 absl-team Add support of 18-member structs to gmock UnpackStructImpl.
2022-07-25 dinor Add IsEmpty overload for C-style strings
2022-07-21 thegeorg Continuation for #3183
2022-07-20 matdibu gtest-death-test: add 'noreturn'
2022-06-28 dev Set cmake policy CMP0069
2022-07-14 polushin export ThreadLocalValueHolderBase which is required by exported APIs.
2022-07-11 polushin cmake: make PDB output directory match that of a static library.
2022-07-11 polushin cmake: find python in order specified by PATH environment variable.
2022-07-11 dmauro Add envvar BAZEL_CXXOPTS=-std=c++14 to the GitHub Actions CI
2022-07-08 dmauro CMake: raise the default C++ standard to cxx_std_14
2022-07-07 ckennelly Enable heterogeneous lookup for RegisteredTestsMap.
2022-07-01 nikiforov.al cleanup from unique_ptr branch
2022-07-01 dmauro Remove the Bazel provided default cxxopt -std=c++0x and replace it with -std=c++14 when testing with GCC 5.
2022-07-01 57719497+yutotnh fix: some typos in source
2022-07-01 57719497+yutotnh fix: typo in test name
2022-07-01 57719497+yutotnh fix: some typos in comment
2022-06-30 dmauro Remove support for C++11
2022-06-30 dmauro Update version number in CMakeLists.txt Note that this is 1.12.1 as there will be a patch release to fix this
2022-06-29 absl-team Add support of 17-member structs to gmock UnpackStructImpl.
2022-06-27 absl-team Mark internal-only function as having internal linkage.
2022-06-27 93249401+assafpr Update gtest.cc
2022-06-27 93249401+assafpr Update gmock-matchers.h
2022-06-27 93249401+assafpr Update gmock-actions.h
2022-06-27 93249401+assafpr Update gmock-spec-builders_test.cc
2022-06-27 93249401+assafpr Update gtest-death-test.cc
2022-06-27 93249401+assafpr Update gmock-spec-builders.cc
2022-06-27 93249401+assafpr Update advanced.md
2022-06-26 asmodai27 Avoid implicit conversion from int to char
2022-06-26 asmodai27 Avoid implicit conversion from int to char
2022-06-25 julian.arkenau docs: update googletest README for release 1.12.0
2022-06-23 dmauro Update README.md for release 1.12.0
2022-06-22 dmauro Update versions of WORKSPACE dependencies
2022-06-22 93249401+assafpr documentation, change mater branch to main
2022-06-22 93249401+assafpr Update faq.md
2022-06-22 93249401+assafpr Update CONTRIBUTING.md
2022-06-22 93249401+assafpr documentation, change mater branch to main
2022-06-22 93249401+assafpr documentation, change mater branch to main
2022-06-22 93249401+assafpr Update gmock_output_test_golden.txt
2022-06-22 93249401+assafpr change link from master to main in documentation
2022-06-21 dmauro Update GCC floor container used by CI to fix the Bazel cache error
2022-06-16 dmauro Disable warning C4251 around refactored code
2022-06-13 absl-team gmock_cook_book.md: Delete superfluous statement from 2014.
2022-06-11 gpetit Move declaration of kStdOutFileNo and kStdErrFileno
2022-06-09 absl-team Update googletest docs to indicate that RE2 is now used for regexp implementation when building with Bazel and using Abseil.
2022-06-09 absl-team Remove undefined internal function. Fixes #3856
2022-06-01 dmauro Work around a maybe-uninitialized warning under GCC 12
2022-05-31 gpetit Fix for undefined symbol: testing::internal::Random::kMaxRange
2022-05-30 gpetit Simplify ColoredPrintf to rely on ShouldUseColor
2022-05-30 gpetit Fix "unused variable" warning
2022-05-18 akohlmey set -utf-8 flag only for real MSVC compilers. E.g. not Intel's icx.exe
2022-03-26 perez.cs Fix quickstart-cmake documentation

Created with:
  roll-dep external/googletest
2022-10-12 09:29:41 -04:00
Diego Novillo
95ae2da35b Roll external/effcee/ ddf5e2bb9..35912e1b7 (1 commit)
ddf5e2bb92...35912e1b77

$ git log ddf5e2bb9..35912e1b7 --date=short --no-merges --format='%ad %ae %s'
2022-07-06 dneto Update Bazel build rules

Created with:
  roll-dep external/effcee
2022-10-12 09:29:39 -04:00
Kévin Petit
a3350c0ff0
Update SPIRV-Headers revision (#4962)
Following #4958

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
Change-Id: I0aed90dbd5705881a5f68d439f9d191d5d01c993

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
2022-10-11 13:48:07 -04:00
gmitrano-unity
1cecf91701
Support Narrow Types in BitCast Folding Rule (#4941)
* 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-06 10:35:18 -04:00
Kévin Petit
a6e6454ef2
spirv-val: Add SPV_ARM_core_builtins validation (#4958)
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
Change-Id: If1680a823aea9662d44def1ec6fe6ac334c00574

Signed-off-by: Kevin Petit <kevin.petit@arm.com>
2022-10-05 22:47:10 -04:00
Shahbaz Youssefi
4dbc66380d
spirv-val: Use ostringstream in id validation tests (#4956)
Proved to be marginally faster than appending to string.
2022-09-30 15:24:48 -04:00
Shahbaz Youssefi
07d361b675
spirv-val: Add an option to use friendly names or not (#4951)
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-30 12:22:00 -04:00
Shahbaz Youssefi
3ec6b3698e
spirv-val: Consistently quote ids in messages (#4950)
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-29 10:03:49 +02:00
Spencer Fricke
e1a8b5d60d
build: Fix BUILD.gn build error (#4948) 2022-09-27 10:36:08 -04:00
Spencer Fricke
49230a2307
spirv-opt: Remove unused folding rule (#4942) 2022-09-23 14:02:01 -04:00
Spencer Fricke
b53d7a8aff
spirv-val: Add initial SPV_EXT_mesh_shader validation (#4924)
* Move TaskEXT check to OpEmitMeshTasksEXT

* Add MeshNV for Execution Model alias
2022-09-23 11:06:46 -04:00
Greg Fischer
265b455c99
Fix CreatDebugInlinedAt to not invoke def_use_mgr (#4939) 2022-09-23 08:45:32 -04:00
Spencer Fricke
ddbee48f85
spirv-opt: Fix stacked CompositeExtract constant folds (#4932)
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-23 08:45:11 -04:00
Steven Perron
f98473ceeb
Remove spvOpcodeTerminatesExecution (#4931)
* 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-21 16:10:58 -04:00
Diego Novillo
21146c1b4b
Fix builtin validator for unimplemented opcodes. (#4940)
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-21 15:52:34 -04:00
Ricardo Garcia
aeb1c64d4a
spirv-val: Make it legal to use arrays of ray queries (#4938)
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-21 15:27:36 -04:00
Greg Fischer
11d0d16227
Cleanup code for 272e4b3d0 (#4934)
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-20 15:27:23 -06:00
David Neto
91c29a197f
spirv-val: Fix comment for checking extended alignments (#4937)
* getBaseAlignment with roundUp true is called the "extended"
  by the Vulka spec.
* roundUp also affects matrix alignment, not just struct and array
2022-09-16 14:51:48 -04:00
Spencer Fricke
0c4ce11b4a
spirv-val: Update VUID from 1.3.228 Vulkan spec (#4936)
Co-authored-by: alan-baker <alanbaker@google.com>
2022-09-16 14:51:36 -04:00
Spencer Fricke
5f4ce362ad
spirv-val: Label VUID 07290 (#4927) 2022-09-16 14:05:40 -04:00
Spencer Fricke
8422d8a44b
spirv-val: Label ShaderRecordBufferKHR VUID (#4926) 2022-09-16 14:05:23 -04:00
Spencer Fricke
c3f844aec4
spirv-val: Test file suffix consistency (#4925) 2022-09-16 14:05:07 -04:00
Greg Fischer
272e4b3d07
Fix missing and incorrect DebugValues (#4929)
Specificially, fixes DebugValues coming out of
eliminate-local-single-store and eliminate-local-multi-store AKA SSA
rewrite.
2022-09-13 14:41:07 +00:00
Hans-Kristian Arntzen
49deada730
Also consider EmitMeshTasksEXT terminator in spirv-opt. (#4930)
Not sure why this is repeated for validation and optimizer, but ...
2022-09-12 13:24:34 +00:00
Jeremy Hayes
fb27bbf307
Fix DebugInlinedAt Line operand (#4928)
Line instructions may be OpLine or DebugLine. This commit adds support
for DebugLine.
2022-09-09 13:56:35 -04:00
Spencer Fricke
f5b27b6513
spirv-diff: Allow no SpecId (#4904) 2022-09-07 15:14:26 -04:00
Spencer Fricke
59cf5b1346
spirv-val: consider OpEmitMeshTasksEXT a terminator instruction (#4923) 2022-09-07 15:12:07 -04:00
Spencer Fricke
934a059787
spirv-val: Label Builtin Array Test VUIDs (#4921) 2022-09-07 10:29:38 -04:00
Brad Smith
5f45f793ae
Support building on OpenBSD (#4912) 2022-09-02 19:30:09 +00:00
Steven Perron
529955e03d
Improve time to build dominators (#4916)
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-02 16:27:10 +00:00
Samuel Thibault
8eb8509834
build: cmake: Add support for GNU/Hurd (#4895) 2022-09-02 16:24:12 +00:00
Spencer Fricke
4386afb057
spirv-opt: Remove unused fold spec const code (#4906) 2022-09-02 16:24:02 +00:00
Pankaj Mistry
4c456f7da6
Implement tool changes for SPV_EXT_mesh_shader. (#4915)
- Added validation rule to support EXT_mesh_shader from SPIRV 1.4 onwards
2022-09-01 20:36:15 -04:00
jeremyg-lunarg
33113abf45
Instrument: Add OpNames to generated functions and variables (#4873)
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-01 18:32:00 +00:00