Chapter 16. Support for the X Resize and Rotate Extension

Table of Contents

RandR Support
RandR 1.1 Rotation Behavior
Output Properties
Official Properties
Unofficial Properties
Known Issues

This NVIDIA driver release contains support for the X Resize and Rotate (RandR) Extension versions 1.1, 1.2, and 1.3. The version of the RandR extension advertised to X clients is controlled by the X server: the RandR extension and protocol are provided by the X server, which routes protocol requests to the NVIDIA X driver. Run xrandr --version to check the version of RandR provided by the X server.

RandR Support

Specific supported features include:

  • Modes can be set per-screen, and the X screen can be resized through the RRSetScreenConfig request (e.g., with xrandr(1)'s '--size' and '--rate' command line options).

  • The X screen can be resized with the RandR 1.2 RRSetScreenSize request (e.g., with xrandr(1)'s '--fb' command line option).

  • The state of the display hardware can be queried with the RandR 1.2 and 1.3 RRGetScreenResources, RRGetScreenResourcesCurrent, RRGetOutputInfo, and RRGetCrtcInfo requests (e.g., with xrandr(1)'s '--query' command line option).

  • Modes can be set with RandR CRTC granularity with the RandR 1.2 RRSetCrtcConfig request. E.g., xrandr --output DVI-I-2 --mode 1920x1200.

  • Rotation can be set with RandR CRTC granularity with the RandR 1.2 RRSetCrtcConfig request. E.g., xrandr --output DVI-I-2 --mode 1920x1200 --rotation left.

  • Per-CRTC transformations can be manipulated with the RandR 1.3 RRSetCrtcTransform and RRGetCrtcTransform requests. E.g., xrandr --output DVI-I-3 --mode 1920x1200 --transform 43.864288330078125,21.333328247070312,-16384,0,43.864288330078125,0,0,0.0321197509765625,19.190628051757812.

The configurability exposed through RandR is also available through the MetaMode syntax, independent of X server version. See MetaModes for more details. As an example, these two commands are equivalent:

  xrandr --output DVI-I-2 --mode 1280x1024 --pos 0x0 --rotate left \
    --output DVI-I-3 --mode 1920x1200 --pos 0x0

  nvidia-settings --assign CurrentMetaMode="DVI-I-2: 1280x1024 +0+0 \
    { Rotation=left }, DVI-I-3: 1920x1200 +0+0"

RandR 1.1 Rotation Behavior

On X servers that support RandR 1.2 or later, when an RandR 1.1 rotation request is received (e.g., xrandr --orientation left), the X server translates the RandR 1.1 screen rotation request into an RandR 1.2 CRTC rotation request by picking one RandR CRTC to rotate, and turning all other RandR CRTCs off.

On X servers that do not support RandR 1.2 or later, the NVIDIA X driver does not advertise RandR rotation support. On such X servers, it is recommended to configure rotation through MetaModes, instead.

Output Properties

The NVIDIA FreeBSD driver supports a number of output device properties.

Official Properties

Properties that do not start with an underscore are officially documented in the file randrproto.txt in X.Org's randrproto package. See that file for a full description of these properties.

  • ConnectorNumber

    This property groups RandR outputs by their physical connectors. For example, DVI-I ports have both an analog and a digital output, which is represented in RandR by two different output objects. One DVI-I port may be represented by RandR outputs DVI-I-0 with SignalFormat TMDS (transition-minimized differential signaling, a digital signal format) and DVI-I-1 with SignalFormat VGA, representing the analog part. In this case, both RandR outputs would have the same value of ConnectorNumber.

  • ConnectorType

    This property lists the physical type of the connector. For example, in the DVI-I example above, both DVI-I-0 and DVI-I-1 would have a ConnectorType of DVI-I.

  • EDID

    This property contains the raw bytes of the display's extended display identification data. This data is intended for applications to use to glean information about the monitor connected.

  • SignalFormat

    This property describes the type of signaling used to send image data to the display device. For example, an analog device connected to a DVI-I port might use VGA as its signaling format.

Unofficial Properties

Properties whose names begin with an underscore are not specified by X.Org. They may be removed or modified in future driver releases. The NVIDIA FreeBSD driver supports the following unofficial properties:

  • _ConnectorLocation

    This property describes the physical location of the connector. On add-in graphics boards, connector location 0 should generally be the position closest to the motherboard, with increasing location numbers indicating connectors progressively farther away.

    Type INTEGER
    Format 32
    # Items 1
    Flags Immutable, Static
    Range 0-

  • _GUID

    DisplayPort 1.2 specifies that all devices must have a globally-unique identifier, referred to as a GUID. When a GUID is available, the _GUID property contains its raw bytes.

    Type INTEGER
    Format 8
    # Items 16
    Flags Immutable
    Range 0-

Known Issues

  • RandR per-CRTC gamma manipulation through the RandR 1.2 RRGetCrtcGammaSize, RRGetCrtcGamma, and RRSetCrtcGamma requests is not yet implemented.

  • RandR per-CRTC panning configuration through the RandR 1.3 RRGetPanning and RRSetPanning requests is not yet implemented.

  • Rotation and Transformations (configured either through RandR or MetaModes) are not yet supported with SLI, Workstation overlays, or stereo.

  • The RandR 1.2 X configuration options provided by the XFree86 DDX implementation and documented in xorg.conf(5) are not yet supported.

  • Transformations (configured either through RandR or MetaModes) are not yet correctly clipped.