mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Merge pull request #10051 from liamwhite/surface-capabilities
vulkan: pick alpha composite flags based on available values
This commit is contained in:
		@@ -65,6 +65,18 @@ VkExtent2D ChooseSwapExtent(const VkSurfaceCapabilitiesKHR& capabilities, u32 wi
 | 
			
		||||
    return extent;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VkCompositeAlphaFlagBitsKHR ChooseAlphaFlags(const VkSurfaceCapabilitiesKHR& capabilities) {
 | 
			
		||||
    if (capabilities.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR) {
 | 
			
		||||
        return VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
 | 
			
		||||
    } else if (capabilities.supportedCompositeAlpha & VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR) {
 | 
			
		||||
        return VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR;
 | 
			
		||||
    } else {
 | 
			
		||||
        LOG_ERROR(Render_Vulkan, "Unknown composite alpha flags value {:#x}",
 | 
			
		||||
                  capabilities.supportedCompositeAlpha);
 | 
			
		||||
        return VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // Anonymous namespace
 | 
			
		||||
 | 
			
		||||
Swapchain::Swapchain(VkSurfaceKHR surface_, const Device& device_, Scheduler& scheduler_,
 | 
			
		||||
@@ -155,6 +167,7 @@ void Swapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, bo
 | 
			
		||||
    const auto formats{physical_device.GetSurfaceFormatsKHR(surface)};
 | 
			
		||||
    const auto present_modes{physical_device.GetSurfacePresentModesKHR(surface)};
 | 
			
		||||
 | 
			
		||||
    const VkCompositeAlphaFlagBitsKHR alpha_flags{ChooseAlphaFlags(capabilities)};
 | 
			
		||||
    const VkSurfaceFormatKHR surface_format{ChooseSwapSurfaceFormat(formats)};
 | 
			
		||||
    present_mode = ChooseSwapPresentMode(present_modes);
 | 
			
		||||
 | 
			
		||||
@@ -185,7 +198,7 @@ void Swapchain::CreateSwapchain(const VkSurfaceCapabilitiesKHR& capabilities, bo
 | 
			
		||||
        .queueFamilyIndexCount = 0,
 | 
			
		||||
        .pQueueFamilyIndices = nullptr,
 | 
			
		||||
        .preTransform = capabilities.currentTransform,
 | 
			
		||||
        .compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
 | 
			
		||||
        .compositeAlpha = alpha_flags,
 | 
			
		||||
        .presentMode = present_mode,
 | 
			
		||||
        .clipped = VK_FALSE,
 | 
			
		||||
        .oldSwapchain = nullptr,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user