summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp7
-rw-r--r--src/video_core/vulkan_common/vulkan_device.cpp37
2 files changed, 25 insertions, 19 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index e0ab1eaac..07222e603 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -892,10 +892,6 @@ void RasterizerVulkan::UpdateDynamicStates() {
892 UpdateFrontFace(regs); 892 UpdateFrontFace(regs);
893 UpdateStencilOp(regs); 893 UpdateStencilOp(regs);
894 894
895 if (device.IsExtVertexInputDynamicStateSupported()) {
896 UpdateVertexInput(regs);
897 }
898
899 if (state_tracker.TouchStateEnable()) { 895 if (state_tracker.TouchStateEnable()) {
900 UpdateDepthBoundsTestEnable(regs); 896 UpdateDepthBoundsTestEnable(regs);
901 UpdateDepthTestEnable(regs); 897 UpdateDepthTestEnable(regs);
@@ -918,6 +914,9 @@ void RasterizerVulkan::UpdateDynamicStates() {
918 UpdateBlending(regs); 914 UpdateBlending(regs);
919 } 915 }
920 } 916 }
917 if (device.IsExtVertexInputDynamicStateSupported()) {
918 UpdateVertexInput(regs);
919 }
921} 920}
922 921
923void RasterizerVulkan::HandleTransformFeedback() { 922void RasterizerVulkan::HandleTransformFeedback() {
diff --git a/src/video_core/vulkan_common/vulkan_device.cpp b/src/video_core/vulkan_common/vulkan_device.cpp
index 188ceeed7..1fda0042d 100644
--- a/src/video_core/vulkan_common/vulkan_device.cpp
+++ b/src/video_core/vulkan_common/vulkan_device.cpp
@@ -519,10 +519,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
519 LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state"); 519 LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state");
520 RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state, 520 RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state,
521 VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME); 521 VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
522
523 LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state2");
524 RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2,
525 VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
526 } 522 }
527 523
528 if (is_nvidia) { 524 if (is_nvidia) {
@@ -611,17 +607,12 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
611 } 607 }
612 } 608 }
613 if (extensions.vertex_input_dynamic_state && is_qualcomm) { 609 if (extensions.vertex_input_dynamic_state && is_qualcomm) {
614 const u32 version = (properties.properties.driverVersion << 3) >> 3; 610 // Qualcomm drivers do not properly support vertex_input_dynamic_state.
615 if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) && 611 LOG_WARNING(Render_Vulkan,
616 version < VK_MAKE_API_VERSION(0, 0, 680, 0)) { 612 "Qualcomm drivers have broken VK_EXT_vertex_input_dynamic_state");
617 // Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state. 613 RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
618 LOG_WARNING( 614 features.vertex_input_dynamic_state,
619 Render_Vulkan, 615 VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
620 "Qualcomm Adreno 7xx drivers have broken VK_EXT_vertex_input_dynamic_state");
621 RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
622 features.vertex_input_dynamic_state,
623 VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
624 }
625 } 616 }
626 617
627 sets_per_pool = 64; 618 sets_per_pool = 64;
@@ -704,6 +695,22 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
704 std::min(properties.properties.limits.maxVertexInputBindings, 16U); 695 std::min(properties.properties.limits.maxVertexInputBindings, 16U);
705 } 696 }
706 697
698 if (!extensions.extended_dynamic_state && extensions.extended_dynamic_state2) {
699 LOG_INFO(Render_Vulkan,
700 "Removing extendedDynamicState2 due to missing extendedDynamicState");
701 RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2,
702 VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
703 }
704
705 if (!extensions.extended_dynamic_state2 && extensions.extended_dynamic_state3) {
706 LOG_INFO(Render_Vulkan,
707 "Removing extendedDynamicState3 due to missing extendedDynamicState2");
708 RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3,
709 VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
710 dynamic_state3_blending = false;
711 dynamic_state3_enables = false;
712 }
713
707 logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions), 714 logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions),
708 first_next, dld); 715 first_next, dld);
709 716