10225 Commits

Author SHA1 Message Date
Ben Clayton
41085503e1 Add hlsl::TestHelperBase::Validate()
Looks for DXC on PATH.
If found, it will invoke DXC with the shader program generated by the writer to verify the shader can compile.

Change-Id: Iad8b4021bac16d01214b500ddb89b5f743927ce9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41943
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-18 16:19:09 +00:00
Corentin Wallez
16ca1588d1 Move QueueWriteBufferValidationTests to their own file.
They were in QueueSubmitValidationTests which was confusing.

Bug: None
Change-Id: I58406149e9e71feafaf111c35aed255c78b9b642
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41726
Commit-Queue: Stephen White <senorblanco@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-02-18 15:56:48 +00:00
Ben Clayton
ce7e18e87c Add tint::Command
Command is a helper used by tests for executing a process with a number of arguments and an optional stdin string, and then collecting and returning the process's stdout and stderr output as strings.

Will be used to invoke HLSL and MSL shader compilers to verify our test generated code actually compiles.

Change-Id: I5cd4ca63af9aaa29be7448bb4fa8422e6d42a8ce
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41942
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-18 15:49:08 +00:00
Ben Clayton
a87fda9225 Add tint::TmpFile
TmpFile constructs a temporary file that can be written to, and is automatically deleted on destruction.

Will be used to create a temporary source file for verifying generated HLSL and MSL against their shader compilers.

Change-Id: Ieaa6f257b93f4f2193dafe6297603816f6964928
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41941
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-18 15:39:00 +00:00
Austin Eng
1b31dc0bb2 Add a BufferConsumer primitive for wire [de]serialization
BufferConsumer wraps a buffer pointer and size and exposes a
limited number of operations to get data while decrementing
the remaining available size. This makes it so that code
reading or writing into a buffer cannot easily consume more
bytes than available.

This CL guards against serialization overflows using
BufferConsumer, and it implements GetPtrFromBuffer
(for deserialization) on top of BufferConsumer. A future patch
will make the rest of the deserialization code use BufferConsumer.

Bug: dawn:680
Change-Id: Ic2bd6e7039e83ce70307c2ff47aaca9891c16d91
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41780
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-02-17 22:14:56 +00:00
Ben Clayton
7206e25798 Remove deprecated APIs
Remove the Parser classes from the wgsl and spirv namespaces.
These have been replaced with a Parse() method.

Remove the TypeDeterminer::Run() method, this was not called by tint and
the TypeDeterminer is now non-public API.

Change-Id: I5ddb82768da04398ab3958d1647be44f9fe30c21
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41840
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-17 20:15:25 +00:00
Ben Clayton
6b4924fb0e Add TINT_UNREACHABLE() and TINT_ICE() helper macros
Appends an error message with the tint compiler source location to the
provided diagnositic list, and then calls the global error handler if
one is set.
Tests and the sample app now register an error handler to print the
diagnostic list to stderr and abort when NDEBUG is not defined.

All uses of assert(false) have been fixed up to use these macros.

Change-Id: I2f63e51ed86ac23883301d280070bd1a357c6cb2
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41620
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-17 20:13:34 +00:00
Stephen White
eb71aaf689 Implement a --backend= flag for DawnTest.
This version renames HasBackendType() -> HasBackendTypeFilter() and
adds a test, similar to HasVendorIdFilter().

Bug: dawn:687
Change-Id: I444d3cb668eb7402ba45f14aaec290390f4c3944
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41900
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2021-02-17 17:07:08 +00:00
Corentin Wallez
2ad837b2d2 Rolling 2 dependencies
Roll third_party/shaderc/ 6216d098d..8d081127e (11 commits)

6216d098d8..8d081127ee

$ git log 6216d098d..8d081127e --date=short --no-merges --format='%ad %ae %s'
2021-02-09 quaresma.jose cmake: add option to skip build the examples (#1170)
2021-02-01 dneto Fix typo
2021-01-28 dneto Improve file+line parsing from Glslang messages
2021-01-18 rharrison Deprecate WebGPU SPIRV support (#1167)
2021-01-06 rharrison Roll 4 dependencies (#1165)
2020-12-09 rharrison Start shaderc v2020.5
2020-12-09 rharrison Finalize v2020.4
2020-12-09 rharrison Updated CHANGES
2020-12-09 rharrison Rolling 5 dependencies (#1161)
2020-12-07 dneto Update SPIRV-Tools, SPIRV-Headers, glslang with raytracing fixes
2020-11-12 dneto copyright check: Exclude .venv in source tree

Roll third_party/vulkan-deps/ c493c6112..0d42e8392 (141 commits)

https://chromium.googlesource.com/vulkan-deps/+log/c493c6112021..0d42e83928f7

$ git log c493c6112..0d42e8392 --date=short --no-merges --format='%ad %ae %s'
2021-02-17 chromium-autoroll Roll SPIRV-Cross from 92d379bab456 to 6f1f6775f35b (1 revision)
2021-02-17 chromium-autoroll Roll SPIRV-Cross from bae17e820438 to 92d379bab456 (1 revision)
2021-02-16 chromium-autoroll Roll SPIRV-Tools from c79edd260c2b to 05cda81aba8c (1 revision)
2021-02-16 chromium-autoroll Roll Vulkan-ValidationLayers from f9eec56cc82f to 74aa762a95df (1 revision)
2021-02-16 chromium-autoroll Roll Vulkan-ValidationLayers from 6302c649ca95 to f9eec56cc82f (1 revision)
2021-02-16 chromium-autoroll Roll Vulkan-Tools from 6952dfcc1df5 to 88ea55de928a (1 revision)
2021-02-16 chromium-autoroll Roll Vulkan-ValidationLayers from 97e718edc638 to 6302c649ca95 (2 revisions)
2021-02-16 chromium-autoroll Roll Vulkan-ValidationLayers from 47bbe90d54c8 to 97e718edc638 (1 revision)
2021-02-16 chromium-autoroll Roll Vulkan-ValidationLayers from c62432713f23 to 47bbe90d54c8 (1 revision)
2021-02-16 chromium-autoroll Roll SPIRV-Cross from 5789e3eed9bc to bae17e820438 (1 revision)
2021-02-15 chromium-autoroll Roll glslang from b0f8a0c3abb9 to 51b86c1a2b77 (1 revision)
2021-02-15 chromium-autoroll Roll glslang from 6ab923c69df7 to b0f8a0c3abb9 (1 revision)
2021-02-15 chromium-autoroll Roll Vulkan-Loader from a66ceba27225 to c5678a03db38 (1 revision)
2021-02-15 chromium-autoroll Roll SPIRV-Cross from 05a1a07f700f to 5789e3eed9bc (1 revision)
2021-02-15 chromium-autoroll Roll SPIRV-Cross from 8f5ab50fb832 to 05a1a07f700f (1 revision)
2021-02-15 chromium-autoroll Roll SPIRV-Cross from 4741bbaa641d to 8f5ab50fb832 (1 revision)
2021-02-15 chromium-autoroll Roll Vulkan-Headers from ec2db85225ab to 1d99b835ec3c (1 revision)
2021-02-12 chromium-autoroll Roll Vulkan-ValidationLayers from 7de10e83093e to c62432713f23 (1 revision)
2021-02-12 jmadill Update commit message script to write as strings.
2021-02-12 chromium-autoroll Roll Vulkan-ValidationLayers from e02e6f73e68c to 7de10e83093e (1 revision)
2021-02-12 chromium-autoroll Roll glslang from 4afd69177258 to 6ab923c69df7 (1 revision)
2021-02-11 chromium-autoroll Roll SPIRV-Tools from cfa1dadb1e62 to c79edd260c2b (1 revision)
2021-02-11 chromium-autoroll Roll Vulkan-ValidationLayers from 01c9ae9b47e5 to e02e6f73e68c (1 revision)
2021-02-10 chromium-autoroll Roll Vulkan-ValidationLayers from d1bfbcd594d6 to 01c9ae9b47e5 (1 revision)
2021-02-10 chromium-autoroll Roll Vulkan-Loader from ff6a9e31358a to a66ceba27225 (2 revisions)
2021-02-10 chromium-autoroll Roll SPIRV-Tools from f0c96f40c79d to cfa1dadb1e62 (1 revision)
2021-02-09 chromium-autoroll Roll Vulkan-Tools from a03938051ff6 to 6952dfcc1df5 (1 revision)
2021-02-09 chromium-autoroll Roll Vulkan-ValidationLayers from 7b727b773d50 to d1bfbcd594d6 (1 revision)
2021-02-09 chromium-autoroll Roll Vulkan-ValidationLayers from 64ffe55c3bf6 to 7b727b773d50 (2 revisions)
2021-02-09 jmadill Add script for formatting commit messages.
2021-02-09 chromium-autoroll Roll Vulkan-Loader from 6fcd515be5b3 to ff6a9e31358a (1 revision)
2021-02-09 chromium-autoroll Roll glslang from 386b4fcb28e5 to 4afd69177258 (1 revision)
2021-02-09 chromium-autoroll Roll Vulkan-ValidationLayers from b2c81e3615bf to 64ffe55c3bf6 (3 revisions)
2021-02-08 chromium-autoroll Roll Vulkan-ValidationLayers from db287d4ad474 to b2c81e3615bf (1 revision)
2021-02-08 chromium-autoroll Roll Vulkan-ValidationLayers from 264cce03f6e4 to db287d4ad474 (2 revisions)
2021-02-06 chromium-autoroll Roll Vulkan-ValidationLayers from 047a6b59c90b to 264cce03f6e4 (1 revision)
2021-02-05 chromium-autoroll Roll Vulkan-ValidationLayers from 6ee1006a4ec9 to 047a6b59c90b (1 revision)
2021-02-05 chromium-autoroll Roll Vulkan-ValidationLayers from 773871cc7e99 to 6ee1006a4ec9 (2 revisions)
2021-02-05 chromium-autoroll Roll SPIRV-Tools from 3ad7e5fcc0ee to f0c96f40c79d (1 revision)
2021-02-05 chromium-autoroll Roll Vulkan-ValidationLayers from 2292623a4339 to 773871cc7e99 (1 revision)
2021-02-05 chromium-autoroll Roll Vulkan-ValidationLayers from 4b8c885ffebf to 2292623a4339 (1 revision)
2021-02-05 chromium-autoroll Roll SPIRV-Tools from f11f74348158 to 3ad7e5fcc0ee (1 revision)
2021-02-05 chromium-autoroll Roll SPIRV-Tools from c91a25af13e1 to f11f74348158 (1 revision)
2021-02-05 chromium-autoroll Roll Vulkan-ValidationLayers from d68ee750eb0b to 4b8c885ffebf (1 revision)
2021-02-04 chromium-autoroll Roll Vulkan-ValidationLayers from e3025c6cdeba to d68ee750eb0b (2 revisions)
2021-02-04 chromium-autoroll Roll Vulkan-ValidationLayers from 1c3d365b1008 to e3025c6cdeba (1 revision)
2021-02-03 chromium-autoroll Roll glslang from 5c4f421121c4 to 386b4fcb28e5 (1 revision)
2021-02-03 chromium-autoroll Roll Vulkan-Loader from fd5cc6962213 to 6fcd515be5b3 (1 revision)
2021-02-03 chromium-autoroll Roll Vulkan-ValidationLayers from 5f585ae240dd to 1c3d365b1008 (1 revision)
2021-02-03 chromium-autoroll Roll Vulkan-ValidationLayers from 669dfd5ce67f to 5f585ae240dd (1 revision)
(...)
2021-01-22 chromium-autoroll Roll SPIRV-Tools from f37547c73a98 to 968659aee8af (1 revision)
2021-01-21 chromium-autoroll Roll glslang from 9b4e82efb482 to 6abdde3ce511 (1 revision)
2021-01-20 chromium-autoroll Roll SPIRV-Tools from 1bd539b9bfc4 to f37547c73a98 (1 revision)
2021-01-20 chromium-autoroll Roll SPIRV-Tools from 56f8ed48efd5 to 1bd539b9bfc4 (1 revision)
2021-01-19 chromium-autoroll Roll SPIRV-Tools from e25db023c47a to 56f8ed48efd5 (1 revision)
2021-01-19 chromium-autoroll Roll Vulkan-ValidationLayers from c7ffe6890160 to ab73ad637606 (2 revisions)
2021-01-19 chromium-autoroll Roll Vulkan-ValidationLayers from efecc309816c to c7ffe6890160 (2 revisions)
2021-01-19 chromium-autoroll Roll Vulkan-ValidationLayers from fb6e414f76dc to efecc309816c (1 revision)
2021-01-19 chromium-autoroll Roll Vulkan-ValidationLayers from 03e41cc0c2a8 to fb6e414f76dc (2 revisions)
2021-01-19 chromium-autoroll Roll Vulkan-ValidationLayers from 6886c4b57f10 to 03e41cc0c2a8 (3 revisions)
2021-01-19 chromium-autoroll Roll Vulkan-ValidationLayers from 10651a9c0bc2 to 6886c4b57f10 (1 revision)
2021-01-19 chromium-autoroll Roll glslang from 5b7d68ca6b3f to 9b4e82efb482 (1 revision)
2021-01-19 chromium-autoroll Roll glslang from 3de5cfe50ede to 5b7d68ca6b3f (1 revision)
2021-01-19 chromium-autoroll Roll Vulkan-Headers from 9efc4a631161 to 684390cedbff (1 revision)
2021-01-19 chromium-autoroll Roll SPIRV-Tools from 8383bd5d6f26 to e25db023c47a (1 revision)
2021-01-19 chromium-autoroll Roll Vulkan-ValidationLayers from ca3216a3a24f to 10651a9c0bc2 (1 revision)
2021-01-18 chromium-autoroll Roll Vulkan-ValidationLayers from fb2ab876edcd to ca3216a3a24f (2 revisions)
2021-01-18 chromium-autoroll Roll SPIRV-Tools from ee39b5db5f1d to 8383bd5d6f26 (1 revision)
2021-01-18 chromium-autoroll Roll Vulkan-Loader from 9ba835885ffe to aed40d52837d (1 revision)
2021-01-15 chromium-autoroll Roll Vulkan-Tools from 93a6c58d76e1 to 7c25ce965b92 (1 revision)
2021-01-15 chromium-autoroll Roll Vulkan-Tools from c86cec54abe6 to 93a6c58d76e1 (1 revision)
2021-01-15 chromium-autoroll Roll SPIRV-Tools from 9150cd441f43 to ee39b5db5f1d (1 revision)
2021-01-15 chromium-autoroll Roll SPIRV-Cross from a5eaf2f44a5d to 9acb9ec31f5a (1 revision)
2021-01-14 chromium-autoroll Roll SPIRV-Tools from b2cfc5d1ceca to 9150cd441f43 (1 revision)
2021-01-14 chromium-autoroll Roll Vulkan-ValidationLayers from 586c46b96b62 to fb2ab876edcd (1 revision)
2021-01-14 chromium-autoroll Roll SPIRV-Cross from 820179bf4689 to a5eaf2f44a5d (1 revision)
2021-01-14 chromium-autoroll Roll SPIRV-Tools from cec658c11603 to b2cfc5d1ceca (1 revision)
2021-01-13 chromium-autoroll Roll Vulkan-ValidationLayers from f5dea94f6f15 to 586c46b96b62 (1 revision)
2021-01-13 chromium-autoroll Roll Vulkan-Tools from a3b988fa5588 to c86cec54abe6 (1 revision)
2021-01-13 chromium-autoroll Roll Vulkan-ValidationLayers from 04b58c5bea3a to f5dea94f6f15 (1 revision)
2021-01-13 chromium-autoroll Roll SPIRV-Tools from 7bbe1a316419 to cec658c11603 (2 revisions)
2021-01-12 chromium-autoroll Roll Vulkan-Tools from be70e017bff5 to a3b988fa5588 (1 revision)
2021-01-12 chromium-autoroll Roll Vulkan-ValidationLayers from 61a57c023e10 to 04b58c5bea3a (1 revision)
2021-01-12 chromium-autoroll Roll SPIRV-Tools from c32277c0ba0d to 7bbe1a316419 (1 revision)
2021-01-11 chromium-autoroll Roll Vulkan-Tools from a7825740f316 to be70e017bff5 (1 revision)
2021-01-11 chromium-autoroll Roll Vulkan-ValidationLayers from 645a15bbaa59 to 61a57c023e10 (1 revision)
2021-01-11 chromium-autoroll Roll Vulkan-ValidationLayers from 46237b593c3f to 645a15bbaa59 (1 revision)
2021-01-11 chromium-autoroll Roll SPIRV-Tools from f3ccb633dfd7 to c32277c0ba0d (1 revision)
2021-01-10 chromium-autoroll Roll Vulkan-ValidationLayers from f0634ebbb36f to 46237b593c3f (2 revisions)
2021-01-09 chromium-autoroll Roll SPIRV-Cross from 702c903f982d to 820179bf4689 (1 revision)
2021-01-08 chromium-autoroll Roll Vulkan-ValidationLayers from 04cf3fd95555 to f0634ebbb36f (1 revision)
2021-01-08 chromium-autoroll Roll Vulkan-ValidationLayers from ebd3ea2ecbac to 04cf3fd95555 (2 revisions)
2021-01-08 chromium-autoroll Roll SPIRV-Cross from ce18d1b8a563 to 702c903f982d (1 revision)
2021-01-08 chromium-autoroll Roll SPIRV-Cross from 0e5078dc0cfb to ce18d1b8a563 (1 revision)
2021-01-08 chromium-autoroll Roll SPIRV-Cross from 134a52003407 to 0e5078dc0cfb (1 revision)
2021-01-08 chromium-autoroll Roll SPIRV-Cross from 234c65c0f32c to 134a52003407 (1 revision)
2021-01-07 chromium-autoroll Roll SPIRV-Tools from ad77ed7a8d52 to f3ccb633dfd7 (1 revision)
2021-01-07 chromium-autoroll Roll Vulkan-ValidationLayers from 9f10caf9c4f3 to ebd3ea2ecbac (2 revisions)
2021-01-07 chromium-autoroll Roll Vulkan-ValidationLayers from cc435b55410a to 9f10caf9c4f3 (2 revisions)
2021-01-07 chromium-autoroll Roll SPIRV-Tools from aa005e8bd435 to ad77ed7a8d52 (1 revision)

Created with:
  roll-dep third_party/shaderc third_party/vulkan-deps

Change-Id: I70784aee8bd05fefa51a475f9d58e0c8cb1b9f5c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41860
Commit-Queue: Austin Eng <enga@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-02-17 16:43:47 +00:00
Ben Clayton
c7ca7668cc Fix TypesBuilder::builder pointer initialization
When copying or moving a ProgramBuilder, we always want the ProgramBuilder::ty to point back to the owner.
We were previously std::move()'ing the ty field, which is not correct - this will result in the TypesBuilder pointing to the wrong ProgramBuilder.

I'm not sure why we've not seen any issues with this using clang, but running under MSVC immediately highlighted this brokenness.

Change-Id: I4293bb00ac4fbdfa66d12b1504a7bd060e014cd6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41861
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-17 16:23:52 +00:00
Ben Clayton
34ae7d2ce7 wgsl/parser: Avoid stack overflows
Most recursive control flow passes through Sync().
Error out if the Sync() function is recursively called too many times.

This replaces the more specific kMaxConstExprDepth, which also passes
through Sync().

Fixed: chromium:1178436
Change-Id: I64a05f9f6a4fe6d2b53a3ca75642b30e98c7a35f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41724
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-17 16:16:02 +00:00
Dawn Autoroller
0c0d83a618 Roll Tint from c8fa020a5e97 to 52296de52893 (18 revisions)
https://dawn.googlesource.com/tint.git/+log/c8fa020a5e97..52296de52893

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/tint-dawn
Please CC enga@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Bug: None
Tbr: enga@google.com
Change-Id: I364451f2e611771ef67792fdb18ec8b75a80cb3c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41920
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-02-17 16:03:57 +00:00
Austin Eng
0b17eb8e19 Update more Dawn tests to use WGSL
Bug: dawn:572
Change-Id: I0f567da883005d909d498a7a88e9b73137201919
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41820
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
2021-02-17 15:49:07 +00:00
Ben Clayton
52296de528 Add tint::Cloneable base class
The CloneContext was previously dealing with pointers to CastableBase, which has no guarantees that the object was actually cloneable.
Add a Cloneable base class that CloneContext can use instead.

Improves readability and produces cleaner compiler errors if you try to clone a non-cloneable object.

Change-Id: I4352fc5dab3da434e4ab160a54c4c82d50e427b4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41722
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-17 13:17:39 +00:00
Ben Clayton
f81df124f6 Add utils/unique_vector.h from TypeDeterminer
Add tests.

Change-Id: I064fbbe2387ebe980776ee99ed2ff48d6ea5d5b5
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41621
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: David Neto <dneto@google.com>
2021-02-17 13:10:49 +00:00
Ben Clayton
43a160dcbb Validator: Strip out unreachable code
A large chunk of validation is now handled by the IntrinsicTable. Remove this.

Also fail validation and propagate diagnostics from the Program to the validator if attempting to validate a broken program. This should prevent undefined behaviour if the user forgets to check the program.IsValid() after parsing.

Change-Id: I2972e8ce296d6d6fca318cee48bc6929e5ed52db
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41549
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2021-02-17 01:08:41 +00:00
Ben Clayton
4602ce7195 ast: Remove @notes about semantic info not being cloned
Semantic info is no longer part of the ast, so it is now odd to mention semantic info on a clone method for the AST.

Improve the documentation around cloning on the Program methods and the CloneContext.

Change-Id: Ib1cf255acfd994521aaa5add2789e5117db6b072
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41548
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2021-02-17 01:01:03 +00:00
Ben Clayton
81a29fe555 ProgramBuilder: Remove storage parameter from [Global]Const()
Storage classes are unused for constants.

Also trim extra arguments to these variable constructor functions that are already defaulted to the same value.

Change-Id: Ia0b44364de000bfb8799de15827ce08fcce5f5be
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41541
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2021-02-17 00:26:52 +00:00
Ben Clayton
37571bc32d ProgramBuilder: Swap parameter order for Var and Const
Move the storage parameter after type.
Const() has no use for storage classes, so this parameter will be removed in the next change.
This reordering keeps Var() and Const() parameter types identical for the first two non-optional fields

Change-Id: I66669d19fa2175c4f10f615941e69efcab4c23e1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41540
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-16 23:57:01 +00:00
Ben Clayton
4b9e7f92b9 transform::Hlsl: Hoist array initializers out of expressions
Move these into a separate const variable declaration statement just above the before the use of the array initializer.
HLSL does not allow array initializers as part of a sub-expression

Fixed: tint:406
Change-Id: I98f93f2eca172865691831011c852de5e57c5ad6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41484
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
2021-02-16 23:21:51 +00:00
Ben Clayton
f77771e21b CloneContext: Add InsertBefore()
Inserts objects before others when cloning

Change-Id: Ibf247abae3aeb3d351048f1182db2a2b42b2c677
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41547
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: David Neto <dneto@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-16 23:09:31 +00:00
Ben Clayton
e909744640 CloneContext: Use As<T>() instead of static_cast<T>
And assert that the cast succeeded.

There is a danger with Replace() or ReplaceAll(), where you can end up replacing a node with another node of an incompatible type for some reference of that object. Previously this would silently cast to the incorrect type, and Bad Things would happen. Now we will assert in this situation.

I have not observed this issue happening (all current uses of Replace() and ReplaceAll() are believed to be safe). This is just an edge case I've spotted and wanted to add some safety belts for.

Change-Id: Icf4a4fe76f7bc14bcc6b274de68f7d0b3d85d71f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41546
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2021-02-16 22:27:11 +00:00
Stephen White
a5ba2827f5 GL: Implement WriteTexture for compressed textures.
Bug: dawn:681

Change-Id: I5d9cd3636a656df1ba9d23964c18011b9cfcf5c0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41440
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2021-02-16 22:07:22 +00:00
James Price
ea9e471e30 [spirv-writer] Add support for sample index/mask builtins
Use a sanitizing transform to convert scalar `sample_mask_{in,out}`
variables to single element arrays.

Add the `SampleRateShading` capability if the `sample_index` builtin
is used.

Bug: tint:372
Change-Id: Id7280e3ddb21e0a098d83587d123c97e3c34fa1b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41662
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
2021-02-16 21:44:13 +00:00
James Price
1413733be8 [wgsl-reader] Add support for sample index/mask builtins
Bug: tint:372
Change-Id: I2cbadf31f350c49ae0689d8b05f3f7a92d074efd
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/40560
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2021-02-16 21:37:01 +00:00
James Price
c9af597997 [semantic] Add semantic::Variable::Users()
Returns a list of ast::IdentifierExpression* nodes that reference the
variable.

Change-Id: I36f475c6ddf5482f9ae9b432190405625f379f0d
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41661
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-16 21:15:01 +00:00
Ben Clayton
45b18ce064 Fix CMake build, fix doxygen warning
inspector_test.cc: Remove unused method
test_helper.h: Fix comment type on member

Change-Id: I53b1392fa1fa8154efdcd471d1df1bbf27e04dc9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41728
Commit-Queue: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-16 20:56:21 +00:00
Bryan Bernhart
536c7aea7d Generalize multi-aspect formats
Removes special casing depth-stencil or multi-planar formats.
Like depth-stencil, NV12 views can be created but not sampled.

BUG=dawn:551

Change-Id: I3cd43d079253f4ee45660d0efd2723e1650f88d3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41342
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-02-16 19:55:09 +00:00
Ryan Harrison
6dd34f7e34 Remove GLSL SPIRV-Cross fuzzer
Releasing this configuration is no longer part of the PoR, so no need
to fuzz it.

BUG=dawn:683,chromium:904410

Change-Id: Ic499c68d48b88240361f4ffa937c878b3e3c8526
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41760
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-02-16 19:19:58 +00:00
Ben Clayton
f97b9c9310 Add semantic::Statement
Add Stmt() accessor on all semantic::Expressions so the owning statement can be retrieved.

Change-Id: I5d584335a6d137fdeab0b8d74a161fcae9b46080
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41545
Reviewed-by: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
2021-02-16 18:45:45 +00:00
James Price
e7dab3c9ea [ast] Rename Builtin::kSampleId to Builtin::kSampleIndex
Other builtins use WGSL terms instead of SPIR-V terms too, and the
WGSL writer is relying on the output of `operator<<(Builtin)`, which
just stringifies the name of the enum. This also matches the
equivalent `semantic::Usage::kSampleIndex` enum.

Added test coverage for WGSL builtin generation.

Bug: tint:372
Change-Id: I8077d22c4a5ddf67b1ad07e7365453db74db8e7d
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41660
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: James Price <jrprice@google.com>
2021-02-16 18:21:41 +00:00
Dawn Autoroller
71b8c9f4ad Roll Tint from 545c9742d5b8 to c8fa020a5e97 (1 revision)
https://dawn.googlesource.com/tint.git/+log/545c9742d5b8..c8fa020a5e97

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/tint-dawn
Please CC enga@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Bug: None
Tbr: enga@google.com
Change-Id: Ic7b1ae318e272b06853e77b607f518439bc0a43a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41740
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-02-16 15:21:26 +00:00
Ryan Harrison
d086c147d0 Add support fo extracting information about Storage Textures
BUG=tint:489

Change-Id: I28e4b0e568aea463971e9d2f5a04f04e942e2564
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41600
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-16 15:10:23 +00:00
Vasyl Teliman
652d40a3d1 wgsl-reader: Add support for nested array accessors
Bug: tint:501
Change-Id: I23f4e73696f48d29b3f9d63997fa1c5004cf4d34
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41622
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2021-02-16 14:53:49 +00:00
David Neto
909c166034 spirv-reader: ignore NonSemantic. extended instructions
This is the first step in being able to read code generated
by Clspv.

Actively ignore the instructions instead of applying stripping
transform before hand. That way we have a chance at properly counting
instructions, which helps produce better diagnostics.

Bug: tint:3
Change-Id: I82bde88897485380d70dc8b287c3843eae5489b6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41641
Auto-Submit: David Neto <dneto@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-16 14:51:48 +00:00
James Price
c8fa020a5e Add missing WGSL writer test files to BUILD.gn
These files were added in dfd1714, but only added to CMakeLists.txt.

Change-Id: I775e8fef68b2f4900a6c562533512f0eda01b795
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41700
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-16 14:39:48 +00:00
Dawn Autoroller
e61c9d8688 Roll Tint from dc9d3e0cd5f2 to 545c9742d5b8 (2 revisions)
https://dawn.googlesource.com/tint.git/+log/dc9d3e0cd5f2..545c9742d5b8

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/tint-dawn
Please CC kainino@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Bug: None
Tbr: kainino@google.com
Change-Id: I64a817517897c7f25a2faf9503d31d6062a05e1f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41680
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-02-12 21:28:31 +00:00
Dawn Autoroller
d44159c23c Roll Tint from c2118b0dcb2a to dc9d3e0cd5f2 (11 revisions)
https://dawn.googlesource.com/tint.git/+log/c2118b0dcb2a..dc9d3e0cd5f2

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/tint-dawn
Please CC kainino@google.com on the revert to ensure that a human
is aware of the problem.

To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/master/autoroll/README.md

Bug: None
Tbr: kainino@google.com
Change-Id: Iff28c93af0015169247c18b9435ed802fcd820a4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41580
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-02-11 20:49:37 +00:00
Ben Clayton
545c9742d5 Cloning: move arguments to create() into temporary locals
In C++ argument evaluation order is undefined. MSVC and Clang evaluate these in different orders, leading to hilarity when writing tests that expect a deterministic ordering.

Pull out all the argument expressions to create() in the clone functions so a cloned program is deterministic in its ordering between compilers.

Change-Id: I8e2de31398960c480ce7ee1dfaac4f67652d2dbc
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41544
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
2021-02-11 20:27:14 +00:00
Ben Clayton
7b6bcb6e0b Fix AST declaration order when cloning Programs
Change 41302 correctly fixed up Module::Clone(), but this wasn't actually called by the CloneContext, as Module::Clone() returns a new Module, where as the CloneContext needs to clone into an existing Module.

Refactor the code so that this duplicated logic is moved into a single Module::Copy() method.

Fixed: 1177275
Change-Id: Ia8c45ef05e03b2891b5785ee6f425dd01cb989c6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41542
Reviewed-by: James Price <jrprice@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2021-02-11 20:23:03 +00:00
dan sinclair
dc9d3e0cd5 Roll dependencies
Roll third_party/googletest/ 389cb68b8..f3ef7e173 (40 commits)

389cb68b87..f3ef7e173f

$ git log 389cb68b8..f3ef7e173 --date=short --no-merges --format='%ad %ae %s'
2021-02-04 absl-team Googletest export
2021-02-03 dmauro Googletest export
2021-02-03 absl-team Googletest export
2021-02-02 absl-team Googletest export
2021-02-02 absl-team Googletest export
2021-02-02 absl-team Googletest export
2021-02-02 dmcardle Googletest export
2021-02-02 absl-team Googletest export
2021-02-01 absl-team Googletest export
2021-01-27 absl-team Googletest export
2021-01-27 absl-team Googletest export
2021-01-26 absl-team Googletest export
2021-01-26 absl-team Googletest export
2021-01-25 absl-team Googletest export
2021-01-25 absl-team Googletest export
2021-01-22 absl-team Googletest export
2021-01-20 absl-team Googletest export
2021-01-20 ofats Googletest export
2021-01-19 absl-team Googletest export
2021-01-19 absl-team Googletest export
2021-01-19 krzysio Googletest export
2021-01-19 absl-team Googletest export
2021-01-16 dreamer.tan Fix link to Google Test Primer
2021-01-15 absl-team Googletest export
2021-01-15 absl-team Googletest export
2021-01-14 absl-team Googletest export
2021-01-14 absl-team Googletest export
2021-01-10 krystian.kuzniarek fix a broken link
2021-01-13 dmauro Googletest export
2021-01-13 dmauro Googletest export
2021-01-13 absl-team Googletest export
2021-01-08 absl-team Googletest export
2021-01-07 absl-team Googletest export
2021-01-05 absl-team Googletest export
2021-01-05 absl-team Googletest export
2021-01-05 absl-team Googletest export
2020-12-29 absl-team Googletest export
2021-01-06 davidben Restore GTEST_ATTRIBUTE_PRINTF_ on ColoredPrintf
2021-01-03 krystian.kuzniarek remove explicit function overloads of CmpHelper?? for BiggestInt arguments
2020-12-25 mattias.ellert Fix gtest-help-test failure on GNU/kFreeBSD

Created with:
  roll-dep third_party/googletest

Roll third_party/spirv-headers/ faa570afb..75b30a659 (4 commits)

faa570afbc..75b30a659c

$ git log faa570afb..75b30a659 --date=short --no-merges --format='%ad %ae %s'
2020-08-19 jason Add header changes for SPV_EXT_shader_atomic_float_min_max
2021-01-27 jason.ekstrand Re-run buildSpvHeaders to fix indentation
2021-01-19 dneto Header generator: Check enumerant ordering
2021-01-05 ben.ashbaugh add function control bitfield reservation section reserve bit 16 for an upcoming Intel extension

Created with:
  roll-dep third_party/spirv-headers

Roll third_party/gpuweb-cts/ 89ba81c39..d836e71f2 (20 commits)

89ba81c395..d836e71f29

$ git log 89ba81c39..d836e71f2 --date=short --no-merges --format='%ad %ae %s'
2021-02-11 corentin Implement some of api:validation:vertex_state (#461)
2021-02-10 kainino standardizeExtent3D
2021-02-10 kainino factor out makeBufferWithContents
2021-02-10 kainino add more texture format subtypes
2021-02-09 kainino roll types
2021-02-10 kainino renames in operation test helpers
2021-02-03 kainino use new helpers, subcases, selectDevice in operation tests
2021-02-03 kainino [trivial] Move helpers to util/texture/image_copy.ts
2021-02-10 jamesprice.dev Remove explicit storage class from samplers/textures (#464)
2021-02-08 enrico.galli Add button to print creation stack to console in /standalone/ (#457)
2021-02-08 corentin Update the test plan for validation/vertex_state (#458)
2021-02-05 shrekshao Update wgsl comments from # to // (#456)
2021-02-04 kainino Use subcases in copyImageBitmapToTexture tests (#453)
2021-02-04 kainino Update copyBetweenLinearDataAndTexture tests for new bytesPerRow/rowsPerImage rules (#452)
2021-02-03 kainino fix "INFO: subcase:" prints (#454)
2021-02-01 9856269+sarahM0 [wgsl] validation v-0040: uniform and storage buffer are declared with group and binding decorations. (#428)
2021-02-01 kainino Loosen precision in multisample resolve operation test (#446)
2021-02-01 shrekshao Add sampler anisotropy tests (#437)
2021-02-01 tojiro Update defaultQueue->queue, OUTPUT_ATTACHMENT->RENDER_ATTACHMENT to match latest spec (#449)
2021-02-01 kainino add todos in createView tests (#450)

Created with:
  roll-dep third_party/gpuweb-cts

Roll third_party/spirv-tools/ 297723d75..cfa1dadb1 (6 commits)

297723d75a..cfa1dadb1e

$ git log 297723d75..cfa1dadb1 --date=short --no-merges --format='%ad %ae %s'
2021-02-10 dj2 Update a few virtuals to overrides. (#4143)
2021-02-05 46493288+sfricke-samsung spriv-val: Vulkan image gather constant component (#4133)
2021-02-05 46493288+sfricke-samsung spirv-val: Fix/Label UniformConstant VUID (#4134)
2021-02-05 46493288+sfricke-samsung spirv-val: Add Vulkan Invariant Decoration VUID (#4132)
2021-02-02 46493288+sfricke-samsung spirv-val: label tests for VUID 04657 (#4119)
2021-02-01 46493288+sfricke-samsung spirv-val: Add Vulkan PSB64 convert VUID (#4122)

Created with:
  roll-dep third_party/spirv-tools

Change-Id: I5632e3eed6d8e8731faeb4800e903a8893a60f9f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41560
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2021-02-11 15:04:03 +00:00
Ben Clayton
5585f0789c Add SymbolTable::New()
Generates a new unnamed symbol.
Useful for creating temporaries in transforms.

Change-Id: I3aa037e4a6b2d400f24e01bbb3555af68da26748
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41480
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-02-11 14:54:41 +00:00
Stephen White
e9f42997b2 Enable more tests on OpenGL and OpenGL ES backends.
Some of these are skipped by lack of optional feature support,
but at least this brings them on the radar by increasing the
skip counts for the GL backends.

Bug: dawn:580
Change-Id: I3439f41584e70dd51f6d0f7826ef9da7c046020e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41401
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2021-02-11 13:09:14 +00:00
Corentin Wallez
aa0e1be0e8 Reland "Vulkan: Fallback to XCB for Xlib surfaces"
This is a reland of fb0bf70459c44b31419400598b592eaaae85f932

Reland after making libx11-xcb dynamically loaded since it isn't present
on all Linux deployment targets of Chromium. Also includes a couple of
additional cosmetic changes to d3d12/PlatformFunctions noticed while
looking at it for inspiration.

Original change's description:
> Vulkan: Fallback to XCB for Xlib surfaces
>
> Chromium builds the Vulkan loader without support Xlib (because it
> prefers XCB) which caused Xlib wgpu::SwapChain creation to fail on the
> Vulkan backend.
>
> This CL adds a fallback to use VK_KHR_xcb_surface if VK_KHR_xlib_surface
> isn't present.
>
> Bug: dawn:662
> Change-Id: I0e0128ee6b5c75da03998dbae231d17e48bacc81
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41180
> Reviewed-by: Austin Eng <enga@chromium.org>
> Commit-Queue: Austin Eng <enga@chromium.org>
> Auto-Submit: Corentin Wallez <cwallez@chromium.org>

Bug: dawn:662
Change-Id: I617fcd1059dddfa05c29ac20d77f891ca6962342
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41380
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
2021-02-11 08:26:38 +00:00
Ryan Harrison
5d64f60a60 Add ability to get all bound resources in a single call
Also adds to the binding struct what type of resource it is.

BUG=tint:489

Change-Id: I8ce56a1a613b330150545781cb42d2afeaa69375
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41460
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2021-02-10 22:16:05 +00:00
Ben Clayton
5bde7c054a tint.h: Remove the type_determiner.h include
This is no longer public-api

Change-Id: I030d37b0d1dbd38ea3ec6d19c47b15d7ce9d0667
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41482
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-10 21:48:55 +00:00
Ben Clayton
8b1906d996 Validation tests: Check the Program is valid
If the program is invalid, then the content of the program is undefined.
Don't attempt to test undefined behavior.

Remove the one remaining test that was using an invalid program.

Change-Id: I4bb77b8048768717a312ed94b96efb3416274b63
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41384
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-10 21:47:04 +00:00
Ben Clayton
47c4d18375 Move intrinsic overload tests from Validator -> TypeDeterminer
TypeDeterminer now does overload resolution. Move these tests to the right place.

Change-Id: I27a4fccac34ded00f9828a77cc25ccfe1cb5c0ea
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41383
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
2021-02-10 21:42:35 +00:00
Ben Clayton
2522b29f7d type_determiner_test.cc: Rename ImportData to Intrinsic
Change-Id: I3ecf7e1480ee3b50815b9cb1d37ac397eada348f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41382
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
2021-02-10 21:40:36 +00:00
Ben Clayton
81da283b2c Add type::Type::UnwrapAliasIfNeeded()
Unwraps aliased types until reaching a non-alias.

Change-Id: I6546d60b7cbe07d4c8cc5a0b439329af8b468ca9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41500
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2021-02-10 21:40:15 +00:00