mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-07 22:48:30 +02:00
Implement high-level AGP API
This commit is contained in:
parent
e9efb5e17a
commit
6d4246cc8c
4 changed files with 136 additions and 3 deletions
133
libdrm/xf86drm.c
133
libdrm/xf86drm.c
|
|
@ -745,6 +745,139 @@ int drmDestroyDrawable(int fd, drmDrawable handle)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int drmAgpAcquire(int fd)
|
||||
{
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_ACQUIRE)) return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int drmAgpRelease(int fd)
|
||||
{
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_RELEASE)) return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int drmAgpEnable(int fd, unsigned long mode)
|
||||
{
|
||||
drm_agp_mode_t m;
|
||||
|
||||
m.mode = mode;
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_ENABLE, &m)) return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long drmAgpAlloc(int fd, unsigned long size)
|
||||
{
|
||||
drm_agp_buffer_t b;
|
||||
|
||||
b.size = size;
|
||||
b.handle = 0;
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_ALLOC, &b)) return 0;
|
||||
return b.handle;
|
||||
}
|
||||
|
||||
int drmAgpFree(int fd, unsigned long handle)
|
||||
{
|
||||
drm_agp_buffer_t b;
|
||||
|
||||
b.size = 0;
|
||||
b.handle = handle;
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_FREE, &b)) return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long drmAgpBind(int fd, unsigned long handle, unsigned long offset)
|
||||
{
|
||||
drm_agp_binding_t b;
|
||||
|
||||
b.handle = handle;
|
||||
b.offset = offset;
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_BIND, &b)) return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int drmAgpUnbind(int fd, unsigned long handle)
|
||||
{
|
||||
drm_agp_binding_t b;
|
||||
|
||||
b.handle = handle;
|
||||
b.offset = 0;
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_UNBIND, &b)) return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int drmAgpVersionMajor(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.agp_version_major;
|
||||
}
|
||||
|
||||
int drmAgpVersionMinor(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.agp_version_minor;
|
||||
}
|
||||
|
||||
unsigned long drmAgpGetMode(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.mode;
|
||||
}
|
||||
|
||||
unsigned long drmAgpBase(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.aperture_base;
|
||||
}
|
||||
|
||||
unsigned long drmAgpSize(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.aperture_size;
|
||||
}
|
||||
|
||||
unsigned long drmAgpMemoryUsed(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.memory_used;
|
||||
}
|
||||
|
||||
unsigned long drmAgpMemoryAvail(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.memory_allowed;
|
||||
}
|
||||
|
||||
unsigned int drmAgpVendorId(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.id_vendor;
|
||||
}
|
||||
|
||||
unsigned int drmAgpDeviceId(int fd)
|
||||
{
|
||||
drm_agp_info_t i;
|
||||
|
||||
if (ioctl(fd, DRM_IOCTL_AGP_INFO, &i)) return -errno;
|
||||
return i.id_device;
|
||||
}
|
||||
|
||||
int drmError(int err, const char *label)
|
||||
{
|
||||
switch (err) {
|
||||
|
|
|
|||
|
|
@ -316,6 +316,6 @@ typedef struct drm_agp_info {
|
|||
#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t)
|
||||
#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, drm_agp_buffer_t)
|
||||
#define DRM_IOCTL_AGP_BIND DRM_IOWR(0x36, drm_agp_binding_t)
|
||||
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binging_t)
|
||||
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binding_t)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -316,6 +316,6 @@ typedef struct drm_agp_info {
|
|||
#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t)
|
||||
#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, drm_agp_buffer_t)
|
||||
#define DRM_IOCTL_AGP_BIND DRM_IOWR(0x36, drm_agp_binding_t)
|
||||
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binging_t)
|
||||
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binding_t)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -316,6 +316,6 @@ typedef struct drm_agp_info {
|
|||
#define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t)
|
||||
#define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, drm_agp_buffer_t)
|
||||
#define DRM_IOCTL_AGP_BIND DRM_IOWR(0x36, drm_agp_binding_t)
|
||||
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binging_t)
|
||||
#define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binding_t)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue