commit | b3acbb992945314db24e3062ad70ae1f0d740273 | [log] [tgz] |
---|---|---|
author | Corentin Wallez <cwallez@chromium.org> | Thu Jun 27 18:06:41 2024 +0000 |
committer | Dawn LUCI CQ <dawn-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Jun 27 18:06:41 2024 +0000 |
tree | e33dfd80b2ef58e05db921ac2f5521fe3084d7af | |
parent | 4431e54d1f80867890e340d89c4cd7584f5a0653 [diff] |
GL: Add support for wgpu::Surface. This adds a dawn::native::opengl::SwapChainEGL object that uses EGLSurfaces under the hood. Due to how special the default framebuffer is in OpenGL (you can draw Y-flipped to it as the sole attachment or with depth-stencil, or blit to it), rendering is done "offscreen" and blitted with Y-flip on Present(). ContextEGL gains a "MakeSurfaceCurrentScope" method that helps make sure a surface is always present even as opengl::Device::GetGL/EGL keeps doing calls to MakeCurrent. DisplayEGL gains a ChooseConfig method to help choose EGL configs for the swapchain (and later will be used for context creation). Many improvements are possible to this implementation: - Supporting rendering directly to the default framebuffer when it is RenderAttachment only and the sole attachment of render passes. (will require adding a Y-flip uniform to every vertex shader). - Supporting rendering directly to the default framebuffer when used with a depth-stencil attachment that's discarded as EGLConfig can contain depth-stencil. - Support for SRGB swapchains with EGL_KHR_gl_colorspace. - Support for more than the hardcoded RGBA8Unorm formats with EGL_KHR_no_config_context. - Dynamic support for wayland and x11 with EGL_EXT_platform_base and friends. Bug: 344814083 Change-Id: I64f3bb5d314acea87f472eaa78dff06deeb4ff3d Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/191142 Reviewed-by: Stephen White <senorblanco@chromium.org> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Dawn is an open-source and cross-platform implementation of the 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.h
version that Dawn implements.webgpu.h
.Helpful links:
Developer documentation:
User documentation: (TODO, figure out what overlaps with the webgpu.h docs)
BSD 3-Clause License, please see LICENSE.
This is not an officially supported Google product.