Mmap from /sys/devices/pci* on linux forces the cache-disable and
write-through bits, which turns our write-combining map into an
uncached-map, seriously impacting performance. It turns out that a bug in
mprotect allows us to fix this by disabling access to those pages and then
immediately re-enabling them.
The pci_device_map_range() function was added in libpciaccess 0.10.0, and
is used by the reg_dumper tool. Don't try to build it if we have an older
libpciaccess.
Also make sure that util-macros >= 1.1.3 is available when running autoconf,
because it's required for the PACKAGE_VERSION_* macros.
Detect whether the target X server uses libpciaccess, using it in the driver
compilation as necessary. This change means that utilities that used to use
libpciaccess will not do so unless the driver itself uses libpciaccess. Yes,
that could be fixed, but it doesn't seem that important.
This patch does not include any code changes necessary to actually have the
driver build against an X server using libpciaccess.
Convert relative X server source path to absolute. Check for local copies
of needed header files before building, rather than requiring server source.
Remove extra duplicate -I elements in AM_CFLAGS in sub directories.
Always allow (but do not require) link to server sources so that needed
files can be included in the generated tar files.
Add remaining .g4a files and assembly output to distributed file lists.
xf86Modes.h file signals the availability of the new modes API in the
server; use that instead of counting on X server version numbers.
Also, finish eliminating use of local copies of those header files.
Driver installs as intel_drv.so with symlink to i810_drv.so to ensure
existing configurations continue to work. Updated manual page to reflect
name change and add attributions for recent work.
Autodetect libdrm version, disable new memory manager on older libraries.
Move new M_T_ defines from i830.h to i830_xf86Crtc.h. Add many system
headers to define functions. Use i830PipeSetBase at end of mode setting
code to set DSP*BASE and flush changes. Don't duplicate PipeSetBase call
from screen init function. Make initial RandR configuration code usable on
older versions of extension so the server doesn't start in a panning mode.
Use xfree instead of free in i830_tv.c.