mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-08 10:33:24 +09:00
[Feat] (MG_Remote): fence polls are answered from the server's reports - the apply thread posts kEventFenceSignaled as the GPU finishes each client fence (and submits and re-checks while idle), glClientWaitSync(0) / glGetSynciv answer locally, and only every MOBILEGL_IPC_POLL_ESCALATE-th unanswered poll crosses
This commit is contained in:
@@ -1128,6 +1128,22 @@ namespace MobileGL::MG_Remote::Server {
|
||||
PublishEvents();
|
||||
}
|
||||
|
||||
void ServerSession::PostFenceSignaled(MG_Pipe::MGPipeHandle fence) {
|
||||
if (!m_accepted) {
|
||||
MGLOG_E_ONCE("MG_Remote server: PostFenceSignaled {%u, %u} before Accept - dropped, "
|
||||
"there is no SEG_EVENT to carry it on",
|
||||
fence.Slot, fence.Gen);
|
||||
return;
|
||||
}
|
||||
void* slot = ReserveEventOrBlock(*this, Transport::kEventFenceSignaled, "kEventFenceSignaled",
|
||||
sizeof(Transport::EventFenceSignaledHead));
|
||||
Transport::EventFenceSignaledHead head{};
|
||||
head.Fence.Slot = fence.Slot;
|
||||
head.Fence.Gen = fence.Gen;
|
||||
std::memcpy(slot, &head, sizeof(head));
|
||||
PublishEvents();
|
||||
}
|
||||
|
||||
// PH-6 (ID-P7-2). THE FIRST DROP, AND THE LATCH IT RAISES.
|
||||
//
|
||||
// Logged ONCE, by name, with everything a triage needs: which event, how big, what the
|
||||
|
||||
Reference in New Issue
Block a user