MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / ExecuteVU

Method ExecuteVU

pcsx2/MTVU.cpp:441–465  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

439}
440
441void VU_Thread::ExecuteVU(u32 vu_addr, u32 vif_top, u32 vif_itop, u32 fbrst)
442{
443 MTVU_LOG("MTVU - ExecuteVU!");
444 Get_MTVUChanges(); // Clear any pending interrupts
445 ReserveSpace(5);
446 Write(MTVU_VU_EXECUTE);
447 Write(vu_addr);
448 Write(vif_top);
449 Write(vif_itop);
450 Write(fbrst);
451 CommitWritePos();
452 gifUnit.TransferGSPacketData(GIF_TRANS_MTVU, NULL, 0);
453 KickStart();
454 u32 cycles = std::max(Get_vuCycles(), 4u);
455 u32 skip_cycles = std::min(cycles, 3000u);
456 cpuRegs.cycle += skip_cycles * EmuConfig.Speedhacks.EECycleSkip;
457 VU0.cycle += skip_cycles * EmuConfig.Speedhacks.EECycleSkip;
458 Get_MTVUChanges();
459
460 if (!INSTANT_VU1)
461 {
462 VU0.VI[REG_VPU_STAT].UL |= 0x100;
463 CPU_INT(VU_MTVU_BUSY, cycles);
464 }
465}
466
467void VU_Thread::VifUnpack(vifStruct& _vif, VIFregisters& _vifRegs, const u8* data, u32 size)
468{

Callers 1

vu1ExecMicroFunction · 0.80

Calls 5

CPU_INTFunction · 0.85
TransferGSPacketDataMethod · 0.80
WriteFunction · 0.50
maxFunction · 0.50
minFunction · 0.50

Tested by

no test coverage detected