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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>