summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/vk_pipeline_cache.cpp1
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp15
2 files changed, 11 insertions, 5 deletions
diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
index 5734f51e5..18e040a1b 100644
--- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
+++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp
@@ -358,6 +358,7 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, const Device& device
358 .support_snorm_render_buffer = true, 358 .support_snorm_render_buffer = true,
359 .support_viewport_index_layer = device.IsExtShaderViewportIndexLayerSupported(), 359 .support_viewport_index_layer = device.IsExtShaderViewportIndexLayerSupported(),
360 .support_geometry_shader_passthrough = device.IsNvGeometryShaderPassthroughSupported(), 360 .support_geometry_shader_passthrough = device.IsNvGeometryShaderPassthroughSupported(),
361 .support_conditional_barrier = device.SupportsConditionalBarriers(),
361 }; 362 };
362 363
363 if (device.GetMaxVertexInputAttributes() < Maxwell::NumVertexAttributes) { 364 if (device.GetMaxVertexInputAttributes() < Maxwell::NumVertexAttributes) {
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index a46f9beed..3d2e9a16a 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -344,6 +344,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
344 const bool is_qualcomm = driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY; 344 const bool is_qualcomm = driver_id == VK_DRIVER_ID_QUALCOMM_PROPRIETARY;
345 const bool is_turnip = driver_id == VK_DRIVER_ID_MESA_TURNIP; 345 const bool is_turnip = driver_id == VK_DRIVER_ID_MESA_TURNIP;
346 const bool is_s8gen2 = device_id == 0x43050a01; 346 const bool is_s8gen2 = device_id == 0x43050a01;
347 const bool is_arm = driver_id == VK_DRIVER_ID_ARM_PROPRIETARY;
347 348
348 if ((is_mvk || is_qualcomm || is_turnip) && !is_suitable) { 349 if ((is_mvk || is_qualcomm || is_turnip) && !is_suitable) {
349 LOG_WARNING(Render_Vulkan, "Unsuitable driver, continuing anyway"); 350 LOG_WARNING(Render_Vulkan, "Unsuitable driver, continuing anyway");
@@ -391,7 +392,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
391 CollectPhysicalMemoryInfo(); 392 CollectPhysicalMemoryInfo();
392 CollectToolingInfo(); 393 CollectToolingInfo();
393 394
394#ifdef ANDROID
395 if (is_qualcomm || is_turnip) { 395 if (is_qualcomm || is_turnip) {
396 LOG_WARNING(Render_Vulkan, 396 LOG_WARNING(Render_Vulkan,
397 "Qualcomm and Turnip drivers have broken VK_EXT_custom_border_color"); 397 "Qualcomm and Turnip drivers have broken VK_EXT_custom_border_color");
@@ -411,7 +411,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
411 extensions.push_descriptor = false; 411 extensions.push_descriptor = false;
412 loaded_extensions.erase(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME); 412 loaded_extensions.erase(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME);
413 413
414#ifdef ARCHITECTURE_arm64 414#if defined(ANDROID) && defined(ARCHITECTURE_arm64)
415 // Patch the driver to enable BCn textures. 415 // Patch the driver to enable BCn textures.
416 const auto major = (properties.properties.driverVersion >> 24) << 2; 416 const auto major = (properties.properties.driverVersion >> 24) << 2;
417 const auto minor = (properties.properties.driverVersion >> 12) & 0xFFFU; 417 const auto minor = (properties.properties.driverVersion >> 12) & 0xFFFU;
@@ -431,18 +431,23 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
431 } else { 431 } else {
432 LOG_WARNING(Render_Vulkan, "Adreno driver can't be patched to enable BCn textures"); 432 LOG_WARNING(Render_Vulkan, "Adreno driver can't be patched to enable BCn textures");
433 } 433 }
434#endif // ARCHITECTURE_arm64 434#endif
435 } 435 }
436 436
437 const bool is_arm = driver_id == VK_DRIVER_ID_ARM_PROPRIETARY;
438 if (is_arm) { 437 if (is_arm) {
439 must_emulate_scaled_formats = true; 438 must_emulate_scaled_formats = true;
440 439
441 LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state"); 440 LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state");
442 extensions.extended_dynamic_state = false; 441 extensions.extended_dynamic_state = false;
443 loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); 442 loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
443
444 LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state2");
445 features.extended_dynamic_state2.extendedDynamicState2 = false;
446 features.extended_dynamic_state2.extendedDynamicState2LogicOp = false;
447 features.extended_dynamic_state2.extendedDynamicState2PatchControlPoints = false;
448 extensions.extended_dynamic_state2 = false;
449 loaded_extensions.erase(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
444 } 450 }
445#endif // ANDROID
446 451
447 if (is_nvidia) { 452 if (is_nvidia) {
448 const u32 nv_major_version = (properties.properties.driverVersion >> 22) & 0x3ff; 453 const u32 nv_major_version = (properties.properties.driverVersion >> 22) & 0x3ff;