gfxstream: host: add exportColorBuffer + exportBuffer functions
We want to share the color buffer or buffer with a Wayland,
BUG=349122558
TEST=see dmabufs being exported
Change-Id: I5d3a94aec2b7a58b8281ba081d8041e21d12e8bf
diff --git a/host/vulkan/BufferVk.cpp b/host/vulkan/BufferVk.cpp
index 46f4540..a8ec4f3 100644
--- a/host/vulkan/BufferVk.cpp
+++ b/host/vulkan/BufferVk.cpp
@@ -45,5 +45,21 @@
return updateBufferFromBytes(mHandle, offset, size, bytes);
}
+std::optional<ManagedDescriptorInfo> BufferVk::exportBlob() {
+ uint32_t streamHandleType = 0;
+ auto vkHandle = getBufferExtMemoryHandle(mHandle, &streamHandleType);
+ if (vkHandle != VK_EXT_MEMORY_HANDLE_INVALID) {
+ ManagedDescriptor descriptor(dupExternalMemory(vkHandle));
+ return ManagedDescriptorInfo{
+ .descriptor = std::move(descriptor),
+ .handleType = streamHandleType,
+ .caching = 0,
+ .vulkanInfoOpt = std::nullopt,
+ };
+ } else {
+ return std::nullopt;
+ }
+}
+
} // namespace vk
-} // namespace gfxstream
\ No newline at end of file
+} // namespace gfxstream