Resource slots
resourceSlot is a declarative api for changing resource between nodes in daBFG
You can think about slot as “more virtual” frame graph resource. This type of resource can change size and resource creation flags while frame graph execution.
Use slots instead of usual resources if:
Node have to read from and write to some resource at the same time
Size or type of resource need to be changed in some node
For work with resource slots you need:
Start from usual
dabfg::register_node
, see Declaring a NodeReplace
dabfg::NodeHandle
withresource_slot::NodeHandleWithSlotsAccess
Replace
dabfg::register_node
withresource_slot::register_access
Declaration callback will get additional parameter
resource_slot::State slotsState
Add
action_list
for the node:If node creates a first resource for slot, node should declare
Create{slot_name, created_resource_name}
Node gets name of resource for filling the slot after node with
slotsState.resourceToCreateFor
If node updates a resource in the slot, node should declare
Update{slot_name, updated_resource_name, priority}
Node gets name of resource for filling the slot after node with
slotsState.resourceToCreateFor
Node gets name of resource, that was in the slot before the node with
slotsState.resourceToReadFrom
Nodes with higher priority will be scheduled after nodes with lower priority
If node read a resource from the slot, node should declare
Read{slot_name}
Node gets name of resource, that was in the slot before the node with
slotsState.resourceToReadFrom
Optionally, node can declare read priority for read intermediate resource from the slot. By default read nodes will be scheduled after all updating nodes.
For detailed info see Register request for access to slots storage