[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
This repository contains Fuchsia's Global Integration manifest files.
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.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party.