Browse Source
[vk] Disable float16 math on non-MESA AMD drivers as 2026+ versions are broken (#3661)
thanks MaranBR
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3661
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Co-authored-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
Co-committed-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
disable-16kb-fastmem
PavelBARABANOV
3 days ago
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
1 changed files with
8 additions and
0 deletions
-
src/video_core/vulkan_common/vulkan_device.cpp
|
|
@ -586,12 +586,20 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR |
|
|
if (is_amd_driver) { |
|
|
if (is_amd_driver) { |
|
|
// AMD drivers need a higher amount of Sets per Pool in certain circumstances like in XC2.
|
|
|
// AMD drivers need a higher amount of Sets per Pool in certain circumstances like in XC2.
|
|
|
sets_per_pool = 96; |
|
|
sets_per_pool = 96; |
|
|
|
|
|
|
|
|
// Disable VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT on AMD GCN4 and lower as it is broken.
|
|
|
// Disable VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT on AMD GCN4 and lower as it is broken.
|
|
|
if (!features.shader_float16_int8.shaderFloat16) { |
|
|
if (!features.shader_float16_int8.shaderFloat16) { |
|
|
LOG_WARNING(Render_Vulkan, |
|
|
LOG_WARNING(Render_Vulkan, |
|
|
"AMD GCN4 and earlier have broken VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"); |
|
|
"AMD GCN4 and earlier have broken VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"); |
|
|
has_broken_cube_compatibility = true; |
|
|
has_broken_cube_compatibility = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// AMD drivers (2026+) have broken float16 math on DKCR
|
|
|
|
|
|
if (features.shader_float16_int8.shaderFloat16) { |
|
|
|
|
|
LOG_WARNING(Render_Vulkan, |
|
|
|
|
|
"AMD drivers (2026+) have broken float16 math"); |
|
|
|
|
|
features.shader_float16_int8.shaderFloat16 = false; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (is_qualcomm) { |
|
|
if (is_qualcomm) { |
|
|
|