GL: Skip redundant calls to eglMakeCurrent(). The EGL spec requires that eglMakeCurrent() cause a flush, even when the call is a no-op. By avoiding redundant calls, we avoid the flush. This is good for a 16X speedup on desk_chalkboard: Graphite/Dawn/GLES, before: curr/maxrss loops min median mean max stddev config bench 195/199 MB 1 147ms 164ms 165ms 200ms 6% grdawn_gles desk_chalkboard.skp_1 Graphite/Dawn/GLES, after: curr/maxrss loops min median mean max stddev config bench 204/205 MB 1 8.73ms 9.59ms 9.66ms 12.3ms 4% grdawn_gles desk_chalkboard.skp_1 Ganesh/GLES: curr/maxrss loops min median mean max stddev config bench 86/139 MB 1 9.39ms 11.2ms 11.2ms 15.2ms 8% gles desk_chalkboard.skp_1 Change-Id: I12cab41f028be4b94e36d951c0fbce4f6dfe5eca Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/272854 Commit-Queue: Stephen White <senorblanco@chromium.org> Reviewed-by: Geoff Lang <geofflang@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.