# Request

> Retrieves data asynchronously from a GPU resource.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.Rendering](/engine/6000.6/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule

## Request(ComputeBuffer, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(ComputeBuffer src, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[ComputeBuffer]\(/engine/6000.6/script-reference/unityengine/computebuffer)): Resource to read the data from.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(ComputeBuffer, int, int, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(ComputeBuffer src, int size, int offset, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[ComputeBuffer]\(/engine/6000.6/script-reference/unityengine/computebuffer)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Size in bytes of the data to be retrieved from the [ComputeBuffer](/engine/6000.6/script-reference/unityengine/computebuffer.md) or [GraphicsBuffer](/engine/6000.6/script-reference/unityengine/graphicsbuffer.md).**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Offset in bytes in the [ComputeBuffer](/engine/6000.6/script-reference/unityengine/computebuffer.md) or [GraphicsBuffer](/engine/6000.6/script-reference/unityengine/graphicsbuffer.md).**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(GraphicsBuffer, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(GraphicsBuffer src, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[GraphicsBuffer]\(/engine/6000.6/script-reference/unityengine/graphicsbuffer)): Resource to read the data from.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(GraphicsBuffer, int, int, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(GraphicsBuffer src, int size, int offset, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[GraphicsBuffer]\(/engine/6000.6/script-reference/unityengine/graphicsbuffer)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Size in bytes of the data to be retrieved from the [ComputeBuffer](/engine/6000.6/script-reference/unityengine/computebuffer.md) or [GraphicsBuffer](/engine/6000.6/script-reference/unityengine/graphicsbuffer.md).**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Offset in bytes in the [ComputeBuffer](/engine/6000.6/script-reference/unityengine/computebuffer.md) or [GraphicsBuffer](/engine/6000.6/script-reference/unityengine/graphicsbuffer.md).**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(Texture, int, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(Texture src, int mipIndex = 0, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[Texture]\(/engine/6000.6/script-reference/unityengine/texture)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the mipmap to be fetched.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(Texture, int, TextureFormat, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(Texture src, int mipIndex, TextureFormat dstFormat, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[Texture]\(/engine/6000.6/script-reference/unityengine/texture)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the mipmap to be fetched.**** (\[TextureFormat]\(/engine/6000.6/script-reference/unityengine/textureformat)): Target [TextureFormat](/engine/6000.6/script-reference/unityengine/textureformat.md) of the data. If the target format is different from the format stored on the GPU, the conversion is automatic.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(Texture, int, GraphicsFormat, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(Texture src, int mipIndex, GraphicsFormat dstFormat, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[Texture]\(/engine/6000.6/script-reference/unityengine/texture)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the mipmap to be fetched.**** (\[GraphicsFormat]\(/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformat)): Target [TextureFormat](/engine/6000.6/script-reference/unityengine/textureformat.md) of the data. If the target format is different from the format stored on the GPU, the conversion is automatic.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(Texture, int, int, int, int, int, int, int, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(Texture src, int mipIndex, int x, int width, int y, int height, int z, int depth, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[Texture]\(/engine/6000.6/script-reference/unityengine/texture)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the mipmap to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Starting X coordinate in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Width in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Starting Y coordinate in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Height in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Start Z coordinate in pixels for the [Texture3D](/engine/6000.6/script-reference/unityengine/texture3d.md) being fetched. Index of Start layer for TextureCube, [Texture2DArray](/engine/6000.6/script-reference/unityengine/texture2darray.md) and TextureCubeArray being fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Depth in pixels for [Texture3D](/engine/6000.6/script-reference/unityengine/texture3d.md) being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(Texture, int, int, int, int, int, int, int, TextureFormat, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(Texture src, int mipIndex, int x, int width, int y, int height, int z, int depth, TextureFormat dstFormat, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[Texture]\(/engine/6000.6/script-reference/unityengine/texture)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the mipmap to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Starting X coordinate in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Width in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Starting Y coordinate in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Height in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Start Z coordinate in pixels for the [Texture3D](/engine/6000.6/script-reference/unityengine/texture3d.md) being fetched. Index of Start layer for TextureCube, [Texture2DArray](/engine/6000.6/script-reference/unityengine/texture2darray.md) and TextureCubeArray being fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Depth in pixels for [Texture3D](/engine/6000.6/script-reference/unityengine/texture3d.md) being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray.**** (\[TextureFormat]\(/engine/6000.6/script-reference/unityengine/textureformat)): Target [TextureFormat](/engine/6000.6/script-reference/unityengine/textureformat.md) of the data. If the target format is different from the format stored on the GPU, the conversion is automatic.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.

## Request(Texture, int, int, int, int, int, int, int, GraphicsFormat, Action\<AsyncGPUReadbackRequest>)

Retrieves data asynchronously from a GPU resource.

```csharp
public static AsyncGPUReadbackRequest Request(Texture src, int mipIndex, int x, int width, int y, int height, int z, int depth, GraphicsFormat dstFormat, Action<AsyncGPUReadbackRequest> callback = null)
```

### Parameters

**** (\[Texture]\(/engine/6000.6/script-reference/unityengine/texture)): Resource to read the data from.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Index of the mipmap to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Starting X coordinate in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Width in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Starting Y coordinate in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Height in pixels of the Texture data to be fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Start Z coordinate in pixels for the [Texture3D](/engine/6000.6/script-reference/unityengine/texture3d.md) being fetched. Index of Start layer for TextureCube, [Texture2DArray](/engine/6000.6/script-reference/unityengine/texture2darray.md) and TextureCubeArray being fetched.**** (\[int]\(https\://learn.microsoft.com/dotnet/api/system.int32)): Depth in pixels for [Texture3D](/engine/6000.6/script-reference/unityengine/texture3d.md) being fetched. Number of layers for TextureCube, TextureArray and TextureCubeArray.**** (\[GraphicsFormat]\(/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformat)): Target [TextureFormat](/engine/6000.6/script-reference/unityengine/textureformat.md) of the data. If the target format is different from the format stored on the GPU, the conversion is automatic.**** (\[Action\<AsyncGPUReadbackRequest>]\(https\://learn.microsoft.com/dotnet/api/system.action)): An optional delegate Action called once the request is fullfilled. The completed request is passed as parameter to the Action.

### Returns

| Type                                                                                                        | Description                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) | Returns an [AsyncGPUReadbackRequest](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest.md) that you can use to determine when the data is available. Otherwise, a request with an error is returned. |

### Remarks

If a request with an error is returned, calling [AsyncGPUReadbackRequest.hasError](/engine/6000.6/script-reference/unityengine/rendering/asyncgpureadbackrequest/haserror.md) returns true.

For texture data, the extents are checked against the size of the source texture. If graphics [QualitySettings](/engine/6000.6/script-reference/unityengine/qualitysettings.md) are set low enough to generate reduced size textures, then the reduced size must be requested. Use [QualitySettings.masterTextureLimit](/engine/6000.6/script-reference/unityengine/qualitysettings/mastertexturelimit.md) to adjust the width and height (and x,y if required), by bit shifting right.

For texture data, use the [SystemInfo.IsFormatSupported](/engine/6000.6/script-reference/unityengine/systeminfo/isformatsupported.md) method with the [GraphicsFormatUsage.ReadPixels](/engine/6000.6/script-reference/unityengine/experimental/rendering/graphicsformatusage/readpixels.md) flag to query if the format is supported.

If you use this function to request data about a temporary render texture, don't release the texture using [RenderTexture.ReleaseTemporary](/engine/6000.6/script-reference/unityengine/rendertexture/releasetemporary.md) until the request is complete.
