[utils] Fixes death test conditions and macros. In https://dawn-review.git.corp.google.com/c/dawn/+/339076, when trying to get partition_alloc death tests working for RawSpan, I unconditionally imported: //build/config/sanitizers/sanitizers.gni By importing that config, the use_fuzzing_engine flag was flipped to "true" when the gn arg use_libfuzzer was set to "true". (This happens in the clusterfuzz CI bot linked in the bug.) This caused all the compilation flags of: DAWN_ENABLE_ASSERTS DAWN_ABORT_ON_ASSERT DAWN_DISABLE_LOGGING to be set at compilation time. At the same time, that CI bot actually sets is_debug = false, which meant that the DAWN_EXPECT_DEBUG_DEATH_IF_SUPPORTED macro assumed the test should not crash, when in reality it does because DAWN_ENABLE_ASSERT is the real flag that decides whether we crash or not and it was set because use_fuzzing_engine was true. This change does two main things: 1) Fix the condition in utils/BUILD.gn such that we only set DAWN_ENABLE_ASSERTS w.r.t use_fuzzing_engine when we are building as a part of Chromium. This reverts the behavior of the tests to be the same as before the change above. Specifically, that the standalone clusterfuzz build does not build with asserts enabled since standalone builds depend on the is_debug flag to determine whether they should be enabled. 2) Updates the test macros in utils/gtest.h to more explicitly handle the different cases appropriately so that tests don't need to handle them with ifdefs. This includes: - Adding DAWN_EXPECT_DEATH_IF_SUPPORTED macros that automatically suppresses string matching on the error logs when DAWN_DISABLE_LOGGING in enabled. - Update DAWN_*_DEBUG_DEATH_IF_SUPPORTED macros to check both if we are in debug mode, or if DAWN_ENABLE_ASSERTS is explicitly enabled. - Update PRESUBMIT.py to prevent Dawn code from using the gtest native macros, and instead make tests use the Dawn ones that handle the different compilation defines appropriately. - Update existing test code to use the new macros. Bug: 564917473 Change-Id: Ia3e5cc597d9bcc7288cc3d66f16ce136d2f7db63 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/344475 Reviewed-by: Kai Ninomiya <kainino@chromium.org> Commit-Queue: Loko Kung <lokokung@google.com>
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.