gfxstream: Clean up VK_KHR_external_memory_fd support for Linux

BUG=333133323
TEST=launch_cvd --gpu_mode=gfxstream_guest_angle

Change-Id: I3e884c632e6752ed87b91c5b9f44daa3303ead89
diff --git a/guest/vulkan_enc/ResourceTracker.cpp b/guest/vulkan_enc/ResourceTracker.cpp
index ddd4815..bcc0b4e 100644
--- a/guest/vulkan_enc/ResourceTracker.cpp
+++ b/guest/vulkan_enc/ResourceTracker.cpp
@@ -5596,6 +5596,42 @@
 #endif
 }
 
+VkResult ResourceTracker::on_vkGetMemoryFdPropertiesKHR(
+    void* context, VkResult, VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd,
+    VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
+#if defined(__linux__) && !defined(VK_USE_PLATFORM_ANDROID_KHR)
+    if (!(handleType & VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT)) {
+        ALOGE("%s: VK_KHR_external_memory_fd behavior not defined for handleType: 0x%x\n", __func__,
+              handleType);
+        return VK_ERROR_INVALID_EXTERNAL_HANDLE;
+    }
+    // Sanity-check device
+    AutoLock<RecursiveLock> lock(mLock);
+    auto deviceIt = info_VkDevice.find(device);
+    if (deviceIt == info_VkDevice.end()) {
+        return VK_ERROR_OUT_OF_HOST_MEMORY;
+    }
+    // TODO: Verify FD valid ?
+    (void)fd;
+
+    if (mCaps.vulkanCapset.colorBufferMemoryIndex == 0xFFFFFFFF) {
+        mCaps.vulkanCapset.colorBufferMemoryIndex = getColorBufferMemoryIndex(context, device);
+    }
+
+    updateMemoryTypeBits(&pMemoryFdProperties->memoryTypeBits,
+                         mCaps.vulkanCapset.colorBufferMemoryIndex);
+
+    return VK_SUCCESS;
+#else
+    (void)context;
+    (void)device;
+    (void)handleType;
+    (void)fd;
+    (void)pMemoryFdProperties;
+    return VK_ERROR_INCOMPATIBLE_DRIVER;
+#endif
+}
+
 VkResult ResourceTracker::on_vkGetMemoryFdKHR(void* context, VkResult, VkDevice device,
                                               const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd) {
 #if defined(__linux__) && !defined(VK_USE_PLATFORM_ANDROID_KHR)