---
name: "XdbeGetVisualInfo"
section: "3"
platform: "linux"
package: "libxext"
version: "1.3.7-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XdbeGetVisualInfo"
---

# XdbeGetVisualInfo(3)

Get dbe Visual Information

## NAME

XdbeGetVisualInfo - Get dbe Visual Information

## SYNOPSIS

```
#include <X11/extensions/Xdbe.h>

XdbeScreenVisualInfo *XdbeGetVisualInfo(
    Display  *dpy,
    Drawable *screen_specifiers,
    int      *num_screens)
```

## DESCRIPTION

This function returns information about which visuals support double buffering.  The argument *num\_screens* specifies how many elements there are in the *screen\_specifiers* list. Each drawable in *screen\_specifiers* designates a screen for which the supported visuals are being requested. If *num\_screens* is zero, information for all screens is requested. In this case, upon return from this function, *num\_screens* will be set to the number of screens that were found. If an error occurs, this function returns NULL, else it returns a pointer to a list of **XdbeScreenVisualInfo** structures of length *num\_screens.* The nth element in the returned list corresponds to the nth drawable in the *screen\_specifiers* list, unless *num\_screens* was passed in with the value zero, in which case the nth element in the returned list corresponds to the nth screen of the server, starting with screen zero. The **XdbeScreenVisualInfo** structure has the following fields:

```
     int            count
     XdbeVisualInfo *visinfo
```

*count* specifies the number of items in *visinfo.* *visinfo* specifies a list of visuals, depths, and performance hints for this screen.

The **XdbeVisualInfo** structure has the following fields:

```
     VisualID visual
     int      depth
     int      perflevel
```

*visual* specifies one visual ID that supports double-buffering. *depth* specifies the depth of the visual. *perflevel* is a performance hint.

The only operation defined on a *perflevel* is comparison to a *perflevel* of another visual on the same screen. The visual having the higher *perflevel* is likely to have better double-buffering graphics performance than the visual having the lower *perflevel*. Nothing can be deduced from the following: the magnitude of the difference of two *perflevels*, a *perflevel* value in isolation, or comparing *perflevels* from different servers.

## ERRORS

- BadDrawable

  One or more values passed in *screen\_specifiers* is not a valid drawable.

## SEE ALSO

[**DBE**(3)](/DBE/3.md), [**XdbeAllocateBackBufferName**(3)](/XdbeAllocateBackBufferName/3.md), [**XdbeBeginIdiom**(3)](/XdbeBeginIdiom/3.md), [**XdbeDeallocateBackBufferName**(3)](/XdbeDeallocateBackBufferName/3.md), [**XdbeEndIdiom**(3)](/XdbeEndIdiom/3.md), [**XdbeFreeVisualInfo**(3)](/XdbeFreeVisualInfo/3.md), [**XdbeGetBackBufferAttributes**(3)](/XdbeGetBackBufferAttributes/3.md), [**XdbeQueryExtension**(3)](/XdbeQueryExtension/3.md), [**XdbeSwapBuffers**(3)](/XdbeSwapBuffers/3.md).
