diff --git a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp index 06fd4248f14..af09b5ff745 100644 --- a/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp +++ b/src/gfxstream/guest/vulkan_enc/ResourceTracker.cpp @@ -13,6 +13,7 @@ #include "gfxstream_vk_private.h" #include "goldfish_address_space.h" #include "goldfish_vk_private_defs.h" +#include "util/anon_file.h" #include "util/macros.h" #include "virtgpu_gfxstream_protocol.h" #include "vulkan/vulkan_core.h" @@ -37,22 +38,6 @@ #include #endif -#if defined(__ANDROID__) || defined(__linux__) || defined(__APPLE__) - -#include -#include - -static inline int inline_memfd_create(const char* name, unsigned int flags) { -#if defined(__ANDROID__) - return syscall(SYS_memfd_create, name, flags); -#else - return -1; -#endif -} - -#define memfd_create inline_memfd_create -#endif - #ifndef VK_USE_PLATFORM_FUCHSIA void zx_handle_close(zx_handle_t) {} void zx_event_create(int, zx_handle_t*) {} @@ -5760,11 +5745,12 @@ VkResult ResourceTracker::on_vkGetSemaphoreFdKHR(void* context, VkResult, VkDevi } else { // opaque fd int hostFd = 0; + int32_t size = 0; VkResult result = enc->vkGetSemaphoreFdKHR(device, pGetFdInfo, &hostFd, true /* do lock */); if (result != VK_SUCCESS) { return result; } - *pFd = memfd_create("vk_opaque_fd", 0); + *pFd = os_create_anonymous_file(size, "vk_opaque_fd"); write(*pFd, &hostFd, sizeof(hostFd)); return VK_SUCCESS; } diff --git a/src/util/anon_file.h b/src/util/anon_file.h index bdd74205d90..db9598ac9b4 100644 --- a/src/util/anon_file.h +++ b/src/util/anon_file.h @@ -28,7 +28,15 @@ #include +#ifdef __cplusplus +extern "C"{ +#endif + /* On win32, off_t is only 32 bit, so always using 64 bit size */ int os_create_anonymous_file(int64_t size, const char *debug_name); +#ifdef __cplusplus +} +#endif + #endif