[display][fidl][banjo] Add type for driver-side ConfigStamp.

This CL creates a compiler-enforced separation between client-side and
driver-side config stamps. Each Display Coordinator client manages its
ConfigStamp value space, and uses the values in calls to
fuchsia.hardware.display/Coordinator.ApplyConfig3(). The Display
Coordinator creates a single "timeline" of monotonically increasing
DriverConfigStamp values, which are communicated to engine drivers.

This CL carries out the following steps.

1. Add the FIDL type fuchsia.hardware.display.engine/ConfigStamp.
2. Add the api-types/cpp type display::DriverConfigStamp.
3. Migrate all in-tree display drivers.
4. Create api-protocols/cpp stubs to facilitate other display driver
   migration.

A future CL will move fuchsia.hardware.display.types/ConfigStamp to
fuchsia.hardware.display/ConfigStamp. This change is not done here to
keep this CL to a manageable size.

Bug: 394148660
Test: fx test //src/graphics/display
Test: Booted workbench_eng.x64 on qemu
Test: ffx target ssh display-tool squares
Multiply: display-api-types-cpp: 1
Multiply: display-api-types-cpp17: 1
Change-Id: Ic7629590f8e7ab67795493114001ec3b1ae64d38
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1198844
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Reviewed-by: Yilong Li <liyl@google.com>
API-Review: Victor Costan <costan@google.com>
Fuchsia-Auto-Submit: Victor Costan <costan@google.com>
47 files changed
tree: 42b7ea599446b39da991fa52b4c9d3d27867482d
  1. .helix/
  2. boards/
  3. build/
  4. bundles/
  5. docs/
  6. examples/
  7. infra/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .editorconfig
  18. .git-blame-ignore-revs
  19. .gitattributes
  20. .gitignore
  21. .gitmodules
  22. .gn
  23. .ignore
  24. analysis_options.yaml
  25. AUTHORS
  26. BUILD.gn
  27. CODE_OF_CONDUCT.md
  28. CONTRIBUTING.md
  29. fuchsia.code-workspace
  30. LICENSE
  31. OWNERS
  32. PATENTS
  33. pyproject.toml
  34. pyrightconfig.json
  35. README.md
  36. rustfmt.toml
  37. shac.star
  38. shac.textproto
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.