Corentin Wallez 2ce1d927e9 SwapChainVk: handle mismatching size and usage with a blit
In Vulkan the swapchain can stop working if the window resizes and
doesn't match the size of the swapchain images anymore. WebGPU
applications might not handle resizes instantly, so if the swapchain
becomes incompatible we give them a temporary texture that we'll then
blit inside the real swapchain texture.

This also handles the case where the application requires more usages
than what the swapchain can support.

In addition, temporary checks are added that fail swapchain creation if
the VkSurface doesn't support BGRA8Unorm which is the only allowed
format for WebGPU swapchains at the moment.

SwapChainTests should now work on Vulkan and are enabled.

Bug: dawn:269

Change-Id: I812c0653125ed86d3a0f8f67347e961c7b207a98
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30700
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
2020-10-22 17:07:49 +00:00
2020-09-02 22:09:08 +00:00
2017-11-28 16:18:39 -05:00
2020-05-07 21:15:55 +00:00
2018-07-18 22:54:06 +02:00
2020-04-14 17:36:44 +00:00
2018-08-23 08:33:35 -04:00
2020-04-02 18:14:37 +00:00
2020-10-21 14:37:52 +00:00

Dawn, a WebGPU implementation

Dawn is an open-source and cross-platform implementation of the work-in-progress WebGPU standard. More precisely it implements webgpu.h that is a one-to-one mapping with the WebGPU IDL. Dawn is meant to be integrated as part of a larger system and is the underlying implementation of WebGPU in Chromium.

Dawn provides several WebGPU building blocks:

  • WebGPU C/C++ headers that applications and other building blocks use.
    • The webgpu.h version that Dawn implements.
    • A C++ wrapper for the webgpu.h.
  • A "native" implementation of WebGPU using platforms' GPU APIs:
    • D3D12 on Windows 10
    • Metal on macOS and iOS
    • Vulkan on Windows, Linux, ChromeOS, Android and Fuchsia
    • OpenGL as best effort where available
  • A client-server implementation of WebGPU for applications that are in a sandbox without access to native drivers

Helpful links:

Documentation table of content

Developer documentation:

User documentation: (TODO, figure out what overlaps with the webgpu.h docs)

Status

(TODO)

License

Apache 2.0 Public License, please see LICENSE.

Disclaimer

This is not an officially supported Google product.

Description
CMake-only fork of https://dawn.googlesource.com/dawn with cleaned, vendored dependencies
Readme Multiple Licenses 145 MiB
Languages
C++ 59.9%
HLSL 18.2%
GLSL 17.3%
Go 2.1%
Objective-C++ 0.8%
Other 1.6%