mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-08-09 00:31:31 +00:00
[client] egl: snapshot DMA frames before release
Copy imported IVSHMEM frames into renderer-owned textures before acknowledging their LGMP messages. Hold each lease until its copy fence signals, and protect selected snapshots until rendering completes. Track independent delivery lanes, drain acknowledgements on the frame thread, and recover stale queue subscriptions after host timeouts.
This commit is contained in:
@@ -258,10 +258,18 @@ typedef struct LG_RendererOps
|
||||
|
||||
/* called when there is a new frame. frameToken must remain attached to the
|
||||
* update if the renderer coalesces it, and must be reported by render only
|
||||
* when that update is consumed. Context: frameThread */
|
||||
* when that update is consumed. A non-NULL releaseFn transfers ownership to
|
||||
* the renderer on success and must be called exactly once when the imported
|
||||
* frame can no longer be sampled. Context: frameThread */
|
||||
bool (*onFrame)(LG_Renderer * renderer, const FrameBuffer * frame, int dmaFD,
|
||||
const FrameDamageRect * damage, int damageCount,
|
||||
LG_RendererFrameToken frameToken);
|
||||
LG_RendererFrameToken frameToken,
|
||||
LG_FrameReleaseFn releaseFn,
|
||||
void * releaseOpaque, uint64_t releaseHandle);
|
||||
|
||||
/* optional frame-thread pump for asynchronous imports while no frame is
|
||||
* available from the transport */
|
||||
void (*onFramePoll)(LG_Renderer * renderer);
|
||||
|
||||
/* called when the rederer is to startup
|
||||
* Context: renderThread */
|
||||
|
||||
Reference in New Issue
Block a user