Browse Source

More android fixes

Panagiotis Christopoulos Charitos 4 years ago
parent
commit
d5cbcaaeb3
1 changed files with 24 additions and 1 deletions
  1. 24 1
      AnKi/Gr/Vulkan/SwapchainFactory.cpp

+ 24 - 1
AnKi/Gr/Vulkan/SwapchainFactory.cpp

@@ -135,6 +135,29 @@ Error MicroSwapchain::initInternal()
 
 	// Create swapchain
 	{
+		VkCompositeAlphaFlagBitsKHR compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
+		if(surfaceProperties.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR)
+		{
+			compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
+		}
+		else if(surfaceProperties.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR)
+		{
+			compositeAlpha = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR;
+		}
+		else if(surfaceProperties.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR)
+		{
+			compositeAlpha = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR;
+		}
+		else if(surfaceProperties.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR)
+		{
+			compositeAlpha = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR;
+		}
+		else
+		{
+			ANKI_VK_LOGE("Failed to set compositeAlpha");
+			return Error::FUNCTION_FAILED;
+		}
+
 		VkSwapchainCreateInfoKHR ci = {};
 		ci.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR;
 		ci.surface = m_factory->m_gr->getSurface();
@@ -148,7 +171,7 @@ Error MicroSwapchain::initInternal()
 		ci.pQueueFamilyIndices = &m_factory->m_gr->getQueueFamilies()[0];
 		ci.imageSharingMode = (ci.queueFamilyIndexCount > 1) ? VK_SHARING_MODE_CONCURRENT : VK_SHARING_MODE_EXCLUSIVE;
 		ci.preTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
-		ci.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
+		ci.compositeAlpha = compositeAlpha;
 		ci.presentMode = presentMode;
 		ci.clipped = false;
 		ci.oldSwapchain = VK_NULL_HANDLE;