diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc index 63abbc4524..b4ad703760 100644 --- a/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc +++ b/engine/src/flutter/shell/platform/fuchsia/flutter/software_surface.cc @@ -159,8 +159,7 @@ bool SoftwareSurface::SetupSkiaSurface( fuchsia::ui::composition::RegisterBufferCollectionArgs args; args.set_export_token(std::move(export_token)); - args.set_buffer_collection_token( - fuchsia::sysmem::BufferCollectionTokenHandle(scenic_token.TakeChannel())); + args.set_buffer_collection_token2(std::move(scenic_token)); args.set_usage( fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT); flatland_allocator->RegisterBufferCollection( diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc index e0f08637cc..158d23697e 100644 --- a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc +++ b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/external_view_embedder_unittests.cc @@ -67,7 +67,7 @@ constexpr static int64_t kImplicitViewId = 0; class FakeSurfaceProducerSurface : public SurfaceProducerSurface { public: explicit FakeSurfaceProducerSurface( - fidl::InterfaceRequest + fidl::InterfaceRequest sysmem_token_request, fuchsia::ui::composition::BufferCollectionImportToken buffer_import_token, const SkISize& size) @@ -124,7 +124,7 @@ class FakeSurfaceProducerSurface : public SurfaceProducerSurface { const std::function& on_writes_committed) override {} private: - fidl::InterfaceRequest + fidl::InterfaceRequest sysmem_token_request_; fuchsia::ui::composition::BufferCollectionImportToken buffer_import_token_; zx::event acquire_fence_; @@ -155,13 +155,14 @@ class FakeSurfaceProducer : public SurfaceProducer { const SkISize& size) override { auto [buffer_export_token, buffer_import_token] = BufferCollectionTokenPair::New(); - fuchsia::sysmem::BufferCollectionTokenHandle sysmem_token; + fuchsia::sysmem2::BufferCollectionTokenHandle sysmem_token; auto sysmem_token_request = sysmem_token.NewRequest(); fuchsia::ui::composition::RegisterBufferCollectionArgs buffer_collection_args; buffer_collection_args.set_export_token(std::move(buffer_export_token)); - buffer_collection_args.set_buffer_collection_token(std::move(sysmem_token)); + buffer_collection_args.set_buffer_collection_token2( + std::move(sysmem_token)); buffer_collection_args.set_usage( fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT); flatland_allocator_->RegisterBufferCollection( diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc index db8dc677c0..efdd10286f 100644 --- a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc +++ b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.cc @@ -73,13 +73,24 @@ void FakeFlatland::RegisterBufferCollection( fuchsia::ui::composition::RegisterBufferCollectionArgs args, RegisterBufferCollectionCallback callback) { auto [export_token_koid, _] = GetKoids(args.export_token()); + + // Callers must not set both. + ZX_ASSERT(!args.has_buffer_collection_token2() || + !args.has_buffer_collection_token()); + fuchsia::sysmem2::BufferCollectionTokenHandle sysmem_token; + if (args.has_buffer_collection_token2()) { + sysmem_token = std::move(*args.mutable_buffer_collection_token2()); + } else { + sysmem_token = fuchsia::sysmem2::BufferCollectionTokenHandle( + args.mutable_buffer_collection_token()->TakeChannel()); + } + auto [__, emplace_binding_success] = graph_bindings_.buffer_collections.emplace( export_token_koid, BufferCollectionBinding{ .export_token = std::move(*args.mutable_export_token()), - .sysmem_token = - std::move(*args.mutable_buffer_collection_token()), + .sysmem_token = std::move(sysmem_token), .usage = args.usage(), }); // TODO(fxb/85619): Disconnect the Allocator here diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h index ac70c4641c..cdc188bc21 100644 --- a/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h +++ b/engine/src/flutter/shell/platform/fuchsia/flutter/tests/fakes/scenic/fake_flatland.h @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include #include @@ -175,7 +175,7 @@ class FakeFlatland struct BufferCollectionBinding { fuchsia::ui::composition::BufferCollectionExportToken export_token; - fuchsia::sysmem::BufferCollectionTokenHandle sysmem_token; + fuchsia::sysmem2::BufferCollectionTokenHandle sysmem_token; fuchsia::ui::composition::RegisterBufferCollectionUsage usage; }; diff --git a/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc b/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc index 3ccb868abd..24d5d8eaee 100644 --- a/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc +++ b/engine/src/flutter/shell/platform/fuchsia/flutter/vulkan_surface.cc @@ -297,8 +297,7 @@ bool VulkanSurface::AllocateDeviceMemory( fuchsia::ui::composition::RegisterBufferCollectionArgs args; args.set_export_token(std::move(export_token)); - args.set_buffer_collection_token(fuchsia::sysmem::BufferCollectionTokenHandle( - scenic_token.Unbind().TakeChannel())); + args.set_buffer_collection_token2(std::move(scenic_token)); args.set_usage( fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT); flatland_allocator->RegisterBufferCollection(