AGP(4) | Device Drivers Manual | AGP(4) |
agp
— generic
interface to the Accelerated Graphics Port (AGP)
device agp
The agp
driver provides uniform, abstract
methods for controlling the following devices:
The most common application of agp
is for
running X(7) on the Intel i81x controllers.
The following ioctl(2) operations can be
performed on /dev/agpgart, which are defined in
<sys/agpio.h>
:
AGPIOC_INFO
agp
system. The result is a
pointer to the following structure:
typedef struct _agp_info { agp_version version; /* version of the driver */ uint32_t bridge_id; /* bridge vendor/device */ uint32_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
EBUSY
if the AGP chipset is already acquired by
another client.AGPIOC_RELEASE
AGPIOC_SETUP
typedef struct _agp_setup { uint32_t agp_mode; /* mode info of bridge */ } agp_setup;
The mode bits are defined in
<sys/agpio.h>
.
AGPIOC_ALLOCATE
typedef struct _agp_allocate { int key; /* tag of allocation */ size_t pg_count; /* number of pages */ uint32_t type; /* 0 == normal, other devspec */ uint32_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
AGPIOC_BIND
EINVAL
if the memory is already bound or the
offset is not at AGP page boundary. This ioctl(2) 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
EINVAL
if the memory is not bound. This
ioctl(2) takes the following structure:
typedef struct _agp_unbind { int key; /* tag of allocation */ uint32_t priority; /* priority for paging out */ } agp_unbind;
X(7) (ports/x11/xorg)
The agp
driver first appeared in
FreeBSD 4.1.
November 28, 2007 | Debian |