Commit Graph

7534 Commits

Author SHA1 Message Date
Loko Kung edbeeee285 Fix cache default on condition.
- Messed up the conditon in previous change so it required both the
  enable flag to be on and the disable to be off, but then we can't
  deprecate the enable flag in Chromium.

Bug: dawn:549
Change-Id: I1c730939104aafaef48182238fa32ed7fa6a1e16
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110983
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Loko Kung <lokokung@google.com>
2022-11-22 03:38:51 +00:00
Loko Kung aa527ba348 Adds toggle to disable blob cache.
- The disable toggle will supercede the enable one once Chromium side
  deprecates usage of the enable one.

Bug: dawn:549
Change-Id: I5c5bd60161917fe2654cfce55a6f29e8a7e79962
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110728
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-21 21:46:18 +00:00
dan sinclair a32b6b4a0f [spirv-reader] Remove `forced` param from `MakeBranchDetailed`.
The `forced` parameter is always false, remove it.

Change-Id: I9aa16dfc6a51516f6b6e619a3c8ce982a25ba4c4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111101
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-21 21:39:42 +00:00
Ben Clayton 81ce4b6237 tint/transform: Include diagnostics in TINT_PRINT_PROGRAM_FOR_EACH_TRANSFORM
Change-Id: Id3e7e0cce464e8b1db00c2adab8db350eee0168c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111041
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-21 19:13:43 +00:00
Ben Clayton 87bccb74d8 tint/transform: Handle arrays of complex override lengths
Update CreateASTTypeFor() to handle a potential edge-case described in tint:1764.

We haven't seen this issue happen in production, nor can I find a way to trigger this with the tint executable, but try to handle this before we encounter a nasty bug.

Fixed: tint:1764
Change-Id: I496932955a6fdcbe26eacef8dcd04988f92545a1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111040
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-21 19:05:24 +00:00
dan sinclair efe9c49819 Add const-eval for `degrees` and `radians`
This CL adds const-eval for `degrees` and `radians`.

Bug: tint:1581
Change-Id: I7f00e2b1e5ab7c8e895680a6b75b9531dac31f5a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110601
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-21 18:00:01 +00:00
Ben Clayton 619f9bd639 tint/transform: Fix ICE when combining polyfills
There's a reason the overload of `ctx.Replace()` that takes a pointer to the replacement is deprecated - it doesn't play well when used as part of another replacement.
Switch to using the callback overload of Replace() to fix bad transform output.

Bug: tint:1386647
Change-Id: I94292eeb65d24d7b2446b16b8b4ad13bdd27965a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111000
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-21 17:11:05 +00:00
Antonio Maiorano f5eec817de tint: enable smoothstep error tests for f32 and f16
...now that we correctly fail on inf/nan. Also fold separate error test
functions into SmoothstepCases.

Also fixed atanh, acos, acosh, and asin tests to properly test error
cases for all float types, not just abstract float.

Bug: tint:1581
Bug: tint:1747
Change-Id: I63bd57d36beab4cc7dde501183052aa688e2efdb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110727
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-21 15:29:54 +00:00
Antonio Maiorano 1eaeb310a7 tint: fail on creation of a non-finite constant
This is a catch-all that handles all cases where an operation can result
in non-finite values, such as from calls to std::cosh and std::sinh.

Bug: tint:1581
Bug: tint:1747
Change-Id: Ibb55466fea01b263c98d598459c788fd22cf5bb7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110726
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-21 15:29:54 +00:00
Antonio Maiorano 72551392e8 tint: remove ConstEval::current_source member and pass down source through function calls
Bug: tint:1581
Bug: tint:1751
Change-Id: I4dea92d4b67d39559ce65f45144215e56b6a3e9a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110724
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-21 15:29:54 +00:00
Antonio Maiorano 893316014a tint: emit an error for float conversions that are not representable
For example, a large f32 value converted to f16 now fails, instead of
resulting in +/-inf.

Bug: tint:1581
Bug: tint:1747
Change-Id: I30fd8c61ecc328206e8f73b626af8046dad4b0b9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110723
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-21 15:29:54 +00:00
Ben Clayton 8bc64636cf tools/run-cts: Append --data flag to node
This will be required to use the new data-caching functionality provided by:
https://github.com/gpuweb/cts/pull/1985

Also propagate `--verbose` down, if passed to the frontend.

Change-Id: Ic436e8ed754296cec859c45bd4db703634c31ab1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109764
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-21 13:03:05 +00:00
James Price fcac2f8304 tint: Strip aliases that reference unused overrides
The SingleEntryPoint transform currently does not strip away any
unused type declarations, which was leading to broken code when an
alias referenced an override that was removed. We can detect this
scenario and remove such aliases, until we have a better mechanism for
detecting all unused aliases.

Fixed: tint:1763
Change-Id: I319ff30b5e52d7dd54596cc99a2201a708c502f2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110725
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-21 12:49:15 +00:00
Jason Erb 5008af273c Replace CMAKE_SOURCE_DIR with PROJECT_SOURCE_DIR
Bug: 1596
Change-Id: I62285bb912e79323b7bb3fcdaea9ff64b1a4a1b9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110172
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-21 11:40:38 +00:00
Austin Eng b097bf2e34 Switch one more debug message UNREACHABLE to ASSERT(false)
Bug: chromium:1375131
Change-Id: I9150ef25ea3278d97f785f6ffbcc8d45ab79fd6a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110703
Auto-Submit: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2022-11-18 19:29:02 +00:00
Ben Clayton 542db5ce06 tint: Fix TINT_PRINT_PROGRAM_FOR_EACH_TRANSFORM
The #if disabled code wasn't compiling as a variable was renamed

Change-Id: I2ce7210d18d52036dd99f729a44e21c6137f84a9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110520
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
2022-11-18 12:11:33 +00:00
Ben Clayton 0d2aedf097 Run ./tools/format
Change-Id: I4a9f375f5c383d02917c2ade4c83c3d4fc458165
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110102
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-18 11:57:37 +00:00
Ben Clayton 543dd18d3c tint: Remove textureSampleLevel(texture_external)
Fixed: tint:1671
Change-Id: Iafed8d3ddbc99b80bbe70d3fc3847ac7a25c5e37
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110101
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-18 11:17:41 +00:00
Antonio Maiorano aedda6a500 tint: remove all inf/nan input cases for const-eval builtin tests
Bug: tint:1581
Bug: tint:1747
Change-Id: I26dec12c6abbb29f1128c3b3205fd2beb0058bd2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110702
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
2022-11-18 05:45:17 +00:00
Antonio Maiorano aff1656a76 tint/spriv-reader: emit error on non-finite literal
Bug: tint:1581
Bug: tint:1747
Change-Id: I2855c8e277e74ecf1465b81c4545b99fef2a321b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110701
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
2022-11-18 05:45:17 +00:00
Antonio Maiorano 0da91e06c5 tint: make const eval of binary ops on concrete values fail on NaN/Inf
With this CL, binary ops add, subtract, multiply, and divide of concrete
values will now produce an error if the result is inf/NaN, as it was
doing with abstract values. This also affects the cross builtin, which
is written in terms of subtract and multiply.

Bug: tint:1581
Bug: tint:1747
Change-Id: Ib1d0d8deddc82c67ab53729a6011937636fcc1a5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110163
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-18 05:45:17 +00:00
Loko Kung e956a04daf Suppress MaxLimitTests.MaxBufferBindingSize on Linux/Vulkan/Nvidia.
- The test was failing on the google3 TAP bots.
- Also adjusts the size so that it is the aligned min given the limit,
  not just the aligned limit since that can be larger than the limit.

Bug: dawn:1217
Change-Id: I02a68d14d61099dc5c1a2450cbaadc2320f5b8a9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110760
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Loko Kung <lokokung@google.com>
2022-11-18 00:46:38 +00:00
Jiawei Shao c2646135e1 D3D12: Allocate 2D textures with CopyDst as committed resources on Intel GPUs
This patch adds a workaround on Intel Gen9.5 and Gen11 GPUs to always
allocate 2D textures with CopyDst as committed resources instead of
placed resources to mitigate a driver bug about CreatePlacedResource().

Bug: chromium:1237175
Test: dawn_end2end_tests
Change-Id: I64ab9c083c8835fb2971660eed51252fecac416c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/100641
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2022-11-17 23:03:34 +00:00
Loko Kung a88b90a69d Remove ListNode from any LinkedList in dtor.
- Issue found in LinkedListTests when running against ASAN since the
  LinkedList was being destroyed after the Nodes, thereby triggering
  a RemoveFromList on the root node, but the other nodes were never
  removed from the list and are dangling pointers.

Change-Id: I136abbc5d73c35142990c9fe4669e5fc6d5ef644
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110500
Reviewed-by: Austin Eng <enga@chromium.org>
Auto-Submit: Loko Kung <lokokung@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-17 22:35:24 +00:00
James Price 9e15952e2d tint: Fix set of overrides in the shader interface
Since overrides can be used to size workgroup arrays and also as
initializers to module-scope variables, we cannot just consider
overrides that are directly referenced in the shader functions.

This change makes the Resolver track references to overrides whilst
resolving array types and module-scope variable declarations, so that
they are included in the set of overrides reported by the Inspector in
these scenarios.

Fixed: tint:1762
Change-Id: If7501abf3ddcb87a87134ddd578aa4904d204de6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110460
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-17 22:23:46 +00:00
Brendon Tiszka e32457fa11 Revert "Add assertions to ServerInlineMemoryTransferService to catch corrupted states while fuzzing with DawnWireServerFuzzer and tests."
This reverts commit f3666c45f3.

Reason for revert: Did not realize these assertions could knowingly be reached after this fix for crbug.com/1340654

Original change's description:
> Add assertions to ServerInlineMemoryTransferService to catch corrupted states while fuzzing with DawnWireServerFuzzer and tests.
>
> Bug: chromium:1340654,chromium:1374495,chromium:1376477
> Change-Id: Icfb008a1cd6dbd8af32f3aedc90ef29e29a0465b
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106041
> Commit-Queue: Brendon Tiszka <tiszka@chromium.org>
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Reviewed-by: Austin Eng <enga@chromium.org>
> Kokoro: Kokoro <noreply+kokoro@google.com>

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:1340654,chromium:1374495
Change-Id: I5bff56e32266721ec418a545ad72c1065c73d526
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109461
Commit-Queue: Brendon Tiszka <tiszka@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2022-11-17 22:08:23 +00:00
Ben Clayton 83cef52eb7 tint/resolver: Error when quantizeToF16 value is unrepresentable
...as a F16, for const-eval.

Fixed: tint:1744
Change-Id: I5eff05c6bc4727cbdfefb546602f3ee194d22612
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108640
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-17 21:34:27 +00:00
Austin Eng f6181d0365 Change UNREACHABLE to ASSERT(false) in OnDebugUtilsCallback
In cases that a debug message does happen, we shouldn't use
unreachable as it will make the compiler use a false assumption.
Instead, only ASSERT(false) which crashes in debug, and does
nothing in release builds.

Bug: chromium:1375131
Change-Id: I7733151c241ee875ac40969ce22f037351141e89
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110600
Auto-Submit: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2022-11-17 20:54:14 +00:00
Ben Clayton c2e2013c2d tint/resolver: Fix DBZ with explicit strides of invalid arrays
Fixed: tint:1693
Change-Id: Ieafc8659daade26c5ce4fab583d3bc03d35c2a2a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110580
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-17 19:59:19 +00:00
Ben Clayton e412c8d8c6 Remove tint::Source::data_view
It's just a view on another field. It doesn't add anything.

Change-Id: I52c1939c455d48c067c9c31938be87671328d263
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110560
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-17 19:16:24 +00:00
dan sinclair 6a4c918cbf [ir] Sketch out tree walk
This CL adds the sketch of how to walk the IR tree in order to rebuild
the format of the original control flow.

Bug: tint:1718
Change-Id: Id9376d51907ea2a60f32506a152928b3a82d14ed
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110481
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-17 19:15:07 +00:00
dan sinclair 5fbce71eea Change some kNone to kUnknown.
Missed a couple kNone settings in the Tint executable when attempting
to determine the output format. This CL updates the to be kUnknown.

Change-Id: Ia0c4293fe69711cf1de878255bd18c6eeec4bffe
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110502
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-17 18:42:39 +00:00
James Price 4d65fc91bb tint: Implement pointer alias analysis
Track reads and writes to pointer parameters for each function in the
Resolver, as well as accesses to module-scope variables. At function
call sites, check the root identifiers of each pointer argument to
determine if problematic aliasing occurs.

The MSL backend passes pointers to sub-objects to functions when
handling workgroup storage variables, which triggers the alias
analysis. Add a validation override for this scenario.

Bug: tint:1675

Change-Id: I81a40d1309df65521cc5ad39764d6a09a260f51e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110167
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
2022-11-17 17:27:27 +00:00
dan sinclair d6f9a8a253 Enable some disabled test.
This CL enables some of the @const disabled test now that the
methods are implemented.

Bug: tint:1581
Change-Id: I2cc0aa33188e439a661e2e7c265c6414881c92a0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110169
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-17 13:19:16 +00:00
Antonio Maiorano 46682e7e6b tint: remove redundant insertBits tests
Meant to remove this in
https://dawn-review.googlesource.com/c/dawn/+/110482

Bug: tint:1581
Bug: chromium:53440
Change-Id: I38a51873b93c2bfbf6ea20456a7992422ead6208
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110446
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-17 12:41:15 +00:00
Antonio Maiorano 8fbfacfd43 tint: fix insertBits edge case
If count is highest and offset is non-zero, or vice-versa, we'd overflow
the count + offset > bit-width check. This CL fixes this case.

Also folded in error tests into extractBits and insertBits.

Bug: tint:1581
Bug: chromium:53440
Change-Id: Id1e9e737b8076e8075da5992a41d18b6b7c8afd4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110482
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-17 00:35:49 +00:00
dan sinclair 32c28cbc90 Add const-eval for `smoothstep`
This CL adds const-eval for `smoothstep`.

Bug: tint:1581
Change-Id: I78aa5c4a39882f29ff78e37313e6c44708719095
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110176
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-16 23:02:39 +00:00
dan sinclair 19e5042ade Add const-eval for `round`
This CL adds const-eval for `round`.

Bug: tint:1581
Change-Id: I16ebb2010969debb8de50479235d9d9f5433c0a1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110175
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-16 22:52:08 +00:00
dan sinclair c214cbe98b Add a `none` format.
This CL adds a `none` format to the tint command in order to allow
skipping the emission of the resulting program. This adds a `unknown`
format to take the place of the original `none`.

Change-Id: Ib25e933857c0acb26e3cf0e04ed8a5d1cca1e633
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110480
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-16 22:29:12 +00:00
Antonio Maiorano 4d89ce1a68 tint/number: add Checked* overloads for f32 and f16
Also add missing unit tests for CheckedMul of floats.

Bug: tint:1581
Bug: tint:1747
Change-Id: I5d0d5d2b010803d6fd65f6feddc619cf1d071fe2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110170
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-16 21:51:31 +00:00
Ben Clayton 6be02b607f tint: Fix stability of intrinsic_table.inl
Use a StableSort() to ensure the output is the same between different
versions of golang.

Change-Id: Ic81688d189ce62816ba0aefddcef607b76415a5d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110361
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Ben Clayton <bclayton@google.com>
2022-11-16 21:30:13 +00:00
dan sinclair 2d90dedea4 Add const-eval for `sqrt`
This CL adds const-eval for `sqrt`.

Bug: tint:1581
Change-Id: I0d109e6439feaf07edb7db4d6a50274c1c4efcae
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110174
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-16 21:15:49 +00:00
dan sinclair 92af2b5693 Add const-eval for `trunc`
This CL adds const-eval for `trunc`.

Bug: tint:1581
Change-Id: If58f79ea70fe490746e30ed118d847c61edd8023
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110173
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-16 20:07:31 +00:00
dan sinclair c6d46994af [ir] Add framework to dump IR to text
This CL adds the framework and `tint` option to write the IR to stdout
as text for debug purposes.

Bug: tint:1718
Change-Id: I05bd83635800fbfe3b65d968a84b30931ec1bdb6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110171
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-16 14:36:30 +00:00
Ben Clayton fad31fe74a dawn: fix 'control reaches end of non-void function' warning
Change-Id: I8820df29d84df9151f7992677ca7e926d14ecb08
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/107240
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2022-11-16 14:21:03 +00:00
dan sinclair acce83d109 Add const-eval for `min` and `max`
This CL adds const-eval for `min` and `max`.

Bug: tint:1581
Change-Id: Ica68ba312f21767c46d57d83570ddc72ee857231
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110166
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-15 18:39:38 +00:00
Jiawei Shao 6924d6e903 Remove unused function declarations
Bug: dawn:1516
Change-Id: I7a62a80f3377c3b0675520d0eb71caa18c546bfa
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110260
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2022-11-15 16:11:36 +00:00
Jiawei Shao f7e113d47e Add test to reproduce Intel driver issues with CreatePlacedResource()
This patch adds a test to dawn_end2end_tests to reproduce a driver
issue about creating textures with CreatePlacedResource() on Intel
D3D12 drivers.

Bug: chromium:1237175
Test: dawn_end2end_tests
Change-Id: I26fe6c9b827d8a05cfe2336405e43c549e52ea50
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/100567
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2022-11-15 01:56:06 +00:00
David Neto 7f06aa06ac spirv-reader: support NumWorkgroups
Fixed: tint:1065
Change-Id: Id2a8af247e7da79933703e634478f1dec25f9145
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110220
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Auto-Submit: David Neto <dneto@google.com>
2022-11-15 01:32:17 +00:00
dan sinclair 267f1748c8 Remove infrastructure for fallthrough
This Cl removes the internal infrastructor and backend code
generation for the fallthrough statement.

Bug: tint:1644
Change-Id: I2a1de7d527865e5a7221074f4e0fb106599f4c57
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109005
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-15 00:30:33 +00:00
dan sinclair bf586f6dfd Remove fallthrough from WGSL parser.
This CL removes the `fallthrough` parsing from the WGSL parser. The
`fallthrough` token is left so we can generate a nicer error message
in the case `fallthrough` is used.

Bug: tint:1644
Change-Id: Ifb23d78d1219cba9c64b80c9b098a248bc68e5c5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109001
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-15 00:20:24 +00:00
dan sinclair d8a986beae Remove fallthrough support from SPIRV-Reader.
This CL removes support for fallthrough from the SPIRV-Reader.

Bug: tint:1644
Change-Id: I80b63d627960a82ba90de83af407c539b0442080
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109004
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
2022-11-15 00:19:05 +00:00
David Neto 3c32758a0e spirv-reader: Support texture and sampler args to user-defined functions
Fixed: tint:1039
Change-Id: If0cb28679cc73f54025c2c142bdc32852bf4ae28
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109820
Auto-Submit: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: David Neto <dneto@google.com>
2022-11-14 23:15:51 +00:00
Antonio Maiorano 1db8831be4 tint: fold error cases into regular case in const eval binary op unit tests
This is the same as was done for const eval builtin tests, allowing the
error cases to be defined in the same place as we define the positive
cases.

Also got rid fo the 'overflow' flag, which was used to skip abstract
cases in the unit test. Instead, I modified the tests to only add
overflow cases if not abstract.

This change will make it easier to update tests when we make Inf/NaN
failures for concrete float operations.

Bug: tint:1581
Bug: tint:1747
Change-Id: I7e5d8f9b24ca486aaa03a3b1bd07ccedb09411c9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110043
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-14 21:20:05 +00:00
David Neto 208fc35471 spirv-reader: refactor getting handle type
Rename ParserImpl::GetTypeForHandleMemObjDecl to
ParserImpl::GetHandleTypeForSpirvHandle

More importantly, it now returns the texture or sampler type rather
than the pointer type to the texture or sampler.

Most usages only wanted the store type.

Change-Id: I875e11d97e6d3ecb10fdb3317b860c05fc5fe406
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109760
Auto-Submit: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: David Neto <dneto@google.com>
2022-11-14 21:13:30 +00:00
James Price 8cd34f8425 tint: Fix DemoteToHelper for atomicCmpXchgWeak
We cannot explicitly name the result type of this builtin, so we have
to redeclare it manually.

Fixed: oss-fuzz:53347, oss-fuzz:53343
Change-Id: I23816b8b35eb20ae91472143ab30668b573d65bf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110160
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: James Price <jrprice@google.com>
2022-11-14 20:30:38 +00:00
Li Hao fbd00b44ee Fix non-inclusive language in toggle name
Use 'Mock' instead of non-inclusive language 'Dummy' in toggle
MetalUseDummyBlitEncoderForWriteTimestamp to pass PRESUBMIT.py check.

Bug: dawn:1250
Change-Id: I47dff4adec08d4d076b5ae5b4e0a521b235d5868
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110060
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2022-11-14 16:57:22 +00:00
Ben Clayton 10fae7ac79 tint: Rename `frexp().sig` to `frexp().fract`
Fixed: tint:1757
Change-Id: Iacce6ab0f08f89abbe5831e6f2285a0c964e74d7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110100
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
2022-11-14 15:29:29 +00:00
Ben Clayton 1ef277db0e tint: Skip e2e test validation for known-good
Cache the hash of the test output, and only re-validate if the output changes.
This speeds up incremental end-to-end testing.

Change-Id: I44bc1eff62320df1e80524e8481d1c012fb67f42
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109761
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
2022-11-14 13:58:36 +00:00
Wang Qing 09dd5635e4 loongarch: Fix ASSERT() breakpoint support.
Bug: dawn:1506
Change-Id: I79aa5fe75477280570bfced0ee60aac5c18fab6f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109900
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2022-11-14 13:07:30 +00:00
Ben Clayton c33d10ae79 tint/resolver: Fix bad pointer deref (UAF)
Passing a dereferenced value from Hashmap::Find() directly into Hashmap::Add() is a potential cause of UAF, as the insertion may reallocate the map, invalidating the input reference.

I'll try to think of ways to make this foot-gun harder to do, but this CL fixes the immediate bug found by fuzzers.

Bug: chromium:1383755
Change-Id: I4f8b2fcb0745b008a47ef9947c330afb9ac4e78f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110020
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-13 18:26:25 +00:00
Antonio Maiorano 7338848589 dawn: ouput DXBC literals as hex when dump_shaders is enabled
The DXBC asm listing attempts to be helpful when display literals by
making them human readable,but when it displays values as floats, they
will only have a precision of 6.

For example, 0x09909909 ends up getting displayed as 0.000000 because as
a float, this value is 3.48106525683e-33. FXC has an option to output
literals as hex values, so let's use that.

Change-Id: I2b3017bd834eac89248fe01cae85ba1bb4033e59
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109582
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2022-11-11 19:33:31 +00:00
Ryan Harrison 4e0eac148d Manual Roll third_party/vulkan-deps/ a7a3fb393..c29c532c9 (71 commits)
https://chromium.googlesource.com/vulkan-deps/+log/a7a3fb39310c..c29c532c92db

$ git log a7a3fb393..c29c532c9 --date=short --no-merges --format='%ad %ae %s'
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from 096b2903118c to f276f028ee79 (1 revision)
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from 45b81b398ab4 to 096b2903118c (2 revisions)
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from 983b408199f2 to 45b81b398ab4 (3 revisions)
2022-11-10 chromium-autoroll Roll Vulkan-Headers from f97f29836cb9 to 29c0457cc167 (1 revision)
2022-11-10 chromium-autoroll Roll Vulkan-Tools from e8234991418c to 3a729c0a9d58 (1 revision)
2022-11-10 chromium-autoroll Roll SPIRV-Tools from aae7d4132571 to 68e8327f2932 (2 revisions)
2022-11-10 chromium-autoroll Roll Vulkan-Loader from 1b40be299b02 to 0df63661a5fa (1 revision)
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from e7380d60c9a6 to 983b408199f2 (8 revisions)
2022-11-10 chromium-autoroll Roll Vulkan-Headers from 689821914113 to f97f29836cb9 (1 revision)
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from afd4e9d82d92 to e7380d60c9a6 (3 revisions)
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from fc9da6832a2b to afd4e9d82d92 (1 revision)
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from 1059ee93ebff to fc9da6832a2b (1 revision)
2022-11-10 chromium-autoroll Roll Vulkan-ValidationLayers from 065b8cbc41cb to 1059ee93ebff (1 revision)
2022-11-09 chromium-autoroll Roll Vulkan-Loader from 7e61110364b4 to 1b40be299b02 (2 revisions)
2022-11-09 chromium-autoroll Roll SPIRV-Tools from 525bc38062ab to aae7d4132571 (1 revision)
2022-11-09 chromium-autoroll Roll Vulkan-Loader from 5b054b4333fd to 7e61110364b4 (1 revision)
2022-11-09 chromium-autoroll Roll Vulkan-ValidationLayers from f162411346bb to 065b8cbc41cb (1 revision)
2022-11-09 chromium-autoroll Roll Vulkan-Tools from 6e5bd86b76c0 to e8234991418c (1 revision)
2022-11-09 chromium-autoroll Roll Vulkan-ValidationLayers from 8a253a6c5b7a to f162411346bb (1 revision)
2022-11-09 chromium-autoroll Roll Vulkan-ValidationLayers from e09172e79c0b to 8a253a6c5b7a (1 revision)
2022-11-08 chromium-autoroll Roll Vulkan-Loader from 6442b72aea02 to 5b054b4333fd (1 revision)
2022-11-08 chromium-autoroll Roll glslang from f4cba22d0824 to 2b2523fb951f (1 revision)
2022-11-08 chromium-autoroll Roll Vulkan-ValidationLayers from 212ea587c100 to e09172e79c0b (1 revision)
2022-11-08 chromium-autoroll Roll Vulkan-Headers from ef96d229cb3d to 689821914113 (1 revision)
2022-11-08 chromium-autoroll Roll SPIRV-Tools from 54d4e77fa559 to 525bc38062ab (1 revision)
2022-11-08 chromium-autoroll Roll glslang from 5e08deae050c to f4cba22d0824 (1 revision)
2022-11-08 chromium-autoroll Roll Vulkan-Headers from 1661f3e962f5 to ef96d229cb3d (3 revisions)
2022-11-08 chromium-autoroll Roll Vulkan-ValidationLayers from 2dbf684715c2 to 212ea587c100 (2 revisions)
2022-11-08 chromium-autoroll Roll SPIRV-Tools from a5e766b2b47c to 54d4e77fa559 (1 revision)
2022-11-08 chromium-autoroll Roll Vulkan-ValidationLayers from bcf3a2bd93f2 to 2dbf684715c2 (1 revision)
2022-11-08 chromium-autoroll Roll SPIRV-Cross from abc31207bffb to edd66a2fc9e9 (1 revision)
2022-11-08 chromium-autoroll Roll Vulkan-ValidationLayers from 8382dbcaeb7c to bcf3a2bd93f2 (3 revisions)
2022-11-08 chromium-autoroll Roll Vulkan-ValidationLayers from b5cbd4242593 to 8382dbcaeb7c (2 revisions)
2022-11-08 chromium-autoroll Roll Vulkan-Headers from 91388ba10409 to 1661f3e962f5 (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-Loader from 6b0551428e57 to 6442b72aea02 (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-ValidationLayers from 2632b3362f77 to b5cbd4242593 (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-ValidationLayers from 8a1cdac2bde1 to 2632b3362f77 (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-ValidationLayers from 94c32cc2541c to 8a1cdac2bde1 (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-Loader from 8ff839bda370 to 6b0551428e57 (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-Headers from 52b7c620a540 to 91388ba10409 (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-ValidationLayers from 62eb78a06365 to 94c32cc2541c (1 revision)
2022-11-07 chromium-autoroll Roll Vulkan-ValidationLayers from 8debb3bd2948 to 62eb78a06365 (2 revisions)
2022-11-07 chromium-autoroll Roll SPIRV-Tools from d35a78db57e6 to a5e766b2b47c (1 revision)
2022-11-05 chromium-autoroll Roll Vulkan-ValidationLayers from 226b595aeec0 to 8debb3bd2948 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-Loader from 256a5e3b6d6f to 8ff839bda370 (1 revision)
2022-11-04 chromium-autoroll Roll SPIRV-Tools from c8e1588cfa3f to d35a78db57e6 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-ValidationLayers from 37e77914ef0d to 226b595aeec0 (7 revisions)
2022-11-04 chromium-autoroll Roll SPIRV-Headers from 747031e10dea to 47f2465ee3e7 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-Loader from 1bc3a2fa8ec1 to 256a5e3b6d6f (8 revisions)
2022-11-04 chromium-autoroll Roll Vulkan-ValidationLayers from a566d5b79346 to 37e77914ef0d (2 revisions)
2022-11-04 chromium-autoroll Roll Vulkan-Loader from 374dbe9df7bd to 1bc3a2fa8ec1 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-Headers from ff03306bf986 to 52b7c620a540 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-ValidationLayers from e108987ee76c to a566d5b79346 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-ValidationLayers from 9a31edfa80d5 to e108987ee76c (7 revisions)
2022-11-04 chromium-autoroll Roll Vulkan-Headers from d4c221772cb2 to ff03306bf986 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-ValidationLayers from a38db2b8b172 to 9a31edfa80d5 (1 revision)
2022-11-04 chromium-autoroll Roll Vulkan-ValidationLayers from d5bc5ca269e5 to a38db2b8b172 (1 revision)
2022-11-03 chromium-autoroll Roll glslang from 8da649505887 to 5e08deae050c (1 revision)
2022-11-03 chromium-autoroll Roll Vulkan-Tools from 0bb32875d2e6 to 6e5bd86b76c0 (1 revision)
2022-11-03 chromium-autoroll Roll Vulkan-Loader from da810336e761 to 374dbe9df7bd (1 revision)
2022-11-03 chromium-autoroll Roll SPIRV-Headers from 85a1ed200d50 to 747031e10dea (1 revision)
2022-11-03 chromium-autoroll Roll Vulkan-ValidationLayers from 823f8beb4f70 to d5bc5ca269e5 (2 revisions)
2022-11-03 chromium-autoroll Roll Vulkan-Headers from e12a8f8cde40 to d4c221772cb2 (1 revision)
2022-11-03 chromium-autoroll Roll Vulkan-ValidationLayers from 6d377701f393 to 823f8beb4f70 (1 revision)
2022-11-03 chromium-autoroll Roll Vulkan-Loader from 4f4b32cf7545 to da810336e761 (1 revision)
2022-11-02 chromium-autoroll Roll Vulkan-ValidationLayers from 18a0e59294d1 to 6d377701f393 (2 revisions)
2022-11-02 chromium-autoroll Roll Vulkan-Tools from 292e6ed02141 to 0bb32875d2e6 (1 revision)
2022-11-02 chromium-autoroll Roll Vulkan-Loader from 3f29209dd65d to 4f4b32cf7545 (1 revision)
2022-11-02 chromium-autoroll Roll SPIRV-Tools from a52de681dd17 to c8e1588cfa3f (1 revision)
2022-11-02 chromium-autoroll Roll glslang from 1a8869e4d1be to 8da649505887 (1 revision)
2022-11-02 chromium-autoroll Roll SPIRV-Cross from 744279ec78ff to abc31207bffb (1 revision)

Created with:
  roll-dep third_party/vulkan-deps

Change-Id: I24e8219f2226c6ee76a44bc00bb17b30b7a50d32
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109740
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2022-11-10 22:21:16 +00:00
David Neto 183b8eb19c spirv-reader: func decl with handle or ptr-to-handle
Support function declarations where formal parameters
are textures, samplers, or pointers to them.

Still need to update call sites.

Bug: tint:1039

Change-Id: I5bb3ca73190b2e27c28205e78aa433108efec252
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109540
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-10 20:52:31 +00:00
dan sinclair b77332edd2 Add const-eval for `tan` and `tanh`
This CL adds const-eval for `tan` and `tanh`.

Bug: tint:1581
Change-Id: I3d3506a6e7462bba1557cb88065d696ddc21b0f6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109562
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-10 15:55:00 +00:00
dan sinclair 02d4ea06b9 Add const-eval for `cos` and `cosh`
This CL adds const-eval for `cos` and `cosh`.

Bug: tint:1581
Change-Id: I8df8f979a7b351288cadccda88940fdb5a20d18f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109561
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-10 15:52:41 +00:00
dan sinclair b7868ff3ee Add const-eval for `sin` and `sinh`
This CL adds const-eval for `sin` and `sinh`.

Bug: tint:1581
Change-Id: I96345378c826e2c49ffae688b5185764019967d5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109560
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-10 14:20:36 +00:00
dan sinclair e2fd5e09c6 Implement const-eval for `acosh`
This CL adds const-eval for the `acosh` test case. The generation of
`f16` values into test files is also fixed because `acosh` requires the
value to be `>= 1.0`

Bug: tint:1581
Change-Id: Iba2ca4d9d114034845475679346f042c8c66e571
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109341
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-10 02:39:08 +00:00
Ben Clayton 46ee63933c tint/transform: Implement div / mod polyfill
Prevents UB for divide-by-zero and integer overflow when dividing

Fixed: tint:1349
Change-Id: Ieef66d27d7aec3011628ced076b2bccc7770a8af
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108925
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-09 22:04:11 +00:00
Ben Clayton 9418152d08 tint/resolver: Move from STL to tint::utils containers
Change-Id: I883168a1a84457138de85decb921c5c430c32bd8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108702
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-09 20:55:33 +00:00
Ben Clayton 55a8eace75 tint/resolver: Forbid workgroup pointer parameters
Fixed: tint:1721
Change-Id: I80a2cfc753f928facc165e1c8cd8c5af6c497550
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108701
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-09 20:11:43 +00:00
dan sinclair 5ac2a365d9 Add const-eval for pack and unpack of 2x16float.
This CL adds const-eval for pack and unpack of 2x16 float values.

Bug: tint:1581
Change-Id: I59a1925148124e628c3771ca96d309fad045f27d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109280
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-09 20:04:37 +00:00
dan sinclair 00d0fd5e84 Update f16 to have from_bits
This CL adds a `from_bits` method to the f16 number to allow converting
a uint16_t representation to a f16.

Bug: tint:1581
Change-Id: I80882e74a88411963f0e30423a72cfca40370af1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109201
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: dan sinclair <dsinclair@google.com>
2022-11-09 20:03:09 +00:00
James Price 744d0eb4aa tint: Use "demote-to-helper" semantics for discard
Discard statements no longer affect the behavior or uniformity
analysis. Update the resolver, validator, and several tests to reflect
this.

Some E2E tests were removed as they had loops that are now considered
to be infinite.

Use the DemoteToHelper transform to emulate the correct semantics on
platforms where discard is (or may) terminate the invocation in a
manner that would affect derivative operations.

We no longer need the UnwindDiscardFunctions transform for HLSL, which
already implements the correct semantics. However, we still run the
DemoteToHelper transform for the HLSL backend due to issues with FXC's
handling of discard statements (see crbug.com/tint/1118).

Fixed: tint:1723
Change-Id: Ib49ff187919ae81c4af8675e1b66acd57e2ff7d2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109003
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
2022-11-09 19:58:59 +00:00
James Price 78ae4c243b tint: Fix phony assignments in DemoteToHelper
We just need to skip these.

Bug: tint:1723
Change-Id: I311fe0432ecf1f69936eaf08eb57123a6a738175
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109340
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-09 18:27:12 +00:00
James Price 97519c2cd3 tint: Allow captured pointers as function args
The updated WGSL validation rule now requires that the memory view of
the argument matches its root identifier.

This allows for code like this:
   let p = &v;
   foo(p);

Fixed: tint:1754, tint:1734
Change-Id: I3239ec84e1c06398a6ce5bebb1e0b28986764bc6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109221
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
2022-11-09 16:47:19 +00:00
James Price 6251598ad2 tint: Add DemoteToHelper transform
This transform implements demote-to-helper semantics for discard
statements, by setting a global flag and masking any writes to
host-visible memory.

Bug: tint:1723
Change-Id: I619c5661c6ffcc6978aa4f7635b0d680d83de3dd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109002
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
2022-11-09 15:40:06 +00:00
James Price a7cd3aeff0 tint: Rename SourceVariable() to RootIdentifier()
This is now a well-defined term in the WGSL spec, so we should use it.

Change-Id: Icc46a77f0a465afbfd39cdaec84e506b143c8c0c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109220
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Auto-Submit: James Price <jrprice@google.com>
2022-11-09 12:16:56 +00:00
Zhaoming Jiang 4f3f45c00f Tint/transform: Fix insertBits polyfill for HLSL
This CL fix insertBits polyfill to handle with the left-shifting
behavior in HLSL, i.e. `(1u << 32u) == (1u << 0u) == 1u` where we want
the result to be `0u`.

Fixed: tint:1743
Change-Id: Ibb82abe4ab2f76dbb0fa06057fb19f15f961d969
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108166
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-09 01:54:08 +00:00
Antonio Maiorano e4270d111b Fix dawn_native MSVC x86 build
Bug: dawn:1590
Change-Id: I4559a664fde1ee0ebcf7eae44a752d1977a63e24
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109200
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-08 23:24:52 +00:00
Antonio Maiorano a70e365313 tint: fix extractBits edge case
If count is highest and offset is non-zero, or vice-versa, we'd overflow
the count + offset > bit-width check. This CL fixes this case.

Bug: tint:1581
Bug: chromium:1381810
Change-Id: I6ee60ec1a13230fca6f4bb6407cd33bcc6730eb7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109162
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-08 18:27:08 +00:00
Jiawei Shao e052683e3f Remove two unused function declarations in wire::client::Device
Bug: dawn:1586
Change-Id: Ic3a7bdedc62ff6765a559f94a7ad379741687fed
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109080
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-08 15:11:31 +00:00
Antonio Maiorano c36417343f tint: const eval of cross
Bug: tint:1581
Change-Id: I63ebb7de3a7d719f2c149715295492f561311579
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108544
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-08 11:42:07 +00:00
David Neto eb949c87ee spirv-reader: use spirv.hpp11
In preparation for SPIRV-Tools change where its internals
use the C++11 headers.

This patch works with SPIRV-Tools using the old C header
and using the C++11 header.

This patch includes some complex machinery inside "three_sided_patch"
namespaces that can be removed after third_party/vulkan-deps/spirv-tools has
fully transitioned into using the C++11 headers.

Change-Id: I36f358fe3edcc5e613625708017fb8d7919c40c6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108780
Reviewed-by: Alan Baker <alanbaker@google.com>
Commit-Queue: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-08 00:17:56 +00:00
dan sinclair 1bdaded736 Implemement const-eval for some unpack routines.
This CL adds const-eval for unpack2x16snorm, unpack2x16unorm,
unpack4x8snorm and unpack4x8unorm.

Bug: tint:1581
Change-Id: Ieda938b797dfe3f8d8046101d12b99da69ad68f4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108864
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-07 22:28:01 +00:00
dan sinclair ec4b650adb Remove fallthrough from fuzzer AST mutation.
This CL removes the logic to handle fallthrough in the AST fuzzer.

Bug: tint:1644
Change-Id: Ie636e2377bed8acfd7a644d2af6827efaf37a60e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/109000
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-07 20:56:04 +00:00
Ben Clayton ba200e87c5 tint: Bump stack size for MSVC + debug build
Bug: tint:1749
Change-Id: Ic7a87a769ade9c459914ac745b449b4383812753
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108923
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
2022-11-07 17:24:10 +00:00
dan sinclair 5071a54af4 Make reserved words an error.
This CL moves reserved words from a deprecation to an error.

Bug: tint:1463
Change-Id: I5c66baa15dc748215877c8152171c690495bc0c2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108861
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-07 16:15:55 +00:00
dan sinclair 2d706a0436 Implemement const-eval for some pack routines.
This CL adds const-eval for pack2x16snorm, pack2x16unorm,
pack4x8snorm and pack4x8unorm.

Bug: tint:1581
Change-Id: I58d8f02da32a6a173ca54ee5110ca7be39e2c52f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108466
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-07 14:32:16 +00:00
dan sinclair 3b2b5484e2 Remove module-scope let deprecation.
This CL moves module-scope let from a deprecation to an error.

Change-Id: Iffecbb667cf79515234b6510ce7c5bbbb6e673bc
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108862
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-07 14:20:33 +00:00
Antonio Maiorano c027f33cfd tint: Fix gdb and lldb pretty printers for recently updated Hashset and Hashmap
Change-Id: If9aae44b6e58d3ba3be3463306f626ce8c23d4d0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108723
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Reviewed-by: Ben Clayton <bclayton@chromium.org>
2022-11-07 14:00:53 +00:00
Ben Clayton ca98b1b1b9 tint/resolver: Resolve dependencies of parameter attributes
Fixed: chromium:1381883
Change-Id: If93840977407e349ab8d3ea5a2f51b9e03c7d0e5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108920
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-07 13:15:21 +00:00
dan sinclair 6f799d676d Change default acos test value.
This Cl changes the default acos test value so it equals `cos(.25)`
instead of `cos(.5)`. The `.5` result was slightly different on
various machines.

Bug: tint:1581
Change-Id: I768141ae87a63b2c35ec4d61eb030edad77e11e4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108863
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-07 12:06:18 +00:00
dan sinclair f218af0461 Remove the `@stage` attribute
This CL removes the `@stage` attribute.

Bug: tint:1503
Change-Id: I1e31e96056a053f0c1e92b4bfc3c63c3592e9765
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108860
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-07 11:34:34 +00:00
Austin Eng 270c044100 Metal: Implement begin/end access synchronization with MTLSharedEvent
Bug: b/252731382
Change-Id: Ie2bf978c10dcb7b2c03a2c7ff81ddd8b9b77ac20
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106760
Reviewed-by: Shrek Shao <shrekshao@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
2022-11-04 22:06:20 +00:00
Ben Clayton b6903295a8 tint/resolver: Support error cases with const-eval builtin tests
Also:

Print unrepresentable numbers with higher precision - otherwise values can round, and diagnostics can be very confusing.
Improve diagnostic distinction between `( )` `[ ]` interval ranges.

Change-Id: I9269fbf1738f0bce5f2ddb5a387687543fd5d0bb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108700
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-04 19:18:55 +00:00
Austin Eng dc819c939b dawn::wire validate that the generation must be strictly increasing
Bug: chromium:1379634
Change-Id: Iaa067a30ac5992adfb5aac168104163a62f8bf9c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108549
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-04 15:29:23 +00:00
Antonio Maiorano 6fcc4f3a54 tint: const eval of reverseBits
Bug: tint:1581
Change-Id: I3dd1ea2c774f9fc0dff87b71f25375a469c3d05e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108300
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-04 13:48:26 +00:00
Li Hao 23a35c8a26 Add more tests in white_box/D3D12GPUTimestampCalibrationTests.cpp
Add more coverage for timestamp query on D3D12 backend to make sure
timestamps are converted correctly:
- All timestamp queries inside and outside passes
- The 'disable_timestamp_query_conversion' toggle disabled and enabled

Bug: dawn:1250

Change-Id: Ibdc6b35faed7cc1e1a8b60df4a5032914b411bc1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108022
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Hao Li <hao.x.li@intel.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-04 08:43:57 +00:00
Loko Kung a4314fabb4 Minor build/include fixes for google3 roll.
Change-Id: I2f9ba7f98acdf9441d80d3a1169b36bee44a2e0e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/108545
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2022-11-04 01:44:43 +00:00