[Blink] Convert DrawingBuffer to MappableSharedImage

This CL converts DrawingBuffer from using GpuMemoryBuffer to using
MappableSharedImage. The conversion is straightforward:

* Currently DrawingBuffer creates a GMB and then immediately creates
  an SI from the GMB's handle.
* We instead create an SI via the CreateSI() path that causes a backing
  GMBHandle to be created internally.
* Where the code previously checked for the GMB having been created, we
  now track a bool explicitly for whether the MapppableSI was created.
* We remove ColorBuffer's keeping the GMB alive for its lifetime.
  ColorBuffer already keeps the SI alive for its lifetime (it's put into
  `back_buffer_mailbox`, which is passed to the created ColorBuffer and
  on which that ColorBuffer calls DestroySI() at the same time as it
  resets() the gmb)
* We remove the check for Platform having a GMBManager from
  ShouldUseChromiumImage(). This check only served to ensure that the
  code didn't try to create a GMB from a null GMBManager. MappableSI
  doesn't use Platform's GMBManager to create GMBs internally. In the
  current structure of the code any failure to create MappableSI will
  flow down to the non-ShouldUseChromiumImage() case, as the code is
  currently doing if there is no GMBManager.

Bug: 1431497
Change-Id: If15f199ee6d63176e70625c99b567c84fffcf125
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5119550
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1238562}
3 files changed
tree: 60dc2c6367195865717f4911797fc6a7a61c6906
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. webkit/
  51. .clang-format
  52. .clang-tidy
  53. .clangd
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gitmodules
  59. .gn
  60. .mailmap
  61. .rustfmt.toml
  62. .vpython3
  63. .yapfignore
  64. ATL_OWNERS
  65. AUTHORS
  66. BUILD.gn
  67. CODE_OF_CONDUCT.md
  68. codereview.settings
  69. DEPS
  70. DIR_METADATA
  71. LICENSE
  72. LICENSE.chromium_os
  73. OWNERS
  74. PRESUBMIT.py
  75. PRESUBMIT_test.py
  76. PRESUBMIT_test_mocks.py
  77. README.md
  78. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure .

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.