From 1d667d6a7b5152e97437bedb129399e8df619efe Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Fri, 5 Apr 2019 08:25:18 -0700 Subject: [PATCH] Disable surface and swapchain support for Android On Android we will expose ANDROID_native_buffer instead, and leave the surface and swapchain support to the android loader. Bug: b/122837488 Change-Id: I03f0fd617042f49c19227701bbdcd2ccda883c94 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/28408 Tested-by: Chris Forbes Presubmit-Ready: Chris Forbes Reviewed-by: Nicolas Capens --- src/Vulkan/VkGetProcAddress.cpp | 13 ++++++++++--- src/Vulkan/VkQueue.cpp | 4 +++- src/Vulkan/VkQueue.hpp | 2 ++ src/Vulkan/libVulkan.cpp | 22 ++++++++++++++-------- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/Vulkan/VkGetProcAddress.cpp b/src/Vulkan/VkGetProcAddress.cpp index 40b8f7e89..8960d7283 100644 --- a/src/Vulkan/VkGetProcAddress.cpp +++ b/src/Vulkan/VkGetProcAddress.cpp @@ -74,14 +74,18 @@ static const std::unordered_map instanceFunctio MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceQueueFamilyProperties2KHR), MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceMemoryProperties2KHR), MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSparseImageFormatProperties2KHR), +#ifndef __ANDROID__ + // VK_KHR_surface MAKE_VULKAN_INSTANCE_ENTRY(vkDestroySurfaceKHR), -#ifdef VK_USE_PLATFORM_XLIB_KHR - MAKE_VULKAN_INSTANCE_ENTRY(vkCreateXlibSurfaceKHR), -#endif MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfaceSupportKHR), MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfaceCapabilitiesKHR), MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfaceFormatsKHR), MAKE_VULKAN_INSTANCE_ENTRY(vkGetPhysicalDeviceSurfacePresentModesKHR), +#endif +#ifdef VK_USE_PLATFORM_XLIB_KHR + // VK_KHR_xlib_surface + MAKE_VULKAN_INSTANCE_ENTRY(vkCreateXlibSurfaceKHR), +#endif }; #undef MAKE_VULKAN_INSTANCE_ENTRY @@ -248,11 +252,14 @@ static const std::unordered_map deviceFunctionP MAKE_VULKAN_DEVICE_ENTRY(vkGetImageSparseMemoryRequirements2KHR), // VK_KHR_maintenance3 MAKE_VULKAN_DEVICE_ENTRY(vkGetDescriptorSetLayoutSupportKHR), +#ifndef __ANDROID__ + // VK_KHR_swapchain MAKE_VULKAN_DEVICE_ENTRY(vkCreateSwapchainKHR), MAKE_VULKAN_DEVICE_ENTRY(vkDestroySwapchainKHR), MAKE_VULKAN_DEVICE_ENTRY(vkGetSwapchainImagesKHR), MAKE_VULKAN_DEVICE_ENTRY(vkAcquireNextImageKHR), MAKE_VULKAN_DEVICE_ENTRY(vkQueuePresentKHR), +#endif }; #undef MAKE_VULKAN_DEVICE_ENTRY diff --git a/src/Vulkan/VkQueue.cpp b/src/Vulkan/VkQueue.cpp index fcec019b1..f6e24aae5 100644 --- a/src/Vulkan/VkQueue.cpp +++ b/src/Vulkan/VkQueue.cpp @@ -74,6 +74,7 @@ void Queue::waitIdle() // FIXME (b/117835459): implement once we have working fences } +#ifndef __ANDROID__ void Queue::present(const VkPresentInfoKHR* presentInfo) { for(uint32_t i = 0; i < presentInfo->waitSemaphoreCount; i++) @@ -86,5 +87,6 @@ void Queue::present(const VkPresentInfoKHR* presentInfo) vk::Cast(presentInfo->pSwapchains[i])->present(presentInfo->pImageIndices[i]); } } +#endif -} // namespace vk \ No newline at end of file +} // namespace vk diff --git a/src/Vulkan/VkQueue.hpp b/src/Vulkan/VkQueue.hpp index 5716fa8d9..95ff39cba 100644 --- a/src/Vulkan/VkQueue.hpp +++ b/src/Vulkan/VkQueue.hpp @@ -43,7 +43,9 @@ public: void destroy(); void submit(uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); void waitIdle(); +#ifndef __ANDROID__ void present(const VkPresentInfoKHR* presentInfo); +#endif private: sw::Context* context = nullptr; diff --git a/src/Vulkan/libVulkan.cpp b/src/Vulkan/libVulkan.cpp index 685e95789..39a9c68b5 100644 --- a/src/Vulkan/libVulkan.cpp +++ b/src/Vulkan/libVulkan.cpp @@ -92,7 +92,9 @@ static const VkExtensionProperties instanceExtensionProperties[] = { VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME, VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION }, { VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME, VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION }, { VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION }, +#ifndef __ANDROID__ { VK_KHR_SURFACE_EXTENSION_NAME, VK_KHR_SURFACE_SPEC_VERSION }, +#endif #ifdef VK_USE_PLATFORM_XLIB_KHR { VK_KHR_XLIB_SURFACE_EXTENSION_NAME, VK_KHR_XLIB_SURFACE_SPEC_VERSION }, #endif @@ -118,7 +120,9 @@ static const VkExtensionProperties deviceExtensionProperties[] = { VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME, VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION }, { VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME, VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION }, { VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME, VK_KHR_VARIABLE_POINTERS_SPEC_VERSION }, +#ifndef __ANDROID__ { VK_KHR_SWAPCHAIN_EXTENSION_NAME, VK_KHR_SWAPCHAIN_SPEC_VERSION }, +#endif }; VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) @@ -2233,14 +2237,6 @@ VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(VkDevice device, cons vk::Cast(device)->getDescriptorSetLayoutSupport(pCreateInfo, pSupport); } -VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) -{ - TRACE("(VkInstance instance = 0x%X, VkSurfaceKHR surface = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X)", - instance, surface, pAllocator); - - vk::destroy(surface, pAllocator); -} - #ifdef VK_USE_PLATFORM_XLIB_KHR VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface) { @@ -2251,6 +2247,15 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(VkInstance instance, const } #endif +#ifndef __ANDROID__ +VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator) +{ + TRACE("(VkInstance instance = 0x%X, VkSurfaceKHR surface = 0x%X, const VkAllocationCallbacks* pAllocator = 0x%X)", + instance, surface, pAllocator); + + vk::destroy(surface, pAllocator); +} + VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported) { TRACE("(VkPhysicalDevice physicalDevice = 0x%X, uint32_t queueFamilyIndex = 0x%X, VkSurface surface = 0x%X, VKBool32* pSupported = 0x%X)", @@ -2372,5 +2377,6 @@ VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(VkQueue queue, const VkPresentI return VK_SUCCESS; } +#endif // ! __ANDROID__ } -- 2.11.0