From 6789180e5a34efeb893c180f73fbf973540e927f Mon Sep 17 00:00:00 2001 From: David Worsham Date: Mon, 19 Apr 2021 12:52:22 -0700 Subject: [PATCH] Revert "[fuchsia] Use scenic allocator service (#25385)" This reverts commit 8c14250fd90a071d25b459b5cc5ce28251c8ff56. --- shell/platform/fuchsia/flutter/BUILD.gn | 1 - .../meta/flutter_aot_product_runner.cmx | 1 - .../flutter/meta/flutter_aot_runner.cmx | 1 - .../meta/flutter_jit_product_runner.cmx | 1 - .../flutter/meta/flutter_jit_runner.cmx | 1 - .../meta/flutter_runner_scenic_tests.cmx | 1 - .../flutter/meta/flutter_runner_tests.cmx | 2 - .../fuchsia/flutter/vulkan_surface.cc | 46 ++++++------------- .../platform/fuchsia/flutter/vulkan_surface.h | 19 ++++---- .../fuchsia/flutter/vulkan_surface_pool.cc | 8 +--- .../fuchsia/flutter/vulkan_surface_pool.h | 2 +- testing/fuchsia/meta/fuchsia_test.cmx | 2 - 12 files changed, 26 insertions(+), 59 deletions(-) diff --git a/shell/platform/fuchsia/flutter/BUILD.gn b/shell/platform/fuchsia/flutter/BUILD.gn index 38c2300521089..728d2c4e819d4 100644 --- a/shell/platform/fuchsia/flutter/BUILD.gn +++ b/shell/platform/fuchsia/flutter/BUILD.gn @@ -134,7 +134,6 @@ template("runner_sources") { "$fuchsia_sdk_root/fidl:fuchsia.images", "$fuchsia_sdk_root/fidl:fuchsia.intl", "$fuchsia_sdk_root/fidl:fuchsia.io", - "$fuchsia_sdk_root/fidl:fuchsia.scenic.allocation", "$fuchsia_sdk_root/fidl:fuchsia.sys", "$fuchsia_sdk_root/fidl:fuchsia.ui.app", "$fuchsia_sdk_root/fidl:fuchsia.ui.scenic", diff --git a/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx index ca0dcabd09fdf..c4aceabbacdcc 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx @@ -20,7 +20,6 @@ "fuchsia.logger.LogSink", "fuchsia.net.NameLookup", "fuchsia.posix.socket.Provider", - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry", diff --git a/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx index 2f76f314f0e5a..0a04ee5a04e5f 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx @@ -20,7 +20,6 @@ "fuchsia.logger.LogSink", "fuchsia.net.NameLookup", "fuchsia.posix.socket.Provider", - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry", diff --git a/shell/platform/fuchsia/flutter/meta/flutter_jit_product_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_jit_product_runner.cmx index f9df37222e890..2ca8ef3b7d957 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_jit_product_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_jit_product_runner.cmx @@ -21,7 +21,6 @@ "fuchsia.logger.LogSink", "fuchsia.net.NameLookup", "fuchsia.posix.socket.Provider", - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry", diff --git a/shell/platform/fuchsia/flutter/meta/flutter_jit_runner.cmx b/shell/platform/fuchsia/flutter/meta/flutter_jit_runner.cmx index f9df37222e890..2ca8ef3b7d957 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_jit_runner.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_jit_runner.cmx @@ -21,7 +21,6 @@ "fuchsia.logger.LogSink", "fuchsia.net.NameLookup", "fuchsia.posix.socket.Provider", - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.timezone.Timezone", "fuchsia.tracing.provider.Registry", diff --git a/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx b/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx index d6de1038c1a61..073c37f00cc9c 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx @@ -12,7 +12,6 @@ "services": [ "fuchsia.logger.LogSink", "fuchsia.sys.Environment", - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.tracing.provider.Registry", "fuchsia.ui.input.ImeService", diff --git a/shell/platform/fuchsia/flutter/meta/flutter_runner_tests.cmx b/shell/platform/fuchsia/flutter/meta/flutter_runner_tests.cmx index 53f4562c75329..155be56e9bf21 100644 --- a/shell/platform/fuchsia/flutter/meta/flutter_runner_tests.cmx +++ b/shell/platform/fuchsia/flutter/meta/flutter_runner_tests.cmx @@ -8,7 +8,6 @@ "facets": { "fuchsia.test": { "system-services": [ - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.ui.scenic.Scenic", "fuchsia.vulkan.loader.Loader" @@ -28,7 +27,6 @@ "fuchsia.process.Launcher", "fuchsia.vulkan.loader.Loader", "fuchsia.logger.LogSink", - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.ui.scenic.Scenic" ] diff --git a/shell/platform/fuchsia/flutter/vulkan_surface.cc b/shell/platform/fuchsia/flutter/vulkan_surface.cc index 04cc439c5f95a..c5f47ed75b571 100644 --- a/shell/platform/fuchsia/flutter/vulkan_surface.cc +++ b/shell/platform/fuchsia/flutter/vulkan_surface.cc @@ -103,24 +103,15 @@ bool VulkanSurface::CreateVulkanImage(vulkan::VulkanProvider& vulkan_provider, VulkanSurface::VulkanSurface( vulkan::VulkanProvider& vulkan_provider, fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator, - fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator, sk_sp context, scenic::Session* session, - const SkISize& size) + const SkISize& size, + uint32_t buffer_id) : vulkan_provider_(vulkan_provider), session_(session), wait_(this) { FML_DCHECK(session_); - fuchsia::scenic::allocation::BufferCollectionExportToken export_token; - fuchsia::scenic::allocation::BufferCollectionImportToken import_token; - if (zx::eventpair::create(0, &export_token.value, &import_token.value) != - ZX_OK) { - FML_DLOG(INFO) << "Failed to create event pair"; - return; - } - - if (!AllocateDeviceMemory(sysmem_allocator, scenic_allocator, - std::move(export_token), std::move(context), - size)) { + if (!AllocateDeviceMemory(sysmem_allocator, std::move(context), size, + buffer_id)) { FML_DLOG(INFO) << "Could not allocate device memory."; return; } @@ -130,7 +121,7 @@ VulkanSurface::VulkanSurface( return; } - PushSessionImageSetupOps(session, std::move(import_token)); + PushSessionImageSetupOps(session); std::fill(size_history_.begin(), size_history_.end(), SkISize::MakeEmpty()); @@ -145,6 +136,9 @@ VulkanSurface::~VulkanSurface() { if (image_id_) { session_->Enqueue(scenic::NewReleaseResourceCmd(image_id_)); } + if (buffer_id_) { + session_->DeregisterBufferCollection(buffer_id_); + } wait_.Cancel(); wait_.set_object(ZX_HANDLE_INVALID); } @@ -230,10 +224,9 @@ bool VulkanSurface::CreateFences() { bool VulkanSurface::AllocateDeviceMemory( fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator, - fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator, - fuchsia::scenic::allocation::BufferCollectionExportToken export_token, sk_sp context, - const SkISize& size) { + const SkISize& size, + uint32_t buffer_id) { if (size.isEmpty()) { return false; } @@ -249,14 +242,8 @@ bool VulkanSurface::AllocateDeviceMemory( status = vulkan_token->Sync(); LOG_AND_RETURN(status != ZX_OK, "Failed to sync token"); - scenic_allocator->RegisterBufferCollection( - std::move(export_token), std::move(scenic_token), - [](fuchsia::scenic::allocation::Allocator_RegisterBufferCollection_Result - result) { - if (result.is_err()) { - FML_DLOG(ERROR) << "RegisterBufferCollection failed"; - } - }); + session_->RegisterBufferCollection(buffer_id, std::move(scenic_token)); + buffer_id_ = buffer_id; VkBufferCollectionCreateInfoFUCHSIA import_info; import_info.collectionToken = vulkan_token.Unbind().TakeChannel().release(); @@ -383,14 +370,11 @@ bool VulkanSurface::SetupSkiaSurface(sk_sp context, return true; } -void VulkanSurface::PushSessionImageSetupOps( - scenic::Session* session, - fuchsia::scenic::allocation::BufferCollectionImportToken import_token) { +void VulkanSurface::PushSessionImageSetupOps(scenic::Session* session) { if (image_id_ == 0) image_id_ = session->AllocResourceId(); - session->Enqueue(scenic::NewCreateImage3Cmd(image_id_, sk_surface_->width(), - sk_surface_->height(), - std::move(import_token), 0)); + session->Enqueue(scenic::NewCreateImage2Cmd( + image_id_, sk_surface_->width(), sk_surface_->height(), buffer_id_, 0)); } uint32_t VulkanSurface::GetImageId() { diff --git a/shell/platform/fuchsia/flutter/vulkan_surface.h b/shell/platform/fuchsia/flutter/vulkan_surface.h index f71b6446b2156..7e54bd23688df 100644 --- a/shell/platform/fuchsia/flutter/vulkan_surface.h +++ b/shell/platform/fuchsia/flutter/vulkan_surface.h @@ -71,10 +71,10 @@ class VulkanSurface final : public SurfaceProducerSurface { public: VulkanSurface(vulkan::VulkanProvider& vulkan_provider, fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator, - fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator, sk_sp context, scenic::Session* session, - const SkISize& size); + const SkISize& size, + uint32_t buffer_id); ~VulkanSurface() override; @@ -144,12 +144,10 @@ class VulkanSurface final : public SurfaceProducerSurface { zx_status_t status, const zx_packet_signal_t* signal); - bool AllocateDeviceMemory( - fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator, - fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator, - fuchsia::scenic::allocation::BufferCollectionExportToken export_token, - sk_sp context, - const SkISize& size); + bool AllocateDeviceMemory(fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator, + sk_sp context, + const SkISize& size, + uint32_t buffer_id); bool CreateVulkanImage(vulkan::VulkanProvider& vulkan_provider, const SkISize& size, @@ -163,9 +161,7 @@ class VulkanSurface final : public SurfaceProducerSurface { bool CreateFences(); - void PushSessionImageSetupOps( - scenic::Session* session, - fuchsia::scenic::allocation::BufferCollectionImportToken import_token); + void PushSessionImageSetupOps(scenic::Session* session); void Reset(); @@ -179,6 +175,7 @@ class VulkanSurface final : public SurfaceProducerSurface { VkMemoryAllocateInfo vk_memory_info_; vulkan::VulkanHandle command_buffer_fence_; sk_sp sk_surface_; + uint32_t buffer_id_ = 0; uint32_t image_id_ = 0; vulkan::VulkanHandle collection_; zx::event acquire_event_; diff --git a/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc b/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc index 7d29d3fd3d110..b9f83e8eabb30 100644 --- a/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc +++ b/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc @@ -41,10 +41,6 @@ VulkanSurfacePool::VulkanSurfacePool(vulkan::VulkanProvider& vulkan_provider, sysmem_allocator_->SetDebugClientInfo(GetCurrentProcessName(), GetCurrentProcessId()); FML_DCHECK(status != ZX_OK); - status = fdio_service_connect( - "/svc/fuchsia.scenic.allocation.Allocator", - scenic_allocator_.NewRequest().TakeChannel().release()); - FML_DCHECK(status != ZX_OK); } VulkanSurfacePool::~VulkanSurfacePool() {} @@ -118,8 +114,8 @@ std::unique_ptr VulkanSurfacePool::CreateSurface( TRACE_EVENT2("flutter", "VulkanSurfacePool::CreateSurface", "width", size.width(), "height", size.height()); auto surface = std::make_unique( - vulkan_provider_, sysmem_allocator_, scenic_allocator_, context_, - scenic_session_, size); + vulkan_provider_, sysmem_allocator_, context_, scenic_session_, size, + buffer_id_++); if (!surface->IsValid()) { return nullptr; } diff --git a/shell/platform/fuchsia/flutter/vulkan_surface_pool.h b/shell/platform/fuchsia/flutter/vulkan_surface_pool.h index 27ed4eede737c..00686f54183ac 100644 --- a/shell/platform/fuchsia/flutter/vulkan_surface_pool.h +++ b/shell/platform/fuchsia/flutter/vulkan_surface_pool.h @@ -42,10 +42,10 @@ class VulkanSurfacePool final { sk_sp context_; scenic::Session* scenic_session_; fuchsia::sysmem::AllocatorSyncPtr sysmem_allocator_; - fuchsia::scenic::allocation::AllocatorPtr scenic_allocator_; std::vector> available_surfaces_; std::unordered_map> pending_surfaces_; + uint32_t buffer_id_ = 1; size_t trace_surfaces_created_ = 0; size_t trace_surfaces_reused_ = 0; diff --git a/testing/fuchsia/meta/fuchsia_test.cmx b/testing/fuchsia/meta/fuchsia_test.cmx index b492c645065b4..8b72b155c4225 100644 --- a/testing/fuchsia/meta/fuchsia_test.cmx +++ b/testing/fuchsia/meta/fuchsia_test.cmx @@ -5,7 +5,6 @@ "facets": { "fuchsia.test": { "system-services": [ - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.vulkan.loader.Loader" ] @@ -26,7 +25,6 @@ "fuchsia.logger.LogSink", "fuchsia.process.Launcher", "fuchsia.settings.Intl", - "fuchsia.scenic.allocation.Allocator", "fuchsia.sysmem.Allocator", "fuchsia.tracing.provider.Registry", "fuchsia.ui.input3.Keyboard",