---
name: "agp"
section: "4"
platform: "linux"
package: "freebsd-manpages"
version: "6.0-5"
release: "Debian 4.0 (Etch)"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/agp"
---

# agp(4)

generic interface to the Accelerated Graphics Port (AGP)

## NAME

**agp** – generic interface to the Accelerated Graphics Port (AGP)

## SYNOPSIS

**device agp**

## DESCRIPTION

The **agp** driver provides uniform, abstract methods for controlling the following devices:

- Ali M1541 host-to-AGP bridge

- AMD 751 and 761 host-to-AGP bridges

- Intel i820, i840, i845, i850, and i860 host-to-AGP bridge

- Intel i810, i810-DC100, i810E, and i815 SVGA controllers

- Intel 82443GX host-to-AGP bridge

- SiS 5591 host-to-AGP bridge

The most common application of **agp** is for running XFree86(1) on the Intel i81x controllers.

## IOCTLS

The following [ioctl(2)](/ioctl/2.md) operations can be performed on */dev/agpgart*, which are defined in ⟨sys/agpio.h⟩:

- AGPIOC\_INFO

  Returns state of the **agp** system. The result is a pointer to the following structure:

  ```
  typedef struct _agp_info {
  	agp_version version;  /* version of the driver        */
  	u_int32_t bridge_id;  /* bridge vendor/device         */
  	u_int32_t agp_mode;   /* mode info of bridge          */
  	off_t aper_base;      /* base of aperture             */
  	size_t aper_size;     /* size of aperture             */
  	size_t pg_total;      /* max pages (swap + system)    */
  	size_t pg_system;     /* max pages (system)           */
  	size_t pg_used;       /* current pages used           */
  } agp_info;
  ```

- AGPIOC\_ACQUIRE

  Acquire control of the AGP chipset for use by this client. Returns EBUSY if the AGP chipset is already acquired by another client.

- AGPIOC\_RELEASE

  Release control of the AGP chipset. This does not unbind or free any allocated memory, which is the responsibility of the client to handle if necessary.

- AGPIOC\_SETUP

  Enable the AGP hardware with the relevant mode. This [ioctl(2)](/ioctl/2.md) takes the following structure:

  ```
  typedef struct _agp_setup {
  	u_int32_t agp_mode;   /* mode info of bridge */
  } agp_setup;
  ```

  The mode bits are defined in ⟨sys/agpio.h⟩.

- AGPIOC\_ALLOCATE

  Allocate physical memory suitable for mapping into the AGP aperture. This [ioctl(2)](/ioctl/2.md) takes the following structure:

  ```
  typedef struct _agp_allocate {
  	int key;              /* tag of allocation            */
  	size_t pg_count;      /* number of pages              */
  	u_int32_t type;       /* 0 == normal, other devspec   */
  	u_int32_t physical;   /* device specific (some devices
  			       * need a phys address of the
  			       * actual page behind the gatt
  			       * table)                       */
  } agp_allocate;
  ```

  Returns a handle to the allocated memory.

- AGPIOC\_DEALLOCATE

  Free the previously allocated memory associated with the handle passed.

- AGPIOC\_BIND

  Bind the allocated memory at given offset with the AGP aperture. Returns EINVAL if the memory is already bound or the offset is not at AGP page boundary. This [ioctl(2)](/ioctl/2.md) takes the following structure:

  ```
  typedef struct _agp_bind {
  	int key;         /* tag of allocation            */
  	off_t pg_start;  /* starting page to populate    */
  } agp_bind;
  ```

  The tag of allocation is the handle returned by AGPIOC\_ALLOCATE.

- AGPIOC\_UNBIND

  Unbind memory from the AGP aperture. Returns EINVAL if the memory is not bound. This [ioctl(2)](/ioctl/2.md) takes the following structure:

  ```
  typedef struct _agp_unbind {
  	int key;                /* tag of allocation         */
  	u_int32_t priority;     /* priority for paging out   */
  } agp_unbind;
  ```

## FILES

- */dev/agpgart*

  AGP device node.

## SEE ALSO

[X(7)](/X/7.md) (*ports/x11/xorg*)

## HISTORY

The **agp** driver first appeared in FreeBSD 4.1.
