Commit Graph

3808 Commits

Author SHA1 Message Date
Cassandra Beckley
1bc0e6f59a
Add a new legalization pass to dedupe invocation interlock instructions (#5409)
Add a new legalization pass to dedupe invocation interlock instructions

DXC will be adding support for HLSL's rasterizer ordered views by using
the SPV_EXT_fragment_shader_interlock_extension. That extension
stipulates that if an entry point has an interlock ordering execution
mode, it must dynamically execute OpBeginInvocationInterlockEXT and
OpEndInvocationInterlockEXT, in that order, exactly once. This would be
difficult to determine in DXC's SPIR-V backend, so instead we will emit
these instructions potentially multiple times, and use this legalization
pass to ensure that the final SPIR-V follows the specification.

This PR uses data-flow analysis to determine where to place begin and
end instructions; in essence, determining whether a block contains or is
preceded by a begin instruction is similar to a specialized case of a
reaching definitions analysis, where we have only a single definition,
such as `bool has_begun = false`. For this simpler case, we can compute
the set of blocks using BFS to determine the reachability of the begin
instruction.

We need to do this for both begin and end instructions, so I have
generalized portions of the code to run both forward and backward over
the CFG for each respective case.
2023-09-27 19:54:10 -04:00
github-actions[bot]
48c97c1311
roll deps (#5415)
* Roll external/googletest/ adc514538..e47544ad3 (5 commits)

adc5145386...e47544ad31

$ git log adc514538..e47544ad3 --date=short --no-merges --format='%ad %ae %s'
2023-09-25 absl-team Resolve `-Wundef` triggering on `GTEST_CREATE_SHARED_LIBRARY` and `GTEST_LINKED_AS_SHARED_LIBRARY` with shared libraries in GoogleTest
2023-09-22 absl-team Update C++ feature detection in `gtest-port.h` to rely on feature test macros where possible.
2023-09-21 absl-team Use `absl::HasAbslStringify`, instead of the internal version.
2023-09-21 dinor googletest: Update absl to version with HasAbslStringify
2023-09-21 mitja Fix compile warnings in gmock-function-mocker.h

Created with:
  roll-dep external/googletest

* Roll external/re2/ 09de536bb..26f7d889e (1 commit)

09de536bb7...26f7d889e1

$ git log 09de536bb..26f7d889e --date=short --no-merges --format='%ad %ae %s'
2023-09-25 junyer Add Clang 17 to the build matrix.

Created with:
  roll-dep external/re2

* Roll external/spirv-headers/ fc7d24627..79743b899 (3 commits)

fc7d246276...79743b899f

$ git log fc7d24627..79743b899 --date=short --no-merges --format='%ad %ae %s'
2023-09-20 fwahlster Add LiteralFloat to operand_kinds (#380)
2023-09-20 40001162+alelenv Add headers for SPV_NV_displacement_micromap. (#374)
2023-09-20 fwahlster remove additional version "1.0" from SecondaryViewportRelativeNV (#379)

Created with:
  roll-dep external/spirv-headers

---------

Co-authored-by: GitHub Actions[bot] <>
2023-09-27 11:09:18 -04:00
Steven Perron
27673a0544
Remove reviewer from autoroller (#5414)
For some reason the `gh` command to create a pull request with a team as
the reviewer is not working. That command works when I run it locally. I
don't know what the problem is, but I will just stop adding a reviewer.
Then anyone can look at it.
2023-09-26 12:06:29 -04:00
Jeremy Gebben
ee7598d497
instrument: Use Import linkage for instrumentation functions (#5355)
These functions are getting far too complicated to code in SPIRV-Tools
C++. Replace them with import stubs so that the real implementations
can live in Vulkan-ValidationLayers where they belong.

VVL will need to define these functions in spirv and link them to the
instrumented version of the user's shader.

From here on out, VVL can redefine the functions and any data they use
without updating SPIRV-Tools. Changing the function declarations will
still require both VVL and SPIRV-Tools to be updated in lock step.
2023-09-20 10:50:30 -06:00
Steven Perron
a40483d313
roll deps (#5408)
* Roll external/googletest/ 8a6feabf0..adc514538 (7 commits)

8a6feabf04...adc5145386

$ git log 8a6feabf0..adc514538 --date=short --no-merges --format='%ad %ae %s'
2023-09-18 absl-team Update code with IWYU annotations.
2023-09-18 absl-team Use the `empty()` method to check for emptiness instead of `length()`
2023-09-14 hirshleifer GoogleTest FAQ: minor punctuation fixes
2023-09-14 hirshleifer Remove Googletest FAQ entry for obsolete `ProtocolMessageEquals` and `ProtocolMessageEquiv`
2023-09-03 tanzinul.islam Count threads after thread-creation while still holding mutex lock
2023-08-26 tanzinul.islam Reuse TempDir() function
2023-08-18 tanzinul.islam Prefer $TMPDIR to /data/local/tmp on Android

Created with:
  roll-dep external/googletest

* Roll external/re2/ a807e8a3a..09de536bb (1 commit)

a807e8a3aa...09de536bb7

$ git log a807e8a3a..09de536bb --date=short --no-merges --format='%ad %ae %s'
2023-09-14 junyer Use Abseil's character class functions.

Created with:
  roll-dep external/re2

---------

Co-authored-by: GitHub Actions[bot] <>
2023-09-20 04:29:21 +00:00
David Neto
a996591b1c
Update SPIRV-Headers, add cache control operand kinds (#5406)
* Update SPIRV-Headers, add cache control operand kinds

Adds SPV_OPERAND_TYPE_LOAD_CACHE_CONTROL
and  SPV_OPERAND_TYPE_STORE_CACHE_CONTROL,
from SPV_INTEL_cache_controls

Fixes: #5404

* Update tests: remove Kernel from constant sampler enum dependencies

This corresponds to header change
https://github.com/KhronosGroup/SPIRV-Headers/pull/378
2023-09-13 17:43:12 -04:00
Steven Perron
fc54e178e9
Change autoroll pr review id (#5404)
The autoroll pr reviews add me as the reviewer. I want to change this so
that it requests a reveiw from a team instead.
2023-09-11 17:24:32 -07:00
André Cruz
2d6996f731
Check for git repository before git commands (#5403)
When we are attempting to fetch the version info from the git
repository, first check if we're actually in one, otherwise
spurious errors messages get printed.
2023-09-11 20:52:31 +00:00
Cassandra Beckley
361638cfd0
Make sure that fragment shader interlock instructions are not removed by DCE (#5400) 2023-09-11 15:26:10 -04:00
github-actions[bot]
5e6054c1cb
Roll external/re2/ e0077036c..a807e8a3a (6 commits) (#5401)
e0077036ca...a807e8a3aa

$ git log e0077036c..a807e8a3a --date=short --no-merges --format='%ad %ae %s'
2023-09-07 junyer Revert "Make the extension work for Python 3.8+."
2023-09-07 junyer Make the extension work for Python 3.8+.
2023-09-07 junyer Try plumbing the platform name a different way.
2023-09-07 junyer Add a "dry run" mode to the Python workflow.
2023-09-04 junyer Switch to `python -m build`.
2023-09-04 junyer Mark three dependencies as `dev_dependency = True`.

Created with:
  roll-dep external/re2

Co-authored-by: GitHub Actions[bot] <>
2023-09-11 18:37:12 +00:00
Nathan Gauër
47b63a4d7d
val: re-add ImageMSArray validation (#5394)
This has been removed in #4752, but not added since.

* fixup! val: re-add ImageMSArray validation

clang-format
2023-09-07 09:39:28 -04:00
Steven Perron
d660bb55be
Add SPV_KHR_physical_storage_buffer to allowlists (#5402)
Fixes #4896
2023-09-06 16:35:57 +00:00
Steven Perron
440f018cc4
Fix AddMemberDecoration variable names. (#5399)
The prototype does not match the implementation.

Fixes Typo in declaration DecorationManager::AddMemberDecoration #5392
2023-09-05 19:38:49 +00:00
Nathan Gauër
4e0b94ed7a
opt: add ImageMSArray capability to trim pass. (#5395)
From the Capability's text in the SPIRV spec:

```
An MS operand in OpTypeImage indicates multisampled, used with an
OpTypeImage having Sampled == 2 and Arrayed == 1.
```

Adding this logic to the capability trimming pass.
2023-09-05 18:36:03 +00:00
Cassandra Beckley
d474a07088
Add SPV_EXT_fragment_shader_interlock to allow lists (#5393) 2023-09-05 12:10:16 -04:00
Nathan Gauër
1f07f483ef
opt: add raytracing/rayquery to trim pass (#5397)
Adds the RayTracingKHR and RayQueryKHR capabilities to
the supported capabilities list (this includes the linked extension).
(NV and KHR capabilities/extensions shared the same IDs, so it also
works for NV flavors of those).
2023-09-05 14:36:14 +00:00
github-actions[bot]
158bc7bd6b
Roll external/re2/ 523f9b097..e0077036c (2 commits) (#5391)
523f9b0971...e0077036ca

$ git log 523f9b097..e0077036c --date=short --no-merges --format='%ad %ae %s'
2023-08-31 junyer `@rules_python` fails due to Bazel running as root.
2023-08-31 junyer Prepare to tag release `2023-09-01`.

Created with:
  roll-dep external/re2

Co-authored-by: GitHub Actions[bot] <>
2023-09-05 14:32:00 +00:00
Nathan Gauër
1121c23198
opt: add Int64 capability to trim pass (#5398)
Adds support for Int64 capability trimming.
2023-09-05 09:47:46 -04:00
Nathan Gauër
3cc7e1c4c3
NFC: rename tests using capability as prefix (#5396) 2023-09-04 14:32:28 -07:00
Cassandra Beckley
4c16c35b16
opt: add FragmentShader*InterlockEXT to capability trim pass (#5390)
* opt: add FragmentShader*InterlockEXT to capability trim pass

* move to addInstructionRequirementsForOpcode
2023-09-04 11:27:56 +02:00
Mike Gorchak
9b923f7cc3
QNX has support for ANSI ESC codes, default terminal is QANSI. (#5387) 2023-08-30 14:51:03 -04:00
Joyce
51367c40fd
Enable OpenSSF Scorecard and Badge (#5377)
* Create scorecard.yml

Signed-off-by: Joyce <joycebrum@google.com>

* Update README.md

Signed-off-by: Joyce <joycebrum@google.com>

---------

Signed-off-by: Joyce <joycebrum@google.com>
2023-08-30 13:47:06 -04:00
github-actions[bot]
d09c753a4a
Roll external/re2/ 73031bbc0..523f9b097 (1 commit) (#5389)
73031bbc08...523f9b0971

$ git log 73031bbc0..523f9b097 --date=short --no-merges --format='%ad %ae %s'
2023-08-29 junyer Strip `-Wl` for `static-testinstall` and `shared-testinstall` as well.

Created with:
  roll-dep external/re2

Co-authored-by: GitHub Actions[bot] <>
2023-08-30 14:24:26 +00:00
github-actions[bot]
b6893ccdfb
Roll external/googletest/ 460ae9826..8a6feabf0 (1 commit) (#5388)
460ae98267...8a6feabf04

$ git log 460ae9826..8a6feabf0 --date=short --no-merges --format='%ad %ae %s'
2023-08-25 dinor googletest: Add universal printer for `std::span`

Created with:
  roll-dep external/googletest

Co-authored-by: GitHub Actions[bot] <>
2023-08-29 00:14:32 +00:00
github-actions[bot]
1b3c4cb685
roll deps (#5386)
* Roll external/googletest/ cb5cd96bc..460ae9826 (1 commit)

cb5cd96bca...460ae98267

$ git log cb5cd96bc..460ae9826 --date=short --no-merges --format='%ad %ae %s'
2023-08-22 sch changed http to https

Created with:
  roll-dep external/googletest

* Roll external/spirv-headers/ b8b9eb864..d790ced75 (1 commit)

b8b9eb8640...d790ced752

$ git log b8b9eb864..d790ced75 --date=short --no-merges --format='%ad %ae %s'
2023-08-23 dneto Validate enums have sensible versions and are visible (#369)

Created with:
  roll-dep external/spirv-headers

---------

Co-authored-by: GitHub Actions[bot] <>
2023-08-24 20:29:14 +00:00
github-actions[bot]
abd548b817
roll deps (#5384)
* Roll external/googletest/ 61332bd7e..cb5cd96bc (6 commits)

61332bd7e8...cb5cd96bca

$ git log 61332bd7e..cb5cd96bc --date=short --no-merges --format='%ad %ae %s'
2023-08-22 dinor googletest: Replace http with https in links to docs
2023-08-20 elior.s Update advanced.md
2023-08-11 sch Changed 2 public links from http to https
2023-08-11 sch Changed 3 public links from http to https
2023-08-11 sch Changed 2 public links from http to https
2023-08-11 sch Changed 3 public links from http to https

Created with:
  roll-dep external/googletest

* Roll external/re2/ 08d338fe4..73031bbc0 (1 commit)

08d338fe48...73031bbc08

$ git log 08d338fe4..73031bbc0 --date=short --no-merges --format='%ad %ae %s'
2023-08-22 junyer Reset the Bzlmod compatibility level to 1.

Created with:
  roll-dep external/re2

---------

Co-authored-by: GitHub Actions[bot] <>
2023-08-23 22:29:43 +00:00
github-actions[bot]
2601f644ee
Roll external/googletest/ 9fce54804..61332bd7e (2 commits) (#5383)
9fce548044...61332bd7e8

$ git log 9fce54804..61332bd7e --date=short --no-merges --format='%ad %ae %s'
2023-08-21 dmauro CI: Update the Linux hybrid-latest docker container used for testing
2023-08-21 absl-team Clean up typos: Exhaused => Exhausted

Created with:
  roll-dep external/googletest

Co-authored-by: GitHub Actions[bot] <>
2023-08-22 19:25:56 +00:00
Jeremy Gebben
714966003d
opt: Add SwitchDescriptorSetPass (#5375)
This is a simple pass to change DescriptorSet decoration values.
2023-08-22 00:16:35 +00:00
Jeremy Gebben
6520d83eff
linker: Add --use-highest-version option (#5376)
Currently spirv-link fails if all input files don't use the same
SPIR-V version. Add an option to instead use the highest input
version as the output version. Note that if one of the 'old'
input files uses an opcode that is deprecated in the 'new'
version, the output spirv will be invalid.
2023-08-21 17:05:33 -06:00
github-actions[bot]
bfc94f63a7
roll deps (#5382)
* Roll external/googletest/ 987e22561..9fce54804 (2 commits)

987e225614...9fce548044

$ git log 987e22561..9fce54804 --date=short --no-merges --format='%ad %ae %s'
2023-08-17 absl-team Improve error message for invalid parameterized test names.
2023-07-26 patryk googletest: ansi color fix

Created with:
  roll-dep external/googletest

* Roll external/re2/ 6148386f0..08d338fe4 (1 commit)

6148386f0c...08d338fe48

$ git log 6148386f0..08d338fe4 --date=short --no-merges --format='%ad %ae %s'
2023-08-17 junyer Clean up `__GNUC__` conditions.

Created with:
  roll-dep external/re2

---------

Co-authored-by: GitHub Actions[bot] <>
2023-08-19 09:03:17 +00:00
github-actions[bot]
b12fc2904a
Roll external/googletest/ 7e33b6a1c..987e22561 (5 commits) (#5381)
* Roll external/googletest/ 7e33b6a1c..987e22561 (5 commits)

7e33b6a1c4...987e225614

$ git log 7e33b6a1c..987e22561 --date=short --no-merges --format='%ad %ae %s'
2023-08-15 dinor gtest_help_test: Make method names `snake_case`, conforming with [the style guide](https://google.github.io/styleguide/pyguide#316-naming)
2023-08-15 dinor gtest_help_test: Inline test helper functions
2023-08-15 dinor gtest_help_test: Delete obsolete helper `TestUnknownFlagWithAbseil`
2023-08-07 yaneurabeya Fix RETest/1.ImplicitConstructorWorks on non-ABSL platforms
2023-08-07 yaneurabeya Fix GTestHelpTest.TestHelpFlag on FreeBSD

Created with:
  roll-dep external/googletest

* Roll external/spirv-headers/ 45fc02a6c..b8b9eb864 (1 commit)

45fc02a6c6...b8b9eb8640

$ git log 45fc02a6c..b8b9eb864 --date=short --no-merges --format='%ad %ae %s'
2023-08-16 viktoria.maksimova Headers support for two Intel extensions (#356)

Created with:
  roll-dep external/spirv-headers

---------

Co-authored-by: GitHub Actions[bot] <>
2023-08-16 21:50:45 -07:00
Wooyoung Kim
89ca3aa571
SPV_QCOM_image_processing support (#5223) 2023-08-15 15:15:21 -04:00
Steven Perron
c558886610
Fix failing action when PR is already open. (#5380) 2023-08-15 09:53:10 -04:00
Nathan Gauër
0f17d05c48
opt: add bitmask support for capability trimming (#5372)
Some operands are not simple values, but bitmasks.
The lookup in the table for required decomposing the mask into
single values.
This commit adds support for such operands, like MinLod|Offset.
2023-08-15 09:50:57 -04:00
github-actions[bot]
fddcc8cedc
Roll external/re2/ 9dc7ae7b5..6148386f0 (3 commits) (#5379)
9dc7ae7b52...6148386f0c

$ git log 9dc7ae7b5..6148386f0 --date=short --no-merges --format='%ad %ae %s'
2023-08-11 junyer Add support for `(?<name>expr)`.
2023-08-11 junyer Add a `WORKSPACE.bzlmod` file.
2023-08-11 junyer Migrate to Bzlmod.

Created with:
  roll-dep external/re2

Co-authored-by: GitHub Actions[bot] <>
2023-08-14 10:12:05 -04:00
Viktoria Maximova
7ddc65c722
Support 2 Intel extensions (#5357)
* SPV_INTEL_global_variable_fpga_decorations
Spec:
https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/INTEL/SPV_INTEL_global_variable_fpga_decorations.asciidoc

* SPV_INTEL_global_variable_host_access
Spec:
https://github.com/KhronosGroup/SPIRV-Registry/blob/main/extensions/INTEL/SPV_INTEL_global_variable_host_access.asciidoc

This change follows headers change:
https://github.com/KhronosGroup/SPIRV-Headers/pull/356
2023-08-11 11:53:24 -04:00
github-actions[bot]
43b8886490
roll deps (#5374)
* Roll external/googletest/ 89b25572d..7e33b6a1c (1 commit)

89b25572db...7e33b6a1c4

$ git log 89b25572d..7e33b6a1c --date=short --no-merges --format='%ad %ae %s'
2023-08-10 absl-team Specify SetUpTestSuite is required to be public.

Created with:
  roll-dep external/googletest

* Roll external/spirv-headers/ 124a9665e..45fc02a6c (2 commits)

124a9665e4...45fc02a6c6

$ git log 124a9665e..45fc02a6c --date=short --no-merges --format='%ad %ae %s'
2023-08-10 dneto Revert "Merge pull request #367 from dneto0/coop-matrix-enums-deps"
2023-07-29 konstantin.seurer Add SPV_AMDX_shader_enqueue

Created with:
  roll-dep external/spirv-headers

---------

Co-authored-by: GitHub Actions[bot] <>
2023-08-11 15:05:25 +00:00
Ryan Harrison
d6300ee92b
Fix -Wunreachable-code-loop-increment warning (#5373) 2023-08-10 19:41:20 +00:00
Nathan Gauër
8714d7fad2
enable StorageUniform16 (#5371)
Adds support for the StorageUniform16 capability.
2023-08-10 13:54:31 -04:00
David Neto
8e3da01b45
Move token version/cap/ext checks from parsing to validation (#5370)
A token is allowed to parse even when it's from the wrong
version, or is not enabled by a capability or extension.
This allows more modules to parse.

Version/capability/extension checking is fully moved to
validation instead.

Fixes: #5364
2023-08-10 12:19:12 -04:00
Nathan Gauër
4788ff1578
opt: add StorageUniformBufferBlock16 to trim pass (#5367)
Add StorageUniformBufferBlock16 to the list of enabled capabilities.
2023-08-10 14:21:35 +00:00
Nathan Gauër
ebda56e352
opt: add StoragePushConstant16 to trim pass (#5366)
* opt: add StoragePushConstant16 to trim pass

* fix comment
2023-08-10 12:34:46 +00:00
github-actions[bot]
3af4244ae1
Roll external/googletest/ 46db91ef6..89b25572d (1 commit) (#5365)
46db91ef6f...89b25572db

$ git log 46db91ef6..89b25572d --date=short --no-merges --format='%ad %ae %s'
2023-08-03 elliotgoodrich Remove public includes of `<iomanip>`

Created with:
  roll-dep external/googletest

Co-authored-by: GitHub Actions[bot] <>
2023-08-09 14:30:42 +00:00
Nathan Gauër
60e684fe71
opt: fix StorageInputOutput16 trimming. (#5359)
* opt: fix StorageInputOutput16 trimming.

While integrating this pass into DXC, I found a lot of missing
cases. This PR fixes a few issues centered around this capability
while laying out fondations for more fixes.

1. The grammar can define extensions in operand & opcode tables.
   - opcode can rely on common capabilities, but require a new
     extension.
   - opcode can also rely on a capability which requires an extension.
   Sometimes, the extension is listed twice, in the opcode, and
   capability. But this redundancy is not guaranteed.

2. minVersion check. The condition was flipped: we added the extension
   when the minVersion was less than current.
   Didn't noticed the issue as I only tests on the default env.

3. Capability/Extension instructions were not ignored.
   - `OpCapability Foo` will require the `Foo` capability.
   - it doesn't mean the module requires the `Foo` capability.
   Same for extensions.

This commit adds disabled tests, for fixes which are too large to
be brought into this already large PR.
2023-08-09 06:30:23 -04:00
github-actions[bot]
13892fe867
Roll external/googletest/ 6f6ab4212..e7fd109b5 (2 commits) (#5356)
* Roll external/googletest/ 6f6ab4212..46db91ef6 (9 commits)

6f6ab4212a...46db91ef6f

$ git log 6f6ab4212..46db91ef6 --date=short --no-merges --format='%ad %ae %s'
2023-08-07 dinor Make references to `#include`s consistent across docs
2023-08-02 robert.shade Avoid unreachable code warning
2023-08-02 dmauro Update documentation to refer to v1.14
2023-08-02 dmauro Bump version to v1.14 in preparation for release
2023-08-02 dmauro Remove the GTEST_HAS_DOWNCAST_ customization point.
2023-08-02 dmauro Add googletest-message-test to the Bazel tests It appears to have been unintentionally left out
2023-08-01 phoebeliang Make testing::Message support streamed AbslStringify values
2023-08-01 dmauro Update GoogleTest dependencies
2023-07-27 patryk gtest: Supress warning about set unused variable

Created with:
  roll-dep external/googletest

* Roll external/re2/ 960c86176..9dc7ae7b5 (1 commit)

960c861764...9dc7ae7b52

$ git log 960c86176..9dc7ae7b5 --date=short --no-merges --format='%ad %ae %s'
2023-08-04 junyer Minor Bazel cleanups.

Created with:
  roll-dep external/re2

---------

Co-authored-by: GitHub Actions[bot] <>
2023-08-08 16:26:59 +00:00
Sven van Haastregt
727f4346db
docs: update references to main branch (#5363)
The default branch was renamed from `master` to `main`.  Update some
stale references.

Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
2023-08-08 11:53:33 -04:00
Nathan Gauër
e553b884c7
Prepare release for v2023.4.rc2 (#5362) 2023-08-08 15:41:26 +02:00
Natalie Chouinard
4a9881fe9b
Use absolute path to depot_tools (#5360)
The autoroll workflow is currently failing due to being unable to find
some depot_tools executables. This is due to a limitation in Go os/exec
which effectively rejects all relative paths in PATH, and is exposed by
a recent update to depot_tools
(https://crrev.com/43083529de5802a83f53f1d53d7f5f9615999996).
2023-08-04 18:01:50 -04:00
David Neto
09b76c23ea
Update SPIRV-Headers; test some coop matrix enums (#5361)
Test:
  MatrixASignedComponentsKHR
  MatrixBSignedComponentsKHR
  MatrixCSignedComponentsKHR
  ResultSignedComponentsKHR
2023-08-04 14:50:54 -04:00
Nathan Gauër
1d14d84f29
opt: fix missing CreateTrimCapabilitiesPass definition (#5353) 2023-08-02 11:52:53 +02:00