Commit Graph

2735 Commits

Author SHA1 Message Date
Yan, Shaobo 55e08d567f CopyTextureForBrowser(): Support Alpha Ops
This CL adds the support ofwgpu::CopyTextureForBrowserOptions::alphaOps
for CopyTextureForBrowser(), which allows the user to specify the alpha
operations (DontChange, Premultiply, Unpremultiply) when calling
CopyTextureForBrowser().

BUG=chromium:1217153

Change-Id: Idb5dd4482b33f2ada9aafc24380afeb48f2e26bc
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54800
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Shaobo Yan <shaobo.yan@intel.com>
2021-06-21 10:05:37 +00:00
Ben Clayton e4f4a3711f wgsl: Disable broken tests
ShaderRobustnessPerf:
SPIRV-Cross apparently generates incorrect code for MSL and OpenGL, when
attempting to initialize workgroup memory. Disable these tests when not
running with use_tint_generator.

D3D12DescriptorHeapTest:
The UBO layout for a mat2x2 was incorrect, but the test relied upon this.
Temporarily disable the test so we can roll the fix.

Bug: dawn:945
Bug: dawn:946
Change-Id: I810249b26a8a0b583796c0ba63b8a703eb9540e4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/55248
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-21 07:55:57 +00:00
Zhaoming Jiang f21d1f4d7a Refer TODO to Dawn issue 944
Refer the TODO in ShaderModuleBase::InjectCompilationMessages to
issue dawn:944 for further tracking.

Bug: dawn:753
Change-Id: I2ff09ba5914f2df0182bf26e9001a66782811f06
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/55223
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
2021-06-18 16:46:40 +00:00
Zhaoming Jiang fdc35e604e Emit tint warning when creating shader module
Add the formatted tint messages in OwnedCompilationMessages, which will be emit after creating the shader module succeeds of fails.
This patch also change the compilation messages handling in creating shader modules. Now the compilation messages are separated from sparseResult, and should be handled manually. A new method, ShaderModuleBase::InjectCompilationMessages, is introduced to move a given OwnedCompilationMessages into the shader module, and emit the formatted tint errors and warnings. This method should be called explicitly on a valid or error shader module.

Bug: dawn:753
Change-Id: I5825186c6d9c4aa7725aebd0c302bfce5e1f37cf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53890
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-18 13:29:39 +00:00
Corentin Wallez 3a3952c4f5 Suppress ShaderRobustnessPerf when using Tint + FXC
Also tighten previous suppressions to only apply when using the Tint
generator.

TBR=bclayton@google.com

Bug: tint:904
Change-Id: I22210227c428eb38901904966ec2c3bd70ce607b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/55200
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-06-18 08:52:12 +00:00
Yunchao He aee22d142b Implement copies b/w 3D and 2DArray textures on D3D12
Copies between 3D and 2DArray textures need to be done depth/array
slice by slice via CopyTextureRegion() API on D3D12 because this
API can copy one single subresource every time.

However, if both src and dst textures are 3D texture, we can copy
all depth slices in one shot, which is a fast path for this
copy scenario.

Bug: dawn:547

Change-Id: I950ed58319fb0f30dfc8a2de3e57e8a64406f7e4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/55140
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
2021-06-18 07:44:12 +00:00
Corentin Wallez b86e45f8ca Omit types in most WGSL `var` statements.
Bug: None
Change-Id: Id6ed10d98a550d912784b688c5473f67f1889a8c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54882
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-06-17 21:36:11 +00:00
Ben Clayton fecd5a5977 wgsl: Suppress all VertexFormatTests when using FXC
Disabling the one test clearly wasn't enough

Bug: tint:904
Change-Id: I23f448d2f3028fff13e4eb406b08a7175166ea9d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/55100
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Sarah Mashayekhi <sarahmashay@google.com>
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2021-06-17 20:54:15 +00:00
Corentin Wallez 95aa7c5b29 Add SetIndex/VertexBuffer offset argument alignment constraints
The vertex buffer alignment in particular is helps make the
implementation of programmable pulling much easier on Metal since the
vertex data will be able to be represented as array<u32>.

Bug: dawn:805
Change-Id: I2bf2742db3b8fa478be620c892925b8b75dc514c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54659
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2021-06-17 17:48:45 +00:00
Ben Clayton 36edf8d850 wgsl: Fixes for new validation failures
Values of array and matrix can now only be indexed by a constant value.
Dynamic indexing requires the value to be held in memory.

See: https://github.com/gpuweb/gpuweb/issues/1782

Bug: tint:867
Change-Id: I2b9ad6e40fc8121e7aca3a71c190639b39b0b862
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54652
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: Ben Clayton <bclayton@google.com>
2021-06-17 11:25:09 +00:00
James Price dcb82432fb Metal: Remap vertex buffers when using Tint
Otherwise bindings with non-zero groups get through to the Tint MSL
backend and break assumptions.

Bug: tint:104, dawn:571
Change-Id: I8d95ba142a386ff0d992ffe5f88a7acf93057ce1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54960
Auto-Submit: James Price <jrprice@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-17 08:08:58 +00:00
Yunchao He 5b6c1ebce7 Enable CopySplitTests unittests for 3D texture copy splitter on D3D12
CopySplitTests unittests were added for 2D texture copy splitter.
Now that we have added 3D texture copy splitter recently, it's time
to enable these unittests for 3D texture copy splitter.

This change enables the CopySplitTests unittests for 3D texture copy
splitter, with some fixes:
  - Footprint depends on bufferOffset and copySize, not bufferSize,
  - Copy regions overlap validation incorrectly added 1 extra pixel,
  - For 2D texture copy regions, there is one empty row at most in
    a copy region. However, it is not true for 3D texture copy
    regions when we are copying the last row of each slice.

It also adds a few more tests for 3D texture copy splitter when the
copySize.height is 1 and there is an empty row in the copy region.

Bug: dawn:547

Change-Id: I5381993ed5c656da0f82395e7c7bccc54d784767
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54500
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
2021-06-17 03:22:48 +00:00
Yunchao He 9288ea605d Fix a bug in 3D texture copy splitter for D3D12
TextureOffset should respect both origin and copySize when we are
addressing the empty first row issue. So textureOffset in copy 1
should just move/add (copySize.height - blockInfo.height) rows
in order to copy the last row of all depth slices but the last one.

Bug: dawn:547

Change-Id: I6a1acf656651869c8934897d5c7e8974f1a5eb9a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54441
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
2021-06-17 02:36:48 +00:00
Ben Clayton cd417bc9a1 Disable test where FXC emits bad output
Bug: tint:904
Change-Id: Ibefd0d83914e39b5a2db942153f183e6f334fcc8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54880
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2021-06-16 20:18:08 +00:00
James Price ff7eb1641e Metal: Run vertex pulling when using Tint
The config was already being set, but the transform itself was not
being added to the manager.

Bug: dawn:571
Change-Id: I850d5b0f37635598427b4a3a3285d243b89fad46
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54721
Commit-Queue: James Price <jrprice@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-16 16:58:39 +00:00
James Price 142108fc8e Metal: Remap resource bindings when using Tint
Use the BindingRemapper transform to remap resources binding numbers
to the indices chosen in the pipeline layout.

Bug: dawn:571
Change-Id: I548f063f09970222dea289f05285764fc3ea1b46
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54520
Commit-Queue: James Price <jrprice@google.com>
Auto-Submit: James Price <jrprice@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-16 15:42:59 +00:00
Li Hao b936d23364 Implement internal storage for buffer usage and buffer binding type
In the timestamp internal pipeline, the ResolveQuery buffer cannnot be
binded as Storage buffer in binding group layout due to it has not
Storage usage.
Add InternalStorageBuffer for buffer usage and
InternalStorageBufferBinding for buffer binding type, make the
QueryResolve buffer implicitly get InternalStorageBuffer and only
compatible with InternalStorageBufferBinding in BGL, not Storage buffer
binding type.

Bug: dawn:797
Change-Id: I286339e703e26d3786c706ded03f850ca17355fb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54400
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Hao Li <hao.x.li@intel.com>
2021-06-16 14:33:27 +00:00
Ryan Harrison 8c584a1f4c Make usage of overridable constants a validation error
This feature is not yet implemented in Tint and it not planned for OT.

BUG=dawn:799

Change-Id: Ib97dcd39e8ae956aa6fdc4cc1b148ec7f101b061
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54280
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-14 19:07:17 +00:00
James Price 6681114e5e Update usage of arrayLength() intrinsic
The runtime array parameter is now passed as a pointer, instead of by
value.

Change-Id: I632814d2a2890dbe4476c2b01023a5ff8de42d21
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54485
Auto-Submit: James Price <jrprice@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-14 08:39:02 +00:00
Corentin Wallez 5a53eb3113 Validate that DS attachment must cover all aspects of the texture.
It isn't clear if this should be a limitation of the WebGPU
specification. Until further investigation is done, disallow it in Dawn
to avoid undefiend behavior.

Bug: dawn:812
Change-Id: Iab8208f1ea479263b08ede41374ce1a680ce191e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53387
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-06-11 14:25:29 +00:00
Ben Clayton 6133e5cf3d Wrap call stmts with non-void rets, with ignore()
We have a new validation rule that states that all calls to functions that return a value must use that value. ignore() is the escape hatch.

Bug: tint:886
Change-Id: I9ab8d288b3c54ad4b7e46feda129c36c9136c20b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54200
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-06-11 14:01:29 +00:00
Yunchao He 74f0c02044 Refactor CopySplitTests.cpp in unittest D3D12
The log output code snippet duplicates again and again in this test.
So this change put it into a function and all tests can call that
function without duplicated code. It names the new function as
DoTest(), which calls DoTest2D() (the original DoTest()). The new
function can add DoTest3D() into the test in order to test 3D
texture splitter if needed and all tests don't need to change
anything.

It also removes TexelBlockInfo instance in DoTest2D(), which provide
no new info, just as Origin3D instance (for origin) and Extent3D
instance (for copySize).

Bug: dawn:547

Change-Id: I668682c5bdbae56dcdc8cf0e232f27233e17b883
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/54221
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-06-10 17:04:04 +00:00
Austin Eng f8a0f82fad Move zero-size copy skips from the frontend to the backend
Bug: chromium:1217741
Change-Id: Ib4884b5aa80124ed9da48262fcae11cf6d605034
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53883
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
2021-06-10 02:40:18 +00:00
Yunchao He 99ee5e8028 Impl 3DTexture copy splitter for empty first row on D3D12 - 2
If the copy region generated from 2D texture copy splitter has an
empty first row due to alignment adjustment and we simply extend
it to all copied depth slices, the copy region will be incorrect
for 3D texture copy.

If there is an empty first row and the copy height is odd, we can
split the copy region into two:
  - copy0: copy the first depth slice
  - copy1: copy the rest depth slices because there is no empty
    row after alignment adjustment

This method resolves the remaining problem when copy height is 1.
It also is an optimization for other odd copy height cases, say
copy height is 3, 5, 7, etc.

This change implements the special situation when the copy region
generated from 2D texture copy splitter has an empty first row and
its copy height is odd.

Bug: dawn:547
Change-Id: Idf4f4a9b87f783c5328463e0f4182429a7e809f1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53885
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-06-09 21:20:32 +00:00
Brandon Jones 0d50a2c770 ComputePipelineDescriptor.computeStage->compute
Deprecates the computeStage member of the descriptor in favor of compute
as described by the spec. In order to support both variants without
breaking backwards compatibility some code had to be manually added to
the wire client to copy from the deprecated member to the new one and
visa versa.

Change-Id: I9d5c2fc9c446c927c5792c9af9ed56c90060b65b
Bug: dawn:800
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53884
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-09 18:07:32 +00:00
Yunchao He e5b9903cc1 Implement copy for 3D texture on D3D12: non-zero mip
The change implements copy non-zero mip level for 3D textures
on D3D12 when the texture has multiple mip levels. The texture
size on level 0 can be either 256-byte aligned or 256-byte
unaligned(its size is non-power-of-two).

Bug: dawn:547

Change-Id: I8ed74fa587cfd814e7f526173dcb653d0a252a1e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51201
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-06-09 16:01:08 +00:00
Hao Li 7cbcacc712 Disallow pipeline statistics query as UnsafeAPIs
- Pipeline statistics query is not fully implemented, disallow its
  creation as unsafe
- Add pipeline statistics creation in UnsafeAPIsTest, because it needs
  enable extension, add a separate test class for it.

BUG: chromium:1177506
Change-Id: Ic77e04c9c854b396e7240674bd9deb0caf97a513
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53889
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
2021-06-09 08:47:37 +00:00
陈俊嘉 11379a3b59 Add support for windows SwapChainPanel in SwapChain and Surface
Add SurfaceDescriptorFromWindowsSwapChainPanel structure in codegen.
Add WindowsSwapChainPanel surface type.
Add support for WindowsSwapChainPanel surface in SwapChain.

Bug: dawn:766
Change-Id: I1d59262b912ee445c90a7ec6e22b442f2fb1bf00
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53840
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-06-09 08:44:07 +00:00
Jiawei Shao 9c375faf4c Vulkan: Support creating compute pipeline asynchronously
BUG=dawn:529
TEST=dawn_end2end_tests

Change-Id: Id2b2bebe164ccc829e4f2cf737255d634d6572a0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53760
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-06-09 02:58:27 +00:00
Hao Li b68ca071f3 Disable timestamp query on macOS 10.15 on AMD
On macOS 10.15 on AMD GPU, WriteTimestamp cannot be called without any
copy commands on MTLBlitCommandEncoder, otherwise crash occurs. But this
issue is not reproduced on macOS 11.0, just disable timestamp query on
the bad version on AMD.

BUG: dawn:545
Change-Id: I69a012b2091b8ccd251d23ddb26b72e06c07492f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53581
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Hao Li <hao.x.li@intel.com>
2021-06-09 01:33:46 +00:00
Jiawei Shao c9a6df3297 Metal: Support creating compute pipeline asynchronously
BUG=dawn:529
TEST=dawn_end2end_tests

Change-Id: I9427afbb11196c14843c6fb7bf6224afca6d63fc
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53761
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-06-09 00:42:46 +00:00
Sunny Sachanandani cabd60d991 Add releaseMutexKey to ExternalImageAccessDescriptorDXGIKeyedMutex
This allows the client to specify a different release key for the keyed
mutex than the default of acquire key + 1. If the release key is the
sentinel value of UINT64_MAX, it's set to acquire key + 1. Once Chromium
transitions to always specifying the release key, it will be made a
required parameter and the default behavior will be removed.

Bug: chromium:1213977
Change-Id: I327f7157bb7ff23cf216e43043568ce7c6f38a60
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53880
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
2021-06-08 21:03:17 +00:00
Brandon Jones b94c41ad23 Follow-up For ExternalTexture Binding Feedback
Implements two basic binding tests requested in a previous review. Moves
ExternalTextureState enum to be private.

Bug: dawn:798
Change-Id: I9e5ac31a92bab26b7d68568802db1fa988e849a9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53700
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Brandon Jones (Intel) <brandon1.jones@intel.com>
2021-06-08 20:29:37 +00:00
Yunchao He 84d200e6dd Impl 3DTexture copy splitter for empty first row issue on D3D12
If there is an empty row at the beginning of a copy region due to
alignment adjustment, this copy region split by 2D texture splitter
will be definitely incorrect for 3D textures because every depth
slice (except the first slice) will wrongly skip one row. We need
to recompute this copy region via modifying this copy region and
adding a couple more copy regions for the empty first row issue.

The idea of recomputation is:
  - modify this copy region and don't copy the last row in order to
    make its bufferSize.height not exceed rowsPerImage,
  - use one more copy region to handle the last row of each depth
    slice except the last depth slice,
  - use another copy region to handle the last row of the last depth
    slice.

Bug: dawn:547

Change-Id: Ib2f6019963ed29d62a9f13d7316b5f04801db8c9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52341
Commit-Queue: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-08 19:56:17 +00:00
Ben Clayton 15eba9a048 WGSL: Migrate access control to var<>
Spec change: https://github.com/gpuweb/gpuweb/pull/1735

Bug: tint:846
Change-Id: Id2eddc4e8f3bdb86027db8d61bb96b9b8ef9778f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53386
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-06-08 15:36:44 +00:00
Hao Li 3a07f7410f Resolve TODO in ResolveQuerySet validation
The unavailable queries are allowed in ResolveQuerySet and resolved to
0s, which has been fixed in
https://dawn-review.googlesource.com/c/dawn/+/48320.

BUG: dawn:434
Change-Id: I72b1f0b621fc22a7a0d30c407c7359e59d7b905c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53762
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-06-08 10:04:34 +00:00
Zhaoming Jiang e557296b08 Dump translated HLSL shaders if the toggle enabled
Add a toggle named "dump_translated_shaders", and when this toggle
is enabled, translated HLSL shaders will be dumped and log via
Device::EmitLog in the kInfo logging level.

BUG: dawn:792
Change-Id: Ia5ccc96019c32b43aa315f080f80a26919b441e3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53580
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-06-08 10:03:44 +00:00
Austin Eng 735d5046b2 Test readback after loadOp value w/ mipmapped depth/stencil textures
There have been some bugs seen with this on some platforms.

Bug: dawn:838
Change-Id: I29fa483eee3c299960d2c998fce90d918ac4dc9d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52560
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-06-08 00:24:43 +00:00
Austin Eng ca41b00691 Triage Dawn TODOs
Change-Id: Ia049d5a03d0e251531f71def525492403588fd74
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53460
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-07 18:23:52 +00:00
Yunchao He 9df00a3e9a Fix a bug for 3D texture comparison in e2e CopyTests
When we are copying data, we need to offset "rowsPerImage" rows
for each depth slice, even though this is a partial copy whose
copy height is less than rowsPerImage.

In addition, when we copy the original data into expected buffer
for comparison, we don't pack data for T2B copy and T2T copy. We
don't remove paddings during copy. So I renames PackTextureData
to CopyTextureData. For B2T copy, we do pack data. Right now we
name it CopyXXXX and we pack the data during some copies, it is
understandable. But if we name it PackXXXX but don't pack data
sometimes, it is weird. In addition, for B2T copy, we pack the
data, so I shorten the buffer size we allocated for comparison.

This change also renames "slice" to "layer" if it includes multiple
depth slices and actually means a layer, but keep slice as slice if
it means an array layer or a depth slice for different cases.

Bug: dawn:547
Change-Id: I6d82e6c25f50bd4c988b1f65f85b24ad1c191d01
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53501
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-06-07 17:32:43 +00:00
Hao Li 84481bbb35 Query API: Re-enable Timestamp Query on Metal
Add timestamp query back in Metal supported extensions, and calculate
the timestamp period based on CPU timestamps and GPU timestamps sampled
on device.

There is a crash issue (dawn:545) on macOS 10.15 on AMD devices, but
cannot be reproduced on macOS 11.0+, we can just disable it on AMD with
macOS 10.15 in the following CL.

Bug: dawn:434
Change-Id: Icb4823e7c3115776e64c6a41fd0aea0f6536ccdf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51720
Commit-Queue: Hao Li <hao.x.li@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-07 03:17:10 +00:00
Austin Eng ed8a8c0893 Triage Dawn TODOs
Change-Id: Ia010e534df1ac8a82008b38c44cfd9dc3f0b1aa6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53340
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-04 22:23:56 +00:00
Yunchao He 539fc31de3 Remove a workaround of buffer size computation
If we are copying a partial of rows, the buffer size doesn't need
to be that large of the entire image which has "rowsPerImage" rows.
There was a bug in texture copy splitter. And this workaround was
introduced at https://dawn-review.googlesource.com/c/dawn/+/30741
in order to workaround that bug. D3D12 validation is actually correct.

Now that we have fixed the bug at
https://dawn-review.googlesource.com/c/dawn/+/52680/. The workaround
is not needed.

Bug: dawn:547, dawn:520

Change-Id: I92292c71dc5479fc2ba863eb9f897516bd1a96a0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53360
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-06-04 20:21:16 +00:00
Corentin Wallez 2b43b45af9 Increase kMaxStorageBuffers/Textures to 8
Bug: None
Change-Id: I154393d9cf3a2101e5740383a8367d498a6d3f03
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53380
Commit-Queue: Austin Eng <enga@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-06-04 18:27:56 +00:00
Zhaoming Jiang b44000e7af Add the user-visible logging interface.
Details:
- Add the logging level type WGPULoggingType, including levels verbose,
info, warning, and error,
- Add the API SetLoggingCallback, which bind the callback to deal with
logging string,
- Add the return command DeviceLoggingCallback and related code,
- Add DeviceBase::EmitLog(WGPULoggingType, const char*) , and
DeviceBase::EmitLog(const char*) use WGPULoggingType_info as default,
to post logging from native or server device to bound callback
via CallbackTaskManager.

BUG: dawn:792
Change-Id: I107b9134ff8567a46fa452509799e10b6862b8d3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52200
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
2021-06-04 07:10:56 +00:00
Austin Eng 9d911d4957 [Vulkan] Free bind group layouts pending deallocation on shut down
Bug: 1212385
Change-Id: I093f9e5bb91f697939f1fbb286f284b54f3d7c02
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52521
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Auto-Submit: Austin Eng <enga@chromium.org>
2021-06-04 05:36:46 +00:00
Jiawei Shao 5e1ca53269 D3D12: Support creating compute pipeline asynchronously
This patch implements the asynchronous path of CreateComputePipelineAsync
on D3D12 backend with the basic framework of the dawn_unittest
AsyncTaskTest.Basic.

1. Call the constructor of dawn_native::d3d12::ComputePipeline in the main
   thread.
2. Execute dawn_native::ComputePipelineBase::Initialize() (a virtual function)
   asynchronously.
3. Ensure every operation in dawn_native::d3d12::ComputePipeline::Initialize()
   is thread-safe (PersistentCache).
4. Save all the return values (pipeline object or error message, userdata, etc)
   in a CreateComputePipelineAsyncWaitableCallbackTask object and insert this
   callback task into CallbackTaskManager.
5. In Callback.Finish():
- Insert the pipeline object into the pipeline cache if necessary
- Call WGPUCreateComputePipelineAsyncCallback

Note that as we always handle the front-end pipeline cache in the main thread,
we don't need to make it thread-safe right now.

BUG=dawn:529
TEST=dawn_end2end_tests

Change-Id: I7eba2ce550b32439a94b2a4d1aa7f1b3383aa514
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/47900
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-04 05:12:06 +00:00
Austin Eng d637cc5482 Disable CompareFunctionsCompute test
This is blocking the Tint roll which adds validation that
textureSampleCompare cannot be used in the compute stage.

Simply disabling this test for now since WGSL discussions seem to
indicate there may be a builtin added with a different name and
semantics.

Change-Id: Iaecf5865c9fb38aea3231c3ae823d783a665984d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53320
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2021-06-03 23:25:36 +00:00
Yunchao He 9680c9f874 Polish 2D texture copy splitter on D3D12
In every copy region, its bufferSize.height minus rowsPerImage
can be texture format's blockInfo.height (it is 1 for uncompressed
formats) at most, and it appears only if bytesPerRow is 256 and
copySize on height is a full copy.

This change will benefit 3D texture copy splitter via removing
unwanted empty rows issues. Because empty rows in 3D copy splitter
may lead to recompute/modify copy regions and there might be new
copy regions added.

The removed empty row situations are:
  1) Partial copy on height: copySize.height < rowsPerImage *
  blockInfo.height
  2) bytesPerRow is greater than 512. For example, if bytesPerRow
  is 512 and data in one row straddles two rows and there is no
  empty row at the first part. The second part will have a fake
  empty row if we don't recompute its alignedOffset.
  3) There are two empty rows in a copy region. For example:
  if data in one row straddles two rows and there is an empty row
  in the first copy region. Then there will be two empty rows in
  the copy region of the second part if we don't recompute the
  alignedOffset.

This change also fixes an issue found by Corentin that copy related
argument "rowsPerImage" should not take effect when we are copying
one single depth or array slice.

Bug: dawn:547

Change-Id: I603291d559de1d05e420e5ed1f4cabf53de5a93f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52680
Reviewed-by: Corentin Wallez <cwallez@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-06-03 18:19:06 +00:00
Stephen White b5652c75d2 Implement EGLImage external texture API for GL.
Tests are based on the IOSurfaceWrappingTests.
Sampling tests are not implemented, since they would require
support for the samplerExternalOES sampler type in WGSL.

Bug: chromium:1205155
Change-Id: Icc114eaf6efaee93f1b8486e615f0fd307f23080
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50201
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-03 16:19:16 +00:00
Ben Clayton b3c371031c Move texture_storage access into type
Instead of having it as a decoration.
The old style is now deprecated and will be removed soon.

See  https://github.com/gpuweb/gpuweb/pull/1735 for the WGSL spec change.

Bug: tint:846
Change-Id: Id2fa681ddf7b97cd3fa41d7b5538029d96db7e28
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53082
Reviewed-by: Corentin Wallez <cwallez@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-06-03 13:21:36 +00:00
Corentin Wallez b66f630f81 Add a toggle to disallow_spirv.
This toggle will be used by Chromium to disallow the unsecured SPIR-V
path such that a renderer process can only use WGSL.

This new toggle will be covered by a test in Chromium that ensures that
in the default configuration SPIR-V is disallowed.

Bug: chromium:1214923

Change-Id: Ia67e0c7466044e1086399d995dc841426fe604c9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52781
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-06-03 12:10:06 +00:00
Jiawei Shao b6c54a6ec2 Remove useless function declarations
This patch removes the function declarations which don't have their
function bodies.

BUG=None

Change-Id: Id16c2a225319331cdbc3a827ebbabf58c16e1dfd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/53140
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-06-03 07:42:15 +00:00
Jiawei Shao 661928894e Re-enable the T2T copy workaround on Intel Gen9 and Gen9.5 GPUs
This patch re-enables the T2T copy workaroudn on Intel Gen9 and Gen
9.5 GPUs because the latest released Intel D3D driver still cannot
handle some copies correctly in some copy shapes.

BUG=chromium:1161355

Change-Id: Ia96fe05c3e027f56a734331de03fe42745754cc3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52960
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-06-03 00:35:04 +00:00
Austin Eng 3cd8c43857 Expand NonzeroTextureCreationTests to DepthStencil textures
And fix a bug where the Metal backend hit an ASSERT when
clearing combined depth/stencil textures by copy.

Bug: dawn:780
Change-Id: Idf3061570f63d0abd3e8a41d0c251db4f6dc7e0c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51840
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-06-01 21:25:33 +00:00
Austin Eng ff70f98545 Expand coverage of NonzeroTextureCreationTests
Expand coverage for these tests by using combinatorial test
parameterization. Covers more cases and expands coverage to
compressed textures. This caught a bug on Vulkan where only the
first region for multi-layer compressed texture copies was cleared.
It also caught a driver bug on some Intel platforms, where clearing
the non-zero mip of a depth texture does not work.

Bug: dawn:780
Change-Id: Ic601bae111c1c2dd150f569d7e02759ca765201e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51680
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2021-06-01 20:43:53 +00:00
Yunchao He 88097989d0 Implement 3D texture copy splitter on D3D12: preparation
This change mainly is a preparation for 3D texture copy splitter,
which will be based on 2D texture copy splitter and then revise
or recompute incorrect copy regions if needed.

The change itself mainly rename some variables and comments and
distiguish 3D texture copies from 2D (array) texture copies. For
example, term slice is changed to layer if it only refers to layer
slices in 2D textures and it is not shared by depth slices in 3D
textures.

Bug: dawn:547

Change-Id: I6f84134a4fbcb90708901a1059b60e78e1a25ca5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51900
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-06-01 19:55:33 +00:00
Brandon Jones 39633e2da2 Implement External Texture Binding Functionality
Adds functionality to BindGroupLayout and BindGroup to allow
GPUExternalTexture bindings.

Bug: dawn:728
Change-Id: I651b28606dceda15f0a944711ddba639df77c1a3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/47381
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-06-01 19:45:53 +00:00
Austin Eng a9e39e11a8 Add utilities for printing Dawn enums and bitmasks
This is a header-only utility so it can be easily included and
used anyhere. Include it in DawnTest.h to automatically pick up
definitions to print test parameters.

Also, work around bot limitations for very-long test names.

Bug: none
Change-Id: I940263ab0a4cc415b06fa04749694f16ff08335c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51841
Auto-Submit: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2021-06-01 18:49:12 +00:00
Francois Guthmann f56dab0d72 Added new toggle EmitHLSLDebugSymbols to improve shader debugging capabilities by external tools.
Bug: dawn:776
Change-Id: I1a9082463ee61d7b0427740b4075d6a69c3b5946
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52282
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-06-01 18:46:03 +00:00
Jiawei Shao 5d39860fef Implement AsyncWaitableEvent with std::condition_variable
This patch implements the default implementation of WaitableEvent
(AsyncWaitableEvent) with std::condition_variable instead of
std::future as std::future will always block its destructor until
the async function returns, which makes us unable to clean up all
the execution environment of the async task inside the async
function.

This patch also implements WorkerThreadTaskManager to manage all
the async tasks (inherited from WorkerThreadTask) in the future,
for example all the Create*PipelineAsync() tasks.

This patch also updates the related dawn_unittest WorkerThreadTest.
Basic.

BUG=dawn:529
TEST=dawn_unittests

Change-Id: Ie789ba788789e91128ffc416e7e768923828a367
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51740
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-05-27 00:49:03 +00:00
Jiawei Shao 44fc6e3ab5 Remove DAWN_SKIP_TEST_IF -- Part II
This is the last patch to replace DAWN_SKIP_TEST_IF with
DAWN_SUPPRESS_TEST_IF or DAWN_TEST_UNSUPPORTED_IF. With this patch
DAWN_SKIP_TEST_IF will be completely removed from Dawn.

BUG=dawn:779

Change-Id: I5aec03697877ff9c6fa175f8d16eba951dd94cfa
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51806
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-05-26 01:04:32 +00:00
James Price e2f39f8361 Remove use of deprecated `const` in WGSL
Bug: tint:699
Change-Id: Ic5ce39b5c144e25b3b40a991187566557e68754e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/52240
Auto-Submit: James Price <jrprice@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-25 17:09:41 +00:00
Qin Jiajia 10a7f78815 Remove the suppression on use_tint_generator
Bug: dawn:594, tint:744
Change-Id: I371d6f826f7d11951926c32cdb6a0b4af4650f54
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51902
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-05-25 05:19:18 +00:00
Brandon Jones 7e59470563 Remove deprecated BindGroupLayoutEntry fields
Bug: dawn:22
Change-Id: Idf0fd0505fb7e5e5389520fa7bc638e137f4c0b6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51765
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2021-05-21 18:25:48 +00:00
Austin Eng 8bc3e68bd1 ParamGenerator: Return the end iterator if any param is empty
Not doing so produces an infinite loop when iterating from begin to end.

Bug: none
Change-Id: I323587a19ba1618d7e9a326de2ee398ae5e0bb7b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51762
Auto-Submit: Austin Eng <enga@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Brandon Jones <bajones@chromium.org>
2021-05-21 17:30:58 +00:00
Brandon Jones 41c87d973a Removed deprecated CreateRenderPipeline path
Renames all the RenderPipeline*2 stuff to simple RenderPipeline* but
keeps *2 definitionas around as typedefs and wrappers so that users can
migrate away from it.

Bug: dawn:22
Change-Id: If301d81a829bba0646c3a61068f2279932b191e0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51764
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2021-05-21 05:01:38 +00:00
Jiawei Shao 4589de61a0 Remove DAWN_SKIP_TEST_IF -- Part I
This is the first part to completely replace DAWN_SKIP_TEST_IF
with DAWN_SUPPRESS_TEST_IF or DAWN_TEST_UNSUPPORTED_IF.

BUG=dawn:779

Change-Id: I1795eb4271de08667d43f24b64b42d15ca4b8071
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51721
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-05-21 02:26:58 +00:00
Brandon Jones 4139fa5ca6 Remove deprecated vertex formats
Bug: dawn:22
Change-Id: Iae2c742e6c7e44f7d99fa9eb9c92bcd4ed516b3f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51763
Commit-Queue: Brandon Jones <bajones@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2021-05-21 01:29:17 +00:00
Brandon Jones a548578f67 Remove Fences
Fences are no longer part of the WebGPU spec, and have been removed from
Blink.

Bug: dawn:22
Change-Id: I240c4c4107acfaf9facec88a43a38b5ff327c7a6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50702
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-21 00:01:08 +00:00
Qin Jiajia b58efd079c Use HLSL version 2018 for DXC
Currently, we use the device maximum supported shader model for DXC
compiler. Meanwhile, we should use HLSL version 2018 or above to support
the maximum shader model. Otherwise, it may report below errors:
Explicit template arguments on intrinsic Load requires HLSL version 2018
or above.

Bug: None
Change-Id: I7b1bfd1c08eb5ad30b2f7d59d280678bb71d1d64
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51460
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2021-05-20 01:50:57 +00:00
Yunchao He b2527e6d9c Add end2end tests for 3D texture copies
These tests are used to demonstrate that different copy scenarios
will impact how TextureCopySplitter to split copy regions for 3D
textures on D3D12.

Bug: dawn:547

Change-Id: I49947387acaa61f4eacbcd5a18c6cd8db913d2d0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51320
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Yunchao He <yunchao.he@intel.com>
2021-05-19 20:34:36 +00:00
Austin Eng 56537f8b06 Move test parameterization macro from DawnPerfTest to DawnTest
Also add macros to make it easier to generate a params struct.
This makes it possible to generate parameterized tests in
dawn_end2end_tests

Bug: none
Change-Id: I009475dcc08a5274f5871237a363489cff7298f1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51000
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-19 19:38:57 +00:00
Corentin Wallez db03566711 OpenGL: Use binding= for all bindings in generated GLSL
This changes the call to SPIRV-Cross in the GLSL backend to always set
the binding= decoration on interface variables instead of changing the
variable name and matching against it as was done previously. This
matching by name was done for macOS's OpenGL driver's old version of GL
but isn't needed now that Dawn has a Metal backend for macOS.

This also fixes opengl::ShaderModule to iterate only on bindings that
are known to the layout as the reflection between SPIRV-Cross and Tint
can be different.

Bug: tint:808
Bug: tint:386
Change-Id: I308b8da5994d8618799cf6583f1b0e5ea2ba2069
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51520
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-05-19 18:29:37 +00:00
Ben Clayton 122e6abdd4 ShaderModule: Add default case to ResourceType switch
`kExternalTexture` was recently added in tint, and now the compiler warns / errors that this isn't handled by the switch.
Add a default that is `UNREACHABLE()`.

Will fix one of the issues preventing a tint -> dawn roll.

Bug: dawn:728
Change-Id: I510526af46e1f1981a7434f615aa8ed5e56534cd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51362
Auto-Submit: Ben Clayton <bclayton@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-05-19 17:35:26 +00:00
Jiawei Shao ce3d4a5b09 Disable the workaround about the T2T copy issue on newer Intel drivers
This patch disables the workaround about the T2T copy issue (the Toggle
UseTempBufferInSmallFormatTextureToTextureCopyFromGreaterToLessMipLevel)
on the latest Intel Gen9 and Gen9.5 D3D driver (27.20.100.9466) which
contains the fix for this issue.

This patch also implements the D3D driver version comparison algorithm
for Intel drivers.

BUG=chromium:1161355
TEST=dawn_end2end_tests

Change-Id: I406598f2c5745214a60bfc43fb732d45360aa1fe
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51343
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-05-19 08:43:33 +00:00
Jiawei Shao 3fd2036755 Add a command line parameter to run the tests skipped by DAWN_SUPPRESSED_TEST_IF
This patch introduces two new macros to replace DAWN_SKIP_TEST_IF():
1. DAWN_SUPPRESSED_TEST_IF(): for the tests failing on a specific HW / backend /
   OS combination
2. DAWN_TEST_UNSUPPORTED_IF(): for the tests which require an extension or a toggle
   to be present /not present or some WIP features.

This patch also adds a command line parameter "--run-suppressed-tests" to disable
the macro DAWN_SUPPRESSED_TEST_IF(), so that we can test any tests that are related
to any specific HW / backend / OS combinations without changing the source code and
re-building dawn_end2end_tests.

This patch also replaces DAWN_SKIP_TEST_IF() with DAWN_SUPPRESSED_TEST_IF() or
DAWN_TEST_UNSUPPORTED_IF() in QueryTests.cpp and ShaderFloat16Tests.cpp to test
the functionality of these two new macros. DAWN_SKIP_TEST_IF() will be completely
replaced by DAWN_SUPPRESSED_TEST_IF() or DAWN_TEST_UNSUPPORTED_IF() in the next
patch.

BUG=dawn:779

Change-Id: I05db632c614b6ad348fcac85da84744e45be3ae1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51341
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2021-05-19 08:31:13 +00:00
Austin Eng fd783ce627 Support 3D textures in ClearTexture
Also fix and enable testing for texture initialization on OpenGLES.
This CL also factors code so that opengl::Texture::ClearTexture can
use the DoTexSubImage helper.
Note: Clearing of compressed textures on GL still unimplemented.

Bug: dawn:780
Change-Id: I5c1268ee570f2d4347d365465700dd416fbf5619
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50121
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-05-18 21:51:33 +00:00
Corentin Wallez 8507f7e33a Rolling 2 dependencies
Also add suppressions for tests failing after the ANGLE roll.

Roll third_party/angle/ 9a025fd44..835bcb1e2 (460 commits; 1 trivial rolls)

9a025fd448..835bcb1e27

$ git log 9a025fd44..835bcb1e2 --date=short --no-merges --format='%ad %ae %s'
2021-05-08 lexa.knyazev Vulkan: Support GL_EXT_texture_sRGB_RG8
2021-05-18 angle-autoroll Roll vulkan-deps from 055e71b2a367 to 3d799e0e9b08 (25 revisions)
2021-05-14 syoussefi Vulkan: Optimize respecifying an image
2021-05-17 syoussefi Vulkan: Fix a bug releasing DynamicBuffer-owned buffer
2021-05-13 cnorthrop Tests: Add Pokemon Go trace
2021-05-13 cnorthrop Capture/Replay: Add const to string pointer
2021-05-13 cnorthrop Capture/Replay: Skip glGetActiveUniform
2021-05-13 cnorthrop Capture/Replay: Reset programs on loop
2021-05-17 cnorthrop Skip Texture2DTest.TextureSize on Linux+GL+TSAN
2021-05-17 jmadill ANGLETest: Skip test setup/teardown on major error.
2021-05-17 jonahr Fix out_of_range error in System_utils_posix
2021-05-14 syoussefi Vulkan: Cleanup texture image respecify
2021-05-13 syoussefi Vulkan: Fix desc set cache bug with xfb offset
2021-05-14 jmadill Gold Tests: Implement flaky retries and sharding.
2021-05-17 angle-autoroll Roll SwiftShader from c4d054c6ad41 to af907708adb3 (2 revisions)
2021-05-17 angle-autoroll Roll Chromium from 3b747dab7bb3 to 9b886afc6e79 (485 revisions)
2021-05-14 gert.wollny Capture/Replay: Add suffix to label for test file search
2021-05-12 gert.wollny Capture/Replay: Print context diff also with frame gaps
2021-05-10 gert.wollny Capture/Replay: track robustResourceInit
2021-04-12 cclao Vulkan: Add webgl conformance/texture-size test
2021-05-14 ianelliott Vulkan: Fix AGI hierarchy
2021-05-12 cclao Skip Texture2DArrayIntegerTestES3.NonZeroBaseLevel on OSX+OpenGL
2021-05-14 syoussefi Vulkan: Disable BufferVk suballocation
2021-05-14 angle-autoroll Roll VK-GL-CTS from 1c4a387382ea to 535dfe49fc49 (1 revision)
2021-05-14 geofflang GL: Recreate textures on eglReleaseTexImage.
2021-05-12 m.maiya Bug fix in glTexParameter and glGetTexParameter validation
2021-05-12 cclao Fix IOSurfaceClientBufferTest.RenderToBGRX8888IOSurface on OSX+OpenGL
2021-05-11 jmadill Test Runner: Add test expectations parser.
2021-05-05 jonahr Reland Change to module directory when loading swiftshader ICD.
2021-04-29 sergeyu [Vulkan] Add DisplayVkNull
2021-05-14 angle-autoroll Roll VK-GL-CTS from 6498f4042d9f to 1c4a387382ea (19 revisions)
2021-05-14 cnorthrop Tests: Update capture_replay_expectations
2021-05-07 cclao Vulkan: Add feature flag to flush at framebuffer boundary
2021-05-12 lubosz.sarnecki TracePerfTests: Don't call framebuffer functions on GLES1.
2021-05-13 jplate CL: Add symbol version map to libOpenCL
2021-05-14 angle-autoroll Roll Chromium from b0687cb1f1ec to 3b747dab7bb3 (328 revisions)
2021-05-09 jplate CL: Implement context for front end and passthrough
2021-05-11 syoussefi Translator: Fix struct/uniform separation w.r.t to arrays
2021-05-13 ianelliott Disable GL_EXT_shader_framebuffer_fetch_non_coherent on Arm/QCOM
2021-05-11 jmadill Allow specifying GPU config on expectation check.
2021-05-11 syoussefi Translator: Fix local var inits vs struct/uniform separation
2021-05-12 gert.wollny Capture/Replay: recreate the EGL window if contexts don't match
2021-05-13 angle-autoroll Roll Chromium from 3fb708290557 to b0687cb1f1ec (639 revisions)
2021-05-11 geofflang Add messages for framebuffer completeness errors.
2021-03-05 syoussefi Vulkan: Allow DynamicBuffer suballocation in BufferVk
2021-05-12 syoussefi Remove teglAndroidUtil.cpp override
2021-05-13 jmadill Test Runner: Fixes to skipped tests.
2021-05-09 jplate CL: device partitioning for front end and passthrough
2021-05-12 sugoi Add array bounds checks for WebGL shaders
2021-05-13 angle-autoroll Roll SwiftShader from be169ef35238 to c4d054c6ad41 (2 revisions)
(...)
2021-04-02 jmadill Add GL_ANGLE_get_serialized_context_string.
2021-03-30 cnorthrop Tests: Add Dragon Raja trace
2021-04-02 jmadill Fix rapidjson build error in Skia.
2021-03-29 cnorthrop Capture/Replay: Support multi-digit context
2021-03-25 cclao Vulkan: Add baseLevel and generateMipmap test for immutable texture
2021-03-25 m.maiya Vulkan: Add YUV G8_B8R8_2PLANE_420_UNORM support.
2021-03-31 cclao Vulkan: Add test render to immutable texture will flush
2021-04-02 angle-autoroll Roll vulkan-deps from a0d5b9653a91 to 61083c4a2ae0 (4 revisions)
2021-03-31 gert.wollny JsonSerializer: use stubs when building without rapidjson
2021-04-02 angle-autoroll Roll Chromium from cc20ce29e7a7 to 9c9ca054e2bc (391 revisions)
2021-04-01 cnorthrop Tests: Add Aztec Ruins trace
2021-04-01 cnorthrop Tests: Add League of Legends: Wild Rift trace
2021-04-02 kainino Revert "Metal: Support importing external metal textures"
2021-03-29 xinghua.cao D3D: fix uniform block alignment error
2021-04-01 ynovikov Fix and re-enable component build of angle_apks
2021-04-01 ynovikov Add Linux, Ozone and Fuchsia chromium.angle bots to CQ
2021-03-13 lehoangq Metal: Support importing external metal textures
2021-03-30 jonahr Don't append newline to empty InfoLog stream.
2021-04-01 angle-autoroll Roll vulkan-deps from 0a4b29c05e71 to a0d5b9653a91 (6 revisions)
2021-04-01 angle-autoroll Roll Chromium from e4067deef470 to cc20ce29e7a7 (104 revisions)
2021-03-31 jonahr Revert "Reland "Add support for Linux GPU info with Vulkan backend""
2021-04-01 angle-autoroll Roll Chromium from c181ac047c8b to e4067deef470 (350 revisions)
2020-07-18 lehoangq Metal: implement ANGLE_device_metal extension.
2021-03-31 ynovikov Reland "Link angle_util statically into angle_system_info_test"
2021-03-12 jonahr GLX: Always call XSync on creation/destruction of WindowSurfaces
2021-03-31 syoussefi Add a gl-d3d-only target for the translator
2021-03-30 cclao Vulkan: Split fragment shader from ColorAttachmentAndAllShadersRead
2021-03-30 jmadill Enable messenger_lite trace on SwiftShader.
2021-03-26 syoussefi Vulkan: Remove spam output regarding pipeline cache
2021-03-31 chonggu [Fuchsia] Use manifest fragments for Cr-Fuchsia binaries
2021-03-31 angle-autoroll Roll vulkan-deps from 4b3769b941e6 to 0a4b29c05e71 (2 revisions)
2021-03-31 angle-autoroll Roll Chromium from 8599134e632f to c181ac047c8b (466 revisions)
2021-03-19 timvp Detach separable shaders
2021-03-17 timvp Support linking PPOs without attached Shaders
2021-03-30 syoussefi Vulkan: Temporarily use GOOGLEX instead of EXT for MSRTSS
2021-03-25 rafael.cintron Check return value of allocateResource instead of asserting
2021-03-17 timvp Update PPO's executable when attached program is re-linked
2021-03-30 ynovikov Replace Win x86 dEQP GPU.FYI bot with chromium.angle bot
2021-03-30 angle-autoroll Roll vulkan-deps from e0d8a486f6d5 to 4b3769b941e6 (3 revisions)
2021-03-30 angle-autoroll Roll SwiftShader from fb53aa2bb7da to 4c0f888d7ef8 (1 revision)
2021-03-30 angle-autoroll Roll Chromium from 26bf9bb622f1 to 8599134e632f (396 revisions)
2021-03-17 timvp Reland "Save/Load missing members"
2021-03-29 syoussefi Don't link with SPIR-V repos if !vulkan && !metal
2021-03-15 gert.wollny Capture/Replay: serialize context to JSON
2021-03-15 gert.wollny Capture/Replay: Enable GetTexImage tests
2021-02-23 gert.wollny capture/replay: impl CaptureGetRenderbufferImageANGLE_pixels
2021-03-25 penghuang Only enable framebufferMultisample with framebufferBlitANGLE
2021-02-23 gert.wollny capture/replay: implement CaptureGetTexImageANGLE_pixels
2021-03-29 angle-autoroll Roll vulkan-deps from 7079d8df17da to e0d8a486f6d5 (7 revisions)
2021-03-29 angle-autoroll Roll Chromium from e0abc3035c46 to 26bf9bb622f1 (218 revisions)

Roll third_party/vulkan-deps/ 105af117f..3d799e0e9 (225 commits)

https://chromium.googlesource.com/vulkan-deps/+log/105af117f053..3d799e0e9b08

$ git log 105af117f..3d799e0e9 --date=short --no-merges --format='%ad %ae %s'
2021-05-18 chromium-autoroll Roll Vulkan-ValidationLayers from 2b22f2703be9 to 1d86b3235b42 (1 revision)
2021-05-17 chromium-autoroll Roll Vulkan-ValidationLayers from 2d7f42a44fa7 to 2b22f2703be9 (3 revisions)
2021-05-17 chromium-autoroll Roll Vulkan-ValidationLayers from c46a663b305b to 2d7f42a44fa7 (1 revision)
2021-05-17 chromium-autoroll Roll Vulkan-Tools from 1d176506710c to f89f72e10562 (1 revision)
2021-05-17 chromium-autoroll Roll Vulkan-ValidationLayers from 38bdcddf817f to c46a663b305b (3 revisions)
2021-05-15 chromium-autoroll Roll Vulkan-ValidationLayers from 957552062392 to 38bdcddf817f (1 revision)
2021-05-14 chromium-autoroll Roll Vulkan-ValidationLayers from 6da4ac2df971 to 957552062392 (1 revision)
2021-05-14 chromium-autoroll Roll Vulkan-ValidationLayers from da6b48f6f5f2 to 6da4ac2df971 (2 revisions)
2021-05-14 chromium-autoroll Roll SPIRV-Tools from 18d45142e7a2 to f0d110e3058b (1 revision)
2021-05-13 chromium-autoroll Roll Vulkan-ValidationLayers from 2e2e61e6aeb4 to da6b48f6f5f2 (1 revision)
2021-05-13 chromium-autoroll Roll Vulkan-ValidationLayers from e27f26557588 to 2e2e61e6aeb4 (3 revisions)
2021-05-13 chromium-autoroll Roll Vulkan-ValidationLayers from 20678fff2a19 to e27f26557588 (4 revisions)
2021-05-13 chromium-autoroll Roll SPIRV-Tools from 010cd289db8b to 18d45142e7a2 (1 revision)
2021-05-12 chromium-autoroll Roll SPIRV-Tools from f6b59599ae6c to 010cd289db8b (1 revision)
2021-05-12 chromium-autoroll Roll SPIRV-Tools from de1cae069c06 to f6b59599ae6c (1 revision)
2021-05-11 chromium-autoroll Roll Vulkan-Tools from c251814e52e6 to 1d176506710c (1 revision)
2021-05-11 chromium-autoroll Roll Vulkan-Tools from 6407a0c8a489 to c251814e52e6 (1 revision)
2021-05-11 chromium-autoroll Roll Vulkan-Tools from 535fc4091298 to 6407a0c8a489 (1 revision)
2021-05-11 chromium-autoroll Roll glslang from d234552c3095 to 202c8abae0a3 (1 revision)
2021-05-11 chromium-autoroll Roll Vulkan-Loader from 039cea5353be to a132dee142c0 (1 revision)
2021-05-11 chromium-autoroll Roll Vulkan-Tools from 202eb962485c to 535fc4091298 (1 revision)
2021-05-11 chromium-autoroll Roll Vulkan-ValidationLayers from 0aca21bce7bc to 20678fff2a19 (15 revisions)
2021-05-11 chromium-autoroll Roll Vulkan-Tools from 4ee5f2a8bee0 to 202eb962485c (1 revision)
2021-05-11 chromium-autoroll Roll glslang from 9431c53c84c1 to d234552c3095 (1 revision)
2021-05-11 chromium-autoroll Roll SPIRV-Tools from 1020e394cb12 to de1cae069c06 (1 revision)
2021-05-11 chromium-autoroll Roll Vulkan-ValidationLayers from 5ef1ec1b87b1 to 0aca21bce7bc (6 revisions)
2021-05-10 chromium-autoroll Roll Vulkan-Headers from 3f437c4a94ae to 9af411e83fb0 (1 revision)
2021-05-07 chromium-autoroll Roll Vulkan-ValidationLayers from 6330153b2b84 to 5ef1ec1b87b1 (2 revisions)
2021-05-07 chromium-autoroll Roll glslang from 41e39c615b14 to 9431c53c84c1 (1 revision)
2021-05-07 chromium-autoroll Roll SPIRV-Cross from 0eeaffe048b9 to 418542eaefdb (1 revision)
2021-05-07 chromium-autoroll Roll SPIRV-Cross from 72a2ec4c1b56 to 0eeaffe048b9 (1 revision)
2021-05-06 chromium-autoroll Roll Vulkan-ValidationLayers from 157c4bfe15cf to 6330153b2b84 (1 revision)
2021-05-05 chromium-autoroll Roll Vulkan-ValidationLayers from 5f40eb72ecd0 to 157c4bfe15cf (1 revision)
2021-05-05 chromium-autoroll Roll Vulkan-ValidationLayers from 3cafbf75e124 to 5f40eb72ecd0 (1 revision)
2021-05-05 chromium-autoroll Roll Vulkan-ValidationLayers from 3fa29a63072b to 3cafbf75e124 (7 revisions)
2021-05-04 chromium-autoroll Roll Vulkan-Loader from f14e11c9bf69 to 039cea5353be (1 revision)
2021-05-04 chromium-autoroll Roll Vulkan-Loader from 91955fbcff84 to f14e11c9bf69 (1 revision)
2021-05-04 chromium-autoroll Roll Vulkan-ValidationLayers from 0e7f7a9e108b to 3fa29a63072b (2 revisions)
2021-05-04 chromium-autoroll Roll Vulkan-Loader from 5dcea8a449c8 to 91955fbcff84 (1 revision)
2021-05-04 chromium-autoroll Roll SPIRV-Tools from 8ec9f456e614 to 1020e394cb12 (1 revision)
2021-05-04 chromium-autoroll Roll Vulkan-ValidationLayers from 6eaf131c0cd7 to 0e7f7a9e108b (2 revisions)
2021-05-03 chromium-autoroll Roll Vulkan-ValidationLayers from 61225265ebac to 6eaf131c0cd7 (1 revision)
2021-05-03 chromium-autoroll Roll glslang from 186bccdd9f8a to 41e39c615b14 (1 revision)
2021-05-03 chromium-autoroll Roll glslang from 56b17b2f2dfc to 186bccdd9f8a (1 revision)
2021-05-03 chromium-autoroll Roll Vulkan-ValidationLayers from cd5ffbe1bac1 to 61225265ebac (1 revision)
2021-05-03 chromium-autoroll Roll Vulkan-ValidationLayers from 884579ec2928 to cd5ffbe1bac1 (1 revision)
2021-05-03 chromium-autoroll Roll Vulkan-ValidationLayers from 5f00f84a15f6 to 884579ec2928 (1 revision)
2021-04-30 chromium-autoroll Roll Vulkan-ValidationLayers from a19068db1b8b to 5f00f84a15f6 (2 revisions)
2021-04-30 chromium-autoroll Roll Vulkan-ValidationLayers from 7ab4afe5052d to a19068db1b8b (1 revision)
2021-04-29 chromium-autoroll Roll Vulkan-ValidationLayers from 5363130b7570 to 7ab4afe5052d (3 revisions)
(...)
2021-03-26 chromium-autoroll Roll SPIRV-Cross from 84d1f8aa2a40 to 28ae7b8f357c (1 revision)
2021-03-26 chromium-autoroll Roll Vulkan-ValidationLayers from 5c65b37c60d8 to 0cee3a4e5088 (2 revisions)
2021-03-26 chromium-autoroll Roll SPIRV-Tools from f22793015360 to d0c73fcee18f (1 revision)
2021-03-25 chromium-autoroll Roll Vulkan-ValidationLayers from b1a10a4bc609 to 5c65b37c60d8 (3 revisions)
2021-03-25 chromium-autoroll Roll SPIRV-Tools from ecc840d30b69 to f22793015360 (1 revision)
2021-03-24 chromium-autoroll Roll Vulkan-ValidationLayers from 8d63a36ca533 to b1a10a4bc609 (1 revision)
2021-03-24 chromium-autoroll Roll Vulkan-ValidationLayers from 56b864783fd2 to 8d63a36ca533 (1 revision)
2021-03-24 chromium-autoroll Roll SPIRV-Tools from d20c9c2cf3fb to ecc840d30b69 (1 revision)
2021-03-24 chromium-autoroll Roll Vulkan-Tools from 27c21248221f to 1d3ce716dfef (1 revision)
2021-03-23 chromium-autoroll Roll Vulkan-Loader from f17f507c2472 to 5180defc0195 (1 revision)
2021-03-23 chromium-autoroll Roll Vulkan-ValidationLayers from 50fb183594f5 to 56b864783fd2 (1 revision)
2021-03-23 chromium-autoroll Roll SPIRV-Tools from bed84792f9dd to d20c9c2cf3fb (1 revision)
2021-03-23 chromium-autoroll Roll Vulkan-Loader from 1353e80d87b4 to f17f507c2472 (1 revision)
2021-03-23 chromium-autoroll Roll glslang from c51a774ebdd2 to 2c7c84c8ac99 (1 revision)
2021-03-23 chromium-autoroll Roll SPIRV-Tools from edb8399b0ff3 to bed84792f9dd (3 revisions)
2021-03-23 chromium-autoroll Roll Vulkan-ValidationLayers from 96810e2a54f8 to 50fb183594f5 (2 revisions)
2021-03-22 chromium-autoroll Roll glslang from 6701c2540bb2 to c51a774ebdd2 (2 revisions)
2021-03-22 chromium-autoroll Roll Vulkan-ValidationLayers from cd8d97e985a4 to 96810e2a54f8 (1 revision)
2021-03-22 chromium-autoroll Roll glslang from 847a19cd2b42 to 6701c2540bb2 (2 revisions)
2021-03-22 chromium-autoroll Roll Vulkan-ValidationLayers from 0480f13e233c to cd8d97e985a4 (1 revision)
2021-03-22 chromium-autoroll Roll Vulkan-ValidationLayers from a8918dfc53cf to 0480f13e233c (1 revision)
2021-03-22 chromium-autoroll Roll Vulkan-Headers from 89d366355e6f to a8d6ab19d197 (1 revision)
2021-03-21 chromium-autoroll Roll SPIRV-Tools from 6382cbb4973e to edb8399b0ff3 (1 revision)
2021-03-20 chromium-autoroll Roll SPIRV-Tools from 6578899781f6 to 6382cbb4973e (1 revision)
2021-03-20 chromium-autoroll Roll SPIRV-Tools from 75d7c14cfb07 to 6578899781f6 (1 revision)
2021-03-20 chromium-autoroll Roll SPIRV-Tools from f2a19b0150b9 to 75d7c14cfb07 (1 revision)
2021-03-19 chromium-autoroll Roll glslang from 979319b9b161 to 847a19cd2b42 (1 revision)
2021-03-19 chromium-autoroll Roll Vulkan-ValidationLayers from 309d9bea0956 to a8918dfc53cf (3 revisions)
2021-03-19 chromium-autoroll Roll SPIRV-Tools from 8f421ced3e05 to f2a19b0150b9 (1 revision)
2021-03-19 chromium-autoroll Roll SPIRV-Tools from 2b0d16a05905 to 8f421ced3e05 (1 revision)
2021-03-19 chromium-autoroll Roll SPIRV-Tools from a732e4c03cc1 to 2b0d16a05905 (1 revision)
2021-03-19 chromium-autoroll Roll SPIRV-Tools from a611be7782de to a732e4c03cc1 (1 revision)
2021-03-18 chromium-autoroll Roll glslang from d18bcd64fa40 to 979319b9b161 (1 revision)
2021-03-18 chromium-autoroll Roll Vulkan-ValidationLayers from b6c181342bff to 309d9bea0956 (2 revisions)
2021-03-18 chromium-autoroll Roll Vulkan-ValidationLayers from f8f145df59a7 to b6c181342bff (1 revision)
2021-03-18 chromium-autoroll Roll Vulkan-ValidationLayers from d5bf0be344f5 to f8f145df59a7 (2 revisions)
2021-03-18 chromium-autoroll Roll SPIRV-Tools from 4f498774db52 to a611be7782de (1 revision)
2021-03-18 chromium-autoroll Roll glslang from f5929b8c5f83 to d18bcd64fa40 (1 revision)
2021-03-17 chromium-autoroll Roll glslang from b2e5b5c559e1 to f5929b8c5f83 (1 revision)
2021-03-17 chromium-autoroll Roll Vulkan-ValidationLayers from 894604a86c46 to d5bf0be344f5 (1 revision)
2021-03-17 chromium-autoroll Roll Vulkan-ValidationLayers from e53e4e5f0cdc to 894604a86c46 (1 revision)
2021-03-17 cwallez OWNERS: Replace dsinclair with cwallez
2021-03-17 chromium-autoroll Roll SPIRV-Tools from c040bd3ae5fa to 4f498774db52 (1 revision)
2021-03-17 chromium-autoroll Roll SPIRV-Tools from 8866fd7ae27e to c040bd3ae5fa (1 revision)
2021-03-17 chromium-autoroll Roll SPIRV-Tools from 79ab273f997e to 8866fd7ae27e (3 revisions)
2021-03-16 chromium-autoroll Roll SPIRV-Tools from 042eff73fe0d to 79ab273f997e (1 revision)
2021-03-16 chromium-autoroll Roll Vulkan-ValidationLayers from 60f29ec48880 to e53e4e5f0cdc (3 revisions)
2021-03-16 chromium-autoroll Roll Vulkan-ValidationLayers from 053e2bf22dd2 to 60f29ec48880 (3 revisions)
2021-03-16 chromium-autoroll Roll SPIRV-Tools from 4100477e76c8 to 042eff73fe0d (2 revisions)
2021-03-16 chromium-autoroll Roll SPIRV-Tools from 478754c00537 to 4100477e76c8 (1 revision)

Bug: dawn:789

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

Change-Id: Iacc6680ee6168390d1bf88b5bafdcef59475159d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51361
Commit-Queue: Austin Eng <enga@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-05-18 16:01:03 +00:00
Hao Li 880a3d6311 Fix query index of availability in timestamp shader
Currently we use offset to calculate the index of the queries in
timestamp compute shader, which is incorrect. The offset is the buffer
offset where we start to write the query results, and has nothing to
do with query index. In the query availability detection, the query
index should be based on the parameter firstQuery.

Add new test for resolving a timestamp query twice to the same
destination buffer with potentially overlapping ranges.

Bug: dawn:434
Change-Id: I2b5c5b192cf5d987ac48187e8240a25937957f51
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50760
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Hao Li <hao.x.li@intel.com>
2021-05-18 01:13:08 +00:00
Stephen White 21ce5d2965 Split #defines for OpenGL and OpenGL ES backends.
This permits enabling the OpenGL and OpenGL ES backends independently.
This change also enables the OpenGL ES backend on Windows.

This will cause the end2end tests to run on OpenGL ES on the
GPU-less bots, via SwANGLE.

Bug: dawn:580

Change-Id: I43d514b18862d176610b95e97013a67723ddac20
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50881
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2021-05-17 18:04:48 +00:00
Aleksi Sapon 58ec60ea23 CMake: add dependency to dawncpp_headers on dawn_common
common/VertexFormatUtils.h includes dawn/webgpu_cpp.h

Change-Id: Id9f56c8d1344467ba84093b5da7d6997e34c1c22
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50620
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-05-17 16:04:28 +00:00
Corentin Wallez 3148e83cff Use Tint as much as possible in fuzzers.
Force the use_tint_generator toggle so that Tint is used as much as
possible in fuzzers to get coverage of the relevant code.

This will also fix a recurring fuzzer issue that required a code
transform that only exists in the Tint path: bindings must be renumbered
otherwise we hit an integer overflow in Swiftshader's descriptor set
writes.

Bug: chromium:1209602
Change-Id: Ie868fb07306f96a8ecf42a687313e0a466041a45
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51240
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2021-05-17 15:37:18 +00:00
Yunchao He e8c271dab7 Rename some data structures in TextureCopySplitter
The change renames Texture2DCopySplit and copies2D to
TextureCopySubresource and copySubresources respectively.
Because they are not used for 2D only.

I didn't change Texture2DCopySplit to TextureCopySplit in order
to reflect its meaning and distinguish it from TextureCopySplits.
TextureCopySubresource is a collection of copy regions for either a
single layer of a 1D/2D texture or all depth slices on the same
mip level of a 3D texture (They are exactly what subresources are).

It also renames function ComputeTextureCopySplit to
ComputeTextureCopySubresource, and a couple similar renaming.

Bug: dawn:547
Change-Id: I17f8b349e209af0ed1ccaee4634be1e8235a63b3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50920
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-17 10:35:57 +00:00
Qin Jiajia 75de553398 Use the device maximum supported shader model
Use the device maximum supported shader model for DXC compiler.

Bug: None
Change-Id: I05f66d499405a3512a43daca35bb20be84f1f6c5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/51080
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2021-05-16 17:11:17 +00:00
Brandon Jones 76e5a9f6dd Remove deprecated API surface, Pt. 1
- Remove Device.getDefaultQueue()
 - Remove Extent3D.depth
 - Remove setIndexBufferWithFormat
 - Remove TextureUsage::OutputAttachment

Change-Id: If1c39b5630c88c3b87b37e317aafe7442419f7d0
Bug: dawn:22
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50700
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Brandon Jones <bajones@chromium.org>
2021-05-13 17:51:23 +00:00
Qin Jiajia 72ee6ade31 Add MatMul with 2-dimensional shared array shader
The previous matmul is using 1-dimensional shared array. This PR
adds the 2-dimensional shared array. The perf result shows that:
1. For 1-dimensional shared array, enabe-robustness wil bring almost 2x
regression both for matmulFloat and matmulVec4 on Intel CFL.
2. For 2-dimensional shared array, enabe-robustness will bring almost 2x
regression on matmulFloat. But have little impact on matmulVec4 on Intel
CFL.

Tested on Intel_R_UHD_Graphics_630.
shader                     enable robustness    disable robustness
MatMulFloatOneDimSharedArray    5383 us            3105 us
MatMulFloatTwoDimSharedArray    4788 us            2608 us
MatMulVec4OneDimSharedArray     3070 us            1743 us
MatMulVec4TwoDimSharedArray     1840 us            1802 us

Bug: dawn:594
Change-Id: Ia29a78cf70649ef8d3ba8476db1ad4d6ded80840
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50481
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
2021-05-13 00:55:41 +00:00
Austin Eng 81addb75cb Pass mayCollide argument to Tint's BindingRemapper
Added in https://dawn-review.googlesource.com/c/tint/+/50742
Bindings may not collide except on the D3D12 backend where we use
the register offset as the binding number. Offsets may alias if
they are for different HLSL register types (buffer, texture, etc.)

Bug: tint:797
Change-Id: I020e3b5cd1d35fdf5678b587225507e0cf24f5b3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50801
Commit-Queue: Austin Eng <enga@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: Austin Eng <enga@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-05-12 17:01:01 +00:00
Ben Clayton f0fdfa0d61 ShaderModule: Keep the tint::Source::File alive
Certain backends performs transformations on the tint::Program in the ShaderModule.
These transformations may raise diagnostics.
Tint diagnostics generated from an underlying tint::Source::File need that File kept alive.

Change-Id: I32deceb4cedb419e914631d342884fc27972b5cb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50581
Auto-Submit: Ben Clayton <bclayton@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-05-11 15:07:01 +00:00
Austin Eng e2f083e4b0 Add tests for copies between 3D and 2D array textures
Skip these tests on D3D12 because it is not implemented yet.

Bug: dawn:547
Change-Id: I0a009b00bd26bb04794bb627c53f4540462f1ca7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50243
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
2021-05-11 01:26:13 +00:00
Austin Eng 2a7d0ac828 Implement 3D texture copies on OpenGL/ES
Bug: dawn:783
Change-Id: I3c7f0ffc3f45a0d67b411a39342e89c710604d54
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50244
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-05-11 00:50:53 +00:00
Austin Eng 5230c6bd93 Implement 3D texture copies on Metal
Bug: dawn:782
Change-Id: I204bfb087b9b7584d7d0f1964bcb3ea8b0a41d38
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50242
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
2021-05-11 00:04:13 +00:00
Austin Eng d066d17ef6 Implement 3D texture copies on Vulkan
Bug: dawn:781
Change-Id: I5a1b3cc906b2bcb89c0ba3b202bacd16e012efe8
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50241
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
2021-05-10 18:58:51 +00:00
Austin Eng 67851d9021 Validate that 3D texture copies cannot be between the same subresource
Bug: dawn:547
Change-Id: I747ccdb895121292e527acc385d69697bc86d8b2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50240
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
2021-05-10 17:42:41 +00:00
Austin Eng 26468c4071 Metal: Add CommandRecordingContext argument to ClearTexture
This is more consistent with the other backends that have a
CommandRecordingContext.

Bug: dawn:780
Change-Id: Icb689d00cc4d873a489fc4d4c247feeb15f8797c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50120
Commit-Queue: Stephen White <senorblanco@chromium.org>
Auto-Submit: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2021-05-08 16:01:16 +00:00
Brandon Jones 23f77074bf Suppress specific Vulkan validation messages
Adds UNASSIGNED-CoreValidation-DrawState-InvalidImageLayout (0x4dae5635)
initially, since we can see that it's causing issues with the WebGPU CTS
tests.

Change-Id: I862e3986d59ae590458f9011a16cc824bf752e72
Bug: dawn:785
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/50423
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2021-05-07 22:15:45 +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
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
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