diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index 9cdbe5611b..6a3c12a6a1 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -324,9 +324,11 @@ PipelineCache::PipelineCache(Tegra::MaxwellDeviceMemoryManager& device_memory_, .support_descriptor_aliasing = device.IsDescriptorAliasingSupported(), .support_int8 = device.IsInt8Supported(), .support_int16 = device.IsShaderInt16Supported(), - .support_int64 = device.IsShaderInt64Supported(), + .support_int64 = device.IsShaderInt64Supported() && + driver_id != VK_DRIVER_ID_QUALCOMM_PROPRIETARY, .support_vertex_instance_id = false, - .support_float_controls = device.IsKhrShaderFloatControlsSupported(), + .support_float_controls = device.IsKhrShaderFloatControlsSupported() && + driver_id != VK_DRIVER_ID_QUALCOMM_PROPRIETARY, .support_separate_denorm_behavior = float_control.denormBehaviorIndependence == VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, .support_separate_rounding_mode = diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp index 0e0bec2ce3..a471ab3ba3 100644 --- a/src/video_core/vulkan_common/vulkan_device.cpp +++ b/src/video_core/vulkan_common/vulkan_device.cpp @@ -506,6 +506,20 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR "Qualcomm drivers have a slow VK_KHR_push_descriptor implementation"); //RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); + if (extensions.shader_float_controls) { + LOG_WARNING(Render_Vulkan, + "Qualcomm drivers have broken VK_KHR_shader_float_controls; disabling it"); + RemoveExtension(extensions.shader_float_controls, + VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME); + } + + if (extensions.shader_atomic_int64) { + LOG_WARNING(Render_Vulkan, + "Qualcomm drivers have broken VK_KHR_shader_atomic_int64; disabling it"); + RemoveExtensionFeature(extensions.shader_atomic_int64, features.shader_atomic_int64, + VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME); + } + #if defined(ANDROID) && defined(ARCHITECTURE_arm64) // Patch the driver to enable BCn textures. const auto major = (properties.properties.driverVersion >> 24) << 2;