Merge pull request #12229 from liamwhite/qcom-wtf
renderer_vulkan: exclude more qcom drivers from extensions
This commit is contained in:
commit
127bfb81d5
|
@ -892,10 +892,6 @@ void RasterizerVulkan::UpdateDynamicStates() {
|
||||||
UpdateFrontFace(regs);
|
UpdateFrontFace(regs);
|
||||||
UpdateStencilOp(regs);
|
UpdateStencilOp(regs);
|
||||||
|
|
||||||
if (device.IsExtVertexInputDynamicStateSupported()) {
|
|
||||||
UpdateVertexInput(regs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (state_tracker.TouchStateEnable()) {
|
if (state_tracker.TouchStateEnable()) {
|
||||||
UpdateDepthBoundsTestEnable(regs);
|
UpdateDepthBoundsTestEnable(regs);
|
||||||
UpdateDepthTestEnable(regs);
|
UpdateDepthTestEnable(regs);
|
||||||
|
@ -918,6 +914,9 @@ void RasterizerVulkan::UpdateDynamicStates() {
|
||||||
UpdateBlending(regs);
|
UpdateBlending(regs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (device.IsExtVertexInputDynamicStateSupported()) {
|
||||||
|
UpdateVertexInput(regs);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RasterizerVulkan::HandleTransformFeedback() {
|
void RasterizerVulkan::HandleTransformFeedback() {
|
||||||
|
|
|
@ -519,10 +519,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
||||||
LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state");
|
LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state");
|
||||||
RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state,
|
RemoveExtensionFeature(extensions.extended_dynamic_state, features.extended_dynamic_state,
|
||||||
VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
|
VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME);
|
||||||
|
|
||||||
LOG_WARNING(Render_Vulkan, "ARM drivers have broken VK_EXT_extended_dynamic_state2");
|
|
||||||
RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2,
|
|
||||||
VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_nvidia) {
|
if (is_nvidia) {
|
||||||
|
@ -611,17 +607,12 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (extensions.vertex_input_dynamic_state && is_qualcomm) {
|
if (extensions.vertex_input_dynamic_state && is_qualcomm) {
|
||||||
const u32 version = (properties.properties.driverVersion << 3) >> 3;
|
// Qualcomm drivers do not properly support vertex_input_dynamic_state.
|
||||||
if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) &&
|
LOG_WARNING(Render_Vulkan,
|
||||||
version < VK_MAKE_API_VERSION(0, 0, 680, 0)) {
|
"Qualcomm drivers have broken VK_EXT_vertex_input_dynamic_state");
|
||||||
// Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state.
|
RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
|
||||||
LOG_WARNING(
|
features.vertex_input_dynamic_state,
|
||||||
Render_Vulkan,
|
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
||||||
"Qualcomm Adreno 7xx drivers have broken VK_EXT_vertex_input_dynamic_state");
|
|
||||||
RemoveExtensionFeature(extensions.vertex_input_dynamic_state,
|
|
||||||
features.vertex_input_dynamic_state,
|
|
||||||
VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sets_per_pool = 64;
|
sets_per_pool = 64;
|
||||||
|
@ -704,6 +695,22 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
||||||
std::min(properties.properties.limits.maxVertexInputBindings, 16U);
|
std::min(properties.properties.limits.maxVertexInputBindings, 16U);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!extensions.extended_dynamic_state && extensions.extended_dynamic_state2) {
|
||||||
|
LOG_INFO(Render_Vulkan,
|
||||||
|
"Removing extendedDynamicState2 due to missing extendedDynamicState");
|
||||||
|
RemoveExtensionFeature(extensions.extended_dynamic_state2, features.extended_dynamic_state2,
|
||||||
|
VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!extensions.extended_dynamic_state2 && extensions.extended_dynamic_state3) {
|
||||||
|
LOG_INFO(Render_Vulkan,
|
||||||
|
"Removing extendedDynamicState3 due to missing extendedDynamicState2");
|
||||||
|
RemoveExtensionFeature(extensions.extended_dynamic_state3, features.extended_dynamic_state3,
|
||||||
|
VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME);
|
||||||
|
dynamic_state3_blending = false;
|
||||||
|
dynamic_state3_enables = false;
|
||||||
|
}
|
||||||
|
|
||||||
logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions),
|
logical = vk::Device::Create(physical, queue_cis, ExtensionListForVulkan(loaded_extensions),
|
||||||
first_next, dld);
|
first_next, dld);
|
||||||
|
|
||||||
|
|
Reference in New Issue