Commit Graph

2713 Commits

Author SHA1 Message Date
Austin Eng 16e01affcb Reland "Add a per-thread proc table using thread local storage"
This is a reland of b04a92f01b
with the deletion of a duplicate exported function in dawn_wire that
was causing a compilation failure on Windows.

Original change's description:
> Add a per-thread proc table using thread local storage
>
> In situations where both dawn_wire and dawn_native are used on separate
> threads (Chrome with --single-process or --in-process-gpu), it's
> desirable to have a per-thread proc table so that the WebGPU C++ API can
> still be used. This eliminates classes of bugs with manual
> reference/release errors.
>
> This also changes many of the GetProcs functions to return const
> references to the static proc tables known at compile time, instead of a
> copy.
>
> Bug: none
> Change-Id: I8775bb715b312dd9476a1903fbd797d4b1302614
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29240
> Reviewed-by: Stephen White <senorblanco@chromium.org>
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Austin Eng <enga@chromium.org>

Bug: none
Change-Id: Id90e5372132cd93a2f8631c8185d0e71b01bc1af
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29443
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2020-10-06 16:13:42 +00:00
Andrii Shyshkalov e85652b61d infra: Remove no longer used refs.cfg.
R=cwallez@chromium.org, vadimsh@chromium.org

No-Try: true
Change-Id: I43d418c8c52af82f62c7074800160353458dbb7d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29422
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-10-06 11:53:29 +00:00
Vadim Shtayura 8ba1ef33da infra: Stop statically enforcing Xcode version.
The OSX machines in "luci.flex.try" pool that run Dawn tryjobs
have been upgraded from OSX 10.14 to OSX 10.15. Per [1],
the preferred Xcode version on OSX 10.15 is '12a7209' and most
tryjobs (from other projects) install that version. But when
a Dawn tryjob runs, it rolls Xcode back to '11b52'. Reinstalling Xcode
back and forth like that takes time (~20 min), it caused some tryjobs
in the "infra" project to timeout.

Unhardcode Xcode version in Dawn configs. It should allow the recipe
to pick the "best" version ('12a7209' in this case).

[1]: https://source.chromium.org/chromium/chromium/tools/depot_tools/+/master:recipes/recipe_modules/osx_sdk/api.py;l=21?q=11b52&ss=chromium

R=cwallez@chromium.org, tandrii@chromium.org

Change-Id: I8499a763679b9e9270854bf66c2a21f1e6354594
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29440
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-10-06 09:16:19 +00:00
Enrico Galli db2c2dd9b9 Add support for depthBias, depthBiasSlope, and depthBiasClamp
Bug: dawn:524
Change-Id: I2586aadbc326f58889314a2d10794bcc0572aaba
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28300
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-10-06 08:12:29 +00:00
Kai Ninomiya 326e14f34b Revert "Add a per-thread proc table using thread local storage"
This reverts commit b04a92f01b.

Reason for revert: Build failed on win-archive-dbg; see:
https://chromium-review.googlesource.com/c/chromium/src/+/2450792

Original change's description:
> Add a per-thread proc table using thread local storage
>
> In situations where both dawn_wire and dawn_native are used on separate
> threads (Chrome with --single-process or --in-process-gpu), it's
> desirable to have a per-thread proc table so that the WebGPU C++ API can
> still be used. This eliminates classes of bugs with manual
> reference/release errors.
>
> This also changes many of the GetProcs functions to return const
> references to the static proc tables known at compile time, instead of a
> copy.
>
> Bug: none
> Change-Id: I8775bb715b312dd9476a1903fbd797d4b1302614
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29240
> Reviewed-by: Stephen White <senorblanco@chromium.org>
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Austin Eng <enga@chromium.org>

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

Change-Id: I4587b457b7b2dd5d3c7457065bf4e77b95af59d7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: none
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29442
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-10-05 22:35:40 +00:00
Austin Eng b04a92f01b Add a per-thread proc table using thread local storage
In situations where both dawn_wire and dawn_native are used on separate
threads (Chrome with --single-process or --in-process-gpu), it's
desirable to have a per-thread proc table so that the WebGPU C++ API can
still be used. This eliminates classes of bugs with manual
reference/release errors.

This also changes many of the GetProcs functions to return const
references to the static proc tables known at compile time, instead of a
copy.

Bug: none
Change-Id: I8775bb715b312dd9476a1903fbd797d4b1302614
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29240
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-10-05 19:53:58 +00:00
Corentin Wallez df90930683 wire::client: Make Buffer::MapAsync surface server-side errors.
In the WebGPU specification, validation errors for mapAsync take
precedence over the early-unmap or early-destroy promise resolution.

Change the client to wait for the mapAsync status from the server before
sending the cancelation through the callback. If the server sends back
an error, then it takes precedence over the client-side status.

Also adds tests for the updated semantic.

Bug: dawn:445

Change-Id: I7bf1d8bbb3cb62d73ab19ecdf0aad2963e854964
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29300
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2020-10-05 11:03:21 +00:00
Stephen White ed3a93f690 Fix rectangular mipmap textures used as color attachments.
ValidateOrSetAttachmentSize() was asserting that
textureSize.width >> attachment->GetBaseMipLevel() is nonzero.
This is not true for rectangular textures, where the smaller dimension
may hit the lower bound and must be be clamped at 1.

Fixed by calling GetMipLevelVirtualSize() which performs the clamp.

Added a test which exercises rectangular mipmapped textures as color
attachments. This required a few fixes to the test harness, which had
the same bug as that fixed in the code (assumes (width >> size) > 0).

Bug: dawn:535
Change-Id: Idde3b68feb14d8a241803d09a094b059d9935d91
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29261
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2020-10-02 16:15:40 +00:00
Brandon Jones 16ebcf601d Limit Clear Color Values to 2^24 For Integer Formats
Adds validation to ensure clear colors do not exceed 2^24 and a
corresponding unit test. Also removes intermediate float conversions
that are no longer necessary.

Bug: dawn:525
Change-Id: I020b98de85384c20da51158de79eab87f60dcf6d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29040
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-10-01 19:56:49 +00:00
Ryan Harrison da5828c06b Add Tint SPIRV->SPIRV to fuzzing code path
Since we are intending to ship using Tint for normalization, fuzzing
should include this transform.

BUG=dawn:531

Change-Id: Ica25c3bbdc6ff392d5e31361734de43fd1c12815
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29180
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-09-30 17:50:14 +00:00
Corentin Wallez e2cb68b024 TextureFormatTest: Test components not present in the format.
For sampling, check that formats without 4 components sample them as
(0, 0, 0, 1) instead. For rendering, check that extra components output
by the shader are ignored.

Bug: None
Change-Id: Ib49fcaa58e984d821667e992d3ddb1bb093bdba0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29061
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-30 09:22:04 +00:00
Austin Eng ad421a248a Remove AMD test suppression in VulkanImageWrappingTests
This has been fixed by the layout transition fixes. The dedicated
memory bug doesn't seem relevant at this time.

Bug: dawn:200, dawn:206
Change-Id: I953a20850881f64f5ff5ddbede9aed3a835d22da
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29123
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-09-29 20:54:43 +00:00
Corentin Wallez 172cd1e8df TextureFormatTests: Test more Snorm format corner cases.
Bug: None
Change-Id: I02cba96f64d62495e21ba04bb514de9fb1563507
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29060
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-29 09:47:26 +00:00
Austin Eng b2a4e87ad2 Un-skip WriteTexture test on Swiftshader
Fixed in the roll of Swiftshader.

Bug: dawn:483
Change-Id: I8baad1d8d61e7b99c01dc27f929da830ca30c8d3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29081
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-09-28 22:05:24 +00:00
Austin Eng 7120d144a0 Roll third_party/swiftshader/ e8dd233c7..2014e7b92 (79 commits)
https://swiftshader.googlesource.com/SwiftShader/+log/e8dd233c7a85..2014e7b9290e

$ git log e8dd233c7..2014e7b92 --date=short --no-merges --format='%ad %ae %s'
2020-08-25 capn Work around std::is_trivially_copyable issue with MSVC
2020-08-21 srisser Add getPhysicalDeviceFeatures2
2020-08-18 capn Refactor image extent retrieval
2020-08-18 capn Refactor image view extent retrieval
2020-08-12 capn Refactor image query instructions
2020-08-21 srisser Revert "Add getPhysicalDeviceFeatures2"
2020-08-19 msisov X11 and Ozone: Try to check for display type when creating framebuf
2020-08-19 capn Perform independent blend state optimization
2020-07-30 srisser Add getPhysicalDeviceFeatures2
2020-08-18 sugoi Control Flow Integrity (cfi) fix
2020-08-17 amaiorano Update README to add details on Vulkan and less about GLES
2020-08-17 capn Don't rely on VectorType::get() default parameter
2020-08-13 swiftshader.regress Regres: Update test lists @ cda86eff
2020-08-06 capn Implement shaderStorageImageMultisample support
2020-08-12 sugoi Fix copying cubemap textures out of bounds
2020-08-12 swiftshader.regress Regres: Update test lists @ 13f04d59
2020-08-11 sugoi Fix decorations bleeding to following block members
2020-08-11 sugoi Fix for dEQP-VK.wsi.*.swapchain.acquire.too_many_timeout
2020-08-07 capn Implement VK_EXT_depth_range_unrestricted
2020-08-06 sugoi Prevent accessing deleted ImageView objects
2020-08-07 swiftshader.regress Regres: Update test lists @ a202c209
2020-08-05 capn Refactor discerning image view types
2020-08-03 capn Don't use 2D coordinates for 1D sampling
2020-08-05 capn Specialize 1D sampling LOD calculation
2020-08-01 capn Treat the array coordinate separately
2020-07-29 capn Refactor sampling code
2020-07-29 capn Zero out texel index after sample and layer offset
2020-08-04 swiftshader.regress Regres: Update test lists @ 74cc8ea2
2020-07-30 dpranke Fix a Python3-compatibility issue for write_icd_json.py.
2020-08-03 capn Remove VK_KHR_16bit_storage support
2020-07-30 capn Replace github.com code links with cs.opensource.google
2020-08-01 swiftshader.regress Regres: Update test lists @ aa5bd765
2020-07-30 swiftshader.regress Regres: Update test lists @ 08a3cc4c
2020-07-29 capn Use more inclusive terms
2020-07-28 srisser Enable occlusionQueryPrecise
2020-07-29 amaiorano Add doc for testing with SWANGLE
2020-07-29 amaiorano Add doc on using ANGLE instead of SwiftShader GL
2020-07-29 swiftshader.regress Regres: Update test lists @ dc8e77f0
2020-07-28 sugoi Work around dEQP-VK output_location test flakiness
2020-07-21 capn Expose VK_EXT_image_robustness support
2020-07-27 capn Perform texel replacement on out-of-bounds OpImageFetch accesses
2020-07-24 capn Perform out-of-bounds checks on texel pointers
2020-07-27 amaiorano Add CMake script to setup and build ANGLE
2020-07-24 amaiorano Add ANGLE as submodule
2020-07-27 sugoi Manual changes required for SPIR-V update
2020-07-20 caramelli.devel Add Wayland support for Vulkan WSI
2020-07-27 sugoi Squashed 'third_party/SPIRV-Headers/' changes from f8bf11a02..979924c8b
2020-07-27 sugoi Squashed 'third_party/SPIRV-Tools/' changes from 55af3902f..8a5500656
2020-07-21 capn Update Vulkan headers to version 1.2.148
2020-07-22 capn Refactor native instruction intrinsics
2020-07-20 amaiorano Delete third_party/llvm-7.0
2020-07-22 sugoi Add basic support for VK_EXT_debug_utils
2020-07-21 srisser Add support for depthBiasClamp
2020-05-10 spang Silence warnings on dedicated external memory allocations
2020-07-17 capn Regres: Roll dEQP to 1.2.3
2020-07-23 amaiorano Fix CMake failure on MacOS when PowerVR submodule is checked out
2020-07-16 capn Don't update CMake for Windows Kokoro builds
2020-07-21 amaiorano Fix ReactorDebugInfo off by one line issues
2020-07-22 amaiorano Fix GN debug builds of SwiftShader on LLVM 10
2020-07-17 tommek Fix copying between images and buffers with padding
2020-07-20 capn Eliminate dead host/target feature code for Subzero
2020-07-20 amaiorano Fix ENABLE_RR_DEBUG_INFO on LLVM 10
2020-07-20 amaiorano Remove support for LLVM < 10
2020-07-20 amaiorano Delete LLVM 7 Kokoro configs
2020-07-20 amaiorano Fix LLVM-10 CMake build
2020-07-21 swiftshader.regress Regres: Update test lists @ 97f99232
2020-07-16 capn Regres: Don't test changes with negative scores
2020-07-20 mark Fix macOS arm64 GN build by building llvm RWMutex.cpp
2020-07-10 ddorwin Update tests/presubmit.sh with modern syntax for Fuchsia bugs
2020-07-20 amaiorano Update to latest PowerVR to keep cmake source clean
2020-06-19 capn Support _PACK32 storage image formats and fix asserts
2020-07-18 capn Fix GN UBSanVPtr build of LLVM 10 JIT
2020-07-17 amaiorano Fix Win32 Chromium and ANGLE builds
2020-07-16 capn Remove Travis CI and AppVeyor build badges
2020-03-31 capn Update Kokoro's clang-format to version 10
2020-07-17 amaiorano Fix MacOS Chromium build (source_set dupe)
2020-07-16 amaiorano Fix MacOS (darwin) Chromium build on LLVM 10
2020-07-15 amaiorano Added Fuchsia support to LLVM 10 update script and updated configs
2020-07-15 amaiorano Use LLVM 10 instead of 7 for GN builds

Created with:
  roll-dep third_party/swiftshader

Change-Id: I3ce1615a460446dce394990388813e7590687ed1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29080
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-09-28 21:53:14 +00:00
Corentin Wallez 62139fcca7 Use typed integers for the ExecutionSerial
This will prevent mixing it up with other serial types in the future.

Bug: dawn:442
Change-Id: I74e964708acc62eb0f33127cc48f1b9a7b171d11
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28923
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-28 19:35:14 +00:00
Corentin Wallez ad4a66ec8f D3D12: Use typed integers for the ExternalMutexSerial
This will prevent mixing it up with other serial types in the future.

Bug: dawn:442
Change-Id: Ia1ec00572fa268e48349f7d9e39234ec8f5d3953
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28961
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-28 17:10:24 +00:00
Corentin Wallez cac14e0067 D3D12: Use typed integers for the HeapVersionID
This will prevent mixing it up with other serial types in the future.

Bug: dawn:442
Change-Id: I32f356c62f19ef29f3bf51c19873369fb817bb16
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28960
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-28 16:05:24 +00:00
Corentin Wallez 306fc502cf Use typed integers for the Fence FenceAPISerial
This will prevent mixing it up with other serial types in the future.

Bug: dawn:442
Change-Id: I1cdb35ee01be3c771183003bc357c84d46aa5745
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28922
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-28 15:11:04 +00:00
Corentin Wallez 53cdbead78 Use typed integers for the Buffer MapRequestID
This will prevent mixing it up with other serial types in the future.

Bug: dawn:442
Change-Id: Ie655d57722fcd79c82acc5aac429aed2c2741c3e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28920
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-28 14:14:44 +00:00
Corentin Wallez 145f115c54 SerialQueue/Map: Take the serial type as type paramater.
This is in preparation for follow-up CLs that will use typed integers
for the various serial types.

Bug: dawn:442

Change-Id: I5296546e96acd6ac9f7a0bfc46dc7eba40cb3cf5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28921
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-28 12:28:13 +00:00
Jiawei Shao ed2b465f86 Report more detailed error information for the failures of mapAsync
This patch adds two new buffer map async status "destroyed before
callback" and "unmapped before callback" to replace the status "unknown"
so that the developers can get more details when meeting such errors in
the call of buffer mapAsync.

Note that this patch still preserves "unknown" as it is still being used
in Chromium.

BUG=dawn:533
TEST=dawn_unittests

Change-Id: I12deefb49311ea6adea72c24e4e40797dd7eb4a1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28883
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
2020-09-27 02:00:52 +00:00
Hao Li ddef7a04a2 Query API: QuerySet on Metal
- Add query set creation on Metal backend
- Enable end2end tests for query set creation

Bug: dawn:434
Change-Id: I7fe013192ae215b6b97cfdb646a8dd6f2596d4af
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28800
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-09-25 08:49:30 +00:00
Corentin Wallez eec9edfd57 Standardize the use of UNREACHABLE in switches.
A lot of our switches over enum values use the following pattern:

    default:
        UNREACHABLE();
        return foo;

This is problematic because when adding a new value to one of the WebGPU
enums, there is no compilation error for switches that are missing it.
Currently we're supposed to write code and tests and fix UNREACHABLEs when
we see them.

Instead we should strive to have most switches on enums to be complete
and explicitily tag unreachable values as UNREACHABLE. Some switches
might still want to use default: UNREACHABLE() if only a couple values
need to be handled out of very many.

In this CL we go through all the UNRAECHABLEs and change them if need
be. Also an ErrorQueue class is added to avoid having
QueueBase::SubmitImpl just be UNREACHABLE (and force overriding
instead).

Bug: dawn:527
Change-Id: I33dfb4703104912cc5f001f9faf907a61324de68
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28501
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
2020-09-24 14:56:50 +00:00
Corentin Wallez a46737c0aa Add wgpu::BindingType::MultisampledTexture
And deprecate wgpu::BindGroupLayoutEntry.multisampled.

Bug: dawn:527

Change-Id: I00f38eb6b1f82f9d9aedda5da23b1350263a3044
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28562
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
2020-09-24 11:41:07 +00:00
Corentin Wallez ed0b3cf153 Refactor PipelineLayoutBase::CreateDefault
This function was bit long and was difficult to read. Refactor it to use
a single double keyed map and helper functions.

Bug: dawn:527

Change-Id: I8c1173fd0e06256c7e7060a850996e1e90187d50
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28640
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-24 11:27:47 +00:00
Yan, Shaobo 75e5ed6161 Support Noop Copy for B2T, T2B and T2T Copies
In B2T, T2B and T2T copies, copySize has 0 in width, height or depth
will trigger errors in D3D12 backend.

This patch bypass the command record step for noop copy. But all
validation rules still applies to the copy.

BUG=dawn:255

Change-Id: I4d01cef2e3c1f78440014c2c6ac63a48310d99af
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28521
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-09-23 10:28:26 +00:00
Corentin Wallez a3651d2fe0 Fix deprecation errors for indexFormat being set.
Bug: dawn:502
Change-Id: Ib49a1e6cceb0632792a499314f5e0e4b3434deb7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28780
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-23 07:23:56 +00:00
Corentin Wallez 9d0d18d952 Fix compilation on ChromeOS
TBR=enga@chromium.org
Bug: dawn:200
Change-Id: I35a414a25deed9d1d66e7ce510a704aaa0548fa9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28820
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-23 07:21:06 +00:00
Austin Eng 0b29732cd8 Pass the old/new VkImageLayouts to Vulkan image import/export
Returning the layouts from an export operation and then using
them in a subsequent import operation allows the import to preserve
the texture contents.

This fixes Vukan image wrapping on some AMD/NVIDIA devices.

Bug: dawn:200
Change-Id: Icbb6e759856d410bb69724b9f439bc3088756d19
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28380
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-09-22 20:10:46 +00:00
Brandon Jones 670858da9b Change wgpu::Color from floats to doubles
Change dawn.json to reflect changes in the WebGPU IDL. Also fixes any
conversion issues in Dawn.

Bug: dawn:525
Change-Id: Ifb46329f073bcf31d43342f20f4819eac061d5a1
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28400
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Brandon Jones <brandon1.jones@intel.com>
2020-09-22 16:51:36 +00:00
Bryan Bernhart 6db3a24c19 Revert "Disable debug layer logger"
This reverts commit 52a588f3c9.

Reason for revert: added a workaround to filter out messages.

Original change's description:
> Disable debug layer logger
>
> This logger is producing too much output on Windows and causing
> Chromium's gtest harness to kill the tests.
>
> Tbr=cwallez@chromium.org
> No-Try: true
> Bug: chromium:1130483
> Change-Id: I1990bc800bbb7eda62901d14f656375c30fbeef2
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28740
> Reviewed-by: Austin Eng <enga@chromium.org>
> Commit-Queue: Austin Eng <enga@chromium.org>

TBR=cwallez@chromium.org,enga@chromium.org

Bug: chromium:1130483
Change-Id: Ifeee73838a957f619dfdb977f21585fe8abacc3b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28760
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
2020-09-22 16:23:06 +00:00
Corentin Wallez 5b4e5fbe1f Simplify the BindGroupLayout validation code.
It was using a lot of calls to helper functions full of switches that
were hiding the logic that's relatively simple.

Bug: dawn:527
Change-Id: Iaf2603efa255df5ba2f44989b5375d433f04d5df
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28561
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2020-09-22 13:47:05 +00:00
Corentin Wallez aeda49ba50 Reuse BGL validation in default layout computations.
Instead of calling validation functions directly in
PipelineLayoutBase::CreateDefault, use ValidateBGLDesc and
ValidatePipelineLayoutDesc.

  Also makes the visibility of the default layout match the aggregation as
in the WebGPU spec.

  Also makes refcounting of BGLs a bit less manual at the bottom of
CreateDefault.

  Also adds tests for minBufferBindingSize and visiblity aggregation in
the default layout computations.

Bug: dawn:527
Change-Id: I6bbd5f3de8b235dddf6cbd2bedfd34a094fcb277
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28560
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2020-09-22 11:04:45 +00:00
Austin Eng 52a588f3c9 Disable debug layer logger
This logger is producing too much output on Windows and causing
Chromium's gtest harness to kill the tests.

Tbr=cwallez@chromium.org
No-Try: true
Bug: chromium:1130483
Change-Id: I1990bc800bbb7eda62901d14f656375c30fbeef2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28740
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-09-21 21:21:04 +00:00
Austin Eng dcd37fa4f4 Rolling 5 shader dependencies
Roll third_party/tint/ e7ec7f168..d3f75ca0e (21 commits)

https://dawn.googlesource.com/tint/+log/e7ec7f16895a..d3f75ca0e8be

$ git log e7ec7f168..d3f75ca0e --date=short --no-merges --format='%ad %ae %s'
2020-09-17 dsinclair Add support for multisampled textures.
2020-09-17 dj2 [wgsl-writer] Emit texture types.
2020-09-16 dsinclair [type-determiner] Handle pointer arguments.
2020-09-15 tommek [wgsl-reader] Adding texture_sampler_types to type_decl
2020-09-14 dsinclair [hlsl-writer] Implement some disabled tests.
2020-09-10 dneto [spirv-reader]: entry point names are WGSL identifiers
2020-09-10 dneto Fix doxygen: don't describe return of void method
2020-09-10 sarahmashay [validation] add cts tests for switch
2020-09-10 sarahmashay [validation] validate switch statement
2020-09-10 tommek Adding a TODO for updating textureLoad on storage images
2020-09-08 dneto Simplify getting entry point function
2020-09-08 dneto Fix GCC warnings
2020-09-08 tommek [wgsl-reader] Parsing storage texture type
2020-09-08 tommek [wgsl-reader] Parsing image storage type
2020-09-08 tommek [ast] Change intrinsic function names to camel case
2020-09-08 tommek [spirv-writer] Removing GenerateConstantFloatZeroIfNeeded
2020-09-07 tommek [spirv-writer] Fixing memory leaks in texture intrinsics tests
2020-09-03 dneto [spirv-reader] Set entry point name
2020-09-03 tommek [spirv-writer] Generating texture intrinsic operations
2020-09-03 sarahmashay [validation] add const variables shouldn't have a storage class
2020-09-03 sarahmashay [writer] add a return to convert_image_format_to_spv

Created with:
  roll-dep third_party/tint

Change-Id: Ia3e55f55e39ec0a8adb6b3f1f9d7910d8a31cb77


Roll third_party/SPIRV-Tools/ 34ef0c3fd..60ce96e2f (5 commits)

34ef0c3fdc..60ce96e2ff

$ git log 34ef0c3fd..60ce96e2f --date=short --no-merges --format='%ad %ae %s'
2020-09-18 afdx spirv-fuzz: Add pass recommendations (#3757)
2020-09-18 stefanomil spirv-fuzz: Consider all ids from dead blocks irrelevant (#3795)
2020-09-18 afdx Fix header guard macros (#3811)
2020-09-18 antonikarp spirv-fuzz: Fix TransformationDuplicateRegionWithSelection (#3815)
2020-09-17 46493288+sfricke-samsung spirv-val: Add DeviceIndex (#3812)

Created with:
  roll-dep third_party/SPIRV-Tools

Change-Id: Ia8b545abfa18bb36d5725e9bf75a068c3d5fb2f0


Roll third_party/spirv-headers/ 3fdabd0da..060627f0b (2 commits)

3fdabd0da2..060627f0b0

$ git log 3fdabd0da..060627f0b --date=short --no-merges --format='%ad %ae %s'
2020-09-10 syoussefi Register the ANGLE compiler (#168)
2020-09-08 cepheus Rebuild of latest headers, which slightly moves OpTerminateInvocation

Created with:
  roll-dep third_party/spirv-headers

Change-Id: Ia90e56b028e31ddf83a73aaefdaba761928e3d1b


Roll third_party/spirv-cross/ bdbef7b1f..8891bd351 (3 commits)

bdbef7b1f3..8891bd3512

$ git log bdbef7b1f..8891bd351 --date=short --no-merges --format='%ad %ae %s'
2020-09-17 post Clean up conditional branch codegen.
2020-09-17 post Deal with case where a selection construct conditionally merges/breaks.
2020-09-14 post Implement a simple evaluator of specialization constants.

Created with:
  roll-dep third_party/spirv-cross

Change-Id: If8d41684b0f0c822741ac08a19c2221e0e7410d4


Roll third_party/glslang/ 517f39eee..4dcc12d1a (11 commits)

517f39eee4..4dcc12d1a4

$ git log 517f39eee..4dcc12d1a --date=short --no-merges --format='%ad %ae %s'
2020-09-18 rex.xu SPIRV: Add more utility functions to build some opcodes (#2398)
2020-09-15 laddoc Preprocessor related issue fix (#2378)
2020-09-14 rex.xu SPIRV: Add disassembly support for multiple literal strings (#2397)
2020-09-14 laddoc Fix scope definition in ES 100. (#2379)
2020-09-14 john Fix #2385: guard against constant_id on non-const.
2020-09-12 shuizhuyuanluo Try to find python interpreter from host first
2020-09-11 ShabbyX Allow subpassLoad for ANGLE
2020-09-08 tobias.hector Added missing copyright amendment
2020-09-07 rex.xu SPIRV: Fix some disassembly issues
2020-09-03 tobias.hector Error when initializing rayQuery with assignment
2020-09-02 rex.xu Parser: Fix wrong names of extension macros

Created with:
  roll-dep third_party/glslang

Change-Id: I896179d682441cb24de0a0fc0eaa49684258e781
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28680
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-09-18 23:19:21 +00:00
Enrico Galli 6e2415256c Handle debug markers commands on command encoder
This CL adds support for InsertDebugMarker, PushDebugGroup, and
PopDebugGroup commands to CommandBuffer backends.

Bug: dawn:44

Change-Id: Iaf075023d3072534fca02b71c0e205cbaa46cd0f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28602
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Commit-Queue: Enrico Galli <enrico.galli@intel.com>
2020-09-18 23:10:11 +00:00
Corentin Wallez 1da25e5103 Add -Wduplicate-enum and -Wrange-for-analysis
These warnings are used in Skia.

Bug: None
Change-Id: I1948f448a89b0c213ce1aacd6bb8532f90d399be
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28160
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-18 14:38:01 +00:00
Corentin Wallez c01b26490a Remove wgpu::BindingType::StorageTexture
It isn't in the upstream WebGPU spec and completely unimplemented in
Dawn.

Bug: dawn:527
Change-Id: I2023c7b1de2a9fa50d26ab1678b7ef7e32c64af6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28500
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-18 10:31:40 +00:00
Hao Li d6498a41ab Query API: Timestamp Query on Vulkan
- Add WriteTimestamp and ResolveQuerySet on Vulkan
- Enable end2end tests of timestamp query on Vulkan
- Lazy initialize the distination buffer in ResolveQuerySet

Bug: dawn:434
Change-Id: Idbd117d6c198f6726ed922c08d030bb6fbae8be6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/27540
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Hao Li <hao.x.li@intel.com>
2020-09-18 01:27:40 +00:00
Bryan Bernhart ac3765e663 D3D12: Align UBO sizes to 256B.
D3D debug layer uses the descriptor size (width) to
validate CBV bounds when directly allocating UBOs.
This causes validation failure when the buffer size
is misaligned (ie. not a multiple of 256B) even
through the underlying resource heap size is always
64KB aligned.

This change always aligns the buffer size to be 256B
to avoid such validation error should sub-allocation
fail.

BUG=dawn:506

Change-Id: Ic9072934cac65cfd25d0e2a20cb364bd3ca88e3b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/26820
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
2020-09-17 23:30:40 +00:00
Ryan Harrison 95e715873d Enable running robust buffer access pass on shaders
In addition to adding the pass running logic, how shaders are stored
in the ShaderModule is changed, so that cached shader that was used to
create the ShaderModule is differentiated from the
modified/intermediate shader that is actually being passed to
SPIRV-Cross.

Also rolling SPIRV-Tools to pick up a fix for a bug I discovered in
the RBA pass implementation.

Roll third_party/SPIRV-Tools/ fd05605be..34ef0c3fd (25 commits)

fd05605bef..34ef0c3fdc

$ git log fd05605be..34ef0c3fd --date=short --no-merges --format='%ad %ae %s'
2020-09-16 rharrison Fix missed modification flagging (#3814)
2020-09-16 andreperezmaselco.developer spirv-fuzz: Use an irrelevant id for the unused components (#3810)
2020-09-16 stefanomil spirv-fuzz: Improvements to random number generation (#3809)
2020-09-16 greg Add buffer oob check to bindless instrumentation (#3800)
2020-09-16 vasniktel spirv-fuzz: Remove CanFindOrCreateZeroConstant (#3807)
2020-09-15 andreperezmaselco.developer spirv-fuzz: Add bit instruction synonym transformation (#3775)
2020-09-16 vasniktel spirv-fuzz: Skip unreachable blocks (#3729)
2020-09-15 afdx Fix build errors (#3804)
2020-09-15 vasniktel spirv-fuzz: Handle invalid ids in fact manager (#3742)
2020-09-15 vasniktel spirv-fuzz: Support memory instructions MoveInstructionDown (#3700)
2020-09-15 stefanomil spirv-fuzz: Pass submanagers to other submanagers when necessary (#3796)
2020-09-15 stefanomil spirv-fuzz: Transformation to flatten conditional branch (#3667)
2020-09-14 46493288+sfricke-samsung spirv-val: Add BaseInstance, BaseVertex, DrawIndex, and ViewIndex (#3782)
2020-09-14 dnovillo Properly mark IR changed if instruction folder creates more than one constant. (#3799)
2020-09-11 afdx Add missing file to BUILD.gn (#3798)
2020-09-11 antonikarp spirv-fuzz: Add TransformationDuplicateRegionWithSelection (#3773)
2020-09-11 afdx spirv-reduce: Support reducing a specific function (#3774)
2020-09-10 afdx spirv-reduce: Refactoring (#3793)
2020-09-10 afdx Favour 'integrity' over 'coherence' as a replacement for 'sanity'. (#3619)
2020-09-10 antonikarp spirv-fuzz: Fix header guards in transformations/fuzzer passes (#3784)
2020-09-10 paulthomson spirv-fuzz: Add SPIRV_FUZZ_PROTOC_COMMAND (#3789)
2020-09-10 paulthomson Add missing include (#3788)
2020-09-09 paulthomson Improve spirv-fuzz CMake code (#3781)
2020-09-08 stevenperron Allow SPV_KHR_8bit_storage extension. (#3780)
2020-09-08 stefanomil spirv-opt: Add function to compute nesting depth of a block (#3771)

Created with:
  roll-dep third_party/SPIRV-Tools

BUG=dawn:523,dawn:480

Change-Id: I1f424f5fe6d67999412f286e831ea2ea26372b9e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28540
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-09-17 19:58:40 +00:00
Austin Eng 4099f65525 Typeify VertexBufferSlot and VertexAttributeLocation
Bug: dawn:442
Change-Id: Ic4c29eed51984d367dc7fd6055e33d26bfc7faed
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28041
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-09-17 19:07:00 +00:00
Hao Li 6419bddd9b Add buffer lazy initialization before resolve queries on D3D12
- Reomve buffer initialization at buffer creation in end2end tests,
and implement lazy initialization when resolving queries to buffer
on D3D12 backend.
- Add buffer lazy zero init tests for resolveQuerySet on D3D12.
- For other backends, buffer lazy initialization will be added when
its resolve method is implemented.

Bug: dawn:434
Change-Id: Ib91c004b37ca912135a1c2fbb53bbd16e2d4eac6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28461
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Hao Li <hao.x.li@intel.com>
2020-09-17 01:59:29 +00:00
Corentin Wallez 19b910d796 Make dawn components support CMake's BUILD_SHARED_LIBS
Convention in CMake land is that libraries default to STATIC or
SHARED based on BUILD_SHARED_LIBS. Do that for Dawn components
that users will link against, but make sure to correctly set
macros used for the export headers.

Bug: None

Change-Id: I6a96cb95706b63c18942424baada11ff81691866
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28503
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-16 19:03:18 +00:00
Corentin Wallez c236769548 Fix CMake build on Mac
Bug: None
Change-Id: I7e5410338707628ac0632e20ba720c3f271a1751
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28502
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-16 17:11:28 +00:00
Corentin Wallez dbd34449af Roll third_party/spirv-cross/ bad9dab8d..bdbef7b1f (3 commits)
bad9dab8df..bdbef7b1f3

$ git log bad9dab8d..bdbef7b1f --date=short --no-merges --format='%ad %ae %s'
2020-09-04 cwallez Fix -Wduplicate-enum and -Wrange-for-analysis.
2020-09-04 post Roll glslang/SPIRV-Tools deps.
2020-09-04 post Handle OpUndef %void.

Created with:
  roll-dep third_party/spirv-cross

TBR=enga@chromium.org
Bug: None

Change-Id: I94afddf93b187bbde37c4e7088231d4f28959403
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28422
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-11 11:12:06 +00:00
Corentin Wallez d05e532c6b Fix typo in README.md
Bug: None
TBR=enga@chromium.org

Change-Id: Ib86da5fca2fb3cf1287cca47be1d739433fd2048
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28420
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-11 10:38:46 +00:00
Hidehiko Abe 948b3a0555 Expand is_linux to is_linux || is_chromeos.
Currnetly ,is_linux GN variable is set to true on Chrome OS build,
but it is planned to be set false. This CL is the preparation
to keep the bahavior compatible.

Bug: chromium:1110266
Test: Build locally.
Change-Id: Iffbfafe3ac5b00899804afa7471a04709046610a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28340
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Hidehiko Abe <hidehiko@chromium.org>
2020-09-11 02:24:16 +00:00
Bryan Bernhart 9427c97d9c Fix ASSERT in WindowsDebugLogger again
If debugger was already attached, closing
the exit handle would incorrectly assert.

Bug: None
Change-Id: I322591c66a9885a260a87750e066ba2e9d07fe23
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28321
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-09-10 15:53:47 +00:00