From f9ec1373968ad3e3a8effd2fafb64d25afac490d Mon Sep 17 00:00:00 2001 From: PavelBARABANOV Date: Thu, 20 Nov 2025 00:08:39 +0300 Subject: [PATCH] It seems to work that way too. --- src/video_core/renderer_vulkan/vk_pipeline_cache.cpp | 11 +---------- src/video_core/vulkan_common/vulkan_device.h | 6 ------ 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp index f9b04b3b12..fe38c9740b 100644 --- a/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_pipeline_cache.cpp @@ -678,16 +678,7 @@ std::unique_ptr PipelineCache::CreateGraphicsPipeline( const auto runtime_info{MakeRuntimeInfo(programs, key, program, previous_stage)}; ConvertLegacyToGeneric(program, runtime_info); - // Adreno don't support subgroup operations in vertex stages - // Disable subgroup features for vertex shaders if not supported by the device - Shader::Profile stage_profile = profile; - if (program.stage == Shader::Stage::VertexA || program.stage == Shader::Stage::VertexB) { - if (!device.IsSubgroupSupportedForStage(VK_SHADER_STAGE_VERTEX_BIT)) { - stage_profile.support_vote = false; - } - } - - const std::vector code{EmitSPIRV(stage_profile, runtime_info, program, binding, this->optimize_spirv_output)}; + const std::vector code{EmitSPIRV(profile, runtime_info, program, binding, this->optimize_spirv_output)}; device.SaveShader(code); modules[stage_index] = BuildShader(device, code); if (device.HasDebuggingToolAttached()) { diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index e649147264..cb13f28523 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h @@ -365,12 +365,6 @@ public: return properties.subgroup_properties.supportedOperations & feature; } - /// Returns true if subgroup operations are supported in the specified shader stage. - /// Mobile GPUs (Qualcomm Adreno) often only support subgroups in fragment/compute stages. - bool IsSubgroupSupportedForStage(VkShaderStageFlagBits stage) const { - return properties.subgroup_properties.supportedStages & stage; - } - /// Returns the maximum number of push descriptors. u32 MaxPushDescriptors() const { return properties.push_descriptor.maxPushDescriptors;