Browse Source
[vk, qcom] Returned subgroups functions to QCOM
eds-true-adreno-fixes
CamilleLaVey
4 weeks ago
committed by
Caio Oliveira
No known key found for this signature in database
GPG Key ID: AAAE6C7FD4186B0C
2 changed files with
1 additions and
20 deletions
-
src/video_core/vulkan_common/vulkan_device.cpp
-
src/video_core/vulkan_common/vulkan_device.h
|
|
|
@ -500,9 +500,6 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR |
|
|
|
CollectToolingInfo(); |
|
|
|
|
|
|
|
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
|
|
|
|
must_emulate_scaled_formats = true; |
|
|
|
LOG_WARNING(Render_Vulkan, |
|
|
|
@ -1556,23 +1553,8 @@ bool Device::SupportsSubgroupStage(VkShaderStageFlags stage_mask) const { |
|
|
|
if (stage_mask == 0) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
if (disable_graphics_subgroups && (stage_mask & GraphicsStageMask) != 0) { |
|
|
|
return false; |
|
|
|
} |
|
|
|
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, |
|
|
|
|
|
|
|
@ -1100,7 +1100,6 @@ private: |
|
|
|
bool dynamic_state3_alpha_to_coverage{}; |
|
|
|
bool dynamic_state3_alpha_to_one{}; |
|
|
|
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). |
|
|
|
VkDeviceSize uniform_buffer_alignment_minimum{}; ///< Minimum enforced UBO alignment. |
|
|
|
VkDeviceSize storage_buffer_alignment_minimum{}; ///< Minimum enforced SSBO alignment. |
|
|
|
|