[roll] Roll fuchsia [display][virtio] Split virtio-gpu-root and virtio-gpu-display nodes.

The virtio-guest display driver created two device nodes on its
parent node: the "virtio-gpu-display" node serving the banjo
display coordinator protocol, and the "virtio-gpu-control" node
serving the FIDL virtio gpu protocol.

However, the device node topology didn't fully match the class
topology: though virtio-gpu-display and virtio-gpu-control are
sibling nodes, the GpuDeviceDriver class (owning the device handle
of virtio-gpu-display) owns the GpuControlService class (owning
the device handle of virtio-gpu-control). The former is properly
managed by the driver manager, while the latter does not have any
valid device ops table associated.

This change is the first step to fix the device node topology so
that it can be migrated to DFv2.

In the end, there'll be three nodes and three ddk::Device classes
created by this driver:

- The GpuDeviceDriver class (virtio-gpu-root node): Owns all the
  hardware resources including the pci device and the virtio ring.
  The root node has two children nodes: virtio-gpu-display and
  virtio-gpu-control.

- The DisplayDeviceDriver class (virtio-gpu-display node): Interacts
  with the display coordinator over the banjo protocol. Does not own
  any resource.

- The GpuControlDriver class (virtio-gpu-control node): Interacts
  with the magma driver over the FIDL protocol. Does not own any
  resource.

This change adds a separate class DisplayDeviceDriver which creates
the virtio-gpu-display node dedicated for display handling, and makes
the GpuDeviceDriver create a virtio-gpu-root node that serves as the
parent of all the other nodes.

Test: no behavior change expected
Test: "ffx emu start --engine qemu" on core.x64.
      Verified that the virtio-gpu-root, virtio-gpu-display and
      virtio-gpu-control node all existed.
      Verified that "display-tool squares" worked correctly.
      Verified that msd_virtio bound to the virtio-gpu-control node correctly.
Test: msd_virtio_gpu_nonhardware_tests
Original-Bug: 332569059
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1070046
Original-Revision: 563ca770b26fea789462d8bfd706f76bba99a77b
GitOrigin-RevId: 5b1d1bc778f8ac188a2aa4a12bbe436c7827637d
Change-Id: I9bb362399f7f18d7b4ee600ff2bac6957afcb882
1 file changed
tree: a2907ada502b0783b1ccd66bf77535a9175a2399
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cts
  6. firmware
  7. flower
  8. jiri.lock
  9. MILESTONE
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
  15. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.