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