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

# PGDeviceDescriptor

A description of the paravirtualized graphics device to create.

```
class PGDeviceDescriptor
```

## Topics

### Specifying the GPU

[`device`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/device)

The Metal device object to use to back the virtual graphics device.

### Managing Tasks

[`createTask`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/createTask)

A handler that the framework calls to create a task object.

[`destroyTask`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/destroyTask)

A handler that the framework calls to destroy a task object.

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

The block signature for a routine that creates a task.

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

The block signature for a routine that destroys a task.

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

An opaque data pointer representing a specific virtual task.

### Managing Memory Operations

[`mapMemory`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/mapMemory)

A handler that the framework calls to map memory into the virtual machine.

[`unmapMemory`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/unmapMemory)

A handler that the framework calls to unmap memory from the virtual machine.

[`readMemory`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/readMemory)

A handler that the framework calls to read data from the guest’s memory.

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

The block signature for a routine that maps guest physical memory into a task.

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

The block signature for a routine that unmaps guest physical memory from a task.

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

The block signature for a routine that copies data from guest physical memory into host memory.

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

A range in the guest virtual machine’s physical memory address space.

### Specifying Trace Behavior

[`addTraceRange`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/addTraceRange)

A handler that the framework calls to add a trace range.

[`removeTraceRange`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/removeTraceRange)

A handler that the framework calls to remove a trace range.

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

The block signature for a routine that adds a trace range.

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

The block signature for a routine that removes a trace range.

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

The block signature for a routine that handles trace requests.

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

An opaque data pointer representing a specific trace.

### Handling Interrupts

[`raiseInterrupt`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/raiseInterrupt)

A handler that the system calls to raise an interrupt in the guest environment.

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

The block signature for a routine that raises interrupts in the guest environment.

### Specifying Virtual Device Properties

[`mmioLength`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/mmioLength)

The length in bytes of the memory-mapped IO section.

### Instance Properties

[`displayPortCount`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor/displayPortCount)



---

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)