mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-07-23 18:45:36 +00:00
liverpool: Dont commit flushes on bottom of pipe event
Typically used for GPU to GPU sync then host
This commit is contained in:
parent
ea207c85aa
commit
0d83fbf61b
@ -627,10 +627,10 @@ Liverpool::Task Liverpool::ProcessGraphics(std::span<const u32> dcb, std::span<c
|
|||||||
}
|
}
|
||||||
case PM4ItOpcode::EventWriteEop: {
|
case PM4ItOpcode::EventWriteEop: {
|
||||||
const auto* event_eop = reinterpret_cast<const PM4CmdEventWriteEop*>(header);
|
const auto* event_eop = reinterpret_cast<const PM4CmdEventWriteEop*>(header);
|
||||||
if (rasterizer) {
|
if (rasterizer && event_eop->event_type != EventType::BottomOfPipeTs) {
|
||||||
rasterizer->CommitPendingDownloads();
|
rasterizer->CommitPendingDownloads();
|
||||||
}
|
|
||||||
++fence_tick;
|
++fence_tick;
|
||||||
|
}
|
||||||
event_eop->SignalFence([](void* address, u64 data, u32 num_bytes) {
|
event_eop->SignalFence([](void* address, u64 data, u32 num_bytes) {
|
||||||
auto* memory = Core::Memory::Instance();
|
auto* memory = Core::Memory::Instance();
|
||||||
if (!memory->TryWriteBacking(address, &data, num_bytes)) {
|
if (!memory->TryWriteBacking(address, &data, num_bytes)) {
|
||||||
@ -1024,9 +1024,9 @@ Liverpool::Task Liverpool::ProcessCompute(std::span<const u32> acb, u32 vqid) {
|
|||||||
}
|
}
|
||||||
case PM4ItOpcode::ReleaseMem: {
|
case PM4ItOpcode::ReleaseMem: {
|
||||||
const auto* release_mem = reinterpret_cast<const PM4CmdReleaseMem*>(header);
|
const auto* release_mem = reinterpret_cast<const PM4CmdReleaseMem*>(header);
|
||||||
++fence_tick;
|
|
||||||
if (rasterizer) {
|
if (rasterizer) {
|
||||||
rasterizer->CommitPendingDownloads();
|
rasterizer->CommitPendingDownloads();
|
||||||
|
++fence_tick;
|
||||||
}
|
}
|
||||||
release_mem->SignalFence(static_cast<Platform::InterruptId>(queue.pipe_id));
|
release_mem->SignalFence(static_cast<Platform::InterruptId>(queue.pipe_id));
|
||||||
break;
|
break;
|
||||||
|
@ -421,7 +421,7 @@ struct PM4CmdEventWriteEop {
|
|||||||
PM4Type3Header header;
|
PM4Type3Header header;
|
||||||
union {
|
union {
|
||||||
u32 event_control;
|
u32 event_control;
|
||||||
BitField<0, 6, u32> event_type; ///< Event type written to VGT_EVENT_INITIATOR
|
BitField<0, 6, EventType> event_type; ///< Event type written to VGT_EVENT_INITIATOR
|
||||||
BitField<8, 4, u32> event_index; ///< Event index
|
BitField<8, 4, u32> event_index; ///< Event index
|
||||||
};
|
};
|
||||||
u32 address_lo;
|
u32 address_lo;
|
||||||
|
Loading…
Reference in New Issue
Block a user