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;