flowchart LR
subgraph before["before: each draw"]
direction TB
A1["cmd_draw
table = e->render_table
RETAIN"] --> A2["render_encoder()
returns e->render
RETAIN for the caller"]
A2 --> A3["draw_state(enc)
draw_bindings(table)
draw_primitives(enc, table)
RETAIN each parameter on entry,
RELEASE on exit"]
A3 --> A4["Metal draw call"]
A4 --> A5["cmd_draw returns
RELEASE its object locals"]
end
subgraph after["after: each draw"]
direction TB
B1["cmd_draw
__unsafe_unretained table"] --> B2["render_pass_matches()
plain C, no objects"]
B2 --> B3["draw_state, draw_bindings,
draw_primitives
unretained parameters"]
B3 --> B4["Metal draw call"]
end
before ~~~ after