<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "ParavirtualizedGraphics",
  "identifier" : "/documentation/ParavirtualizedGraphics",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Paravirtualized Graphics"
    ],
    "preciseIdentifier" : "ParavirtualizedGraphics"
  },
  "title" : "Paravirtualized Graphics"
}
-->

# Paravirtualized Graphics

Add graphics acceleration to your guest driver stack.

## Overview

If you have an app that implements hardware-level virtualization, performance inside the virtual machine is critical, particularly for graphics. The ParavirtualizedGraphics framework implements hardware-accelerated graphics for macOS running in a virtual machine, hereafter known as the guest. The operating system provides a graphics driver that runs inside the guest, communicating with the framework in the host operating system to take advantage of Metal-accelerated graphics.

To implement accelerated graphics inside your virtualization solution, you need to take the following steps for each virtual machine:

1. Advertise the virtual graphics card in the virtual machine hardware so that macOS can install the correct driver.
2. Create a [`PGDeviceDescriptor`](/documentation/ParavirtualizedGraphics/PGDeviceDescriptor), providing the necessary blocks to connect your virtual machine implementation to the ParavirtualizedGraphics framework. Use this descriptor to create a [`PGDevice`](/documentation/ParavirtualizedGraphics/PGDevice) object, which you keep alive as long as the virtual machine is still active. The ParavirtualizedGraphics framework calls your blocks when it needs to allocate memory or take other relevant actions.
3. Create a [`PGDisplayDescriptor`](/documentation/ParavirtualizedGraphics/PGDisplayDescriptor) for each virtual display that you want to connect to the device, specifying the display’s properties and blocks for the framework to call for display events. Use this descriptor to create a [`PGDisplay`](/documentation/ParavirtualizedGraphics/PGDisplay) object. Handle the appropriate display events to display the graphics data that the framework provides.

## Topics

### PCI Device Characteristics

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

The PCI device identifier to use when advertising the graphics stack inside a virtual machine.

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

The vendor identifier to use when advertising the graphics stack inside a virtual machine.

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

The base address register to use when advertising the graphics stack inside a virtual machine.

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

The number of MSI vectors that you need to allocate for the graphics configuration.

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

Copies the URL of the ROM image to use on the guest graphics device.

### Devices

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

A description of the paravirtualized graphics device to create.

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

A paravirtualized GPU device object.

### Displays

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

A descriptor for a virtual display.

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

An object that provides display functionality to the guest operating system in a way that the host-side virtual machine app can intercept.

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

A description of a supported display mode.

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

Coordinates that describe sizes or offsets within a 2D array of pixels.

### Versioning

### Reference

[ParavirtualizedGraphics Constants](/documentation/ParavirtualizedGraphics/paravirtualizedgraphics-constants)

[ParavirtualizedGraphics Functions](/documentation/ParavirtualizedGraphics/paravirtualizedgraphics-functions)

[ParavirtualizedGraphics Data Types](/documentation/ParavirtualizedGraphics/paravirtualizedgraphics-data-types)



---

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)