[zircon][dev][goldfish] Add goldfish control driver

DX-939 #comment

This implements a goldfish control device driver. The
purpose of this device is to manage HW side resources
associated sysmem allocated VMOs. It provides a FIDL
interface that can be used by the vulkan ICD to create
HW resources (color buffers) for a VMO and query the
existing resource associated with a VMO.

In order to support this VMO to color buffer mapping,
the concept of a 'heap' is introduced in sysmem. Sysmem
participants can require that memory is allocated on
a specific heap. Memory allocated on a specific heap
can be device local and doesn't need to support CPU
access.

The FIDL interface makes it possible to implement
import/export of memory dedicated to images in the
goldfish vulkan ICD.

The query interface is also exposed as a banjo protocol.
This allows child drivers (e.g. goldfish display driver)
to acquire HW resource associated with VMOs.

This change is part of a series of changes that allow
Fuchsia to run in AEMU, which makes it possible to run a
large set of our existing UI unit/integration tests
without Fuchsia hardware.

Test: /boot/test/sys/sysmem-test
Test: /boot/test/sys/golfish-test
Change-Id: Ib3517bcbf4f5b8561f51f6a7cb19805d984f7923
54 files changed
tree: 3e1245f6d66d58f305f6c20d1ef767cdd4041afd
  1. boards/
  2. build/
  3. buildtools/
  4. bundles/
  5. docs/
  6. examples/
  7. garnet/
  8. infra/
  9. peridot/
  10. products/
  11. scripts/
  12. sdk/
  13. src/
  14. third_party/
  15. tools/
  16. zircon/
  17. .clang-format
  18. .clang-tidy
  19. .dir-locals.el
  20. .gitattributes
  21. .gitignore
  22. .gn
  23. AUTHORS
  24. BUILD.gn
  25. CODE_OF_CONDUCT.md
  26. CONTRIBUTING.md
  27. LICENSE
  28. OWNERS
  29. PATENTS
  30. README.md
  31. rustfmt.toml
README.md

Fuchsia

Pink + Purple == Fuchsia (a new operating system)

What is Fuchsia?

Fuchsia is a modular, capability-based operating system. Fuchsia runs on modern 64-bit Intel and ARM processors.

Fuchsia is an open source project with a code of conduct that we expect everyone who interacts with the project to respect.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See the documentation.