[//gpu] Add SI usages to specify GLES2-for-raster and raster-over-GLES2

GLTextureImageBackingFactory currently disallows creations of
SharedImages in the following cases:

* ANGLE-Metal is being used and the client has specified GLES2 usage (as
  in this case it is not guaranteed that WebGL will be using the same
  GPU as raster)
* Graphite is being used and the client has specified raster usage (as
  in this case it is not guaranteed that Skia is using GL)

However, there are special cases of these where it is safe to create
GLTextureImageBackings:

* For the former: When GLES2 is being used *only for raster*
* For the latter: When raster is being used *only over the GLES2
  interface*

The client can potentially know that it is in one of these special
cases. This CL adds two new SharedImage usages to specify each of these
and adds them as supported usages everywhere where GLES2_{READ, WRITE}
and RASTER_{READ, WRITE} usage are supported respectively. A followup
will change GLTextureImageBackingFactory to allow SI creation based on
these usages being present.

Bug: 328472684
Change-Id: Icdfd7c4fae49a583d8cb32e3c18aa014b9af1a58
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5355674
Commit-Queue: Colin Blundell <blundell@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1270854}
14 files changed
tree: f2f80e96028f845f173bac5541b182ed5cac3405
  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. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. 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.