> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basset.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# drawable.presentation

> Frames a Metal layer actually put on screen, and the gaps between them

Swizzles the Metal layer's drawable-vending methods, so it sees every
drawable a Metal, SceneKit, RealityKit, or game-engine view asks for. One
reading per fixed window while frames are being presented.

| | |
| - | - |
| [Delivery](/instruments/metadata) | stream, interval |
| Mechanism | swizzle |
| [Requires](/instruments/metadata) | iOS 17+, hardware only, no simulator, basset 0.1.1+ |

Real output from `basset request get`, captured while drawing through a
`CAMetalLayer` subclass:

```
CAPTURED                  ELAPSED  INSTRUMENT

launch 16403731317962211517
2026-08-23T16:12:05.736Z  +0.0s    metal.drawable.presentation(metalDrawable)
├─ windowNanoseconds     999440458
├─ drawableRequestCount  25
├─ occurrenceCount       20
├─ drawableSkippedCount  3
├─ totalNanoseconds      316676458
└─ peakNanoseconds       16668375
2026-08-23T16:12:06.736Z  +1.0s    metal.drawable.presentation(metalDrawable)
├─ windowNanoseconds     999697958
├─ drawableRequestCount  60
├─ occurrenceCount       60
├─ totalNanoseconds      1000034625
└─ peakNanoseconds       16669625
2026-08-23T16:12:07.737Z  +2.0s    metal.drawable.presentation(metalDrawable)
├─ windowNanoseconds     1000986084
├─ drawableRequestCount  60
├─ occurrenceCount       60
├─ totalNanoseconds      1000031084
└─ peakNanoseconds       16670500
```

The first window shows `drawableSkippedCount` — three drawables the layer
never had to give, counted apart from the ones actually presented.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.