[fuchsia][sysmem2] move to sysmem2 protocols (#53138)
Switch flutter from sysmem(1) protocols to sysmem2 protocols.
This is part of the overall sysmem(1) to sysmem2 migration.
fixes flutter/flutter#151154
diff --git a/shell/platform/fuchsia/flutter/software_surface.cc b/shell/platform/fuchsia/flutter/software_surface.cc
index 1184f63..63abbc4 100644
--- a/shell/platform/fuchsia/flutter/software_surface.cc
+++ b/shell/platform/fuchsia/flutter/software_surface.cc
@@ -28,13 +28,13 @@
constexpr SkColorType kSkiaColorType = kRGBA_8888_SkColorType;
-uint32_t BytesPerRow(const fuchsia::sysmem::SingleBufferSettings& settings,
+uint32_t BytesPerRow(const fuchsia::sysmem2::SingleBufferSettings& settings,
uint32_t bytes_per_pixel,
uint32_t image_width) {
const uint32_t bytes_per_row_divisor =
- settings.image_format_constraints.bytes_per_row_divisor;
+ settings.image_format_constraints().bytes_per_row_divisor();
const uint32_t min_bytes_per_row =
- settings.image_format_constraints.min_bytes_per_row;
+ settings.image_format_constraints().min_bytes_per_row();
const uint32_t unrounded_bytes_per_row =
std::max(image_width * bytes_per_pixel, min_bytes_per_row);
const uint32_t roundup_bytes =
@@ -46,7 +46,7 @@
} // namespace
SoftwareSurface::SoftwareSurface(
- fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
const SkISize& size)
: wait_for_surface_read_finished_(this) {
@@ -102,7 +102,7 @@
}
bool SoftwareSurface::SetupSkiaSurface(
- fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
const SkISize& size) {
if (size.isEmpty()) {
@@ -112,9 +112,10 @@
// Allocate a "local" sysmem token to represent flutter's handle to the
// sysmem buffer.
- fuchsia::sysmem::BufferCollectionTokenSyncPtr local_token;
- zx_status_t allocate_status =
- sysmem_allocator->AllocateSharedCollection(local_token.NewRequest());
+ fuchsia::sysmem2::BufferCollectionTokenSyncPtr local_token;
+ zx_status_t allocate_status = sysmem_allocator->AllocateSharedCollection(
+ std::move(fuchsia::sysmem2::AllocatorAllocateSharedCollectionRequest{}
+ .set_token_request(local_token.NewRequest())));
if (allocate_status != ZX_OK) {
FML_LOG(ERROR) << "Failed to allocate collection: "
<< zx_status_get_string(allocate_status);
@@ -123,14 +124,19 @@
// Create a single Duplicate of the token and Sync it; the single duplicate
// token represents scenic's handle to the sysmem buffer.
- std::vector<fuchsia::sysmem::BufferCollectionTokenHandle> duplicate_tokens;
+ fuchsia::sysmem2::BufferCollectionToken_DuplicateSync_Result duplicate_result;
zx_status_t duplicate_status = local_token->DuplicateSync(
- std::vector<zx_rights_t>{ZX_RIGHT_SAME_RIGHTS}, &duplicate_tokens);
+ std::move(fuchsia::sysmem2::BufferCollectionTokenDuplicateSyncRequest{}
+ .set_rights_attenuation_masks(
+ std::vector<zx_rights_t>{ZX_RIGHT_SAME_RIGHTS})),
+ &duplicate_result);
if (duplicate_status != ZX_OK) {
FML_LOG(ERROR) << "Failed to duplicate collection token: "
<< zx_status_get_string(duplicate_status);
return false;
}
+ auto duplicate_tokens =
+ std::move(*duplicate_result.response().mutable_tokens());
if (duplicate_tokens.size() != 1u) {
FML_LOG(ERROR) << "Failed to duplicate collection token: Incorrect number "
"of tokens returned.";
@@ -153,7 +159,8 @@
fuchsia::ui::composition::RegisterBufferCollectionArgs args;
args.set_export_token(std::move(export_token));
- args.set_buffer_collection_token(std::move(scenic_token));
+ args.set_buffer_collection_token(
+ fuchsia::sysmem::BufferCollectionTokenHandle(scenic_token.TakeChannel()));
args.set_usage(
fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT);
flatland_allocator->RegisterBufferCollection(
@@ -167,9 +174,11 @@
});
// Acquire flutter's local handle to the sysmem buffer.
- fuchsia::sysmem::BufferCollectionSyncPtr buffer_collection;
- zx_status_t bind_status = sysmem_allocator->BindSharedCollection(
- std::move(local_token), buffer_collection.NewRequest());
+ fuchsia::sysmem2::BufferCollectionSyncPtr buffer_collection;
+ zx_status_t bind_status = sysmem_allocator->BindSharedCollection(std::move(
+ fuchsia::sysmem2::AllocatorBindSharedCollectionRequest{}
+ .set_token(std::move(local_token))
+ .set_buffer_collection_request(buffer_collection.NewRequest())));
if (bind_status != ZX_OK) {
FML_LOG(ERROR) << "Failed to bind collection token: "
<< zx_status_get_string(bind_status);
@@ -178,32 +187,26 @@
// Set flutter's constraints on the sysmem buffer. Software rendering only
// requires CPU access to the surface and a basic R8G8B8A8 pixel format.
- fuchsia::sysmem::BufferCollectionConstraints constraints;
- constraints.min_buffer_count = 1;
- constraints.usage.cpu =
- fuchsia::sysmem::cpuUsageWrite | fuchsia::sysmem::cpuUsageWriteOften;
- constraints.has_buffer_memory_constraints = true;
- constraints.buffer_memory_constraints.physically_contiguous_required = false;
- constraints.buffer_memory_constraints.secure_required = false;
- constraints.buffer_memory_constraints.ram_domain_supported = true;
- constraints.buffer_memory_constraints.cpu_domain_supported = true;
- constraints.buffer_memory_constraints.inaccessible_domain_supported = false;
- constraints.image_format_constraints_count = 1;
- fuchsia::sysmem::ImageFormatConstraints& image_constraints =
- constraints.image_format_constraints[0];
- image_constraints = fuchsia::sysmem::ImageFormatConstraints();
- image_constraints.min_coded_width = static_cast<uint32_t>(size.fWidth);
- image_constraints.min_coded_height = static_cast<uint32_t>(size.fHeight);
- image_constraints.min_bytes_per_row = static_cast<uint32_t>(size.fWidth) * 4;
- image_constraints.pixel_format.type =
- fuchsia::sysmem::PixelFormatType::R8G8B8A8;
- image_constraints.color_spaces_count = 1;
- image_constraints.color_space[0].type = fuchsia::sysmem::ColorSpaceType::SRGB;
- image_constraints.pixel_format.has_format_modifier = true;
- image_constraints.pixel_format.format_modifier.value =
- fuchsia::sysmem::FORMAT_MODIFIER_LINEAR;
- zx_status_t set_constraints_status =
- buffer_collection->SetConstraints(true, constraints);
+ fuchsia::sysmem2::BufferCollectionConstraints constraints;
+ constraints.set_min_buffer_count(1);
+ constraints.mutable_usage()->set_cpu(fuchsia::sysmem2::CPU_USAGE_WRITE |
+ fuchsia::sysmem2::CPU_USAGE_WRITE_OFTEN);
+ auto& bmc = *constraints.mutable_buffer_memory_constraints();
+ bmc.set_physically_contiguous_required(false);
+ bmc.set_secure_required(false);
+ bmc.set_ram_domain_supported(true);
+ bmc.set_cpu_domain_supported(true);
+ bmc.set_inaccessible_domain_supported(false);
+ auto& ifc = constraints.mutable_image_format_constraints()->emplace_back();
+ ifc.set_min_size(fuchsia::math::SizeU{static_cast<uint32_t>(size.fWidth),
+ static_cast<uint32_t>(size.fHeight)});
+ ifc.set_min_bytes_per_row(static_cast<uint32_t>(size.fWidth) * 4);
+ ifc.set_pixel_format(fuchsia::images2::PixelFormat::R8G8B8A8);
+ ifc.mutable_color_spaces()->emplace_back(fuchsia::images2::ColorSpace::SRGB);
+ ifc.set_pixel_format_modifier(fuchsia::images2::PixelFormatModifier::LINEAR);
+ zx_status_t set_constraints_status = buffer_collection->SetConstraints(
+ std::move(fuchsia::sysmem2::BufferCollectionSetConstraintsRequest{}
+ .set_constraints(std::move(constraints))));
if (set_constraints_status != ZX_OK) {
FML_LOG(ERROR) << "Failed to set constraints: "
<< zx_status_get_string(set_constraints_status);
@@ -211,30 +214,39 @@
}
// Wait for sysmem to allocate, now that constraints are set.
- fuchsia::sysmem::BufferCollectionInfo_2 buffer_collection_info;
- zx_status_t allocation_status = ZX_OK;
+ fuchsia::sysmem2::BufferCollection_WaitForAllBuffersAllocated_Result
+ wait_result;
zx_status_t wait_for_allocated_status =
- buffer_collection->WaitForBuffersAllocated(&allocation_status,
- &buffer_collection_info);
- if (allocation_status != ZX_OK) {
- FML_LOG(ERROR) << "Failed to allocate: "
- << zx_status_get_string(allocation_status);
- return false;
- }
+ buffer_collection->WaitForAllBuffersAllocated(&wait_result);
if (wait_for_allocated_status != ZX_OK) {
FML_LOG(ERROR) << "Failed to wait for allocate: "
<< zx_status_get_string(wait_for_allocated_status);
return false;
}
+ if (!wait_result.is_response()) {
+ if (wait_result.is_framework_err()) {
+ FML_LOG(ERROR) << "Failed to allocate (framework_err): "
+ << fidl::ToUnderlying(wait_result.framework_err());
+ } else {
+ FML_DCHECK(wait_result.is_err());
+ FML_LOG(ERROR) << "Failed to allocate (err): "
+ << static_cast<uint32_t>(wait_result.err());
+ }
+ return false;
+ }
+ auto buffer_collection_info =
+ std::move(*wait_result.response().mutable_buffer_collection_info());
// Cache the allocated surface VMO and metadata.
- FML_CHECK(buffer_collection_info.settings.buffer_settings.size_bytes != 0);
- FML_CHECK(buffer_collection_info.buffers[0].vmo != ZX_HANDLE_INVALID);
- surface_vmo_ = std::move(buffer_collection_info.buffers[0].vmo);
+ FML_CHECK(buffer_collection_info.settings().buffer_settings().size_bytes() !=
+ 0);
+ FML_CHECK(buffer_collection_info.buffers()[0].vmo().is_valid());
+ surface_vmo_ =
+ std::move(*buffer_collection_info.mutable_buffers()->at(0).mutable_vmo());
surface_size_bytes_ =
- buffer_collection_info.settings.buffer_settings.size_bytes;
- if (buffer_collection_info.settings.buffer_settings.coherency_domain ==
- fuchsia::sysmem::CoherencyDomain::RAM) {
+ buffer_collection_info.settings().buffer_settings().size_bytes();
+ if (buffer_collection_info.settings().buffer_settings().coherency_domain() ==
+ fuchsia::sysmem2::CoherencyDomain::RAM) {
// RAM coherency domain requires a cache clean when writes are finished.
needs_cache_clean_ = true;
}
@@ -252,7 +264,7 @@
// Now that the buffer is CPU-readable, it's safe to discard flutter's
// connection to sysmem.
- zx_status_t close_status = buffer_collection->Close();
+ zx_status_t close_status = buffer_collection->Release();
if (close_status != ZX_OK) {
FML_LOG(ERROR) << "Failed to close buffer: "
<< zx_status_get_string(close_status);
@@ -261,9 +273,9 @@
// Wrap the buffer in a software-rendered Skia surface.
const uint64_t vmo_offset =
- buffer_collection_info.buffers[0].vmo_usable_start;
+ buffer_collection_info.buffers()[0].vmo_usable_start();
const size_t vmo_stride =
- BytesPerRow(buffer_collection_info.settings, 4u, size.width());
+ BytesPerRow(buffer_collection_info.settings(), 4u, size.width());
SkSurfaceProps sk_surface_props(0, kUnknown_SkPixelGeometry);
sk_surface_ = SkSurfaces::WrapPixels(
SkImageInfo::Make(size, kSkiaColorType, kPremul_SkAlphaType,
diff --git a/shell/platform/fuchsia/flutter/software_surface.h b/shell/platform/fuchsia/flutter/software_surface.h
index 8ea4c0d..e42cdfc 100644
--- a/shell/platform/fuchsia/flutter/software_surface.h
+++ b/shell/platform/fuchsia/flutter/software_surface.h
@@ -5,7 +5,7 @@
#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SOFTWARE_SURFACE_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SOFTWARE_SURFACE_H_
-#include <fuchsia/sysmem/cpp/fidl.h>
+#include <fuchsia/sysmem2/cpp/fidl.h>
#include <fuchsia/ui/composition/cpp/fidl.h>
#include <lib/async/cpp/wait.h>
#include <lib/zx/event.h>
@@ -25,7 +25,7 @@
class SoftwareSurface final : public SurfaceProducerSurface {
public:
- SoftwareSurface(fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ SoftwareSurface(fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
const SkISize& size);
@@ -79,7 +79,7 @@
const zx_packet_signal_t* signal);
bool SetupSkiaSurface(
- fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
const SkISize& size);
diff --git a/shell/platform/fuchsia/flutter/software_surface_producer.cc b/shell/platform/fuchsia/flutter/software_surface_producer.cc
index d279a92..10c53ce 100644
--- a/shell/platform/fuchsia/flutter/software_surface_producer.cc
+++ b/shell/platform/fuchsia/flutter/software_surface_producer.cc
@@ -49,10 +49,12 @@
SoftwareSurfaceProducer::SoftwareSurfaceProducer() {
zx_status_t status = fdio_service_connect(
- "/svc/fuchsia.sysmem.Allocator",
+ "/svc/fuchsia.sysmem2.Allocator",
sysmem_allocator_.NewRequest().TakeChannel().release());
- sysmem_allocator_->SetDebugClientInfo(GetCurrentProcessName(),
- GetCurrentProcessId());
+ sysmem_allocator_->SetDebugClientInfo(
+ std::move(fuchsia::sysmem2::AllocatorSetDebugClientInfoRequest{}
+ .set_name(GetCurrentProcessName())
+ .set_id(GetCurrentProcessId())));
FML_DCHECK(status == ZX_OK);
status = fdio_service_connect(
diff --git a/shell/platform/fuchsia/flutter/software_surface_producer.h b/shell/platform/fuchsia/flutter/software_surface_producer.h
index af81492..bcd478d 100644
--- a/shell/platform/fuchsia/flutter/software_surface_producer.h
+++ b/shell/platform/fuchsia/flutter/software_surface_producer.h
@@ -5,7 +5,7 @@
#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SOFTWARE_SURFACE_PRODUCER_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SOFTWARE_SURFACE_PRODUCER_H_
-#include <fuchsia/sysmem/cpp/fidl.h>
+#include <fuchsia/sysmem2/cpp/fidl.h>
#include <fuchsia/ui/composition/cpp/fidl.h>
#include <unordered_map>
@@ -54,7 +54,7 @@
void TraceStats();
- fuchsia::sysmem::AllocatorSyncPtr sysmem_allocator_;
+ fuchsia::sysmem2::AllocatorSyncPtr sysmem_allocator_;
fuchsia::ui::composition::AllocatorPtr flatland_allocator_;
// These surfaces are available for re-use.
diff --git a/shell/platform/fuchsia/flutter/surface_producer.h b/shell/platform/fuchsia/flutter/surface_producer.h
index bd03531..591d157 100644
--- a/shell/platform/fuchsia/flutter/surface_producer.h
+++ b/shell/platform/fuchsia/flutter/surface_producer.h
@@ -5,6 +5,7 @@
#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SURFACE_PRODUCER_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_SURFACE_PRODUCER_H_
+#include <fuchsia/sysmem2/cpp/fidl.h>
#include <fuchsia/ui/composition/cpp/fidl.h>
#include <lib/zx/event.h>
diff --git a/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc b/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc
index 6dd7982..2646442 100644
--- a/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc
+++ b/shell/platform/fuchsia/flutter/tests/integration/embedder/flutter-embedder-test.cc
@@ -237,11 +237,7 @@
Protocol{fuchsia::logger::LogSink::Name_},
Protocol{fuchsia::inspect::InspectSink::Name_},
Protocol{fuchsia::sysmem::Allocator::Name_},
-
- // Replace "fuchsia.sysmem2.Allocator" with
- // fuchsia::sysmem2::Allocator::Name_
- // when available (fuchsia SDK >= 19).
- Protocol{"fuchsia.sysmem2.Allocator"},
+ Protocol{fuchsia::sysmem2::Allocator::Name_},
Protocol{fuchsia::tracing::provider::Registry::Name_},
Protocol{kVulkanLoaderServiceName},
},
@@ -254,11 +250,7 @@
.capabilities = {Protocol{fuchsia::logger::LogSink::Name_},
Protocol{fuchsia::inspect::InspectSink::Name_},
Protocol{fuchsia::sysmem::Allocator::Name_},
-
- // Replace "fuchsia.sysmem2.Allocator" with
- // fuchsia::sysmem2::Allocator::Name_
- // when available (fuchsia SDK >= 19).
- Protocol{"fuchsia.sysmem2.Allocator"},
+ Protocol{fuchsia::sysmem2::Allocator::Name_},
Protocol{fuchsia::tracing::provider::Registry::Name_},
Protocol{kVulkanLoaderServiceName}},
.source = ParentRef{},
diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc
index af529b5..45b2f3c 100644
--- a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc
+++ b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.cc
@@ -82,11 +82,7 @@
.capabilities = {Protocol{fuchsia::logger::LogSink::Name_},
Protocol{fuchsia::inspect::InspectSink::Name_},
Protocol{fuchsia::sysmem::Allocator::Name_},
-
- // Replace string with
- // fuchsia::sysmem2::Allocator::Name_
- // when available (fuchsia SDK >= 19).
- Protocol{"fuchsia.sysmem2.Allocator"},
+ Protocol{fuchsia::sysmem2::Allocator::Name_},
Protocol{fuchsia::tracing::provider::Registry::Name_},
Protocol{fuchsia::ui::input::ImeService::Name_},
Protocol{kPosixSocketProviderName},
diff --git a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h
index 363dba7..62b5417 100644
--- a/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h
+++ b/shell/platform/fuchsia/flutter/tests/integration/utils/portable_ui_test.h
@@ -5,7 +5,7 @@
#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_TESTS_INTEGRATION_UTILS_PORTABLE_UI_TEST_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_TESTS_INTEGRATION_UTILS_PORTABLE_UI_TEST_H_
-#include <fuchsia/sysmem/cpp/fidl.h>
+#include <fuchsia/sysmem2/cpp/fidl.h>
#include <fuchsia/ui/app/cpp/fidl.h>
#include <fuchsia/ui/composition/cpp/fidl.h>
#include <fuchsia/ui/display/singleton/cpp/fidl.h>
diff --git a/shell/platform/fuchsia/flutter/vulkan_surface.cc b/shell/platform/fuchsia/flutter/vulkan_surface.cc
index 8cda71c..6b4778f 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface.cc
+++ b/shell/platform/fuchsia/flutter/vulkan_surface.cc
@@ -44,7 +44,7 @@
const VkSysmemColorSpaceFUCHSIA kSrgbColorSpace = {
.sType = VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA,
.pNext = nullptr,
- .colorSpace = static_cast<uint32_t>(fuchsia::sysmem::ColorSpaceType::SRGB),
+ .colorSpace = static_cast<uint32_t>(fuchsia::images2::ColorSpace::SRGB),
};
} // namespace
@@ -147,7 +147,7 @@
VulkanSurface::VulkanSurface(
vulkan::VulkanProvider& vulkan_provider,
- fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
sk_sp<GrDirectContext> context,
const SkISize& size)
@@ -263,7 +263,7 @@
}
bool VulkanSurface::AllocateDeviceMemory(
- fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
sk_sp<GrDirectContext> context,
const SkISize& size) {
@@ -273,17 +273,21 @@
return false;
}
- fuchsia::sysmem::BufferCollectionTokenSyncPtr vulkan_token;
- zx_status_t status =
- sysmem_allocator->AllocateSharedCollection(vulkan_token.NewRequest());
+ fuchsia::sysmem2::BufferCollectionTokenSyncPtr vulkan_token;
+ zx_status_t status = sysmem_allocator->AllocateSharedCollection(
+ std::move(fuchsia::sysmem2::AllocatorAllocateSharedCollectionRequest{}
+ .set_token_request(vulkan_token.NewRequest())));
LOG_AND_RETURN(status != ZX_OK,
"VulkanSurface: Failed to allocate collection");
- fuchsia::sysmem::BufferCollectionTokenSyncPtr scenic_token;
- status = vulkan_token->Duplicate(std::numeric_limits<uint32_t>::max(),
- scenic_token.NewRequest());
+ fuchsia::sysmem2::BufferCollectionTokenSyncPtr scenic_token;
+ status = vulkan_token->Duplicate(
+ std::move(fuchsia::sysmem2::BufferCollectionTokenDuplicateRequest{}
+ .set_rights_attenuation_mask(ZX_RIGHT_SAME_RIGHTS)
+ .set_token_request(scenic_token.NewRequest())));
LOG_AND_RETURN(status != ZX_OK,
"VulkanSurface: Failed to duplicate collection token");
- status = vulkan_token->Sync();
+ fuchsia::sysmem2::Node_Sync_Result sync_result;
+ status = vulkan_token->Sync(&sync_result);
LOG_AND_RETURN(status != ZX_OK,
"VulkanSurface: Failed to sync collection token");
@@ -292,7 +296,8 @@
fuchsia::ui::composition::RegisterBufferCollectionArgs args;
args.set_export_token(std::move(export_token));
- args.set_buffer_collection_token(std::move(scenic_token));
+ args.set_buffer_collection_token(fuchsia::sysmem::BufferCollectionTokenHandle(
+ scenic_token.Unbind().TakeChannel()));
args.set_usage(
fuchsia::ui::composition::RegisterBufferCollectionUsage::DEFAULT);
flatland_allocator->RegisterBufferCollection(
diff --git a/shell/platform/fuchsia/flutter/vulkan_surface.h b/shell/platform/fuchsia/flutter/vulkan_surface.h
index 17ef7c5..3e051b1 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface.h
+++ b/shell/platform/fuchsia/flutter/vulkan_surface.h
@@ -5,6 +5,7 @@
#ifndef FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_VULKAN_SURFACE_H_
#define FLUTTER_SHELL_PLATFORM_FUCHSIA_FLUTTER_VULKAN_SURFACE_H_
+#include <fuchsia/sysmem2/cpp/fidl.h>
#include <lib/async/cpp/wait.h>
#include <lib/zx/event.h>
#include <lib/zx/vmo.h>
@@ -44,7 +45,7 @@
class VulkanSurface final : public SurfaceProducerSurface {
public:
VulkanSurface(vulkan::VulkanProvider& vulkan_provider,
- fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
sk_sp<GrDirectContext> context,
const SkISize& size);
@@ -135,7 +136,7 @@
const zx_packet_signal_t* signal);
bool AllocateDeviceMemory(
- fuchsia::sysmem::AllocatorSyncPtr& sysmem_allocator,
+ fuchsia::sysmem2::AllocatorSyncPtr& sysmem_allocator,
fuchsia::ui::composition::AllocatorPtr& flatland_allocator,
sk_sp<GrDirectContext> context,
const SkISize& size);
diff --git a/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc b/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc
index 94df4a0..8d49a0a 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc
+++ b/shell/platform/fuchsia/flutter/vulkan_surface_pool.cc
@@ -35,10 +35,12 @@
FML_CHECK(context_ != nullptr);
zx_status_t status = fdio_service_connect(
- "/svc/fuchsia.sysmem.Allocator",
+ "/svc/fuchsia.sysmem2.Allocator",
sysmem_allocator_.NewRequest().TakeChannel().release());
- sysmem_allocator_->SetDebugClientInfo(GetCurrentProcessName(),
- GetCurrentProcessId());
+ sysmem_allocator_->SetDebugClientInfo(
+ std::move(fuchsia::sysmem2::AllocatorSetDebugClientInfoRequest{}
+ .set_name(GetCurrentProcessName())
+ .set_id(GetCurrentProcessId())));
FML_DCHECK(status == ZX_OK);
status = fdio_service_connect(
diff --git a/shell/platform/fuchsia/flutter/vulkan_surface_pool.h b/shell/platform/fuchsia/flutter/vulkan_surface_pool.h
index b6ddf25..df4d0b9 100644
--- a/shell/platform/fuchsia/flutter/vulkan_surface_pool.h
+++ b/shell/platform/fuchsia/flutter/vulkan_surface_pool.h
@@ -42,7 +42,7 @@
private:
vulkan::VulkanProvider& vulkan_provider_;
sk_sp<GrDirectContext> context_;
- fuchsia::sysmem::AllocatorSyncPtr sysmem_allocator_;
+ fuchsia::sysmem2::AllocatorSyncPtr sysmem_allocator_;
fuchsia::ui::composition::AllocatorPtr flatland_allocator_;
std::vector<std::unique_ptr<VulkanSurface>> available_surfaces_;
std::unordered_map<uintptr_t, std::unique_ptr<VulkanSurface>>