diff --git a/src/freedreno/vulkan/tu_wsi.c b/src/freedreno/vulkan/tu_wsi.c index d8a0bc68b0c..42b25aacde4 100644 --- a/src/freedreno/vulkan/tu_wsi.c +++ b/src/freedreno/vulkan/tu_wsi.c @@ -27,6 +27,7 @@ #include "vk_util.h" #include "wsi_common.h" +#include "wsi_common_drm.h" #include "drm-uapi/drm_fourcc.h" static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL @@ -36,6 +37,14 @@ tu_wsi_proc_addr(VkPhysicalDevice physicalDevice, const char *pName) return vk_instance_get_proc_addr_unchecked(&pdevice->instance->vk, pName); } +static bool +tu_wsi_can_present_on_device(VkPhysicalDevice physicalDevice, int fd) +{ + TU_FROM_HANDLE(tu_physical_device, pdevice, physicalDevice); + + return wsi_common_drm_devices_equal(fd, pdevice->local_fd); +} + VkResult tu_wsi_init(struct tu_physical_device *physical_device) { @@ -52,6 +61,9 @@ tu_wsi_init(struct tu_physical_device *physical_device) return result; physical_device->wsi_device.supports_modifiers = true; + physical_device->wsi_device.can_present_on_device = + tu_wsi_can_present_on_device; + physical_device->vk.wsi_device = &physical_device->wsi_device; return VK_SUCCESS;