<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "macOS: 26.0.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/MTL4CommandQueue/signalDrawable(_:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Metal"
    ],
    "preciseIdentifier" : "c:objc(pl)MTL4CommandQueue(im)signalDrawable:"
  },
  "title" : "signalDrawable(_:)"
}
-->

# signalDrawable(_:)

Schedules a signal operation on the command queue to indicate when rendering to a Metal drawable is complete.

```
func signalDrawable(_ drawable: any MTLDrawable)
```

## Parameters

`drawable`

[`MTLDrawable`](/documentation/Metal/MTLDrawable) instance to signal.

## Discussion

Signaling when rendering to a [`MTLDrawable`](/documentation/Metal/MTLDrawable) instance is complete indicates that it’s safe to present it to the
display.

You are responsible for calling this method after committing all command buffers that contain commands targeting
this drawable, and before calling [`present()`](/documentation/Metal/MTLDrawable/present()), [`present(at:)`](/documentation/Metal/MTLDrawable/present(at:)), or
[`present(afterMinimumDuration:)`](/documentation/Metal/MTLDrawable/present(afterMinimumDuration:)).

> Note: This method doesn’t trigger the presentation of the drawable, and fails if you call it after any of the
> present methods, or if you call it multiple times.

Metal doesn’t guarantee that command buffers you commit to the command queue after calling this method execute
before presentation.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)