[opengl] Check for unchecked GL errors before data is app-visible App-visible data must not contain incorrect data caused by GL errors. Errors returned by GL work lose the device, but when asserts are disabled DAWN_GL_TRY doesn't call glGetError, so failed GL calls go undetected and frontend state assuming their success (e.g. a texture or buffer marked initialized after an upload or a lazy clear) can expose uninitialized memory. Rather than checking every GL call, check for pending GL errors (CheckPendingErrorBeforeUserVisibleData) where data becomes visible to the application: after Queue::Submit and when exporting a shared fence (EndAccess). The check after Submit also covers present. DAWN_GL_TRY_ALWAYS_CHECK no longer clears errors left by earlier unchecked calls, so they are reported instead of silently dropped before reaching these checks. This also covers buffer mapping. Expected errors from requesting unsupported extensions (with gl_force_es_31_and_no_extensions) are discarded where they are generated. With gl_force_es_31_and_no_extensions, only extensions listed in GL_REQUESTABLE_EXTENSIONS_ANGLE are requested, so that requesting unsupported extensions doesn't leave GL errors pending. No measurable perf impact in dawn_perf_tests on Mesa radeonsi GLES (UniformBufferUpdatePerf/UsageTrackingPerf, median -0.4%). Bug: 536539561 Change-Id: I5e90c26662cbffa4a79d97e19627e7feed202388 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/351016 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: 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.