8bd7cb6a69
* There is no -indent option to .Bd or .Bl, although you would never know that from its frequent use in this tree. There is a "-offset indent" combination that makes sense, and you can certainly say "-width indent". * Also, you can't markup the -width option argument, tho you CAN use a callable macro. So "-width Ar filename" doesn't make sense, but either "-width Ar" or "-width filename" does, as might something like "-width xxfilename" for a little extra space. * There are a lot of needlessly complex hanging tag macros in man4 used to create simple item lists. Those should be simplified one of these days before someone copies and edits yet another man4 page.
248 lines
7.3 KiB
Groff
248 lines
7.3 KiB
Groff
.\" $NetBSD: agp.4,v 1.7 2002/02/07 03:15:07 ross Exp $
|
|
.\"
|
|
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to The NetBSD Foundation
|
|
.\" by Gregory McGarry.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the NetBSD
|
|
.\" Foundation, Inc. and its contributors.
|
|
.\" 4. Neither the name of The NetBSD Foundation nor the names of its
|
|
.\" contributors may be used to endorse or promote products derived
|
|
.\" from this software without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.Dd September 11, 2001
|
|
.Dt AGP 4
|
|
.Os
|
|
.Sh NAME
|
|
.Nm agp
|
|
.Nd accelerated graphics port driver
|
|
.Sh SYNOPSIS
|
|
.Cd "agp* at pchb?"
|
|
.Sh DESCRIPTION
|
|
The
|
|
.Nm
|
|
driver provides machine-independent support for the accelerated
|
|
graphics port (AGP) found on many PC-based and PCI systems. The AGP
|
|
specification was designed by Intel.
|
|
.Pp
|
|
The AGP chipset is positioned between the PCI-Host bridge and the
|
|
graphics accelerator to provide a high-performance dedicated graphics
|
|
bus. The specification currently supports a peak bandwidth of 528 MB/s.
|
|
.Pp
|
|
The
|
|
.Nm
|
|
driver supports the following chipsets:
|
|
.Pp
|
|
.Bl -dash -compact -offset indent
|
|
.It
|
|
ALI M1541 host-to-AGP bridge
|
|
.It
|
|
AMD 751 and 761 host-to-AGP bridges
|
|
.It
|
|
Intel 82810, 82810-DC100, 82810E, and 82815 SVGA controllers
|
|
.It
|
|
SiS 5591 host-to-AGP bridge
|
|
.It
|
|
VIA
|
|
.El
|
|
.Pp
|
|
The
|
|
.Nm
|
|
driver also provides an interface to user processes for use by X
|
|
servers. A user process communicates to the device initially by means
|
|
of
|
|
.Xr ioctl 2
|
|
calls. The calls supported are:
|
|
.Bl -tag -width indent
|
|
.It Dv AGPIOC_INFO
|
|
Get AGP information, setting the members in the
|
|
.Em agp_info
|
|
structure as defined in <sys/agpio.h>:
|
|
.Bd -literal
|
|
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;
|
|
.Ed
|
|
.It Dv AGPIOC_ACQUIRE
|
|
Acquire AGP.
|
|
.It Dv AGPIOC_RELEASE
|
|
Release AGP.
|
|
.It Dv AGPIOC_SETUP
|
|
Setup AGP, using the members in the
|
|
.Em agp_setup
|
|
structure as defined in <sys/agpio.h>:
|
|
.Bd -literal
|
|
typedef struct _agp_setup {
|
|
u_int32_t agp_mode; /* mode info of bridge */
|
|
} agp_setup;
|
|
.Ed
|
|
.It Dv AGPIOC_ALLOCATE
|
|
Allocate AGP space, using and setting the members in the
|
|
.Em agp_allocate
|
|
structure as defined in <sys/agpio.h>:
|
|
.Bd -literal
|
|
typedef struct _agp_allocate {
|
|
int key; /* tag of allocation */
|
|
size_t pg_count; /* number of pages */
|
|
u_int32_t type; /* 0 == normal, other devspec */
|
|
paddr_t physical; /* device specific (some devices
|
|
* need a phys address of the
|
|
* actual page behind the gatt
|
|
* table) */
|
|
} agp_allocate;
|
|
.Ed
|
|
.It Dv AGPIOC_DEALLOCATE
|
|
Deallocate AGP space.
|
|
.It Dv AGPIOC_BIND
|
|
Bind AGP space, using the members in the
|
|
.Em agp_bind
|
|
structure as defined in <sys/agpio.h>:
|
|
.Bd -literal
|
|
typedef struct _agp_bind {
|
|
int key; /* tag of allocation */
|
|
off_t pg_start; /* starting page to populate */
|
|
} agp_bind;
|
|
.Ed
|
|
.It Dv AGPIOC_UNBIND
|
|
Unbind AGP space, using the members in the
|
|
.Em agp_unbind
|
|
structure as defined in <sys/agpio.h>:
|
|
.Bd -literal
|
|
typedef struct _agp_unbind {
|
|
int key; /* tag of allocation */
|
|
u_int32_t priority; /* priority for paging out */
|
|
} agp_unbind;
|
|
.Ed
|
|
.El
|
|
.Sh FILES
|
|
.Bl -tag -width /dev/agpgart -compact
|
|
.It Pa /dev/agp?
|
|
AGP GART device special files
|
|
.It Pa /dev/agpgart
|
|
AGP GART device special file
|
|
.El
|
|
.Sh EXAMPLES
|
|
This short code fragment is an example of opening the AGP device
|
|
and performing some basic operations:
|
|
.Bd -literal
|
|
#include <sys/types.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/agpio.h>
|
|
#include <fcntl.h>
|
|
#include <err.h>
|
|
|
|
int
|
|
main(int argc, char **argv)
|
|
{
|
|
int fd;
|
|
agp_info info;
|
|
agp_allocate alloc;
|
|
agp_setup setup;
|
|
agp_bind bind;
|
|
agp_unbind unbind;
|
|
|
|
fd = open("/dev/agp0", O_RDWR);
|
|
if (fd < 0)
|
|
err(1, "open");
|
|
|
|
if (ioctl(fd, AGPIOC_INFO, &info) < 0)
|
|
err(2, "ioctl AGPIOC_INFO");
|
|
|
|
printf("version: %u.%u\\n", info.version.major,
|
|
info.version.minor);
|
|
|
|
printf("id: %x\\n", info.bridge_id);
|
|
printf("mode: %x\\n", info.agp_mode);
|
|
printf("base: %x\\n", info.aper_base);
|
|
printf("size: %uM\\n", info.aper_size);
|
|
printf("total mem: %u\\n", info.pg_total);
|
|
printf("system mem: %u\\n", info.pg_system);
|
|
printf("used mem: %u\\n\\n", info.pg_used);
|
|
|
|
setup.agp_mode = info.agp_mode;
|
|
|
|
if (ioctl(fd, AGPIOC_SETUP, &setup) < 0)
|
|
err(3, "ioctl AGPIOC_SETUP");
|
|
|
|
if (ioctl(fd, AGPIOC_ACQUIRE, 0) < 0)
|
|
err(3, "ioctl AGPIOC_ACQUIRE");
|
|
|
|
alloc.type = 0;
|
|
alloc.pg_count = 64;
|
|
|
|
if (ioctl(fd, AGPIOC_ALLOCATE, &alloc) < 0)
|
|
err(4, "ioctl AGPIOC_ALLOCATE");
|
|
|
|
printf("alloc key %d, paddr %x\\n", alloc.key, alloc.physical);
|
|
if (ioctl(fd, AGPIOC_INFO, &info) < 0)
|
|
err(5, "ioctl AGPIOC_INFO");
|
|
|
|
bind.key = alloc.key;
|
|
bind.pg_start = 0x1000;
|
|
|
|
if (ioctl(fd, AGPIOC_BIND, &bind) < 0)
|
|
err(6, "ioctl AGPIOC_BIND");
|
|
|
|
printf("used mem now: %u\\n\\n", info.pg_used);
|
|
|
|
unbind.key = alloc.key;
|
|
unbind.priority = 0;
|
|
|
|
if (ioctl(fd, AGPIOC_UNBIND, &unbind) < 0)
|
|
err(6, "ioctl AGPIOC_BIND");
|
|
|
|
if (ioctl(fd, AGPIOC_DEALLOCATE, &alloc.key) < 0)
|
|
err(6, "ioctl AGPIOC_DEALLOCATE");
|
|
|
|
if (ioctl(fd, AGPIOC_RELEASE, 0) < 0)
|
|
err(7, "ioctl AGPIOC_RELEASE");
|
|
|
|
close(fd);
|
|
|
|
printf("agp test successful\\n");
|
|
|
|
return 0;
|
|
}
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr ioctl 2 ,
|
|
.Xr pci 4
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
driver first appeared in
|
|
.Fx 4.1 .
|
|
It was adopted in
|
|
.Nx 1.6 .
|