SWDEV-301667 - Refactor graph code

- Remove Last graph node optimization and instead submit a barrier NOP
packet always. This simplifies the code.

Change-Id: Ied443173ba47a08b6df148ac7e3ead712acda11c
This commit is contained in:
Saleel Kudchadker
2024-05-09 19:13:34 +00:00
committed by Maneesh Gupta
parent 3d540ec113
commit badf2b0880
3 changed files with 14 additions and 48 deletions
+4 -16
View File
@@ -3477,23 +3477,11 @@ void VirtualGPU::submitAccumulate(amd::AccumulateCommand& vcmd) {
amd::ScopedLock lock(execution());
profilingBegin(vcmd, true);
uint8_t* aqlPacket = vcmd.getLastPacket();
if (aqlPacket != nullptr) {
dispatchBlockingWait();
auto packet = reinterpret_cast<hsa_kernel_dispatch_packet_t*>(aqlPacket);
dispatchGenericAqlPacket(packet, packet->header, packet->setup, false);
// We need to set fence_dirty_ flag as we would use a dispatch packet with a completion signal
// to track graph finish for the last. The sync logic assumes HW event to a barrier packet that
// has a system scope release. This would cause isFenceDirty() check at top level to insert
// barrier packet wherever needed
fence_dirty_ = true;
const Settings& settings = dev().settings();
if (settings.barrier_value_packet_) {
dispatchBarrierValuePacket(kBarrierVendorPacketNopScopeHeader, true);
} else {
const Settings& settings = dev().settings();
if (settings.barrier_value_packet_) {
dispatchBarrierValuePacket(kBarrierVendorPacketNopScopeHeader, true);
} else {
dispatchBarrierPacket(kNopPacketHeader, false);
}
dispatchBarrierPacket(kNopPacketHeader, false);
}
profilingEnd(vcmd);