<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.14.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/MTLDevice/makeSharedTexture(descriptor:)",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Metal"
    ],
    "preciseIdentifier" : "c:objc(pl)MTLDevice(im)newSharedTextureWithDescriptor:"
  },
  "title" : "makeSharedTexture(descriptor:)"
}
-->

# makeSharedTexture(descriptor:)

Creates a texture that you can share across process boundaries.

```
func makeSharedTexture(descriptor: MTLTextureDescriptor) -> (any MTLTexture)?
```

## Parameters

`descriptor`

An [`MTLTextureDescriptor`](/documentation/Metal/MTLTextureDescriptor) instance.

## Return Value

A new [`MTLTexture`](/documentation/Metal/MTLTexture) instance if the method completed successfully; otherwise `nil`.

## Discussion

You can create a shared texture but only with [`storageModePrivate`](/documentation/Metal/MTLResourceOptions/storageModePrivate). You can share the texture with another process by:

1. Creating a texture handle (see [`makeSharedTextureHandle()`](/documentation/Metal/MTLTexture/makeSharedTextureHandle()))
2. Passing the texture handle to the other process
3. Creating a texture in the other process by calling the [`makeSharedTexture(handle:)`](/documentation/Metal/MTLDevice/makeSharedTexture(handle:))method

> Important:
> You can share a texture with another process that uses the same GPU, but not with a different GPU.

---

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)