Browse Source

[vk, qcom] Returned subgroups functions to QCOM

eds-true-adreno-fixes
CamilleLaVey 4 weeks ago
committed by Caio Oliveira
parent
commit
8fa7b068b8
No known key found for this signature in database GPG Key ID: AAAE6C7FD4186B0C
  1. 20
      src/video_core/vulkan_common/vulkan_device.cpp
  2. 1
      src/video_core/vulkan_common/vulkan_device.h

20
src/video_core/vulkan_common/vulkan_device.cpp

@ -500,9 +500,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
CollectToolingInfo(); CollectToolingInfo();
if (is_qualcomm) { if (is_qualcomm) {
disable_graphics_subgroups = true;
LOG_WARNING(Render_Vulkan,
"Qualcomm drivers force subgroup emulation; disabling graphics warp intrinsics");
// Qualcomm Adreno GPUs doesn't handle scaled vertex attributes; keep emulation enabled // Qualcomm Adreno GPUs doesn't handle scaled vertex attributes; keep emulation enabled
must_emulate_scaled_formats = true; must_emulate_scaled_formats = true;
LOG_WARNING(Render_Vulkan, LOG_WARNING(Render_Vulkan,
@ -1556,23 +1553,8 @@ bool Device::SupportsSubgroupStage(VkShaderStageFlags stage_mask) const {
if (stage_mask == 0) { if (stage_mask == 0) {
return true; return true;
} }
if (disable_graphics_subgroups && (stage_mask & GraphicsStageMask) != 0) {
return false;
}
const VkShaderStageFlags supported = properties.subgroup_properties.supportedStages; const VkShaderStageFlags supported = properties.subgroup_properties.supportedStages;
if ((supported & stage_mask) == stage_mask) {
return true;
}
if ((stage_mask & GraphicsStageMask) != 0 &&
((supported & VK_SHADER_STAGE_ALL_GRAPHICS) == VK_SHADER_STAGE_ALL_GRAPHICS ||
(supported & VK_SHADER_STAGE_ALL) == VK_SHADER_STAGE_ALL)) {
return true;
}
if ((stage_mask & VK_SHADER_STAGE_COMPUTE_BIT) != 0 &&
(supported & VK_SHADER_STAGE_ALL) == VK_SHADER_STAGE_ALL) {
return true;
}
return false;
return (supported & stage_mask) == stage_mask;
} }
bool Device::IsSubgroupFeatureSupported(VkSubgroupFeatureFlagBits feature, bool Device::IsSubgroupFeatureSupported(VkSubgroupFeatureFlagBits feature,

1
src/video_core/vulkan_common/vulkan_device.h

@ -1100,7 +1100,6 @@ private:
bool dynamic_state3_alpha_to_coverage{}; bool dynamic_state3_alpha_to_coverage{};
bool dynamic_state3_alpha_to_one{}; bool dynamic_state3_alpha_to_one{};
bool supports_conditional_barriers{}; ///< Allows barriers in conditional control flow. bool supports_conditional_barriers{}; ///< Allows barriers in conditional control flow.
bool disable_graphics_subgroups{}; ///< Forces subgroup emulation on graphics stages.
size_t sampler_heap_budget{}; ///< Sampler budget for buggy drivers (0 = unlimited). size_t sampler_heap_budget{}; ///< Sampler budget for buggy drivers (0 = unlimited).
VkDeviceSize uniform_buffer_alignment_minimum{}; ///< Minimum enforced UBO alignment. VkDeviceSize uniform_buffer_alignment_minimum{}; ///< Minimum enforced UBO alignment.
VkDeviceSize storage_buffer_alignment_minimum{}; ///< Minimum enforced SSBO alignment. VkDeviceSize storage_buffer_alignment_minimum{}; ///< Minimum enforced SSBO alignment.

Loading…
Cancel
Save