intel: Add interface to query aperture sizes.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>main
parent
61be94018a
commit
9d77603d8b
|
@ -51,6 +51,10 @@ PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
|
||||||
AC_SUBST(PTHREADSTUBS_CFLAGS)
|
AC_SUBST(PTHREADSTUBS_CFLAGS)
|
||||||
AC_SUBST(PTHREADSTUBS_LIBS)
|
AC_SUBST(PTHREADSTUBS_LIBS)
|
||||||
|
|
||||||
|
PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10])
|
||||||
|
AC_SUBST(PCIACCESS_CFLAGS)
|
||||||
|
AC_SUBST(PCIACCESS_LIBS)
|
||||||
|
|
||||||
pkgconfigdir=${libdir}/pkgconfig
|
pkgconfigdir=${libdir}/pkgconfig
|
||||||
AC_SUBST(pkgconfigdir)
|
AC_SUBST(pkgconfigdir)
|
||||||
AC_ARG_ENABLE([udev],
|
AC_ARG_ENABLE([udev],
|
||||||
|
|
|
@ -27,12 +27,13 @@ AM_CFLAGS = \
|
||||||
-I$(top_srcdir) \
|
-I$(top_srcdir) \
|
||||||
-I$(top_srcdir)/intel \
|
-I$(top_srcdir)/intel \
|
||||||
$(PTHREADSTUBS_CFLAGS) \
|
$(PTHREADSTUBS_CFLAGS) \
|
||||||
|
$(PCIACCESS_CFLAGS) \
|
||||||
-I$(top_srcdir)/include/drm
|
-I$(top_srcdir)/include/drm
|
||||||
|
|
||||||
libdrm_intel_la_LTLIBRARIES = libdrm_intel.la
|
libdrm_intel_la_LTLIBRARIES = libdrm_intel.la
|
||||||
libdrm_intel_ladir = $(libdir)
|
libdrm_intel_ladir = $(libdir)
|
||||||
libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined
|
libdrm_intel_la_LDFLAGS = -version-number 1:0:0 -no-undefined
|
||||||
libdrm_intel_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @CLOCK_LIB@
|
libdrm_intel_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ @PCIACCESS_LIBS@ @CLOCK_LIB@
|
||||||
|
|
||||||
libdrm_intel_la_SOURCES = \
|
libdrm_intel_la_SOURCES = \
|
||||||
intel_bufmgr.c \
|
intel_bufmgr.c \
|
||||||
|
|
|
@ -36,8 +36,10 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <drm.h>
|
#include <drm.h>
|
||||||
#include <i915_drm.h>
|
#include <i915_drm.h>
|
||||||
|
#include <pciaccess.h>
|
||||||
#include "intel_bufmgr.h"
|
#include "intel_bufmgr.h"
|
||||||
#include "intel_bufmgr_priv.h"
|
#include "intel_bufmgr_priv.h"
|
||||||
|
#include "xf86drm.h"
|
||||||
|
|
||||||
/** @file intel_bufmgr.c
|
/** @file intel_bufmgr.c
|
||||||
*
|
*
|
||||||
|
@ -269,3 +271,51 @@ int drm_intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id)
|
||||||
return bufmgr->get_pipe_from_crtc_id(bufmgr, crtc_id);
|
return bufmgr->get_pipe_from_crtc_id(bufmgr, crtc_id);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static size_t
|
||||||
|
drm_intel_probe_agp_aperture_size(int fd)
|
||||||
|
{
|
||||||
|
struct pci_device *pci_dev;
|
||||||
|
size_t size = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = pci_system_init();
|
||||||
|
if (ret)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
/* XXX handle multiple adaptors? */
|
||||||
|
pci_dev = pci_device_find_by_slot(0, 0, 2, 0);
|
||||||
|
if (pci_dev == NULL)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
ret = pci_device_probe(pci_dev);
|
||||||
|
if (ret)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
size = pci_dev->regions[2].size;
|
||||||
|
err:
|
||||||
|
pci_system_cleanup ();
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
int drm_intel_get_aperture_sizes(int fd,
|
||||||
|
size_t *mappable,
|
||||||
|
size_t *total)
|
||||||
|
{
|
||||||
|
|
||||||
|
struct drm_i915_gem_get_aperture aperture;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = drmIoctl(fd, DRM_IOCTL_I915_GEM_GET_APERTURE, &aperture);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
*mappable = 0;
|
||||||
|
/* XXX add a query for the kernel value? */
|
||||||
|
if (*mappable == 0)
|
||||||
|
*mappable = drm_intel_probe_agp_aperture_size(fd);
|
||||||
|
if (*mappable == 0)
|
||||||
|
*mappable = 64 * 1024 * 1024; /* minimum possible value */
|
||||||
|
*total = aperture.aper_size;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -151,6 +151,8 @@ void drm_intel_gem_bo_start_gtt_access(drm_intel_bo *bo, int write_enable);
|
||||||
|
|
||||||
int drm_intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id);
|
int drm_intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id);
|
||||||
|
|
||||||
|
int drm_intel_get_aperture_sizes(int fd, size_t *mappable, size_t *total);
|
||||||
|
|
||||||
/* drm_intel_bufmgr_fake.c */
|
/* drm_intel_bufmgr_fake.c */
|
||||||
drm_intel_bufmgr *drm_intel_bufmgr_fake_init(int fd,
|
drm_intel_bufmgr *drm_intel_bufmgr_fake_init(int fd,
|
||||||
unsigned long low_offset,
|
unsigned long low_offset,
|
||||||
|
|
Loading…
Reference in New Issue