mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Vulkan dynamic state 3 blending should work correctly in AMD proprietary drivers now
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
 | 
			
		||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project & 2024 suyu Emulator Project
 | 
			
		||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
			
		||||
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
@@ -580,6 +580,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
 | 
			
		||||
                                   VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    // Mesa RadV drivers still have broken extendedDynamicState3ColorBlendEquation support.
 | 
			
		||||
    if (extensions.extended_dynamic_state3 && is_radv) {
 | 
			
		||||
        LOG_WARNING(Render_Vulkan, "RADV has broken extendedDynamicState3ColorBlendEquation");
 | 
			
		||||
        features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false;
 | 
			
		||||
@@ -594,13 +595,16 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
 | 
			
		||||
            dynamic_state3_enables = false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (extensions.extended_dynamic_state3 && is_amd_driver) {
 | 
			
		||||
        LOG_WARNING(Render_Vulkan,
 | 
			
		||||
                    "AMD drivers have broken extendedDynamicState3ColorBlendEquation");
 | 
			
		||||
        features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false;
 | 
			
		||||
        features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false;
 | 
			
		||||
        dynamic_state3_blending = false;
 | 
			
		||||
    }
 | 
			
		||||
    // In the past, AMD proprietary drivers had broken extendedDynamicState3ColorBlendEquation
 | 
			
		||||
    // support. It should work now, even with MSAA surfaces. Uncomment the following code any new
 | 
			
		||||
    // drivers by AMD bring back the issue as a regression.
 | 
			
		||||
    // if (extensions.extended_dynamic_state3 && is_amd_driver) {
 | 
			
		||||
    //    LOG_WARNING(Render_Vulkan,
 | 
			
		||||
    //                "AMD drivers have broken extendedDynamicState3ColorBlendEquation");
 | 
			
		||||
    //    features.extended_dynamic_state3.extendedDynamicState3ColorBlendEnable = false;
 | 
			
		||||
    //    features.extended_dynamic_state3.extendedDynamicState3ColorBlendEquation = false;
 | 
			
		||||
    //    dynamic_state3_blending = false;
 | 
			
		||||
    //}
 | 
			
		||||
    if (extensions.vertex_input_dynamic_state && is_radv) {
 | 
			
		||||
        // TODO(ameerj): Blacklist only offending driver versions
 | 
			
		||||
        // TODO(ameerj): Confirm if RDNA1 is affected
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user