ResourceTracker: Use new CreateBuffer2 control device API.
We are migrating goldfish ICD from using CreateBuffer()
to CreateBuffer2() which supports setting different
memory properties.
Bug: fuchsia:59805
TEST=gfx_pixeltests, gfx_unittests
Change-Id: I168ed328565743ec6da9eef9aca97ca02dbec5c7
diff --git a/system/vulkan_enc/ResourceTracker.cpp b/system/vulkan_enc/ResourceTracker.cpp
index 6ca24f4..b70a5aa 100644
--- a/system/vulkan_enc/ResourceTracker.cpp
+++ b/system/vulkan_enc/ResourceTracker.cpp
@@ -2689,12 +2689,21 @@
}
if (pBufferConstraintsInfo) {
- auto result = mControlDevice->CreateBuffer(
- std::move(vmo_copy),
- pBufferConstraintsInfo->pBufferCreateInfo->size);
- if (!result.ok() || result.Unwrap()->res != ZX_OK) {
- ALOGE("CreateBuffer failed: %d:%d", result.status(),
- GET_STATUS_SAFE(result, res));
+ auto createParams =
+ llcpp::fuchsia::hardware::goldfish::CreateBuffer2Params::Builder(
+ std::make_unique<
+ llcpp::fuchsia::hardware::goldfish::CreateBuffer2Params::Frame>())
+ .set_size(std::make_unique<uint64_t>(
+ pBufferConstraintsInfo->pBufferCreateInfo->size))
+ .set_memory_property(std::make_unique<uint32_t>(
+ llcpp::fuchsia::hardware::goldfish::MEMORY_PROPERTY_DEVICE_LOCAL))
+ .build();
+
+ auto result =
+ mControlDevice->CreateBuffer2(std::move(vmo_copy), std::move(createParams));
+ if (!result.ok() || result.Unwrap()->result.is_err()) {
+ ALOGE("CreateBuffer2 failed: %d:%d", result.status(),
+ GET_STATUS_SAFE(result, result.err()));
abort();
}
}
@@ -4115,13 +4124,22 @@
}
if (vmo && vmo->is_valid()) {
- auto result = mControlDevice->CreateBuffer(std::move(*vmo),
- pCreateInfo->size);
+ auto createParams =
+ llcpp::fuchsia::hardware::goldfish::CreateBuffer2Params::Builder(
+ std::make_unique<
+ llcpp::fuchsia::hardware::goldfish::CreateBuffer2Params::Frame>())
+ .set_size(std::make_unique<uint64_t>(pCreateInfo->size))
+ .set_memory_property(std::make_unique<uint32_t>(
+ llcpp::fuchsia::hardware::goldfish::MEMORY_PROPERTY_DEVICE_LOCAL))
+ .build();
+
+ auto result =
+ mControlDevice->CreateBuffer2(std::move(*vmo), std::move(createParams));
if (!result.ok() ||
- (result.Unwrap()->res != ZX_OK &&
- result.Unwrap()->res != ZX_ERR_ALREADY_EXISTS)) {
- ALOGE("CreateBuffer failed: %d:%d", result.status(),
- GET_STATUS_SAFE(result, res));
+ (result.Unwrap()->result.is_err() != ZX_OK &&
+ result.Unwrap()->result.err() != ZX_ERR_ALREADY_EXISTS)) {
+ ALOGE("CreateBuffer2 failed: %d:%d", result.status(),
+ GET_STATUS_SAFE(result, result.err()));
}
isSysmemBackedMemory = true;
}