diff --git a/src/graphics/host_gpu/renderer/pipeline/shaderSubgroup.cpp b/src/graphics/host_gpu/renderer/pipeline/shaderSubgroup.cpp index 534e655ae..b35e291d7 100644 --- a/src/graphics/host_gpu/renderer/pipeline/shaderSubgroup.cpp +++ b/src/graphics/host_gpu/renderer/pipeline/shaderSubgroup.cpp @@ -52,10 +52,7 @@ ShaderSubgroupConfiguration ConfigureShaderSubgroup(const ShaderSubgroupCapabili guest_wave_size <= capabilities.max_subgroup_size) { return {ShaderSubgroupMode::Controlled, guest_wave_size}; } - if (!program.spirv_requirements->requires_exact_subgroup) { - return {ShaderSubgroupMode::FlattenedMasks, 0}; - } - return {}; + return {ShaderSubgroupMode::FlattenedMasks, 0}; } } // namespace Libs::Graphics diff --git a/tests/shaderCfgTests.cpp b/tests/shaderCfgTests.cpp index f63bc6fdf..80fc2f2af 100644 --- a/tests/shaderCfgTests.cpp +++ b/tests/shaderCfgTests.cpp @@ -1146,8 +1146,8 @@ void TestNativeSubgroupPolicy() { Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context}, vk::ShaderStageFlagBits::eCompute, cross_lane_compute) - .mode == ShaderSubgroupMode::Unsupported, - "cross-lane compute mismatch bypassed the exact subgroup requirement"); + .mode == ShaderSubgroupMode::FlattenedMasks, + "split wave64 compute did not use native subgroup operations"); ShaderRecompiler::IR::Program zero_exec = safe; zero_exec.lane_mask_mode = ShaderLaneMaskMode::NativeWave; @@ -1180,8 +1180,8 @@ void TestNativeSubgroupPolicy() { SetTypedValues(ds_partial, ShaderRecompiler::IR::ValueOpcode::DataAppend); Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context}, vk::ShaderStageFlagBits::eCompute, ds_partial) - .mode == ShaderSubgroupMode::Unsupported, - "partial wave64 DS append bypassed the exact subgroup requirement"); + .mode == ShaderSubgroupMode::FlattenedMasks, + "split wave64 DS append did not use native subgroup operations"); context.max_subgroup_size = 64; const auto controlled = ConfigureShaderSubgroup( ShaderSubgroupCapabilities{context}, vk::ShaderStageFlagBits::eCompute, @@ -1201,8 +1201,8 @@ void TestNativeSubgroupPolicy() { Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context}, vk::ShaderStageFlagBits::eCompute, cross_lane_compute) - .mode == ShaderSubgroupMode::Unsupported, - "inverse cross-lane compute mismatch was accepted"); + .mode == ShaderSubgroupMode::FlattenedMasks, + "inverse compute mismatch did not use the native subgroup"); } std::array