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",