Implement VK_KHR_surface/swapchain_maintenance1

Straightforward promotion from EXT

Change-Id: I405371818b8eb270d367021ad23dba4c071a4c43
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/76229
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/Vulkan/VkGetProcAddress.cpp b/src/Vulkan/VkGetProcAddress.cpp
index 393c21e..0d6615c 100644
--- a/src/Vulkan/VkGetProcAddress.cpp
+++ b/src/Vulkan/VkGetProcAddress.cpp
@@ -611,6 +611,12 @@
 	        MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceGroupPresentCapabilitiesKHR),
 	        MAKE_VULKAN_DEVICE_ENTRY(vkGetDeviceGroupSurfacePresentModesKHR),
 	    } },
+	// VK_KHR_swapchain_maintenance1
+	{
+	    VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME,
+	    {
+	        MAKE_VULKAN_DEVICE_ENTRY(vkReleaseSwapchainImagesKHR),
+	    } },
 	// VK_EXT_swapchain_maintenance1
 	{
 	    VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME,
diff --git a/src/Vulkan/android_host_vk_swiftshader.lds b/src/Vulkan/android_host_vk_swiftshader.lds
index 7318bbb..fdb7ce5 100644
--- a/src/Vulkan/android_host_vk_swiftshader.lds
+++ b/src/Vulkan/android_host_vk_swiftshader.lds
@@ -152,6 +152,9 @@
 	vkGetPhysicalDeviceSurfaceCapabilities2KHR;
 	vkGetPhysicalDeviceSurfaceFormats2KHR;
 
+	# VK_KHR_swapchain_maintenance1
+	vkReleaseSwapchainImagesKHR;
+
 	# VK_EXT_swapchain_maintenance1
 	vkReleaseSwapchainImagesEXT;
 
diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp
index 56c6920..92619a9 100644
--- a/src/Vulkan/libVulkan.cpp
+++ b/src/Vulkan/libVulkan.cpp
@@ -324,6 +324,7 @@
 	{ { VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME, VK_EXT_HEADLESS_SURFACE_SPEC_VERSION } },
 #ifndef __ANDROID__
 	{ { VK_KHR_SURFACE_EXTENSION_NAME, VK_KHR_SURFACE_SPEC_VERSION } },
+	{ { VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME, VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION } },
 	{ { VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME, VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION } },
 	{ { VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME, VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION } },
 	// Used by ANGLE to properly advertise the supported list of EGL configs.
@@ -460,6 +461,7 @@
 	{ { VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME, VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION } },
 #ifndef __ANDROID__
 	{ { VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME, VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION } },
+	{ { VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME, VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION } },
 	{ { VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME, VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION } },
 #endif
 	{ { VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION } },
@@ -4927,6 +4929,14 @@
 	return vk::Cast(pAcquireInfo->swapchain)->getNextImage(pAcquireInfo->timeout, vk::DynamicCast<vk::BinarySemaphore>(pAcquireInfo->semaphore), vk::Cast(pAcquireInfo->fence), pImageIndex);
 }
 
+VKAPI_ATTR VkResult VKAPI_CALL vkReleaseSwapchainImagesKHR(VkDevice device, const VkReleaseSwapchainImagesInfoKHR *pReleaseInfo)
+{
+	TRACE("(VkDevice device = %p, const VkReleaseSwapchainImagesInfoKHR *pReleaseInfo = %p",
+	      device, pReleaseInfo);
+
+	return vk::Cast(pReleaseInfo->swapchain)->releaseImages(pReleaseInfo->imageIndexCount, pReleaseInfo->pImageIndices);
+}
+
 VKAPI_ATTR VkResult VKAPI_CALL vkReleaseSwapchainImagesEXT(VkDevice device, const VkReleaseSwapchainImagesInfoEXT *pReleaseInfo)
 {
 	TRACE("(VkDevice device = %p, const VkReleaseSwapchainImagesInfoEXT *pReleaseInfo = %p",
diff --git a/src/Vulkan/vk_swiftshader.def b/src/Vulkan/vk_swiftshader.def
index 3e3aca4f..9eb9e9f 100644
--- a/src/Vulkan/vk_swiftshader.def
+++ b/src/Vulkan/vk_swiftshader.def
@@ -153,6 +153,9 @@
 	vkGetPhysicalDeviceSurfaceCapabilities2KHR

 	vkGetPhysicalDeviceSurfaceFormats2KHR

 

+	; VK_KHR_swapchain_maintenance1

+	vkReleaseSwapchainImagesKHR

+

 	; VK_EXT_swapchain_maintenance1

 	vkReleaseSwapchainImagesEXT

 

diff --git a/src/Vulkan/vk_swiftshader.lds b/src/Vulkan/vk_swiftshader.lds
index 38ed734..6d77cb8 100644
--- a/src/Vulkan/vk_swiftshader.lds
+++ b/src/Vulkan/vk_swiftshader.lds
@@ -152,6 +152,9 @@
 	vkGetPhysicalDeviceSurfaceCapabilities2KHR;
 	vkGetPhysicalDeviceSurfaceFormats2KHR;
 
+	# VK_KHR_swapchain_maintenance1
+	vkReleaseSwapchainImagesKHR;
+
 	# VK_EXT_swapchain_maintenance1
 	vkReleaseSwapchainImagesEXT;