Implement vkGetPhysicalDeviceXlibPresentationSupportKHR

Add support for function as dictated by the Vulkan spec
for Xlib WSI (32.4.5)

Bug: b/124265819
Change-Id: I61e9ca4b34c7b57102d32ff24cecde2b9e513a5f
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32228
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Hernan Liatis <hliatis@google.com>
diff --git a/src/Vulkan/VkGetProcAddress.cpp b/src/Vulkan/VkGetProcAddress.cpp
index 9ef61b5..d7878ec 100644
--- a/src/Vulkan/VkGetProcAddress.cpp
+++ b/src/Vulkan/VkGetProcAddress.cpp
@@ -91,6 +91,7 @@
 #ifdef VK_USE_PLATFORM_XLIB_KHR
 	// VK_KHR_xlib_surface
 	MAKE_VULKAN_INSTANCE_ENTRY(vkCreateXlibSurfaceKHR),
+	MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceXlibPresentationSupportKHR),
 #endif
 };
 #undef MAKE_VULKAN_INSTANCE_ENTRY
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index dbba77b..5b0690f 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -322,7 +322,7 @@
 		}
 	}
 
-	// "Images created with a format from one of those listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT image views
+	// "Images created with a format from one of those listed in Formats requiring sampler Y'CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT image views
 	//  have further restrictions on their limits and capabilities compared to images created with other formats."
 	if(vk::Format(format).isYcbcrFormat())
 	{
@@ -432,7 +432,7 @@
 				// YCbCr conversion is supported.
 				// samplerYcbcrConversionFeatures->samplerYcbcrConversion can be VK_TRUE or VK_FALSE.
 				// No action needs to be taken on our end in either case; it's the apps responsibility that
-				// "To create a sampler Y’CbCr conversion, the samplerYcbcrConversion feature must be enabled."
+				// "To create a sampler Y'CbCr conversion, the samplerYcbcrConversion feature must be enabled."
 				(void)samplerYcbcrConversionFeatures->samplerYcbcrConversion;
 			}
 			break;
@@ -2584,6 +2584,14 @@
 
 	return vk::XlibSurfaceKHR::Create(pAllocator, pCreateInfo, pSurface);
 }
+
+VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID)
+{
+	TRACE("(VkPhysicalDevice physicalDevice = %p, uint32_t queueFamilyIndex = %d, Display* dpy = %p, VisualID visualID = %lu)",
+		  physicalDevice, int(queueFamilyIndex), dpy, visualID);
+
+	return VK_TRUE;
+}
 #endif
 
 #ifndef __ANDROID__
@@ -2604,7 +2612,6 @@
 	return VK_SUCCESS;
 }
 
-
 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities)
 {
 	TRACE("(VkPhysicalDevice physicalDevice = %p, VkSurfaceKHR surface = %p, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities = %p)",