8782 Commits

Author SHA1 Message Date
Ben Clayton
33d0f6aa08 Fix UBSAN error
As() was being called on a nullptr object.

Change-Id: Iedd7f1c57d12f1ad5ea2af60317817841f5d1392
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50303
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-05-07 14:15:14 +00:00
Jiawei Shao
a91b3f938b Skip CopyTests_T2B/CopyOneRowWithDepth32Float on D3D12
This patch skips CopyTests_T2B/CopyOneRowWithDepth32Float on all
D3D12 backends because it fails on many D3D12 drivers.

See https://crbug.com/dawn/727 for more details.

BUG=dawn:727
TEST=dawn_end2end_tests

Change-Id: I3d2c4cf363772939796a71c7efa165e57ed6ba41
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50280
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-07 10:41:55 +00:00
James Price
b8c7724079 Remove use of EmitVertexPointSize transform
This is now handled inside the SPIR-V sanitizing transform and can be
enabled via a transform config option.

Fixed: tint:753
Change-Id: I897c60dd304dd4643cc905a8ca3001dd963c5fb0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50060
Auto-Submit: James Price <jrprice@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-07 07:18:05 +00:00
Dawn Autoroller
09a97ad446 Roll Tint from fe5c3058919c to 698d01383cda (3 revisions)
https://dawn.googlesource.com/tint.git/+log/fe5c3058919c..698d01383cda

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 bajones@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: bajones@google.com
Change-Id: Icf37c1ed2a587c655a2cdfd644b633388299da38
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50247
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-05-07 03:21:15 +00:00
Yan
47652564e6 Add validation rules for CopyTextureForBrowser
This CL complete the validation rules for CopyTextureForBrowser by:
 - Restrict source texture must have |CopySrc| and |Sampled| usage.
 - Restrict destinaton texture must have |CopyDst| and
   |RenderAttachment| usage.
 - Restrict sample counts of source texture and destination texture
   must be 1.
 - Restrict source copy origin.z must be 0.
 - Restrict CopyTextureForBrowser() can only copy to single slice.

A validation unittest is added to check.

BUG=dawn:465

Change-Id: I5e645a4b69edeaf97ce1231bd7c8036027524ba8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49306
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-05-07 01:48:14 +00:00
Dawn Autoroller
09a458f94e Roll Tint from d2be7cea9058 to fe5c3058919c (8 revisions)
https://dawn.googlesource.com/tint.git/+log/d2be7cea9058..fe5c3058919c

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 bajones@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: bajones@google.com
Change-Id: I34445f3294aaa5b915c530947365ed133317db33
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50245
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-05-06 22:01:24 +00:00
James Price
698d01383c writer/spirv: Fix dynamic array accessors
If the initial array accessor in a chain uses a non-literal index, use
the path that copies the source to a function variable, and then
perform a load from the OpAccessChain result if necessary.

Fixed: tint:426
Change-Id: Ie2f3f388170c02c1d6b73355f0b3bc49c3d3a4e5
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49800
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: David Neto <dneto@google.com>
2021-05-06 21:45:03 +00:00
Antonio Maiorano
a2580d6720 spirv reader: replace typ::Type with ast::Type
Bug: tint:724
Change-Id: Idaf807dd1ff75af8e0044731e7362c0915ae7e54
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50200
Reviewed-by: Ben Clayton <bclayton@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2021-05-06 21:23:13 +00:00
Ben Clayton
467184fb06 reader/spirv: Remove debug spew
Change-Id: I2e3c9e681f2d33aaa83a27525e5e0f231f6a8973
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50221
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: David Neto <dneto@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
2021-05-06 20:40:33 +00:00
Corentin Wallez
76732abfe5 Properly implement per-dispatch synchronization scopes.
Below are the list of all the individual changes, which are a good order
in which to review this CL.

Core changes:
 - Change the tracking in the frontend to produce a synchronization
   scope per dispatch instead of per compute pass. Some bindgroups might
   not be part of any synchronization scopes so we also track all the
   referenced resources on the side so they can be checked during
   Queue::Submit validation.
 - Fix clearing in the GL and Metal backends to use the per-dispatch
   synchronization scopes.
 - Fix the Vulkan backend to use the per dispatch synchronization scopes
   to produce the correct pipeline barriers. This allows the removal of
   previous logic that was subtly incorrect for Indirect buffer. This
   allows the merging of the Compute and Render DescriptorSetTracker into
   a single small helper class.
 - D3D12 changes are similar to Vulkan, but the simplification is just a
   the suppression of a branch with a lot of code in
   BindGroupStateTracker.

Test changes:
 - Fixup all the ResourceUsageTracking tests to follow the WebGPU spec
   for synchronization scopes (fixing a lot of TODOs).
 - Add additional tests checking that Indirect buffers are not allowed
   to be used as a writeable storage in the same synchronization scope.
 - Add tests for Queue::Submit validation correctly taking into account
   resources that are bound but unused in compute passes.
 - Add an end2end test for using a buffer as Indirect and Storage at the
   same time in a DispatchIndirect, which would previously produce
   incorrect barriers in the Vulkan and D3D12 backends.

Other small changes (that I was to lazy to put in a different CL):
 - Add the utils::MakePipelineLayout helper function.
 - Fix Indirect not being in the list of readonly buffer usages (caught
   by a test added in this CL).

Bug: dawn:632
Change-Id: I77263c3535a4ba995faccbf26255da9a2f6ed3b5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49887
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-05-06 19:20:14 +00:00
Stephen White
d0ebcbac7a Fixes for OpenGL loader generator.
Add extensions to the appropriate (desktop or ES) LoadProc generation.
Extensions have no removed_procs, so don't check for them.

Bug: chromium:1205155
Change-Id: I705ef3fb700318f59fdbc6415fcf3909c62e39f4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50180
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2021-05-06 18:34:14 +00:00
Ben Clayton
fe5c305891 Fix all doxygen warnings
Fixed: tint:776
Change-Id: I26e7dc36b19cf38612f6d530a9e774ac519d70e7
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50220
Commit-Queue: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2021-05-06 16:26:53 +00:00
Dawn Autoroller
3b229bd4d4 Roll Tint from 0aeb77c40f89 to d2be7cea9058 (4 revisions)
https://dawn.googlesource.com/tint.git/+log/0aeb77c40f89..d2be7cea9058

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 bajones@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: bajones@google.com
Change-Id: I54d9625f8f806cbfb95f5f812e1ccc1e6e6583f5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50160
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-05-06 16:23:04 +00:00
David Neto
e21ad1438e spirv-reader: fix signedness for shifts
Fixed: tint:675
Change-Id: Ib754191284a62b9f4be56dc8d38e5319345ab9bf
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49824
Commit-Queue: David Neto <dneto@google.com>
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
2021-05-06 16:21:53 +00:00
Ben Clayton
b82acac68e Resolver: Clean up diagnostics
Don't have a separate diagnostic list, just put the errors straight into the ProgramBuilder's diagnostics.
This also fixes an issue where we were taking the stringified diagnostic list and creating a single error on resolution failure. This was the cause of the `error: error:` messages sometimes seen.

Also fix a stupid negated-logic bug around the "resolving failed, but no error was raised" ICE.

Change-Id: Iddf1f61e4be21137731dfc204210562abbf612b0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49963
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-05-06 16:04:03 +00:00
Ben Clayton
0600796092 ast::Struct: Remove Clone() hack
Semantic types are no longer cloneable, entirely avoiding the issue this hack was working around.

Bug: tint:724
Change-Id: Iec876beccfda476a5539fb4d669eeba24d263500
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49962
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-05-06 16:03:33 +00:00
Ben Clayton
b7bd0e12d1 reader/wgsl: Migrate to AST types
Bug: tint:724
Change-Id: I484813dd139122244cd09829ab5b035cec9981e6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49960
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-05-06 15:57:13 +00:00
Ben Clayton
58750eab19 sem: Have sem::Type derive from sem::Node
Having a common base class will tighten up some of the dynamic casting that we do.

Bug: tint:724
Change-Id: I45c6f200e1ec242ddb08ce75bd1c4c037a21a38d
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49882
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-05-06 15:52:33 +00:00
Ryan Harrison
a0174e613f Add fuzzing for transform::VertexPulling
Includes a significant refactoring of helper functions in
tint_common_fuzzer.cc/.h

BUG=tint:722

Change-Id: I1fdab0113bae02c4a0bf8da0d1b7729f05a2fc5b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49902
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-06 15:43:33 +00:00
David Neto
4f34e7897b spirv-reader: bit tests: make valid SPIR-V
Bug: tint:765
Change-Id: I79474aa959165b2b54eea352c4d71a04fea6ba51
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49823
Commit-Queue: David Neto <dneto@google.com>
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
2021-05-06 15:35:33 +00:00
Corentin Wallez
de5bd3fe28 Only run the BoundArrayAccessors transform when robustness is on.
Bug: None
Change-Id: I40b94eb2a900a7d60529edb4ffa8f707e603a50d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49965
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-05-06 13:55:34 +00:00
James Price
d2be7cea90 reader/wgsl: Allow constants without initializers
This is valid when they are overridable constants. The resolver will
validate whether or not this is the case.

Change-Id: Ic6659c58e5046117f64794efec3300b0245a5e91
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50043
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-06 13:42:03 +00:00
James Price
08df57a75c validator: Require constants to have initializers
Unless they are pipeline overridable.

Fixed several tests that were violating this.

Change-Id: Ibb10e03bb150086a4d9e68a3f7b2d3e21f282918
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50042
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-06 13:37:13 +00:00
James Price
ab3a9218b7 validator: Disallow [[override]] on non-const vars
Only allow them on constants, where no other decoration is valid.

Change-Id: I83f19667adb1dd4ebbba86827324a45a8f1a80a4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50041
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
2021-05-06 12:36:52 +00:00
Corentin Wallez
9dad30d926 Move noop dispatch handling to the Metal backend
This workaround was only necessary in the Metal backend but it was easy
to put it in the frontend so it was put there. However, this simplification
gets in the way of a validation change in the follow-up CL. So we move
the nooping to the Metal backend.

Bug: dawn:632
Change-Id: I0a9957a1bc9bdd7867eb8c60fcab710832c13af2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49886
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-05-06 11:30:34 +00:00
Dawn Autoroller
063ea17f68 Roll Tint from b4a8a15bd216 to 0aeb77c40f89 (1 revision)
https://dawn.googlesource.com/tint.git/+log/b4a8a15bd216..0aeb77c40f89

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 bajones@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: bajones@google.com
Change-Id: I882c97db700931e97de39d06d5c0f1dc53b088ac
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50140
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-05-06 10:49:44 +00:00
James Price
a67f8a44bb writer/spirv: Fix constant initialization
The code to auto-generate initializers for overridable pipeline
constants was in the non-const code path, so move it to the right
place and fix the tests that were wrongly testing non-const variables.

Bug: tint:254
Change-Id: Ifc96681492768ecf844f67e114377cc643ef7609
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50040
Auto-Submit: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-06 09:30:42 +00:00
陈俊嘉
e7a5fabf48 Remove unnecessary "#if def"s and type conversion in windows compilation.
Remove unnecessary "#if def"s.
Forward declare IUnknown in Surface.h.
Change Surface.GetCoreWindow's return type to IUnknown*.
Remove unnecessary type conversion in SwapChainD3D12.cpp.

Bug: dawn:766
Change-Id: Id9f4ae20a5ed52fe8338d4e1673588c828c4c5df
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50080
Commit-Queue: 陈俊嘉 <cjj19970505@live.cn>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-06 08:28:44 +00:00
Ryan Harrison
0aeb77c40f Fix GCC builds
BUG=tint:778

Change-Id: If06e453b6fd58b8c74bed996532b3b9f9f7804ee
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50044
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
2021-05-06 08:20:52 +00:00
Dawn Autoroller
26f4383c6a Roll Tint from ba08d7bca3c9 to b4a8a15bd216 (3 revisions)
https://dawn.googlesource.com/tint.git/+log/ba08d7bca3c9..b4a8a15bd216

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 bajones@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: bajones@google.com
Change-Id: I0e9c110a34d052cda7e9c150ee006cb83ecde02e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50100
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-05-06 04:59:44 +00:00
David Neto
b4a8a15bd2 spirv-reader: arithmetic tests: make valid SPIR-V
Bug: tint:765
Change-Id: I8994647edd29513d48d5154c15e7dd429771c2ca
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49822
Commit-Queue: David Neto <dneto@google.com>
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
2021-05-05 23:27:52 +00:00
Dawn Autoroller
f3e4779031 Roll Tint from bd7e8442b8c3 to ba08d7bca3c9 (11 revisions)
https://dawn.googlesource.com/tint.git/+log/bd7e8442b8c3..ba08d7bca3c9

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 bajones@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: dawn:728
Tbr: bajones@google.com
Change-Id: I180b76070fca3b4f609200b7dd5cfe05b8451d29
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50025
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-05-05 22:48:04 +00:00
David Neto
922779bcf5 spirv-reader: conversion tests: make valid SPIR-V
Bug: tint:765
Change-Id: I18ed7f007fc9b15c51cddbb6b0edbca79ed1569c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49821
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
2021-05-05 21:24:34 +00:00
Ryan Harrison
bc94cd68f8 Interrupt fuzzer if invalid program is generated
If a a valid shader is input into Tint an valid shader should be
output, if the output is invalid then there is a bug in Tint.

BUG=tint:721

Change-Id: Id3fe80eeb65fa55276d74e2f4868e276bd52ec86
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/50000
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-05 21:12:22 +00:00
David Neto
ba08d7bca3 spirv-reader: update tests to use valid SPIR-V
This CL: all SPIR-V modules in parser_impl_module_var_test.cc

Bug: tint:765
Change-Id: I2e8427aea729793a4e34e2ac0c6fc689f65bda04
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49645
Auto-Submit: David Neto <dneto@google.com>
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
2021-05-05 20:54:02 +00:00
Corentin Wallez
ec7ea6aaaa Separate the types for compute and render pass usage data
This change is a preparation for making the compute pass track the
synchronization scope usages per dispatch instead of for the whole pass.

This CL just separates the Compute and RenderPassResourceUsage types.
This requires making the difference between
SyncScope/ComputePass/RenderPass ResourceUsageTracker instead of having
a single combined tracker.

This change also duplicates SetBindGroup by removing the common handling
in ProgrammablePassEncoder and putting it in ComputePassEncoder and
RenderEncoderBase. This is necessary because the UsageTracker types are
now split, but it will also help have different handling of SetBindGroup
for compute and render in follow-up CLs.

There are no functional changes.

Bug: dawn:632
Change-Id: I482c04483d8b734fb10e44e717071eedcff2f15f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49884
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-05-05 19:55:23 +00:00
James Price
202d97d846 writer/spirv: Add type to constructor cache key
This prevents two initializers with different types from incorrectly
using the same OpConstantComposite instruction.

Fixed: tint:777
Change-Id: I2cdef9d5b0a83c26cbd4be318fed218e6f3e93b0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49981
Commit-Queue: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-05 19:38:12 +00:00
Ben Clayton
58f93c9e26 Build fixes
Two incompatible changes landed simultaniously.
Also fix a warning about variable shadowing.

Change-Id: I84c9ba48fb87a348a5b0e622ca2fdb191f95a6b2
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49964
Commit-Queue: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2021-05-05 18:00:52 +00:00
Corentin Wallez
d98b3076f5 EncodingContext: Forward the backtrace of stored errors.
This makes error messages from command buffers more useful because they
keep the whole stack trace instead of just showing that the error was
created in the CommandBuffer::Finish call.

Bug: dawn:632
Change-Id: I23e66045c3caa1ad086003a04eed78c40aefc562
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49885
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-05-05 17:37:43 +00:00
Dawn Autoroller
c8f0b6d633 Roll Tint from 02ebf0dcae51 to bd7e8442b8c3 (4 revisions)
https://dawn.googlesource.com/tint.git/+log/02ebf0dcae51..bd7e8442b8c3

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 bajones@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: bajones@google.com
Change-Id: I699171bb8a79bc2ce7e3bb60454761022e37f8e2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49920
Reviewed-by: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Dawn Autoroller <dawn-autoroll@skia-public.iam.gserviceaccount.com>
2021-05-05 17:08:23 +00:00
Ben Clayton
8e1d177590 Remove Clone() from sem::Types
These should always be generated by the resolver, not manually constructed by transforms.

This also fixes duplicate intrinsic output from DecomposeStorageAccess.

Bug: tint:724
Change-Id: I979d55f7b141f38c0504dc72cc3c63e8353ac14f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49881
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-05-05 16:55:22 +00:00
James Price
8c6808fa13 transform/Spirv: Add EmitVertexPointSize logic
This is disabled by default and can be enabled via transform data. The
separate EmitVertexPointSize transform will be removed once Dawn
starts using the Spirv sanitizer to do this.

Bug: tint:753
Change-Id: I676c4cef5bc53f2dbf2330645faa4a0f2bfe11bd
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49980
Auto-Submit: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-05 16:54:52 +00:00
Ben Clayton
6c1cf6569e sem::Matrix: Pass the column type to the constructor
It's common to want this when indexing matrices.

Change-Id: Ic60a3a8d05873119d78a3cb0860d129e33ac3525
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49880
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
2021-05-05 16:48:32 +00:00
Brandon Jones
b432f232b5 Add Transform For External Textures
Adds a transform to reclassify single-plane texture_external types into 2d sampled textures. Adds a unit test for the transform.

Bug: dawn:728
Change-Id: Id1f88565aeacbfea47b140181c78ad122edbdae8
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49641
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-05-05 16:38:12 +00:00
Ben Clayton
c9ee7ebd93 Prepare for having TypesBuilder return ast::Types
Instead of a typ::TypePair.

Bug: tint:724
Change-Id: Ife8fac86093eb128bc98974e1f6614a73c42a9e6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49753
Commit-Queue: Ben Clayton <bclayton@chromium.org>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
2021-05-05 16:19:22 +00:00
David Neto
dee76fff44 spirv-reader: update tests to valid SPIR-V
Bug: tint:765
Change-Id: I4312f9aa94fd813aeb9b388c10303f967057066f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49644
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: David Neto <dneto@google.com>
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: Alan Baker <alanbaker@google.com>
2021-05-05 16:12:32 +00:00
Corentin Wallez
615d6ea5ce Fix missing dependency for the OpenGL loader generator.
This was causing the GL loader to not be rebuilt when
supported_extensions.json was written.

Bug: None
Change-Id: I1f085403ebabe3a4cf52a80bcc7d23217603c28b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49888
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-05-05 16:06:23 +00:00
David Neto
6e2461096a spirv-reader: set failure bit when SPIR-V validation fails
The error message was already being logged, but the status
flag was not being set.

Change-Id: I7f6f2f45c15a64dd089e221c62218afe9e774edd
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49643
Commit-Queue: David Neto <dneto@google.com>
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-05 16:03:02 +00:00
David Neto
01c3ce7c03 test-all: allow specification of one output format
It's the second argument
This moves the subdirectory argument to the third position.

Change-Id: I91f7a8171f6de51e697a04c1407a1992b5c1c0db
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49642
Commit-Queue: David Neto <dneto@google.com>
Auto-Submit: David Neto <dneto@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-05 15:45:42 +00:00
Corentin Wallez
2dd2d67dbc CommandBufferResourceUsage: track render and compute separately.
This change is a preparation for making the compute pass track the
synchronization scope usages per dispatch instead of for the whole pass.

 - Split the tracking of render and compute passes usages.
 - Rename PassTextureUsage to TextureSubresourceUsage since is it not
   per-pass
 - Add SyncScopeResourceUsage as a subclass of PassResourceUsage to
   start modifying some of the code to work with synchronization scopes
   (even if syncscope == pass at the moment).

There are no functional changes.

Bug: dawn:632
Change-Id: Ieeb6d70a44dc1c726f26989eebcd87e63e732785
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/49883
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-05-05 15:41:13 +00:00