vkr: use virgl_resource_export_fd to get fd and type

The resource can be pipe_resource in our use cases.

Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
diff --git a/src/vkr_renderer.c b/src/vkr_renderer.c
index 1797c79..7dee52b 100644
--- a/src/vkr_renderer.c
+++ b/src/vkr_renderer.c
@@ -3305,8 +3305,11 @@
       return;
    }
 
+   int fd = -1;
+   enum virgl_resource_fd_type fd_type = virgl_resource_export_fd(att->resource, &fd);
    VkExternalMemoryHandleTypeFlagBits handle_type;
-   if (!vkr_get_fd_handle_type_from_virgl_fd_type(dev->physical_device, att->resource->fd_type, &handle_type)) {
+   if (!vkr_get_fd_handle_type_from_virgl_fd_type(dev->physical_device, fd_type, &handle_type)) {
+      close(fd);
       args->ret = VK_ERROR_INVALID_EXTERNAL_HANDLE;
       return;
    }
@@ -3317,8 +3320,9 @@
       .memoryTypeBits = 0,
    };
    vn_replace_vkGetMemoryResourcePropertiesMESA_args_handle(args);
-   args->ret = dev->get_memory_fd_properties(args->device, handle_type, att->resource->fd, &memory_fd_properties);
+   args->ret = dev->get_memory_fd_properties(args->device, handle_type, fd, &memory_fd_properties);
    args->pMemoryResourceProperties->memoryTypeBits = memory_fd_properties.memoryTypeBits;
+   close(fd);
 }
 
 static void