mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-28 22:06:59 +01:00
graphics: continue compute on native subgroup size
This commit is contained in:
@@ -52,10 +52,7 @@ ShaderSubgroupConfiguration ConfigureShaderSubgroup(const ShaderSubgroupCapabili
|
|||||||
guest_wave_size <= capabilities.max_subgroup_size) {
|
guest_wave_size <= capabilities.max_subgroup_size) {
|
||||||
return {ShaderSubgroupMode::Controlled, guest_wave_size};
|
return {ShaderSubgroupMode::Controlled, guest_wave_size};
|
||||||
}
|
}
|
||||||
if (!program.spirv_requirements->requires_exact_subgroup) {
|
|
||||||
return {ShaderSubgroupMode::FlattenedMasks, 0};
|
return {ShaderSubgroupMode::FlattenedMasks, 0};
|
||||||
}
|
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Libs::Graphics
|
} // namespace Libs::Graphics
|
||||||
|
|||||||
@@ -1146,8 +1146,8 @@ void TestNativeSubgroupPolicy() {
|
|||||||
Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context},
|
Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context},
|
||||||
vk::ShaderStageFlagBits::eCompute,
|
vk::ShaderStageFlagBits::eCompute,
|
||||||
cross_lane_compute)
|
cross_lane_compute)
|
||||||
.mode == ShaderSubgroupMode::Unsupported,
|
.mode == ShaderSubgroupMode::FlattenedMasks,
|
||||||
"cross-lane compute mismatch bypassed the exact subgroup requirement");
|
"split wave64 compute did not use native subgroup operations");
|
||||||
|
|
||||||
ShaderRecompiler::IR::Program zero_exec = safe;
|
ShaderRecompiler::IR::Program zero_exec = safe;
|
||||||
zero_exec.lane_mask_mode = ShaderLaneMaskMode::NativeWave;
|
zero_exec.lane_mask_mode = ShaderLaneMaskMode::NativeWave;
|
||||||
@@ -1180,8 +1180,8 @@ void TestNativeSubgroupPolicy() {
|
|||||||
SetTypedValues(ds_partial, ShaderRecompiler::IR::ValueOpcode::DataAppend);
|
SetTypedValues(ds_partial, ShaderRecompiler::IR::ValueOpcode::DataAppend);
|
||||||
Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context},
|
Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context},
|
||||||
vk::ShaderStageFlagBits::eCompute, ds_partial)
|
vk::ShaderStageFlagBits::eCompute, ds_partial)
|
||||||
.mode == ShaderSubgroupMode::Unsupported,
|
.mode == ShaderSubgroupMode::FlattenedMasks,
|
||||||
"partial wave64 DS append bypassed the exact subgroup requirement");
|
"split wave64 DS append did not use native subgroup operations");
|
||||||
context.max_subgroup_size = 64;
|
context.max_subgroup_size = 64;
|
||||||
const auto controlled = ConfigureShaderSubgroup(
|
const auto controlled = ConfigureShaderSubgroup(
|
||||||
ShaderSubgroupCapabilities{context}, vk::ShaderStageFlagBits::eCompute,
|
ShaderSubgroupCapabilities{context}, vk::ShaderStageFlagBits::eCompute,
|
||||||
@@ -1201,8 +1201,8 @@ void TestNativeSubgroupPolicy() {
|
|||||||
Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context},
|
Check(ConfigureShaderSubgroup(ShaderSubgroupCapabilities{context},
|
||||||
vk::ShaderStageFlagBits::eCompute,
|
vk::ShaderStageFlagBits::eCompute,
|
||||||
cross_lane_compute)
|
cross_lane_compute)
|
||||||
.mode == ShaderSubgroupMode::Unsupported,
|
.mode == ShaderSubgroupMode::FlattenedMasks,
|
||||||
"inverse cross-lane compute mismatch was accepted");
|
"inverse compute mismatch did not use the native subgroup");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::array<uint32_t, 64>
|
std::array<uint32_t, 64>
|
||||||
|
|||||||
Reference in New Issue
Block a user