Multi-Monitor Support

Overview

The macOS VDA provides an out-of-the-box multi-monitor support for up to nine monitors.

This section tells you how to configure a macOS VDA for different monitor resolutions and layouts.

Virtual session desktop

macOS VDA also has the concept of a multi-monitor virtual desktop like the windows VDA.

A multi-monitor virtual desktop is based on the bounding rectangle of all monitors and not the actual layout of the monitors.

So, theoretically, the area of the virtual desktop can be larger than the area covered by the monitors of the client.

Multi-monitor layout

Virtual session desktop size

The origin of a virtual session desktop is calculated from the top-left corner of the bounding rectangle of all monitors.

That point locates at X = 0, Y = 0, where X and Y are the horizontal and vertical axes, respectively.

The width of the virtual session desktop is the horizontal distance, in pixels, from the origin to the top-right corner of the bounding rectangle of all monitors.

Similarly, the height of the virtual session desktop is the vertical distance, in pixels, from the origin to the bottom-left corner of the bounding rectangle of all monitors.

This calculation is important for the following reasons:

  • Allowing for different client monitor layouts
  • Understanding memory usage on the macOS VDA

Allowing for different client monitor configurations

Knowing the maximum size of the virtual desktop for your client monitor configurations allow you to configure the macOS VDA to be flexible in terms of client monitor configurations.

Consider the following client monitor configuration:

Client monitor configuration 1

The diagram shows an out-of-the-box multi-monitor configuration with two monitors, each with a resolution of 2560×1600.

Now, consider connecting to the same macOS VDA with the following client monitor configuration:

Client monitor configuration 2

If each monitor in the above diagram has a resolution of 2560×1600, the out-of-the-box multi-monitor configuration parameters are insufficient. The maximum height is too small to accommodate the virtual session desktop for this monitor layout. To accommodate the client monitor configuration in this example, you must set the macOS VDA virtual desktop to a size of 4160×2560.

For the greatest flexibility in a multi-monitor configuration, find the smallest bounding rectangle of all monitor layouts you want to support. For configurations with two 2560×1600 monitors, the possible layouts include:

  • Monitor1 2560×1600 and Monitor2 2560×1600
  • Monitor1 1600×2560 and Monitor2 2560×1600
  • Monitor1 2560×1600 and Monitor2 1600×2560
  • Monitor1 1600×2560 and Monitor2 1600×2560

To accommodate all the layouts above, you need a virtual session desktop of 5120×2560. It is the smallest bounding rectangle that can contain all the desired layouts.

If all your users have only one monitor in the typical landscape layout, set the maximum virtual desktop size to the highest resolution of the monitor. The default configuration is 8000×8000 and two monitors.

Only one monitor

Note:

If a desktop displays at an improper resolution in a multi-monitor setup, adjust Dots Per Inch (DPI) settings on the Citrix Workspace App. For more information, see Knowledge Center article CTX230017.

Understanding memory usage on the macOS VDA

Knowing the virtual desktop size allows you to calculate the amount of memory used by each HDX session. This memory is the memory allocated to each session for its graphics data when the session begins. It does not change for the life of the session. While this memory is not the total amount of memory used for the session, it is the easiest way of calculating per-session memory usage.

To calculate how much memory is allocated to each HDX session, use the following formula:

M = X × Y × Z,

Where:

  • M is the amount of memory used for session graphics.
  • X is the width of the virtual session desktop.
  • Y is the height of the virtual session desktop.
  • Z is the color depth of the HDX session window. The value is in bytes, not bits, so use 4 for 32-bit color.

NOTE:

The color depth of the X server starts and cannot change with the life of the session (from login through disconnects/reconnects until logoff). Hence, the macOS VDA always allocates the virtual session desktop as 32-bit and down samples to the color depth requested for the session.

For example, for a 1024×768 session, the memory used is:

1024 × 768 × 4 / 2^20 MB = 3 MB

It is important to understand the memory usage to understand the increasing session density of VDAs.

Consider the following client monitor configuration:

Example client monitor configuration with wasted memory

A virtual session desktop size needs to be 5120×3200 to accommodate the client monitor configuration if each monitor has a resolution of 2560×1600

Note:

The gray area is unused and equates to 16,384,000 (that is, 2560 x 1600 x 4) bytes of wasted memory.

Citrix multi-monitor configuration parameters

You can control the multi-monitor functionality of the macOS VDA by using the following configuration parameters:

  • MaxScreenNum

    Parameter: HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Citrix/Thinwire/MaxScreenNum

    Description: Number of monitors to support

    Type: DWORD

    Default: 2

    Maximum: 9 for standard VDA

  • MaxFbWidth

    Parameter: HKEY_LOCAL_MACHINE /System/CurrentControlSet/Control/Citrix/Thinwire/MaxFbWidth

    Description: Maximum width of a virtual session desktop

    Type: DWORD

    Default: 5,120

    Maximum: 16,384 (8,192 x 2)

  • MaxFbHeight

    Parameter: HKEY_LOCAL_MACHINE /System/CurrentControlSet/Control/Citrix/Thinwire/MaxFbHeight

    Description: Maximum height of a virtual session desktop

    Type: DWORD

    Default: 1,600

    Maximum: 16,384 (8,192 x 2)

Changing the macOS VDA multi-monitor configuration

The following section outlines how to enable, configure, and disable the multi-monitor functionality on the macOS VDA.

Set the maximum number of monitors by using:

sudo ctxreg create -k " HKEY_LOCAL_MACHINE \System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "MaxScreenNum" -d "NumMons" --force
<!--NeedCopy-->

Where NumMons is a value between 1 and 9 for standard VDA or 1 and 4 for HDX 3D Pro VDA.

Set the maximum width of a virtual desktop session by using:

sudo ctxreg create -k " HKEY_LOCAL_MACHINE \System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "MaxFbWidth" -d " MaxWidth" --force
<!--NeedCopy-->

Where MaxWidth is a value between 1,024 and 16,384.

Set the maximum height of a virtual session desktop by using:

sudo ctxreg create -k " HKEY_LOCAL_MACHINE \System\CurrentControlSet\Control\Citrix\Thinwire" -t "REG_DWORD" -v "MaxFbHeight" -d " MaxHeight" --force
<!--NeedCopy-->

Where MaxHeight is a value between 1,024 and 16,384.

Multi-Monitor Support