Revert "[fuchsia] Use scenic allocator service (#25385)" (#25655) (#25663)

This reverts commit 8c14250fd90a071d25b459b5cc5ce28251c8ff56.

Co-authored-by: David Worsham <arbreng@gmail.com>
diff --git a/shell/platform/fuchsia/flutter/BUILD.gn b/shell/platform/fuchsia/flutter/BUILD.gn
index 38c2300..728d2c4 100644
--- a/shell/platform/fuchsia/flutter/BUILD.gn
+++ b/shell/platform/fuchsia/flutter/BUILD.gn
@@ -134,7 +134,6 @@
              "$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 ca0dcab..c4aceab 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 2f76f31..0a04ee5 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 f9df372..2ca8ef3 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 f9df372..2ca8ef3 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 d6de103..073c37f 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 53f4562..155be56 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 04cc439..c5f47ed 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface.cc
+++ b/shell/platform/fuchsia/flutter/vulkan_surface.cc
@@ -103,24 +103,15 @@
 VulkanSurface::VulkanSurface(
     vulkan::VulkanProvider& vulkan_provider,
     fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
-    fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator,
     sk_sp<GrDirectContext> 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 @@
     return;
   }
 
-  PushSessionImageSetupOps(session, std::move(import_token));
+  PushSessionImageSetupOps(session);
 
   std::fill(size_history_.begin(), size_history_.end(), SkISize::MakeEmpty());
 
@@ -145,6 +136,9 @@
   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::AllocateDeviceMemory(
     fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
-    fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator,
-    fuchsia::scenic::allocation::BufferCollectionExportToken export_token,
     sk_sp<GrDirectContext> context,
-    const SkISize& size) {
+    const SkISize& size,
+    uint32_t buffer_id) {
   if (size.isEmpty()) {
     return false;
   }
@@ -249,14 +242,8 @@
   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 @@
   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 f71b644..7e54bd2 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface.h
+++ b/shell/platform/fuchsia/flutter/vulkan_surface.h
@@ -71,10 +71,10 @@
  public:
   VulkanSurface(vulkan::VulkanProvider& vulkan_provider,
                 fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
-                fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator,
                 sk_sp<GrDirectContext> context,
                 scenic::Session* session,
-                const SkISize& size);
+                const SkISize& size,
+                uint32_t buffer_id);
 
   ~VulkanSurface() override;
 
@@ -144,12 +144,10 @@
                      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<GrDirectContext> context,
-      const SkISize& size);
+  bool AllocateDeviceMemory(fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+                            sk_sp<GrDirectContext> context,
+                            const SkISize& size,
+                            uint32_t buffer_id);
 
   bool CreateVulkanImage(vulkan::VulkanProvider& vulkan_provider,
                          const SkISize& size,
@@ -163,9 +161,7 @@
 
   bool CreateFences();
 
-  void PushSessionImageSetupOps(
-      scenic::Session* session,
-      fuchsia::scenic::allocation::BufferCollectionImportToken import_token);
+  void PushSessionImageSetupOps(scenic::Session* session);
 
   void Reset();
 
@@ -179,6 +175,7 @@
   VkMemoryAllocateInfo vk_memory_info_;
   vulkan::VulkanHandle<VkFence> command_buffer_fence_;
   sk_sp<SkSurface> sk_surface_;
+  uint32_t buffer_id_ = 0;
   uint32_t image_id_ = 0;
   vulkan::VulkanHandle<VkBufferCollectionFUCHSIA> 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 7d29d3f..b9f83e8 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc
+++ b/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc
@@ -41,10 +41,6 @@
   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 @@
   TRACE_EVENT2("flutter", "VulkanSurfacePool::CreateSurface", "width",
                size.width(), "height", size.height());
   auto surface = std::make_unique<VulkanSurface>(
-      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 27ed4ee..00686f5 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface_pool.h
+++ b/shell/platform/fuchsia/flutter/vulkan_surface_pool.h
@@ -42,10 +42,10 @@
   sk_sp<GrDirectContext> context_;
   scenic::Session* scenic_session_;
   fuchsia::sysmem::AllocatorSyncPtr sysmem_allocator_;
-  fuchsia::scenic::allocation::AllocatorPtr scenic_allocator_;
   std::vector<std::unique_ptr<VulkanSurface>> available_surfaces_;
   std::unordered_map<uintptr_t, std::unique_ptr<VulkanSurface>>
       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 b492c64..8b72b15 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",