mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-10-08 14:39:00 +00:00
[vulkan, qcom] Updated list of features removed for QCOM stock drivers
This commit is contained in:
@@ -494,12 +494,16 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
if (is_qualcomm) {
|
if (is_qualcomm) {
|
||||||
LOG_WARNING(Render_Vulkan, "Qualcomm drivers require scaled vertex format emulation");
|
LOG_WARNING(Render_Vulkan, "Qualcomm drivers require scaled vertex format emulation");
|
||||||
must_emulate_scaled_formats = true;
|
must_emulate_scaled_formats = true;
|
||||||
|
LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken CustomBorderColor.");
|
||||||
|
RemoveExtensionFeature(extensions.custom_border_color, features.custom_border_color,
|
||||||
|
VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME);
|
||||||
LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken Provoking Vertex.");
|
LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken Provoking Vertex.");
|
||||||
RemoveExtension(extensions.provoking_vertex, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME);
|
RemoveExtension(extensions.provoking_vertex, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME);
|
||||||
LOG_WARNING(Render_Vulkan, "Qualcomm drivers have slow push descriptor implementation.");
|
LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken push descriptor.");
|
||||||
RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME);
|
RemoveExtension(extensions.push_descriptor, VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME);
|
||||||
LOG_WARNING(Render_Vulkan, "Disabling shader float controls and 64-bit integer features.");
|
LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken shader float controls.");
|
||||||
RemoveExtension(extensions.shader_float_controls, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME);
|
RemoveExtension(extensions.shader_float_controls, VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME);
|
||||||
|
LOG_WARNING(Render_Vulkan, "Qualcomm drivers have broken shader atomic int64.");
|
||||||
RemoveExtensionFeature(extensions.shader_atomic_int64, features.shader_atomic_int64,
|
RemoveExtensionFeature(extensions.shader_atomic_int64, features.shader_atomic_int64,
|
||||||
VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME);
|
VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME);
|
||||||
features.shader_atomic_int64.shaderBufferInt64Atomics = false;
|
features.shader_atomic_int64.shaderBufferInt64Atomics = false;
|
||||||
@@ -557,7 +561,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
features.shader_float16_int8.shaderFloat16 = false;
|
features.shader_float16_int8.shaderFloat16 = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mali/ NVIDIA proprietary drivers: Shader stencil export not supported
|
|
||||||
// Use hardware depth/stencil blits instead when available
|
// Use hardware depth/stencil blits instead when available
|
||||||
if (!extensions.shader_stencil_export) {
|
if (!extensions.shader_stencil_export) {
|
||||||
LOG_INFO(Render_Vulkan,
|
LOG_INFO(Render_Vulkan,
|
||||||
@@ -653,14 +656,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto dyna_state = Settings::values.dyna_state.GetValue();
|
const auto dyna_state = Settings::values.dyna_state.GetValue();
|
||||||
|
|
||||||
// Base dynamic states (VIEWPORT, SCISSOR, DEPTH_BIAS, etc.) are ALWAYS active in vk_graphics_pipeline.cpp
|
|
||||||
// This slider controls EXTENDED dynamic states with accumulative levels per Vulkan specs:
|
|
||||||
// Level 0 = Core Dynamic States only (Vulkan 1.0)
|
|
||||||
// Level 1 = Core + VK_EXT_extended_dynamic_state
|
|
||||||
// Level 2 = Core + VK_EXT_extended_dynamic_state + VK_EXT_extended_dynamic_state2
|
|
||||||
// Level 3 = Core + VK_EXT_extended_dynamic_state + VK_EXT_extended_dynamic_state2 + VK_EXT_extended_dynamic_state3
|
|
||||||
|
|
||||||
switch (dyna_state) {
|
switch (dyna_state) {
|
||||||
case Settings::ExtendedDynamicState::Disabled:
|
case Settings::ExtendedDynamicState::Disabled:
|
||||||
// Level 0: Disable all extended dynamic state extensions
|
// Level 0: Disable all extended dynamic state extensions
|
||||||
@@ -695,8 +690,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// VK_EXT_vertex_input_dynamic_state is independent from EDS
|
// VK_EXT_vertex_input_dynamic_state
|
||||||
// It can be enabled even without extended_dynamic_state
|
|
||||||
if (!Settings::values.vertex_input_dynamic_state.GetValue()) {
|
if (!Settings::values.vertex_input_dynamic_state.GetValue()) {
|
||||||
RemoveExtensionFeature(extensions.vertex_input_dynamic_state, features.vertex_input_dynamic_state, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
RemoveExtensionFeature(extensions.vertex_input_dynamic_state, features.vertex_input_dynamic_state, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user