Commit Graph

12005 Commits

Author SHA1 Message Date
Jiawei Shao e8d12b44b6 Create texture view with descriptor on D3D12 and Metal - Part I
This patch is the first part to implement creating a texture view
with a texture view descriptor on D3D12 and Metal back-ends. With
this patch the texture views created with descriptor can be bound
as sampledTextures on D3D12 and Metal back-ends.

Note that the support of rendering into a layer or a mipmap level of
a texture on D3D12 and Metal back-ends is not included in this patch.

BUG=dawn:16
TEST=dawn_end2end_tests

Change-Id: I62473ec5a4bb6b84d797ef7fd9cb98689ff763f4
Reviewed-on: https://dawn-review.googlesource.com/c/1940
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-10-26 06:29:38 +00:00
Corentin Wallez aa7109c148 Add copy constructors to the C++ Dawn interface
This removes the need for Clone() so it is removed and also adds tests
for the new constructors.

BUG=dawn:11

Change-Id: Ia45c765c2d30e40b0e036427793a62327b2008fc
Reviewed-on: https://dawn-review.googlesource.com/c/1901
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-25 10:42:49 +00:00
Corentin Wallez 5aac265dcb Roll glslang and shaderc
These new versions contain the fix for not having static libraries
with no sources depending on source sets in their BUILD.gn

BUG=chromium:870747

Change-Id: Ib979d5ee581f37db22347f0f725086a9b9833d07
Reviewed-on: https://dawn-review.googlesource.com/c/1900
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-23 12:50:10 +00:00
Jiawei Shao f9d217b0e9 Implement creating texture view with descriptor on Vulkan
This patch implements creating a texture view with given texture
view descriptor on Vulkan back-ends.

This patch also updates TextureViewTests to test various mipmap
levels and adds several tests to cover all added features.

BUG=dawn:16
TEST=dawn_end2end_tests

Change-Id: I602e5a076e4f717f555cb9a9ef98d5dfceadbe81
Reviewed-on: https://dawn-review.googlesource.com/c/1880
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-10-23 11:08:20 +00:00
Jiawei Shao aef480bcfe Implement CreateDefaultTextureView by CreateTextureView
This patch removes CreateDefaultTextureView in all the back-ends of
class Device and implements this function by CreateTextureView using
a TextureViewDescriptor created from the original texture.

Note that this patch only refactors the original implementation of
creating default texture. The support of creating texture views from
a texture view descriptor will be added in the next several patches.

BUG=dawn:16

Change-Id: Iadfc1e17e1cf23a4c1fa8ff44b1fb1a765d21e3f
Reviewed-on: https://dawn-review.googlesource.com/c/1840
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2018-10-18 06:00:09 +00:00
Corentin Wallez 79aee9c56d Suppress test failure on Vulkan
BUG=dawn:16

Change-Id: I8d0ae82d379ff092e1d585f2b69dd6226aa55c39
Reviewed-on: https://dawn-review.googlesource.com/c/1820
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-16 09:16:15 +00:00
Corentin Wallez 9e4518b57e Put the reference to DeviceBase in a new ObjectBase
ObjectBase will contain data that all WebGPU objects have such as a
pointer back to the device, a refcount (via inheriting from RefCounted),
a name, an error status etc.

BUG=dawn:24

Change-Id: I919e1a6d4a68811ceb6e503b2a793815c92f2528
Reviewed-on: https://dawn-review.googlesource.com/c/1620
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2018-10-15 12:54:30 +00:00
Jiawei Shao 6329e5ad47 Add entry point of creating texture view by TextureViewDescriptor
This patch adds the entry point creating texture view with a
TextureViewDescriptor and all the validations on the parameters
according to https://github.com/gpuweb/gpuweb/issues/79.

BUG=dawn:16
TEST=dawn_unittests

Change-Id: Ibc04a0f7b9f334c57da191606313ab156e18af1f
Reviewed-on: https://dawn-review.googlesource.com/c/1800
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-10-12 08:32:58 +00:00
Jiawei Shao c35be1a4dd Support creating default texture view on 2D array textures
This patch intends to implement creating default texture view on
2D array textures.

BUG=dawn:16

Change-Id: I4321c9506b2e875146645ad60291196dcfcc8ea0
Reviewed-on: https://dawn-review.googlesource.com/c/1660
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2018-10-09 00:31:58 +00:00
Corentin Wallez 51108e0e4d Remove references to Github in README and CONTRIBUTING
BUG=dawn:23

Change-Id: I538271d67581da4212e62662617890bd28f624df
Reviewed-on: https://dawn-review.googlesource.com/c/1780
Reviewed-by: David Neto <dneto@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-08 13:51:18 +00:00
Corentin Wallez 16092faa16 Roll shaderc and glslang and use their BUILD.gn
This rolls glslang and shaderc to be able to use their BUILD.gn files,
and also rolls SPIRV-Tools and spirv-headers to have compatible
versions.

BUG=chromium:870747

Change-Id: I13c615f6f3d148c9b69f06547992bf5910e04e62
Reviewed-on: https://dawn-review.googlesource.com/c/1680
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-04 17:17:57 +00:00
Stephen White d380fdda08 Fix for D3D12 re-used bindgroup bug.
If a bindgroup was re-used in multiple command buffers in a single call
to queue.Submit(), it was skipping the creation of the corresponding
descriptor heap for that bind group in the second command buffer.

The fix is to use the command buffer's index into the submit command as
part of the key for the bind group's descriptor heap.

Change-Id: Ie66a0e772b10cc72bf040f090dac4c4a10f24266
Reviewed-on: https://dawn-review.googlesource.com/c/1740
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2018-10-04 16:59:05 +00:00
James Darpinian f168c57694 Add new dependencies to gitignore and fix gclient url.
BUG=

Change-Id: I7c89038d0da127dec92813b3b597153ff8a534c9
Reviewed-on: https://dawn-review.googlesource.com/1701
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: James Darpinian <jdarpinian@google.com>
2018-10-01 18:02:04 +00:00
James Darpinian 664f8fd385 Fix GLTF viewer shader with wrong binding indices.
BUG=

Change-Id: Ifcc302280d52f4f1c1860d2a59b864372397ceb9
Reviewed-on: https://dawn-review.googlesource.com/1700
Commit-Queue: James Darpinian <jdarpinian@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2018-09-28 19:51:18 +00:00
Corentin Wallez bf47553c0a Revert "Add a temporary requirement for Mac bots to have XCode."
This reverts commit d3c4eda135.

Reason for revert: Issue has been fixed so we can remove the XCode
requirement.

Original change's description:
> Add a temporary requirement for Mac bots to have XCode.
> 
> BUG=chromium:884015
> 
> Change-Id: Iee2373b23ab5534165b36c40600cae86545ee3d9
> Reviewed-on: https://dawn-review.googlesource.com/1544
> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
> Reviewed-by: Stephen White <senorblanco@chromium.org>

TBR=cwallez@chromium.org,kainino@chromium.org,senorblanco@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:884015
Change-Id: I5ae40e2343c7684bdbe533f5a8baa1490cdb37d1
Reviewed-on: https://dawn-review.googlesource.com/1643
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-25 22:47:37 +00:00
Corentin Wallez 76664ed8d0 BUILD.gn: Make dawn_standalone default to false
BUG=chromium:870747

Change-Id: I9d80bb8a73227a9a9e5a7c466ac5b40a10fc0106
Reviewed-on: https://dawn-review.googlesource.com/1641
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-25 21:52:44 +00:00
Corentin Wallez 299ce6c69c BUILD.gn: Make SPIRV-Cross includes relative to repo.
BUG=chromium:870747

Change-Id: I9dfdc4f88b0f17b9c2a4e102610d9eb125087bba
Reviewed-on: https://dawn-review.googlesource.com/1642
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-25 21:50:44 +00:00
Corentin Wallez 038a8554ad Add component to OWNERS and fixup repo URL in README.chromium
BUG=chromium:870747

Change-Id: I678393ca29f934ecc23f0140d2d211fccf619a5f
Reviewed-on: https://dawn-review.googlesource.com/1640
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2018-09-25 20:53:37 +00:00
Ryan Tseng 773e38098d luci-milo.cfg: Add logo
Dawn is missing a logo.

Change-Id: I836dc973119a33353a2d8051b2c84d2519b9a664
Reviewed-on: https://dawn-review.googlesource.com/1600
Reviewed-by: Andrii Shyshkalov <tandrii@google.com>
Commit-Queue: Ryan Tseng <hinoka@google.com>
2018-09-22 00:45:58 +00:00
Jiawei Shao c2283ed1b2 Fix a typo in main.py
This patch fixes a typo "false" in main.py. The right token should
be "False".

Change-Id: Ic56f6f3290b30ce2dd56dbe1ce4c31821b981723
Reviewed-on: https://dawn-review.googlesource.com/1560
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-09-21 06:55:25 +00:00
Corentin Wallez 386b8889bd Wire: Add support for nullptr objects as arguments
BUG=dawn:5

Change-Id: I84c80796e9bdfbcf59fafdd38d33ab2101a1d795
Reviewed-on: https://dawn-review.googlesource.com/1541
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2018-09-21 00:28:33 +00:00
Corentin Wallez 82fbccbd78 Introduce [Render|Compute]PassEncoder.
This splits off part of CommandBufferBuilder in separate
RenderPassEncoder and ComputePassEncoder objects. To match the WebGPU
IDL and factor some code, both these encoders inherit from
ProgrammablePassEncoder.

These encoders are pure frontend objects and record into the
CommandBufferBuilder command allocator objects, so no changes to the
backends were needed.

Error handling is still ew, because the "builder" mechanism we had
doesn't allow for "split builders". Nicer error handling will have to
wait on Dawn matching WebGPU.

All the tests and samples were updated to the new structure.

BUG=dawn:5

Change-Id: I5f5d4ad866e2c07fedd1ba7a122258c6610941f1
Reviewed-on: https://dawn-review.googlesource.com/1543
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-09-21 00:24:37 +00:00
Corentin Wallez 31d1e78d57 BUILD.gn: Add a dawn_samples group
BUG=

Change-Id: I328bdc960bfc28a1ea16ca0c6705cb60b929109f
Reviewed-on: https://dawn-review.googlesource.com/1542
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-20 21:17:14 +00:00
Corentin Wallez fdccb54de5 dawncpp.h: Don't expose the fluent syntax for non-builders
At this point this change is a noop, however encoders introduced in
follow-up patches aren't builders and thus won't have the fluent syntax.

BUG=dawn:5

Change-Id: Idc5f327a1a7788c3ba16a50491aefb054700f257
Reviewed-on: https://dawn-review.googlesource.com/1540
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-20 20:05:21 +00:00
Corentin Wallez d3c4eda135 Add a temporary requirement for Mac bots to have XCode.
BUG=chromium:884015

Change-Id: Iee2373b23ab5534165b36c40600cae86545ee3d9
Reviewed-on: https://dawn-review.googlesource.com/1544
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2018-09-20 19:58:04 +00:00
Jiawei Shao 58809d413b Collect GPU device information for end2end tests - Part I
This patch is the first one to support inspecting GPU information for
dawn_end2end_tests.

In this patch, we support collecting the device name, device id and
vendor id on D3D12 and Vulkan. We also support collecting the device
name on OpenGL. The collection on Metal will be supported in the next
patch. Using this information we implement a series of APIs to inspect
the information of both OS and GPU vendor.

We also skip two failed tests on Windows Intel Vulkan backends.

BUG=dawn:10

Change-Id: If52a960c0bae3922a0b5650500218eff1400d77a
Reviewed-on: https://dawn-review.googlesource.com/1460
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-09-19 00:32:52 +00:00
Corentin Wallez cd5e5756fd TextureBase: return size as an Extent3D to match dawn.json
BUG=dawn:13

Change-Id: I1104cb2038e0e77814b036868c50030fc8186bf8
Reviewed-on: https://dawn-review.googlesource.com/1522
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2018-09-18 12:51:42 +00:00
Corentin Wallez 29353d6ee3 dawn.json: Make textureDescriptor use Extent3D
This matches WebGPU and is a good test of having structures include
other structures by value.

BUG=dawn:13

Change-Id: Ibd5ea1340338e5aa16069499c498ac5a455fc2cd
Reviewed-on: https://dawn-review.googlesource.com/1500
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-18 12:49:22 +00:00
Corentin Wallez 1e68479cd6 dawn.h: Don't use anonymous structures
Instead make them have the same name as their typedef. This is because
anonymous structures is considered bad practice in C because it prevents
forward declaring them.

BUG=

Change-Id: I2d7a788a0d807a2689567d0bb220adaf5335e07a
Reviewed-on: https://dawn-review.googlesource.com/1521
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-18 12:09:55 +00:00
Jiawei Shao 3d670506e3 Remove TextureViewBuilder and add CreateDefaultTextureView entry point
This patch is the first one to descriptorze texture view. In this
patch, we completely remove TextureViewBuilder and add the entry
point CreateDefaultTextureView for creating a texture view on a
non-array 2D texture using the same type and format.

Texture view descriptors and 2D array texture views will be supported
in the next patch.

BUG=dawn:1, dawn:16

Change-Id: Ibd2a0bcf02cbb567a98d2faaaaa897eff2c062e5
Reviewed-on: https://dawn-review.googlesource.com/1440
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2018-09-18 00:31:57 +00:00
Corentin Wallez 03e1813fd2 Add DAWN_UNUSED_FUNC to ignore unused functions in generated code
BUG=dawn:13

Change-Id: I7a224503d0a33ef148e63b8327a6a53df1b3868a
Reviewed-on: https://dawn-review.googlesource.com/1520
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2018-09-17 22:59:08 +00:00
Corentin Wallez a60799f5e1 dawn.json: Fix ordering of types.
BUG=

Change-Id: Ie9257c58f523c3b760a4acb6e0d34111164ff135
Reviewed-on: https://dawn-review.googlesource.com/1420
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-11 18:16:54 +00:00
Corentin Wallez 4c35101b9c PRESUBMIT.py: Add formatting checks.
GN files are checked using the canned presubmit check but we cannot do
the same for C/C++ files: the canned check uses git cl format which can
only use clang-format 5.0 and requires formatting of all the source
code.

Instead we write our own clang-format check, reusing the script that
checks formatting on Travis. To have a recent version of clang-format we
import one from a helper repo.

This also fix a formatting error in .gn and adds licenses to the
clang-format linting scripts.

Change-Id: I4d8208472a8a6bd32ae3ef41c3145abf270a4c37
2018-09-11 08:06:36 -04:00
Corentin Wallez 1a0596d8ea DEPS: use relative paths and hooks and remove dawn_root
Change-Id: Ica3913481d4f3552507105ff581474efa51ae3b6
2018-09-11 08:06:36 -04:00
Corentin Wallez 6fee61ca9c Make Dawn error macro more explicit and have an "error type"
The error type will help distinguish between validation errors, context
losts and others which should be handled differently.

Take advantage of advantage of this to change DAWN_RETURN_ERROR to
"return DAWN_FOO_ERROR" to have the return be more explicit. Also
removes usage of DAWN_TRY_ASSERT for more explicit checks.

Change-Id: Icbce16b0c8d8eb084b0af2fc132acee776909a36
2018-09-11 07:55:27 -04:00
Corentin Wallez cca9c698a0 Use unique_ptr where applicable.
Change-Id: Icb29f6f9760f0ea36528e8ea6890713c2fb3b965
2018-09-07 07:22:04 -04:00
Corentin Wallez 21d8438ad6 Validate SPIR-V code when creating ShaderModules
This integrates spirv-val in dawn_native so that regular and
WebGPU-specific validation of shaders is done.

Also adds tests to check OpUndef is correctly rejected so we know
WebGPU-specific validation is working.

Change-Id: If49d276c98bca8cd3c6c1a420903fe34923a2942
2018-09-07 05:41:25 -04:00
Corentin Wallez ae62847f1c Roll SPIRV-Tools
Change-Id: I0b30e4d2b0a142bb073e61329a49a517629e3234
2018-09-07 05:41:25 -04:00
Corentin Wallez cee1a43448 infra: Add a presubmit builder to the CQ.
Change-Id: Iec65e03fb8cb9d673cd611968e4204a46e92c561
2018-09-06 07:16:46 -04:00
Corentin Wallez 0f2a106a2a Revert "cr-buildbucket.cfg: Add cache for win_toolchain"
We already had these caches set up and luci-config now complains about
duplicate keys.

This reverts commit 484aca1d1f.
2018-09-05 08:44:23 -04:00
Corentin Wallez 8e335a5585 Descriptorize ComputePipeline
Change-Id: Ic9d7014ba44d927d7f9ddf81a8870432c68941e8
2018-09-05 08:32:53 -04:00
Corentin Wallez eb7d64a17f D3D12: Destroy all COM objects before the DLLs are unloaded
Change-Id: I00109460fa83110bd9af6d6b8ff2b5022ed580f3
2018-09-05 08:32:53 -04:00
Corentin Wallez 98ca29b582 Fix VkNonDispatchableHandle alignment on Linux x86
There alignof(uint64_t) is 8 but it is aligned to 4 inside structures.

Change-Id: Ia94e9e5c962e9f5898a8f39977b83a9e10cbf454
2018-09-05 08:01:24 -04:00
Corentin Wallez ca81bd3481 GN: Use hermetic builds on Linux
This makes the Linux GN builds use the Chromium copy of binutils and
also makes all platforms use the "custom libcxx" which is libc++.

We do this so that the build doesn't depend on anything from the system
on Linux because our bots are still on trusty with very old libstdc++
and linkers.

Change-Id: I0570fb474f2945c3565e78a56aba66c1a2619afc
2018-09-05 05:18:10 -04:00
Corentin Wallez 484aca1d1f cr-buildbucket.cfg: Add cache for win_toolchain
Change-Id: I80de1062b3fc2a9649a123adc8374cc350db5ac4
2018-09-04 12:36:00 -04:00
Li Hao 3cc58af801 Update reason for hiding vktrace layer 2018-09-03 05:45:37 -04:00
Li Hao 92bddc47c9 Vulkan: add macro for vktrace
Hide vktrace layout behide a marco 'DAWN_USE_VKTRACE' and enable it in
build if need.
2018-09-03 05:45:37 -04:00
Jiawei Shao 9daa4ad1c8 Fix the barrier in vulkan::Texture::TransitionUsageNow to make the
barrier cover all the slices in a 2D array texture.
2018-09-03 05:43:49 -04:00
Jiawei Shao 4ccf4e3fdd Support 2D array texture copying on D3D12, Metal and OpenGL
This patch implements the creation of 2D array textures and copying
between a buffer and a layer of a 2D array texture on D3D12, Metal
and OpenGL back-ends.

TEST=dawn_end2end_tests
2018-09-03 05:43:49 -04:00
Corentin Wallez d8597b2e1f D3D12: Dynamically load D3D12, DXGI and D3DCompiler
Linking against their .lib makes loading Dawn fail on systems that don't
have the DLLs. This happens for example on Windows7 that doesn't have
d3d12.dll. Instead we dynamically load functions pointers from these
DLLs at d3d12::Device startup.

Change-Id: I4d01a12d0f91bec45bf125450d2c08aaa9ff9fac
2018-08-31 09:13:35 -04:00