diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 1 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.cpp | 15 |
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; |