Commit Graph

7566 Commits

Author SHA1 Message Date
Rafael Cintron 0d20b2b2b7 Destroy ResourceAllocationManager in d3d12::Device::DestroyImpl
Since the ZeroBuffer (4MB) is released in DestroyImpl, it sticks
around in the resource allocation manager, along with a large amount
of unneeded tracking data structures.

To further reduce memory consumption after developers Destroy, we now
delete the ResourceAllocationManager in DestroyImpl and ensure any
remaining objects go through the same shutdown path as normal usage.

Placed resources must be released before any heaps they reside in.

Bug: chromium:1377789
Change-Id: I7a0f6ad2fdcc60bfe5a51586c8a620f4862c38a5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111601
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-30 21:40:59 +00:00
Brandon Jones 85ceb08d5c Add ExternalTexture Rotate and FlipY Functionality
Adds functionality to Dawn and Tint to rotate and flip-Y external
textures through the shader transform. Tests are included.

Bug: chromium:1316671
Change-Id: I40a6b67eaeb2a348f469e4879eeb585bc40537b2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110181
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-30 21:32:26 +00:00
Ben Clayton 94706ecba7 tint: Add 'chromium_experimental_full_ptr_parameters' extension
Removes validation around pointer parameters.

Bug: tint:1758
Change-Id: I3adc48f780fc8c6f5525f9ecc280e2a406069b49
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112286
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-30 19:13:29 +00:00
dan sinclair 53f646c55c [ir] Split Binary from Instruction
This CL pulls a Binary instruction out of the Instruction class and
changes Instruction to just be the base class.

Bug: tint:1718
Change-Id: Iab234bd8c3eeebedb56dffff7ec7244cda51d4d5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112320
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-30 16:36:46 +00:00
Antonio Maiorano babc21f931 tint: const eval of modulo operator
Bug: tint:1581
Change-Id: Icf9aaab29f45a41e6c367f60bf98ccc8958a56c7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112322
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-30 16:02:49 +00:00
Antonio Maiorano 171c542bf7 tint: improve compile error when calling builder::Val with the wrong
type

Now that Val() creates a Vecor of Scalar, we get horrible template spew
if the input value is of the wrong type.

Bug: tint:1581
Change-Id: I464d369e25f6374d3ffce0ee4dc21723b7e533a9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112323
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-30 16:02:45 +00:00
dan sinclair 6e306d34b5 [ir] Remove operator<<
The use of `operator<<` gets much more convoluted as things are changed
over to pointers and with inheritance. This CL switches the `operator<<`
methods to `ToString` functions.

Bug: tint:1718
Change-Id: I85fd25b870d82d995eb27014c767abe071e543b0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112046
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-30 15:25:05 +00:00
Ben Clayton a160ccb8c3 tint/ir: Fix build
Destructors needs to be marked 'override', with no 'virtual'

Change-Id: I8648a160e6564c391b2c8be6ec6c7d02927c1707
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112382
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
2022-11-30 14:22:29 +00:00
Antonio Maiorano cfea220927 tint/number: add CheckedMod functions
Will be used to implement const eval of binary modulo.

Bug: tint:1581
Change-Id: Ib3cb422b247d57932d0b7cfc0ea8588206c39671
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112321
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-30 14:18:51 +00:00
Ben Clayton 4c593c356b tint/sem: Minor cleanup
Change-Id: I71607570907de4d8cd79f6472413e30cd0cd2c17
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112284
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-30 11:50:54 +00:00
Austin Eng 23e2792891 Pipe viewFormats from ExternalImageDXGI to the texture descriptor
Bug: dawn:1470
Change-Id: I14d93d92a56e1b5c124330a992966feb1ddc0944
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112241
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
2022-11-30 03:48:00 +00:00
Ben Clayton 205e16de63 tint/utils: Add Vector::Sort()
Convenience helper

Change-Id: I1d9fabcb1a89df1bc23a1e8805e5fd1caa68500b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112285
Kokoro: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-30 01:16:53 +00:00
Ben Clayton d205b716ca tint/resolver: forbid spelling non-instantiable pointer types
Fixed: tint:1553
Change-Id: Ib77777a7142d302fe2d0d083de601f7b5042ad6a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111881
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Ben Clayton <bclayton@google.com>
Reviewed-by: David Neto <dneto@google.com>
2022-11-30 01:13:35 +00:00
dan sinclair 31e0850560 [ir] Convert instruction to a pointer
This CL updates the instruction class to be a `Castable` and allocated
from an Arena. Uses are updated to store the const pointer.

Bug: tint:1718
Change-Id: Ie0b8353cb0c6fe6e2ba6e01bcd45871891aef903
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112045
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-29 23:29:47 +00:00
dan sinclair e272eaf30f [ir] Split Value into Temp and Constant.
This CL pulls the Temp and Constant classes out of the Value base class.

Bug: tint:1718
Change-Id: Ib7bccc7d3190ddd1c5cf493704e778dd23b5c008
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112044
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-29 23:27:46 +00:00
Shrek Shao 0982dcea69 Add DisallowDeprecatedPath toggle
The runtime toggle is off by default. When turned on,
the deprecation warning will be turned into validation error.

Replace device->EmitDeprecationWarning with
DAWN_MAKE_DEPRECATION_ERROR macro which make an internal
validation error or make a MaybeError{} based on the toggle.
The callsite can wrap it with a DAWN_TRY.

Bug: dawn:1563, dawn:1525, dawn:1269, dawn:1602
Change-Id: I7fd6f4f8ffc2e054e5fc5fc4aaf23c47f5733847
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111321
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-29 23:05:30 +00:00
Ben Clayton 34afd9b6c6 tint/resolver: Clean up variable validation
Move the validation of usage and address space to helper.
Improve diagnostics.
Fix / clean up tests.

This is in preparation for tint:1553

Change-Id: I2cbc8b851ecf02f214341f8cba6bd52413c42911
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111880
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-29 22:34:35 +00:00
shrekshao 67d52eb4f2 Fix stack-use-after-scope for usedInterstageVariables pointer
Bug: chromium:1393728
Change-Id: I078f898b9a6a237c81c15bb86736eb790cf6a261
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112260
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-29 22:00:13 +00:00
Ben Clayton 75b18674bf tint: Add Symbol inequality operator
Allows Symbol to be used in a std::variant

Change-Id: If366622c39b5c25d633f6507467c9859394577c3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112283
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Ben Clayton <bclayton@google.com>
2022-11-29 21:17:37 +00:00
Ben Clayton c158e845e6 tint/utils: Add Hashmap equality and hashing
Allows Hashmaps to be used as keys to other hashmaps.

Change-Id: I557d99515451c55e599dda847e15ce8e2b4500c5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112282
Kokoro: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-29 20:54:06 +00:00
dan sinclair 2d108ae5ed [ir] Make Value a pointer stored in the module.
This CL moves the Value class to pointers stored in the module.

Bug: tint:1718
Change-Id: I0441e898c011b34b0fe2f8ca716ea26c9c566bd7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112043
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-29 20:36:59 +00:00
Ben Clayton 028092a843 tint/utils: Add Hashmap::Keys(), Hashmap::Values()
Change-Id: If51cb3f42e50db842ecd006bcfbbbd060957e650
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112281
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Ben Clayton <bclayton@google.com>
2022-11-29 20:01:42 +00:00
Ben Clayton 05f3ebfc68 tint/utils: Make Hashmap iterator values mutable
Instead of always returning a const ref to the KeyValue, make the value
part mutable if the map is mutable.

Change-Id: I56512ba48a09300c51b1ac1ea31665a4941e2794
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112280
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-29 19:59:08 +00:00
Antonio Maiorano b200e74715 tint: simplify const eval binary op unit tests
Use the scalar overload of the case creation function.

Bug: tint:1581
Change-Id: I01b0d09ed99a9835583b1cee02ec323d2f2a546f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112204
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-29 19:32:46 +00:00
Austin Eng 75759ac273 Revert "CTS: Lift expectations for passing tests ComputeDispatchTests."
This reverts commit f42c4c7e5b.

Reason for revert: Tests are still failing. Win x86 bot doesn't run by
default on Dawn CQ.

Original change's description:
> CTS: Lift expectations for passing tests ComputeDispatchTests.
>
> Bug: dawn:1196
>
> Change-Id: I566f6171b6783fb51c3727aab64bd1488afa933f
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111800
> Commit-Queue: Austin Eng <enga@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: dawn:1196
Change-Id: I27799d6bcbc9e32079a3a39b94c1d42ec517e233
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112240
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Kokoro: Austin Eng <enga@chromium.org>
2022-11-29 16:39:52 +00:00
Antonio Maiorano 775dfbf7a8 tint: fix const eval of divide to emit errors on dbz and min/-1
Bug: tint:1581
Change-Id: I0459a7feb1be17f3570b68b54f1a0e0a1723880b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112180
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-29 15:08:40 +00:00
dan sinclair ec7a1d2a1b [ir] Remove the VarData from Value.
This CL removes VarData from Value. This will be implemented in another
way and is not currently used anywhere.

Bug: tint:1718
Change-Id: If5758cf050a080c6f68812219cd8ac968b54a8d6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112042
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-29 14:34:47 +00:00
Loko Kung fbe4ac0957 Fixes Vulkan command buffer leaks when an error occurs.
- Uses an anonymous function to delete command pool/buffers.
- Shuffles the code around a bit so that the CommandPoolAndBuffer are
  clearly next to the EncodingContext stuff to make it clear that we
  may be able to consolidate them in the future.

Bug: chromium:1372772
Change-Id: I92a1d0333b7a85d439b5963a58db69ac685c03a4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112181
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
2022-11-29 05:29:27 +00:00
dan sinclair 62a07738c8 [ir] Renaming Register and Op
This CL renames Register to Value and Op to Instruction.

Bug: tint:1718
Change-Id: Ided22c524213235369aae366a678d8058a516b60
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112041
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-28 22:02:39 +00:00
Antonio Maiorano 3728a505d6 tint: const eval of refract builtin
Bug: tint:1581
Change-Id: Iff64e8a680fbbc82e1f8efe2e2f8e05af8e3692c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111920
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-28 21:14:36 +00:00
Corentin Wallez f42c4c7e5b CTS: Lift expectations for passing tests ComputeDispatchTests.
Bug: dawn:1196

Change-Id: I566f6171b6783fb51c3727aab64bd1488afa933f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111800
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-28 15:25:33 +00:00
Antonio Maiorano ee7d6db047 tint: const eval of reflect builtin
Bug: tint:1581
Change-Id: Ife4409ca897a5754fe6b76c650d26fd66ef5880f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111901
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-28 15:13:16 +00:00
Antonio Maiorano ffeae7aa50 tint: const eval of faceForward builtin
Bug: tint:1581
Change-Id: Ia50b4ec4d494face5e7f438037a092cd1f839849
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111840
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2022-11-25 23:35:53 +00:00
Ben Clayton 95d174a118 tint/resolver: Further simplify test const eval framework
Replace ScalarArgs struct with Scalar variant and vector.
Fold ValueBase and ConcreteValue into Value.

Change-Id: I5cc5811a87f1aae162feb65fb6b1ecdac033d0fe
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111761
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-25 15:30:51 +00:00
Ben Clayton c572df265d tint/utils: Add operator<<() support to vector
Helpful for tests and the like.

Change-Id: I07f8c59af6db4d6a5629dca2dc985398b75eccf9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111760
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-25 14:53:23 +00:00
Antonio Maiorano d4908670e1 tint: clean up const eval test framework
- Remove Types variant, and replace with a type-erasing Value class
  instead. This is not only better for compile times, but makes the code
  much easier to understand.
- Value wraps an internal shared_ptr to a const detail::ValueBase,
  allowing it to be used as a value-type (i.e. copyable), while behaving
  polymorphically.
- Add static_asserts to Val, Vec, and Mat creation helpers to emit a
  more useful error message when the wrong type is passed in.

Bug: tint:1581
Change-Id: Icd0d08522bedb3eab12c44efa0d1555ed6e96458
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111700
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-25 05:47:42 +00:00
dan sinclair 8392a82a40 Const eval for `normalize`
This CL adds const-eval for the `normalize` builtin.

Bug: tint:1581
Change-Id: I6d5ba3e0ba507921137ca90c4caefa9daf88f735
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111740
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-25 04:25:18 +00:00
David Neto 91ad2bc384 Remove support for SPIRV-Tools API transition
Remove the scaffolding required to support SPIRV-Tools using C vs. C++11
enums internally.

Key downstream dependencies have been updated.

Change-Id: Ia1982ba25209b6c50ad01679ac0e9fee06388fb8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111680
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Auto-Submit: David Neto <dneto@google.com>
Commit-Queue: David Neto <dneto@google.com>
2022-11-24 22:41:58 +00:00
dan sinclair 724ad2a290 Const eval for `fma`
This CL adds const-eval for the `fma` builtin.

Bug: tint:1581
Change-Id: Ia4df818fec9d5d969b364b2c165400d787a9e275
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111584
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-24 21:54:00 +00:00
dan sinclair a2a8895020 Const eval for `distance`
This CL adds const-eval for the `distance` builtin.

Bug: tint:1581
Change-Id: Iee3af6474ace8e7baa230156f582f0a372f77cb7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111583
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-24 21:48:48 +00:00
dan sinclair 7736153c15 Const eval for `inverseSqrt`
This CL adds const-eval for the `inverseSqrt` builtin.

Bug: tint:1581
Change-Id: Ieef063416a8033b5fac9396e30c76c20b3360a90
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111581
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
2022-11-24 18:16:13 +00:00
Zhaoming Jiang ab9b5f3aa5 Tint: Implement f16 in uniform and storage address space
This CL implements f16 in uniform and storage address space, allowing
using f16 types in uniform and storage buffers on all backends. Tint
uint tests and Dawn E2E tests are added to validate the f16 types work
as expected.

Bug: tint:1473, tint:1502
Change-Id: I15e3de1033d3727f2ea33f4657f682c5f13c2153
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106320
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-24 05:25:35 +00:00
Zhaoming Jiang be2ed98e05 Dawn: Require both DXC compiler and validator version being 1.6 or higher
This CL change the DXC version checking logic to get both DXC compiler
and validator version, which are not necessarily identical, and require
both version being 1.6 or higher to enable the use_dxc toggle.
This CL also modify the src/dawn/tests/BUILD.gn and add a copy target as
data_deps for "dawn_test" template, which copy DXC binaries from Windows
10 SDK 20348 to out directory, to ensure that windows trybots running
dawn_end2end_tests.exe (e.g. win-dawn-rel) can access a DXC of version
1.6 and can run end-to-end tests with DXC.

Bug: tint:1719
Change-Id: I39b48f3dffdf121d3749af7aa4b3d0bed1c22ea8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110340
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2022-11-24 02:07:48 +00:00
Rafael Cintron 36317d9839 Release D3D12 command queue in Device::DestroyImpl
Repeatedly creating and destroying WebGPU devices in a loop causes
large amounts of memory to pile up in the GPU process. Much of this
memory comes from the D3D12 command queue.

Releasing the command queue early in DestroyImpl before the destructor
runs goes a long way towards relieving the memory pressure.

Bug: chromium:1377789
Change-Id: I3ff9a5f6cb3ea3136e41079343532cbe732b6cc4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111280
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
2022-11-24 01:10:35 +00:00
Antonio Maiorano 9ba5f9e2c6 tint: const eval of transpose builtin
Bug: tint:1581
Change-Id: Ia614647bc4a3d24a53d45981ddcdb1c84ea84608
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111600
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2022-11-23 23:12:56 +00:00
dan sinclair b785dc1e39 Update parser to match * and & spec change.
The * and & operator grammar was updated in the spec to closer
match other languages. This CL updates the Tint WGSL parser to
match the current spec.

Bug: tint:1756
Change-Id: I81b7c373bbd6a540b9273813c63a29487e2907ce
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111580
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2022-11-23 21:33:11 +00:00
Ben Clayton 7c6e229a18 tint/utils: Make Hashmap::Find() safer to use
Don't return a raw pointer to the map entry's value, instead return a new Reference which re-looks up the entry if the map is mutated.

Change-Id: I031749785faeac98e2a129a776493cb0371a5cb9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/110540
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-23 21:04:25 +00:00
Ben Clayton 597ad53029 tint/transform: Add HoistToDeclBefore::VariableKind
Enums are scientifically proven to be 96.4% better than a bool for parameters.

Also throw in kConst because we can.

Change-Id: I788504d8d452d6a879d2d675891e3171db6a40f2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111244
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2022-11-23 20:05:10 +00:00
Ben Clayton ed998e91ab tint: Suffix builtin return types with '_f32'
If the template type is f32.

See: https://github.com/gpuweb/gpuweb/pull/3629
Change-Id: Ia686d77b4dbc169d7ef69a91d67e45357bee199f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111442
Reviewed-by: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2022-11-23 19:57:00 +00:00
Antonio Maiorano 05c8daac42 tint: const eval of determinant builtin
Bug: tint:1581
Change-Id: Ifed8202ba2346eee435ee4e3d0e82ab614a86255
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/111281
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Kokoro: Antonio Maiorano <amaiorano@google.com>
2022-11-23 19:16:15 +00:00