<!--
{
  "availability" : [
    "macCatalyst: 14.0.0 -",
    "macOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ParavirtualizedGraphics",
  "identifier" : "/documentation/ParavirtualizedGraphics/PGDevice",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "Paravirtualized Graphics"
    ],
    "preciseIdentifier" : "c:objc(pl)PGDevice"
  },
  "title" : "PGDevice"
}
-->

# PGDevice

A paravirtualized GPU device object.

```
protocol PGDevice : NSObjectProtocol
```

## Topics

### Handling Memory-Mapped I/O

[`mmioRead(atOffset:)`](/documentation/ParavirtualizedGraphics/PGDevice/mmioRead(atOffset:))

Reads data from the virtual graphics device’s memory-mapped I/O region.

[`mmioWrite(atOffset:value:)`](/documentation/ParavirtualizedGraphics/PGDevice/mmioWrite(atOffset:value:))

Writes data to the virtual graphics device’s memory-mapped I/O region.

### Suspending and Resuming Graphics Processing

[`willSuspend()`](/documentation/ParavirtualizedGraphics/PGDevice/willSuspend())

Notifies the virtual graphics device to start suspending graphics activities.

[`finishSuspend()`](/documentation/ParavirtualizedGraphics/PGDevice/finishSuspend())

Notifies the virtualized graphics device to finish suspending graphics activities.

[`willResume(withSuspendState:error:)`](/documentation/ParavirtualizedGraphics/PGDevice/willResume(withSuspendState:error:))

Tells a new device object to load a previously saved device’s suspend state.

[`didResume()`](/documentation/ParavirtualizedGraphics/PGDevice/didResume())

Tells the device object to finish any remaining work to resume processing of a previously saved device’s suspend state.

[`PGResumeErrorDomain`](/documentation/ParavirtualizedGraphics/PGResumeErrorDomain)

The error domain for suspend-resume actions.

[`PGResumeErrorCode`](/documentation/ParavirtualizedGraphics/PGResumeErrorCode)

Error codes for suspend-resume actions.

### Managing Displays

[`newDisplay(with:port:serialNum:)`](/documentation/ParavirtualizedGraphics/PGDevice/newDisplay(with:port:serialNum:))

Create a display from the specified descriptor and uniquifying parameters.

### Instance Methods

[`pause()`](/documentation/ParavirtualizedGraphics/PGDevice/pause())

[`reset()`](/documentation/ParavirtualizedGraphics/PGDevice/reset())

[`stop()`](/documentation/ParavirtualizedGraphics/PGDevice/stop())

[`unpause()`](/documentation/ParavirtualizedGraphics/PGDevice/unpause())



---

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)