Enable virtual displays on a VM

Linux Windows

This document describes how to enable or disable virtual displays on a virtualmachine (VM) instance.

If an application running on your VM requires a display device, but you don'tneed the performance of a GPU, then configure your VM to use virtual displaydevices. By enabling virtual displays on a VM, you can run virtual displaydevices on the VM, such as remote system management tools, remote desktopsoftware, andscreen capturing.

Before you begin

Required roles

To get the permissions that you need to enable or disable virtual displays on a VM, ask your administrator to grant you theCompute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM role on the project. For more information about granting roles, seeManage access to projects, folders, and organizations.

This predefined role contains the permissions required to enable or disable virtual displays on a VM. To see the exact permissions that are required, expand theRequired permissions section:

Required permissions

The following permissions are required to enable or disable virtual displays on a VM:

  • To enable or disable virtual displays on an existing VM:compute.instances.updateDisplayDevice on the VM
  • To create a VM with virtual displays enabled:
    • compute.instances.create on the project
    • To use a custom image to create the VM:compute.images.useReadOnly on the image
    • To use a snapshot to create the VM:compute.snapshots.useReadOnly on the snapshot
    • To use an instance template to create the VM:compute.instanceTemplates.useReadOnly on the instance template
    • To assign alegacy network to the VM:compute.networks.use on the project
    • To specify a static IP address for the VM:compute.addresses.use on the project
    • To assign an external IP address to the VM when using a legacy network:compute.networks.useExternalIp on the project
    • To specify a subnet for the VM:compute.subnetworks.use on the project or on the chosen subnet
    • To assign an external IP address to the VM when using a VPC network:compute.subnetworks.useExternalIp on the project or on the chosen subnet
    • To set VM instance metadata for the VM:compute.instances.setMetadata on the project
    • To set tags for the VM:compute.instances.setTags on the VM
    • To set labels for the VM:compute.instances.setLabels on the VM
    • To set a service account for the VM to use:compute.instances.setServiceAccount on the VM
    • To create a new disk for the VM:compute.disks.create on the project
    • To attach an existing disk in read-only or read-write mode:compute.disks.use on the disk
    • To attach an existing disk in read-only mode:compute.disks.useReadOnly on the disk

You might also be able to get these permissions withcustom roles or otherpredefined roles.

Pricing

There are no costs associated with enabling or disabling virtual displays on aVM.

Restrictions

For VMs with virtual displays enabled, the following limitations apply:

  • If your VM is running an x64-based Windows OS image earlier than versionv20190312, then, after enabling virtual displays on your VM, you mustinstall the virtual display driver as described in thisdocument. If your VM is running a later OS image version, then the driver isalready installed on the OS image.

  • You can use a virtual display device on the VM only after the guest OS bootsand initializes the virtual display driver.

  • You can't use virtual display devices on VMs that run theSandy Bridge CPU platform.

  • You can't use virtual display devices onT2A Arm VMs.

Enable virtual displays on a VM

To enable virtual displays on a VM, select one of the following methodsdescribed in this document:

If your VM is running an x64-based Windows OS image earlier than versionv20190312, then, after you enable virtual displays on the VM,install the virtual display driver as described in thisdocument.

Create a VM with virtual displays enabled

To create a VM with virtual displays enabled, select one of the followingoptions:

Console

  1. In the Google Cloud console, go to theCreate an instance page.

    Go to Create an instance

  2. Specify the properties for the VM, including the name, zone, and machinetype.

  3. In theDisplay device section, select theEnable display devicecheckbox.

  4. To create the VM, clickCreate.

gcloud

To create a VM with virtual displays enabled, use thegcloud compute instances create commandwith the--enable-display-device flag.

gcloud compute instances createVM_NAME \    --enable-display-device \    --machine-type=MACHINE_TYPE \    --zone=ZONE

Replace the following:

  • VM_NAME: the name of the VM.

  • MACHINE_TYPE: the machine type to use for the VM.

  • ZONE: the zone in which to create the VM.

Terraform

To create a VM with virtual displays enabled, use theTerraform resourcewith theenable_display argument set totrue.

For example, to create a VM in zoneus-central1-c with virtual displaysenabled, and specifyf1-micro as the machine type, use the followingresource:

resource "google_compute_instance" "instance_virtual_display" {  name         = "instance-virtual-display"  machine_type = "f1-micro"  zone         = "us-central1-c"  # Set the below to true to enable virtual display  enable_display = true  boot_disk {    initialize_params {      image = "debian-cloud/debian-11"    }  }  network_interface {    # A default network is created for all GCP projects    network = "default"    access_config {    }  }}

REST

To create a VM with virtual displays enabled, make aPOST request to theinstances.insert method.In the request body, include theenableDisplay field set totrue.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances{  "name": "VM_NAME",  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",  "disks": [    {      "boot": true,      "initializeParams": {        "sourceImage": "project/IMAGE_PROJECT/global/images/IMAGE"      }    }  ],  "displayDevice": {    "enableDisplay": true  },  "networkInterfaces": [    {      "network": "global/networks/default"    }  ]}

Replace the following:

  • PROJECT_ID: the ID of the project in which to createthe VM.

  • ZONE: the zone in which to create the VM.

  • VM_NAME: the name of the VM.

  • MACHINE_TYPE: the machine type to use for the VM.

  • IMAGE_PROJECT: the image project that contains the OSimage—for example,debian-cloud. For more information about thesupported image projects, seePublic images.

  • IMAGE: specify one of the following:

    • A specific version of the OS image—for example,debian-12-bookworm-v20240617.

    • Animage family, which must beformatted asfamily/IMAGE_FAMILY. This specifiesthe most recent, non-deprecated OS image. For example, if youspecifyfamily/debian-12, the latest version in the Debian 12image family is used. For more information about using imagefamilies, seeImage families best practices.

For more information about creating a VM, seeCreate and start a Compute Engine instance.

Enable virtual displays on an existing VM

Before enabling virtual displays on a VM, make sure tostop the VM.

To enable virtual displays on an existing VM, select one of the followingoptions:

Console

  1. In the Google Cloud console, go to theVM instances page.

    Go to the VM instances page

  2. In theName column, click the name of the VM.

    The details page of the VM opens.

  3. ClickEdit.

    The page to edit the VM's properties opens.

  4. In theDisplay device section, select theEnable display devicecheckbox.

  5. ClickSave.

gcloud

To enable virtual displays on an existing VM, use thegcloud compute instances update commandwith the--enable-display-device flag.

gcloud compute instances updateVM_NAME \    --enable-display-device \    --zone=ZONE

Replace the following:

  • VM_NAME: the name of the VM.

  • ZONE: the zone where the VM is located.

REST

To enable virtual displays on an existing VM, make aPOST request to theinstances.updateDisplayDevice method.In the request body, include theenableDisplay field and set it totrue.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateDisplayDevice{  "enableDisplay": true}

Replace the following:

  • PROJECT_ID: the ID of the project where the VM islocated.

  • ZONE: the zone where the VM is located.

  • VM_NAME: the name of the VM.

Disable virtual displays on an existing VM

Before disabling virtual displays on a VM, make sure tostop the VM.

To disable virtual displays on an existing VM, select one of the followingoptions:

Console

  1. In the Google Cloud console, go to theVM instances page.

    Go to the VM instances page

  2. In theName column, click the name of the VM.

    The details page of the VM opens.

  3. ClickEdit.

    The page to edit the VM's properties opens.

  4. In theDisplay device section, clear theEnable display devicecheckbox.

  5. ClickSave.

gcloud

To disable virtual displays on an existing VM, use thegcloud compute instances update commandwith the--no-enable-display-device flag.

gcloud compute instances updateVM_NAME \    --no-enable-display-device \    --zone=ZONE

Replace the following:

  • VM_NAME: the name of the VM.

  • ZONE: the zone where the VM is located.

REST

To disable virtual displays on an existing VM, make aPOST request to theinstances.updateDisplayDevice method.In the request body, include theenableDisplay field and set it tofalse.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateDisplayDevice{  "enableDisplay": false}

Replace the following:

  • PROJECT_ID: the ID of the project where the VM islocated.

  • ZONE: the zone where the VM is located.

  • VM_NAME: the name of the VM.

Install the virtual display driver

If you've enabled virtual displays on a Windows VM that runs a Windows OS imageearlier than versionv20190312, then, to use a virtual display device on theVM, you must install the virtual display driver provided by Google Cloud. If theVM runs a more recent OS image version, then the driver is already installed andyou can skip this section.

To install the virtual display driver on a VM with virtual displays enabled, dothe following:

  1. Connect to the Windows VM.

  2. Open a PowerShell terminal as an administrator.

  3. Install thegoogle-compute-engine-driver-gga component:

    googet install google-compute-engine-driver-gga
  4. Restart the VM.

After you restart the VM, you canverify that the driver was correctly installed asdescribed in the next section.

Verify the virtual display driver installation

If you had to manuallyinstall the virtual display driver ona Windows VM as described in the previous section, then you can verify that theinstallation was successful by doing the following:

  1. If you haven't already,connect to the Windows VM.

  2. Open Device Manager.

  3. In theDevice Manager list, in theDisplay adapters list, make surethat the Google Graphics Array (GGA) driver is listed.

    If the driver isn't listed, thenreinstall the virtual display driver as described in thisdocument.

What's next

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-12-15 UTC.