mirror of
https://github.com/KytyPS5/KytyPS5.git
synced 2026-10-21 03:16:54 +02:00
shader: initialize EXEC from requested dispatch thread extents
Co-authored-by: TheCruZ <thecruzwtf@gmail.com> Co-authored-by: Mac <me@itsmemac.com>
This commit is contained in:
@@ -1104,6 +1104,16 @@ IR::Program TranslateProgram(const Decoder::Program& decoded, const CFG::Graph&
|
||||
IR::U32(IR::Value(total_threads)));
|
||||
}
|
||||
}
|
||||
if (options.stage == ShaderType::Compute &&
|
||||
options.input_info.compute->dispatch_thread_dimensions) {
|
||||
for (uint32_t axis = 0; axis < 3u; axis++) {
|
||||
const auto extent = IR::U32(entry_ir.Emit(
|
||||
IR::ValueOpcode::GetDispatchThreadExtent, {IR::Value(axis)}));
|
||||
initial_exec = entry_ir.LogicalAnd(
|
||||
initial_exec,
|
||||
entry_ir.ULessThan(builtin(IR::StageInputKind::GlobalInvocationId, axis), extent));
|
||||
}
|
||||
}
|
||||
entry_ir.SetExec(initial_exec);
|
||||
const auto initial_mask = entry_ir.Emit(IR::ValueOpcode::Ballot, {initial_exec});
|
||||
entry_ir.SetExecLo(entry_ir.CompositeExtract(initial_mask, 0));
|
||||
|
||||
Reference in New Issue
Block a user