[roll] Roll fuchsia [camera] Have controller allocate client buffers

To solve multiple issues with stream clients connecting in arbitrary
order, have the controller allocate buffers for the clients and hand out
tokens to the already allocated collections.

This required changing the FIDL interface between the camera device and
controller to change the direction of buffer allocation. In addition, the
'SetBufferCollection' method now only uses the passed in token to detect
whether the client is interested in buffers, since the token handed back
to each client via 'WatchBufferCollection' will be from the controller.

This also required changing the internal configuration of the controller
pipelines so that the last node had buffer constraints available, with
sufficient buffers to allow for clients to ask for some 'camping'
buffers as well.

In the process this uncovered several bugs in how controller pipeline
nodes were constructed when streams were opened in a different order.

Also change camera-gym to get rid of the 'only open one stream at a time'
constraint and workaround.

Original-Bug: 42241
Test: controller_unittest, camera_device_unittest

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/518926
Original-Revision: 16016e1af951f7e720c8bb9d1ce4dbbb0ff0239c
GitOrigin-RevId: 2dad5be27d4cf783b9fd02d596e4cd3b2e5d983b
Change-Id: I10e57c0206f849e2d777e92adfab6e7bc66c867d
1 file changed
tree: de12fd5ef55292c539826fa6c077b4b23202af59
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
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.