Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 584bf9f

Browse files
renyouarbreng
andauthored
Revert "[fuchsia] Use scenic allocator service (#25385)" (#25655) (#25663)
This reverts commit 8c14250. Co-authored-by: David Worsham <[email protected]>
1 parent e3832e1 commit 584bf9f

12 files changed

+26
-59
lines changed

shell/platform/fuchsia/flutter/BUILD.gn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,6 @@ template("runner_sources") {
134134
"$fuchsia_sdk_root/fidl:fuchsia.images",
135135
"$fuchsia_sdk_root/fidl:fuchsia.intl",
136136
"$fuchsia_sdk_root/fidl:fuchsia.io",
137-
"$fuchsia_sdk_root/fidl:fuchsia.scenic.allocation",
138137
"$fuchsia_sdk_root/fidl:fuchsia.sys",
139138
"$fuchsia_sdk_root/fidl:fuchsia.ui.app",
140139
"$fuchsia_sdk_root/fidl:fuchsia.ui.scenic",

shell/platform/fuchsia/flutter/meta/flutter_aot_product_runner.cmx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"fuchsia.logger.LogSink",
2121
"fuchsia.net.NameLookup",
2222
"fuchsia.posix.socket.Provider",
23-
"fuchsia.scenic.allocation.Allocator",
2423
"fuchsia.sysmem.Allocator",
2524
"fuchsia.timezone.Timezone",
2625
"fuchsia.tracing.provider.Registry",

shell/platform/fuchsia/flutter/meta/flutter_aot_runner.cmx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"fuchsia.logger.LogSink",
2121
"fuchsia.net.NameLookup",
2222
"fuchsia.posix.socket.Provider",
23-
"fuchsia.scenic.allocation.Allocator",
2423
"fuchsia.sysmem.Allocator",
2524
"fuchsia.timezone.Timezone",
2625
"fuchsia.tracing.provider.Registry",

shell/platform/fuchsia/flutter/meta/flutter_jit_product_runner.cmx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
"fuchsia.logger.LogSink",
2222
"fuchsia.net.NameLookup",
2323
"fuchsia.posix.socket.Provider",
24-
"fuchsia.scenic.allocation.Allocator",
2524
"fuchsia.sysmem.Allocator",
2625
"fuchsia.timezone.Timezone",
2726
"fuchsia.tracing.provider.Registry",

shell/platform/fuchsia/flutter/meta/flutter_jit_runner.cmx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
"fuchsia.logger.LogSink",
2222
"fuchsia.net.NameLookup",
2323
"fuchsia.posix.socket.Provider",
24-
"fuchsia.scenic.allocation.Allocator",
2524
"fuchsia.sysmem.Allocator",
2625
"fuchsia.timezone.Timezone",
2726
"fuchsia.tracing.provider.Registry",

shell/platform/fuchsia/flutter/meta/flutter_runner_scenic_tests.cmx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
"services": [
1313
"fuchsia.logger.LogSink",
1414
"fuchsia.sys.Environment",
15-
"fuchsia.scenic.allocation.Allocator",
1615
"fuchsia.sysmem.Allocator",
1716
"fuchsia.tracing.provider.Registry",
1817
"fuchsia.ui.input.ImeService",

shell/platform/fuchsia/flutter/meta/flutter_runner_tests.cmx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
"facets": {
99
"fuchsia.test": {
1010
"system-services": [
11-
"fuchsia.scenic.allocation.Allocator",
1211
"fuchsia.sysmem.Allocator",
1312
"fuchsia.ui.scenic.Scenic",
1413
"fuchsia.vulkan.loader.Loader"
@@ -28,7 +27,6 @@
2827
"fuchsia.process.Launcher",
2928
"fuchsia.vulkan.loader.Loader",
3029
"fuchsia.logger.LogSink",
31-
"fuchsia.scenic.allocation.Allocator",
3230
"fuchsia.sysmem.Allocator",
3331
"fuchsia.ui.scenic.Scenic"
3432
]

shell/platform/fuchsia/flutter/vulkan_surface.cc

Lines changed: 15 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -103,24 +103,15 @@ bool VulkanSurface::CreateVulkanImage(vulkan::VulkanProvider& vulkan_provider,
103103
VulkanSurface::VulkanSurface(
104104
vulkan::VulkanProvider& vulkan_provider,
105105
fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
106-
fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator,
107106
sk_sp<GrDirectContext> context,
108107
scenic::Session* session,
109-
const SkISize& size)
108+
const SkISize& size,
109+
uint32_t buffer_id)
110110
: vulkan_provider_(vulkan_provider), session_(session), wait_(this) {
111111
FML_DCHECK(session_);
112112

113-
fuchsia::scenic::allocation::BufferCollectionExportToken export_token;
114-
fuchsia::scenic::allocation::BufferCollectionImportToken import_token;
115-
if (zx::eventpair::create(0, &export_token.value, &import_token.value) !=
116-
ZX_OK) {
117-
FML_DLOG(INFO) << "Failed to create event pair";
118-
return;
119-
}
120-
121-
if (!AllocateDeviceMemory(sysmem_allocator, scenic_allocator,
122-
std::move(export_token), std::move(context),
123-
size)) {
113+
if (!AllocateDeviceMemory(sysmem_allocator, std::move(context), size,
114+
buffer_id)) {
124115
FML_DLOG(INFO) << "Could not allocate device memory.";
125116
return;
126117
}
@@ -130,7 +121,7 @@ VulkanSurface::VulkanSurface(
130121
return;
131122
}
132123

133-
PushSessionImageSetupOps(session, std::move(import_token));
124+
PushSessionImageSetupOps(session);
134125

135126
std::fill(size_history_.begin(), size_history_.end(), SkISize::MakeEmpty());
136127

@@ -145,6 +136,9 @@ VulkanSurface::~VulkanSurface() {
145136
if (image_id_) {
146137
session_->Enqueue(scenic::NewReleaseResourceCmd(image_id_));
147138
}
139+
if (buffer_id_) {
140+
session_->DeregisterBufferCollection(buffer_id_);
141+
}
148142
wait_.Cancel();
149143
wait_.set_object(ZX_HANDLE_INVALID);
150144
}
@@ -230,10 +224,9 @@ bool VulkanSurface::CreateFences() {
230224

231225
bool VulkanSurface::AllocateDeviceMemory(
232226
fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
233-
fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator,
234-
fuchsia::scenic::allocation::BufferCollectionExportToken export_token,
235227
sk_sp<GrDirectContext> context,
236-
const SkISize& size) {
228+
const SkISize& size,
229+
uint32_t buffer_id) {
237230
if (size.isEmpty()) {
238231
return false;
239232
}
@@ -249,14 +242,8 @@ bool VulkanSurface::AllocateDeviceMemory(
249242
status = vulkan_token->Sync();
250243
LOG_AND_RETURN(status != ZX_OK, "Failed to sync token");
251244

252-
scenic_allocator->RegisterBufferCollection(
253-
std::move(export_token), std::move(scenic_token),
254-
[](fuchsia::scenic::allocation::Allocator_RegisterBufferCollection_Result
255-
result) {
256-
if (result.is_err()) {
257-
FML_DLOG(ERROR) << "RegisterBufferCollection failed";
258-
}
259-
});
245+
session_->RegisterBufferCollection(buffer_id, std::move(scenic_token));
246+
buffer_id_ = buffer_id;
260247

261248
VkBufferCollectionCreateInfoFUCHSIA import_info;
262249
import_info.collectionToken = vulkan_token.Unbind().TakeChannel().release();
@@ -383,14 +370,11 @@ bool VulkanSurface::SetupSkiaSurface(sk_sp<GrDirectContext> context,
383370
return true;
384371
}
385372

386-
void VulkanSurface::PushSessionImageSetupOps(
387-
scenic::Session* session,
388-
fuchsia::scenic::allocation::BufferCollectionImportToken import_token) {
373+
void VulkanSurface::PushSessionImageSetupOps(scenic::Session* session) {
389374
if (image_id_ == 0)
390375
image_id_ = session->AllocResourceId();
391-
session->Enqueue(scenic::NewCreateImage3Cmd(image_id_, sk_surface_->width(),
392-
sk_surface_->height(),
393-
std::move(import_token), 0));
376+
session->Enqueue(scenic::NewCreateImage2Cmd(
377+
image_id_, sk_surface_->width(), sk_surface_->height(), buffer_id_, 0));
394378
}
395379

396380
uint32_t VulkanSurface::GetImageId() {

shell/platform/fuchsia/flutter/vulkan_surface.h

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ class VulkanSurface final : public SurfaceProducerSurface {
7171
public:
7272
VulkanSurface(vulkan::VulkanProvider& vulkan_provider,
7373
fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
74-
fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator,
7574
sk_sp<GrDirectContext> context,
7675
scenic::Session* session,
77-
const SkISize& size);
76+
const SkISize& size,
77+
uint32_t buffer_id);
7878

7979
~VulkanSurface() override;
8080

@@ -144,12 +144,10 @@ class VulkanSurface final : public SurfaceProducerSurface {
144144
zx_status_t status,
145145
const zx_packet_signal_t* signal);
146146

147-
bool AllocateDeviceMemory(
148-
fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
149-
fuchsia::scenic::allocation::AllocatorPtr& scenic_allocator,
150-
fuchsia::scenic::allocation::BufferCollectionExportToken export_token,
151-
sk_sp<GrDirectContext> context,
152-
const SkISize& size);
147+
bool AllocateDeviceMemory(fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
148+
sk_sp<GrDirectContext> context,
149+
const SkISize& size,
150+
uint32_t buffer_id);
153151

154152
bool CreateVulkanImage(vulkan::VulkanProvider& vulkan_provider,
155153
const SkISize& size,
@@ -163,9 +161,7 @@ class VulkanSurface final : public SurfaceProducerSurface {
163161

164162
bool CreateFences();
165163

166-
void PushSessionImageSetupOps(
167-
scenic::Session* session,
168-
fuchsia::scenic::allocation::BufferCollectionImportToken import_token);
164+
void PushSessionImageSetupOps(scenic::Session* session);
169165

170166
void Reset();
171167

@@ -179,6 +175,7 @@ class VulkanSurface final : public SurfaceProducerSurface {
179175
VkMemoryAllocateInfo vk_memory_info_;
180176
vulkan::VulkanHandle<VkFence> command_buffer_fence_;
181177
sk_sp<SkSurface> sk_surface_;
178+
uint32_t buffer_id_ = 0;
182179
uint32_t image_id_ = 0;
183180
vulkan::VulkanHandle<VkBufferCollectionFUCHSIA> collection_;
184181
zx::event acquire_event_;

shell/platform/fuchsia/flutter/vulkan_surface_pool.cc

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,6 @@ VulkanSurfacePool::VulkanSurfacePool(vulkan::VulkanProvider& vulkan_provider,
4141
sysmem_allocator_->SetDebugClientInfo(GetCurrentProcessName(),
4242
GetCurrentProcessId());
4343
FML_DCHECK(status != ZX_OK);
44-
status = fdio_service_connect(
45-
"/svc/fuchsia.scenic.allocation.Allocator",
46-
scenic_allocator_.NewRequest().TakeChannel().release());
47-
FML_DCHECK(status != ZX_OK);
4844
}
4945

5046
VulkanSurfacePool::~VulkanSurfacePool() {}
@@ -118,8 +114,8 @@ std::unique_ptr<VulkanSurface> VulkanSurfacePool::CreateSurface(
118114
TRACE_EVENT2("flutter", "VulkanSurfacePool::CreateSurface", "width",
119115
size.width(), "height", size.height());
120116
auto surface = std::make_unique<VulkanSurface>(
121-
vulkan_provider_, sysmem_allocator_, scenic_allocator_, context_,
122-
scenic_session_, size);
117+
vulkan_provider_, sysmem_allocator_, context_, scenic_session_, size,
118+
buffer_id_++);
123119
if (!surface->IsValid()) {
124120
return nullptr;
125121
}

0 commit comments

Comments
 (0)