Loading...
Searching...
No Matches
HostFramePool.hpp File Reference

App-owned host frame pool behind a FrameMemoryProvider. More...

Detailed Description

App-owned host frame pool behind a FrameMemoryProvider.

The direct-readback destination for vendors whose submit is a synchronous DMA from an arbitrary host pointer (AJA AutoCirculateTransfer, Bluefish bfDmaWrite, Deltacast slot buffers): unlike DeckLink there is no SDK frame object to wrap, so the pool allocates the frames itself, sized and aligned so the GPU can wrap each one as a readback target, and pins them through the vendor's VendorDmaRegistrar for the card's DMA engine.

Each frame is one whole allocation: bytes == regionBase, no interior offset. acquire() pops a free frame (an empty pool is that render tick's back-pressure drop); recycle() returns a frame after the vendor's submit completes or on any discard/cancel path. Because the vendor's DMA is synchronous, a frame is reusable the moment submit returns — the pool never tracks hardware completions.

Allocation granule: VirtualAlloc in whole 64 KiB on Windows (the only memory D3D12's OpenExistingHeapFromAddress accepts, at its allocation granularity), 4096-aligned elsewhere (VK_EXT_external_memory_host / GL_AMD_pinned_memory page requirement).

Threading: acquire() runs on the render thread, recycle() on the vendor's pump thread; the free list is mutex-guarded. allocate()/release() are init/teardown only.

Go to the source code of this file.

Classes

class  score::gfx::interop::HostFramePool
 

Namespaces

namespace  score
 Base toolkit upon which the software is built.
 
namespace  score::gfx
 Graphics rendering pipeline for ossia score.