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;