[native] Update adapter type sorting to deter CPU and unknown adapters.

- This change modulates the change in
  https://dawn-review.git.corp.google.com/c/dawn/+/301355 a bit so
  that real GPU cards retain OS order when the power preference is
  undefined, but makes CPU and Undefined adapters sorted later in
  the list.
- The reason we are updating this is because in the bug below,
  specifically w.r.t the findings in comment#20, there is reason to
  believe that CPU adapters might be being chosen in some cases for
  angle tests and potentially causing timeouts.
- Note that the fix in CaptureAndReplayTests to remove the
  glfwTerminate() call is necessary to make those tests avoid
  destroying resources that are destroyed later on in ~DawnTest.
  Also, it is important to note that the CaptureAndReplayTests have
  actually been running on only Swiftshader since the change above
  landed, and the real hardware testing for these tests have been
  unintentionally suppressed. This change re-enables those tests
  which is what caught the bad glfwTerminate() call. Note that I'm
  not actually positive that removing that call is "correct" but
  Gemini pointed out that SurfaceTests which does a lot of the
  same GLFW setup does not call it, and removing it does seem to
  address some crashes I saw in CQ.

Bug: 517972806
Change-Id: I61a3673cf789192b65634b28fc08769f20026d86
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/344555
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Shrek Shao <shrekshao@google.com>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
2 files changed
tree: 0d5f1e6109d99594ad151a0d1a522359f99ef420
  1. .github/
  2. .vscode/
  3. agents/
  4. build_overrides/
  5. docs/
  6. generator/
  7. include/
  8. infra/
  9. scripts/
  10. src/
  11. test/
  12. third_party/
  13. tools/
  14. webgpu-cts/
  15. .bazelignore
  16. .bazelrc
  17. .bazelversion
  18. .clang-format
  19. .clang-format-ignore
  20. .clang-tidy
  21. .git-blame-ignore-revs
  22. .gitattributes
  23. .gitignore
  24. .gitmodules
  25. .gn
  26. .style.yapf
  27. AUTHORS
  28. BUILD.bazel
  29. BUILD.gn
  30. CMakeLists.txt
  31. CMakeSettings.json
  32. CODE_OF_CONDUCT.md
  33. codereview.settings
  34. CONTRIBUTING.md
  35. CPPLINT.cfg
  36. DEPS
  37. DIR_METADATA
  38. go.mod
  39. go.sum
  40. go_presubmit_support.py
  41. LICENSE
  42. MODULE.bazel
  43. OWNERS
  44. PRESUBMIT.py
  45. PRESUBMIT_test.py
  46. README.chromium
  47. README.md
  48. unsafe_buffers_paths.txt
  49. vpython.toml
  50. vpython.toml.uv.lock
  51. WATCHLISTS
  52. WORKSPACE.bazel
README.md

Build Status Matrix Space

Dawn, a WebGPU implementation

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 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, Metal, Vulkan and OpenGL. See per API support for more details.
  • A client-server implementation of WebGPU for applications that are in a sandbox without access to native drivers
  • Tint is a compiler for the WebGPU Shader Language (WGSL) that can be used in standalone to convert shaders from and to WGSL.

Helpful links:

Documentation table of content

Developer documentation:

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

License

BSD 3-Clause License, please see LICENSE.

Disclaimer

This is not an officially supported Google product.