<!--
{
  "availability" : [
    "iOS: 10.0.0 -",
    "iPadOS: 10.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.12.0 -",
    "tvOS: 10.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CoreImage",
  "identifier" : "/documentation/CoreImage/CIImageProcessorOutput",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Core Image"
    ],
    "preciseIdentifier" : "c:objc(pl)CIImageProcessorOutput"
  },
  "title" : "CIImageProcessorOutput"
}
-->

# CIImageProcessorOutput

A container for writing image data and information produced by a custom image processor.

```
protocol CIImageProcessorOutput
```

## Overview

Your app does not define classes that adopt this protocol; Core Image provides an object of this type when applying a custom image processor you create with a [`CIImageProcessorKernel`](/documentation/CoreImage/CIImageProcessorKernel) subclass.

In your image processor class’ [`process(with:arguments:output:)`](/documentation/CoreImage/CIImageProcessorKernel/process(with:arguments:output:)) method, use an appropriate property of the provided `CIImageProcessorOutput` object to return processed pixel data to Core Image. For example, if you process the image using a Metal shader, bind the [`metalTexture`](/documentation/CoreImage/CIImageProcessorOutput/metalTexture) property as an attachment in a render pass or as an output texture in a compute pass. Or, if you process the image using a CPU-based routine, write processed pixel data to memory using the [`baseAddress`](/documentation/CoreImage/CIImageProcessorOutput/baseAddress) pointer. You must provide rendered output to one (and only one) of the properties listed in [`Providing Output Image Data`](/documentation/CoreImage/CIImageProcessorOutput#Providing-Output-Image-Data).

To access input pixel data in your image processor block, see the [`CIImageProcessorInput`](/documentation/CoreImage/CIImageProcessorInput) class.

## Topics

### Providing Output Image Data

[`baseAddress`](/documentation/CoreImage/CIImageProcessorOutput/baseAddress)

The base address of CPU memory that your Core Image Processor Kernel can write pixels to.

[`metalTexture`](/documentation/CoreImage/CIImageProcessorOutput/metalTexture)

A Metal texture object that can be bound for output using Metal.

[`pixelBuffer`](/documentation/CoreImage/CIImageProcessorOutput/pixelBuffer)

An output pixelBuffer object that your Core Image Processor Kernel can write to.

[`surface`](/documentation/CoreImage/CIImageProcessorOutput/surface)

An output surface object that your Core Image Processor Kernel can write to.

### Getting Supplemental Information for Image Processing

[`region`](/documentation/CoreImage/CIImageProcessorOutput/region)

The rectangular region of the output image that your Core Image Processor Kernel must provide.

[`metalCommandBuffer`](/documentation/CoreImage/CIImageProcessorOutput/metalCommandBuffer)

Returns a Metal command buffer object that can be used for encoding commands.

[`bytesPerRow`](/documentation/CoreImage/CIImageProcessorOutput/bytesPerRow)

The bytes per row of the CPU memory that your Core Image Processor Kernel can write pixels to.

[`format`](/documentation/CoreImage/CIImageProcessorOutput/format)

The pixel format of the CPU memory that your Core Image Processor Kernel can write pixels to.

### Instance Properties

[`digest`](/documentation/CoreImage/CIImageProcessorOutput/digest)

A 64-bit digest that uniquely describes the contents of the output of a processor.



---

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)