2707 Commits

Author SHA1 Message Date
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