Update to xf86-video-nv 2.1.17.
This commit is contained in:
parent
bd38ae49de
commit
1603c57ad4
@ -1,3 +1,188 @@
|
|||||||
|
commit 71321d0ddecf1ab5327c754353d31db5d1f3c6bf
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Mon Mar 8 13:34:20 2010 -0800
|
||||||
|
|
||||||
|
nv 2.1.17
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
|
||||||
|
commit 467f0f3890622e57607b103b07e4f265cf999b1e
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Mon Mar 8 13:16:26 2010 -0800
|
||||||
|
|
||||||
|
More products
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Reviewed-by: Andy Ritger <ARitger@nvidia.com>
|
||||||
|
|
||||||
|
commit e34a53167d6a142949b3e0258dc336dc297368aa
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Fri Mar 5 14:27:31 2010 -0800
|
||||||
|
|
||||||
|
G80: Cast register reads before shifting them to avoid truncation to 32 bits.
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
|
||||||
|
commit 9378ecd34ad71083602232b56e8810d6cd39b518
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Wed Mar 3 20:29:55 2010 -0800
|
||||||
|
|
||||||
|
Bug #19545: Add support for MCP7x-based integrated GPUs.
|
||||||
|
|
||||||
|
Based in part on an idea from Ben Skeggs.
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Signed-off-by: Andy Ritger <aritger@nvidia.com>
|
||||||
|
Reviewed-by: Christian Zander <chzander@nvidia.com>
|
||||||
|
|
||||||
|
commit 49349f6e47b7315088a80789f134895677f57287
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Tue Mar 2 12:53:54 2010 -0800
|
||||||
|
|
||||||
|
G80: Log unrecognized outputs
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Reviewed-by: Andy Ritger <aritger@nvidia.com>
|
||||||
|
|
||||||
|
commit 7b01fc8f4ba1182370980f54a34bdb959e291e02
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Mon Mar 1 14:26:51 2010 -0800
|
||||||
|
|
||||||
|
Bug #26612: Separate LUTs per output.
|
||||||
|
|
||||||
|
Wire up the RandR 1.2 gamma_set hook. Call it from G80SetPalette like the Intel
|
||||||
|
driver does.
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Signed-off-by: Andy Ritger <aritger@nvidia.com>
|
||||||
|
Reviewed-by: Christian Zander <chzander@nvidia.com>
|
||||||
|
|
||||||
|
commit e6f4c9c6379b20b9fee50489d6afd05867c35967
|
||||||
|
Author: Alan Coopersmith <alan.coopersmith@sun.com>
|
||||||
|
Date: Fri Jan 15 13:46:50 2010 -0800
|
||||||
|
|
||||||
|
Update Sun license notices to current X.Org standard form
|
||||||
|
|
||||||
|
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
|
||||||
|
|
||||||
|
commit 893cee2aeda8074de3d5c99df90e23d6ec2217d2
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Tue Dec 15 22:01:02 2009 -0500
|
||||||
|
|
||||||
|
configure.ac: remove unused sdkdir=$(pkg-config...) statement
|
||||||
|
|
||||||
|
The sdkdir variable isn't use, so remove the statement.
|
||||||
|
|
||||||
|
Acked-by: Dan Nicholson <dbn.lists@gmail.com>
|
||||||
|
|
||||||
|
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
|
||||||
|
commit 2b69212ff84e8b815d6915dc81644280cc92cbe7
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Tue Dec 15 10:48:33 2009 -0800
|
||||||
|
|
||||||
|
nv 2.1.16
|
||||||
|
|
||||||
|
commit 99ed1c83f78b3b947d95aa9f0d3b5555d9a2a769
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Tue Dec 15 10:17:27 2009 -0800
|
||||||
|
|
||||||
|
New board names
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
|
||||||
|
commit 5eb01497139ead89c7262a6055a4fd293c5beb3e
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Tue Dec 15 10:16:51 2009 -0800
|
||||||
|
|
||||||
|
Remove an unnecessary (and typo'd) gitignore comment
|
||||||
|
|
||||||
|
commit 85638b2f0acc418aa77241dd123f7de76ea3ce8f
|
||||||
|
Author: Adam Jackson <ajax@redhat.com>
|
||||||
|
Date: Tue Dec 15 16:42:15 2009 -0500
|
||||||
|
|
||||||
|
g80: Add a no-op gamma hook so we don't crash on 1.7 servers
|
||||||
|
|
||||||
|
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
||||||
|
|
||||||
|
commit d3ba2a45ed21f60667716be0cdcb6a7888263ffd
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Mon Nov 23 09:25:05 2009 -0500
|
||||||
|
|
||||||
|
Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES
|
||||||
|
|
||||||
|
Now that the INSTALL file is generated.
|
||||||
|
Allows running make maintainer-clean.
|
||||||
|
|
||||||
|
commit 8664df401ff26718608e0bfc319514387d232771
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Wed Oct 28 14:41:41 2009 -0400
|
||||||
|
|
||||||
|
INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206
|
||||||
|
|
||||||
|
Automake 'foreign' option is specified in configure.ac.
|
||||||
|
Remove from Makefile.am
|
||||||
|
|
||||||
|
commit bbb016dfdca06c34bdc163ee772284a5fc1f1139
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Wed Oct 28 14:09:09 2009 -0400
|
||||||
|
|
||||||
|
INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206
|
||||||
|
|
||||||
|
Add missing INSTALL file. Use standard GNU file on building tarball
|
||||||
|
README may have been updated
|
||||||
|
Remove AUTHORS file as it is empty and no content available yet.
|
||||||
|
Remove NEWS file as it is empty and no content available yet.
|
||||||
|
|
||||||
|
commit ee24fd1773268e0a593c7de760bafa282f3489a2
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Mon Oct 26 12:54:21 2009 -0400
|
||||||
|
|
||||||
|
Several driver modules do not have a ChangeLog target in Makefile.am #23814
|
||||||
|
|
||||||
|
The git generated ChangeLog replaces the hand written one.
|
||||||
|
Update configure.ac to xorg-macros level 1.3.
|
||||||
|
Use XORG_DEFAULT_OPTIONS which replaces four XORG_* macros
|
||||||
|
Update Makefile.am to add ChangeLog target if missing
|
||||||
|
Remove ChangeLog from EXTRA_DIST or *CLEAN variables
|
||||||
|
This is a pre-req for the INSTALL_CMD
|
||||||
|
|
||||||
|
commit 57c505852bcf38dc3a3e6a9d603e4a8fd9ed3b80
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Thu Oct 22 13:02:49 2009 -0400
|
||||||
|
|
||||||
|
.gitignore: use common defaults with custom section # 24239
|
||||||
|
|
||||||
|
Using common defaults will reduce errors and maintenance.
|
||||||
|
Only the very small or inexistent custom section need periodic maintenance
|
||||||
|
when the structure of the component changes. Do not edit defaults.
|
||||||
|
|
||||||
|
commit f07ed67a9e14ddc42a96756fbe69cf927c308d1c
|
||||||
|
Author: Gaetan Nadon <memsize@videotron.ca>
|
||||||
|
Date: Thu Oct 22 12:34:17 2009 -0400
|
||||||
|
|
||||||
|
.gitignore: use common defaults with custom section # 24239
|
||||||
|
|
||||||
|
Using common defaults will reduce errors and maintenance.
|
||||||
|
Only the very small or inexistent custom section need periodic maintenance
|
||||||
|
when the structure of the component changes. Do not edit defaults.
|
||||||
|
|
||||||
|
commit b30ec386abb7219be50c7aa42db9f08f12fe5c8c
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Tue Nov 10 12:17:23 2009 -0800
|
||||||
|
|
||||||
|
More new boards
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
|
||||||
|
commit f050096ad3c9ef4484b69c22217efe0557f16e35
|
||||||
|
Author: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
Date: Mon Nov 9 16:16:19 2009 -0800
|
||||||
|
|
||||||
|
New boards
|
||||||
|
|
||||||
|
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
|
||||||
|
|
||||||
commit 0250f0d7ebe30368c5a63809ed1f58673493627c
|
commit 0250f0d7ebe30368c5a63809ed1f58673493627c
|
||||||
Author: Peter Hutterer <peter.hutterer@who-t.net>
|
Author: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
Date: Fri Sep 11 12:24:18 2009 +1000
|
Date: Fri Sep 11 12:24:18 2009 +1000
|
||||||
|
291
driver/xf86-video-nv/INSTALL
Normal file
291
driver/xf86-video-nv/INSTALL
Normal file
@ -0,0 +1,291 @@
|
|||||||
|
Installation Instructions
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||||
|
2006, 2007, 2008 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
This file is free documentation; the Free Software Foundation gives
|
||||||
|
unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
Basic Installation
|
||||||
|
==================
|
||||||
|
|
||||||
|
Briefly, the shell commands `./configure; make; make install' should
|
||||||
|
configure, build, and install this package. The following
|
||||||
|
more-detailed instructions are generic; see the `README' file for
|
||||||
|
instructions specific to this package.
|
||||||
|
|
||||||
|
The `configure' shell script attempts to guess correct values for
|
||||||
|
various system-dependent variables used during compilation. It uses
|
||||||
|
those values to create a `Makefile' in each directory of the package.
|
||||||
|
It may also create one or more `.h' files containing system-dependent
|
||||||
|
definitions. Finally, it creates a shell script `config.status' that
|
||||||
|
you can run in the future to recreate the current configuration, and a
|
||||||
|
file `config.log' containing compiler output (useful mainly for
|
||||||
|
debugging `configure').
|
||||||
|
|
||||||
|
It can also use an optional file (typically called `config.cache'
|
||||||
|
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||||
|
the results of its tests to speed up reconfiguring. Caching is
|
||||||
|
disabled by default to prevent problems with accidental use of stale
|
||||||
|
cache files.
|
||||||
|
|
||||||
|
If you need to do unusual things to compile the package, please try
|
||||||
|
to figure out how `configure' could check whether to do them, and mail
|
||||||
|
diffs or instructions to the address given in the `README' so they can
|
||||||
|
be considered for the next release. If you are using the cache, and at
|
||||||
|
some point `config.cache' contains results you don't want to keep, you
|
||||||
|
may remove or edit it.
|
||||||
|
|
||||||
|
The file `configure.ac' (or `configure.in') is used to create
|
||||||
|
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||||
|
you want to change it or regenerate `configure' using a newer version
|
||||||
|
of `autoconf'.
|
||||||
|
|
||||||
|
The simplest way to compile this package is:
|
||||||
|
|
||||||
|
1. `cd' to the directory containing the package's source code and type
|
||||||
|
`./configure' to configure the package for your system.
|
||||||
|
|
||||||
|
Running `configure' might take a while. While running, it prints
|
||||||
|
some messages telling which features it is checking for.
|
||||||
|
|
||||||
|
2. Type `make' to compile the package.
|
||||||
|
|
||||||
|
3. Optionally, type `make check' to run any self-tests that come with
|
||||||
|
the package.
|
||||||
|
|
||||||
|
4. Type `make install' to install the programs and any data files and
|
||||||
|
documentation.
|
||||||
|
|
||||||
|
5. You can remove the program binaries and object files from the
|
||||||
|
source code directory by typing `make clean'. To also remove the
|
||||||
|
files that `configure' created (so you can compile the package for
|
||||||
|
a different kind of computer), type `make distclean'. There is
|
||||||
|
also a `make maintainer-clean' target, but that is intended mainly
|
||||||
|
for the package's developers. If you use it, you may have to get
|
||||||
|
all sorts of other programs in order to regenerate files that came
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
6. Often, you can also type `make uninstall' to remove the installed
|
||||||
|
files again.
|
||||||
|
|
||||||
|
Compilers and Options
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Some systems require unusual options for compilation or linking that
|
||||||
|
the `configure' script does not know about. Run `./configure --help'
|
||||||
|
for details on some of the pertinent environment variables.
|
||||||
|
|
||||||
|
You can give `configure' initial values for configuration parameters
|
||||||
|
by setting variables in the command line or in the environment. Here
|
||||||
|
is an example:
|
||||||
|
|
||||||
|
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||||
|
|
||||||
|
*Note Defining Variables::, for more details.
|
||||||
|
|
||||||
|
Compiling For Multiple Architectures
|
||||||
|
====================================
|
||||||
|
|
||||||
|
You can compile the package for more than one kind of computer at the
|
||||||
|
same time, by placing the object files for each architecture in their
|
||||||
|
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||||
|
directory where you want the object files and executables to go and run
|
||||||
|
the `configure' script. `configure' automatically checks for the
|
||||||
|
source code in the directory that `configure' is in and in `..'.
|
||||||
|
|
||||||
|
With a non-GNU `make', it is safer to compile the package for one
|
||||||
|
architecture at a time in the source code directory. After you have
|
||||||
|
installed the package for one architecture, use `make distclean' before
|
||||||
|
reconfiguring for another architecture.
|
||||||
|
|
||||||
|
On MacOS X 10.5 and later systems, you can create libraries and
|
||||||
|
executables that work on multiple system types--known as "fat" or
|
||||||
|
"universal" binaries--by specifying multiple `-arch' options to the
|
||||||
|
compiler but only a single `-arch' option to the preprocessor. Like
|
||||||
|
this:
|
||||||
|
|
||||||
|
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||||
|
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||||
|
CPP="gcc -E" CXXCPP="g++ -E"
|
||||||
|
|
||||||
|
This is not guaranteed to produce working output in all cases, you
|
||||||
|
may have to build one architecture at a time and combine the results
|
||||||
|
using the `lipo' tool if you have problems.
|
||||||
|
|
||||||
|
Installation Names
|
||||||
|
==================
|
||||||
|
|
||||||
|
By default, `make install' installs the package's commands under
|
||||||
|
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||||
|
can specify an installation prefix other than `/usr/local' by giving
|
||||||
|
`configure' the option `--prefix=PREFIX'.
|
||||||
|
|
||||||
|
You can specify separate installation prefixes for
|
||||||
|
architecture-specific files and architecture-independent files. If you
|
||||||
|
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||||
|
PREFIX as the prefix for installing programs and libraries.
|
||||||
|
Documentation and other data files still use the regular prefix.
|
||||||
|
|
||||||
|
In addition, if you use an unusual directory layout you can give
|
||||||
|
options like `--bindir=DIR' to specify different values for particular
|
||||||
|
kinds of files. Run `configure --help' for a list of the directories
|
||||||
|
you can set and what kinds of files go in them.
|
||||||
|
|
||||||
|
If the package supports it, you can cause programs to be installed
|
||||||
|
with an extra prefix or suffix on their names by giving `configure' the
|
||||||
|
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||||
|
|
||||||
|
Optional Features
|
||||||
|
=================
|
||||||
|
|
||||||
|
Some packages pay attention to `--enable-FEATURE' options to
|
||||||
|
`configure', where FEATURE indicates an optional part of the package.
|
||||||
|
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||||
|
is something like `gnu-as' or `x' (for the X Window System). The
|
||||||
|
`README' should mention any `--enable-' and `--with-' options that the
|
||||||
|
package recognizes.
|
||||||
|
|
||||||
|
For packages that use the X Window System, `configure' can usually
|
||||||
|
find the X include and library files automatically, but if it doesn't,
|
||||||
|
you can use the `configure' options `--x-includes=DIR' and
|
||||||
|
`--x-libraries=DIR' to specify their locations.
|
||||||
|
|
||||||
|
Particular systems
|
||||||
|
==================
|
||||||
|
|
||||||
|
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||||
|
CC is not installed, it is recommended to use the following options in
|
||||||
|
order to use an ANSI C compiler:
|
||||||
|
|
||||||
|
./configure CC="cc -Ae"
|
||||||
|
|
||||||
|
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||||
|
|
||||||
|
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||||
|
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||||
|
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||||
|
to try
|
||||||
|
|
||||||
|
./configure CC="cc"
|
||||||
|
|
||||||
|
and if that doesn't work, try
|
||||||
|
|
||||||
|
./configure CC="cc -nodtk"
|
||||||
|
|
||||||
|
Specifying the System Type
|
||||||
|
==========================
|
||||||
|
|
||||||
|
There may be some features `configure' cannot figure out
|
||||||
|
automatically, but needs to determine by the type of machine the package
|
||||||
|
will run on. Usually, assuming the package is built to be run on the
|
||||||
|
_same_ architectures, `configure' can figure that out, but if it prints
|
||||||
|
a message saying it cannot guess the machine type, give it the
|
||||||
|
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||||
|
type, such as `sun4', or a canonical name which has the form:
|
||||||
|
|
||||||
|
CPU-COMPANY-SYSTEM
|
||||||
|
|
||||||
|
where SYSTEM can have one of these forms:
|
||||||
|
|
||||||
|
OS KERNEL-OS
|
||||||
|
|
||||||
|
See the file `config.sub' for the possible values of each field. If
|
||||||
|
`config.sub' isn't included in this package, then this package doesn't
|
||||||
|
need to know the machine type.
|
||||||
|
|
||||||
|
If you are _building_ compiler tools for cross-compiling, you should
|
||||||
|
use the option `--target=TYPE' to select the type of system they will
|
||||||
|
produce code for.
|
||||||
|
|
||||||
|
If you want to _use_ a cross compiler, that generates code for a
|
||||||
|
platform different from the build platform, you should specify the
|
||||||
|
"host" platform (i.e., that on which the generated programs will
|
||||||
|
eventually be run) with `--host=TYPE'.
|
||||||
|
|
||||||
|
Sharing Defaults
|
||||||
|
================
|
||||||
|
|
||||||
|
If you want to set default values for `configure' scripts to share,
|
||||||
|
you can create a site shell script called `config.site' that gives
|
||||||
|
default values for variables like `CC', `cache_file', and `prefix'.
|
||||||
|
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||||
|
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||||
|
`CONFIG_SITE' environment variable to the location of the site script.
|
||||||
|
A warning: not all `configure' scripts look for a site script.
|
||||||
|
|
||||||
|
Defining Variables
|
||||||
|
==================
|
||||||
|
|
||||||
|
Variables not defined in a site shell script can be set in the
|
||||||
|
environment passed to `configure'. However, some packages may run
|
||||||
|
configure again during the build, and the customized values of these
|
||||||
|
variables may be lost. In order to avoid this problem, you should set
|
||||||
|
them in the `configure' command line, using `VAR=value'. For example:
|
||||||
|
|
||||||
|
./configure CC=/usr/local2/bin/gcc
|
||||||
|
|
||||||
|
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||||
|
overridden in the site shell script).
|
||||||
|
|
||||||
|
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||||
|
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||||
|
|
||||||
|
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||||
|
|
||||||
|
`configure' Invocation
|
||||||
|
======================
|
||||||
|
|
||||||
|
`configure' recognizes the following options to control how it
|
||||||
|
operates.
|
||||||
|
|
||||||
|
`--help'
|
||||||
|
`-h'
|
||||||
|
Print a summary of all of the options to `configure', and exit.
|
||||||
|
|
||||||
|
`--help=short'
|
||||||
|
`--help=recursive'
|
||||||
|
Print a summary of the options unique to this package's
|
||||||
|
`configure', and exit. The `short' variant lists options used
|
||||||
|
only in the top level, while the `recursive' variant lists options
|
||||||
|
also present in any nested packages.
|
||||||
|
|
||||||
|
`--version'
|
||||||
|
`-V'
|
||||||
|
Print the version of Autoconf used to generate the `configure'
|
||||||
|
script, and exit.
|
||||||
|
|
||||||
|
`--cache-file=FILE'
|
||||||
|
Enable the cache: use and save the results of the tests in FILE,
|
||||||
|
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||||
|
disable caching.
|
||||||
|
|
||||||
|
`--config-cache'
|
||||||
|
`-C'
|
||||||
|
Alias for `--cache-file=config.cache'.
|
||||||
|
|
||||||
|
`--quiet'
|
||||||
|
`--silent'
|
||||||
|
`-q'
|
||||||
|
Do not print messages saying which checks are being made. To
|
||||||
|
suppress all normal output, redirect it to `/dev/null' (any error
|
||||||
|
messages will still be shown).
|
||||||
|
|
||||||
|
`--srcdir=DIR'
|
||||||
|
Look for the package's source code in directory DIR. Usually
|
||||||
|
`configure' can determine that directory automatically.
|
||||||
|
|
||||||
|
`--prefix=DIR'
|
||||||
|
Use DIR as the installation prefix. *Note Installation Names::
|
||||||
|
for more details, including other options available for fine-tuning
|
||||||
|
the installation locations.
|
||||||
|
|
||||||
|
`--no-create'
|
||||||
|
`-n'
|
||||||
|
Run the configure checks, but stop before creating any output
|
||||||
|
files.
|
||||||
|
|
||||||
|
`configure' also accepts some other, not widely useful, options. Run
|
||||||
|
`configure --help' for more details.
|
||||||
|
|
@ -18,15 +18,17 @@
|
|||||||
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign
|
|
||||||
SUBDIRS = src man compat
|
SUBDIRS = src man compat
|
||||||
|
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
||||||
|
|
||||||
EXTRA_DIST = README.G80 ChangeLog
|
EXTRA_DIST = README.G80
|
||||||
|
|
||||||
CLEANFILES = ChangeLog
|
.PHONY: ChangeLog INSTALL
|
||||||
.PHONY: ChangeLog
|
|
||||||
|
INSTALL:
|
||||||
|
$(INSTALL_CMD)
|
||||||
|
|
||||||
ChangeLog:
|
ChangeLog:
|
||||||
$(CHANGELOG_CMD)
|
$(CHANGELOG_CMD)
|
||||||
|
|
||||||
dist-hook: ChangeLog
|
dist-hook: ChangeLog INSTALL
|
||||||
|
@ -57,7 +57,7 @@ build_triplet = @build@
|
|||||||
host_triplet = @host@
|
host_triplet = @host@
|
||||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||||
$(top_srcdir)/configure COPYING ChangeLog config.guess \
|
$(top_srcdir)/configure COPYING ChangeLog INSTALL config.guess \
|
||||||
config.sub depcomp install-sh ltmain.sh missing
|
config.sub depcomp install-sh ltmain.sh missing
|
||||||
subdir = .
|
subdir = .
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
@ -90,12 +90,14 @@ am__remove_distdir = \
|
|||||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||||
GZIP_ENV = --best
|
GZIP_ENV = --best
|
||||||
distuninstallcheck_listfiles = find . -type f -print
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
distcleancheck_listfiles = find . -type f -print
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
|
ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
|
||||||
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
|
ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
|
||||||
AMDEP_FALSE = @AMDEP_FALSE@
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
AMDEP_TRUE = @AMDEP_TRUE@
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
APP_MAN_DIR = @APP_MAN_DIR@
|
APP_MAN_DIR = @APP_MAN_DIR@
|
||||||
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
@ -111,6 +113,7 @@ CFLAGS = @CFLAGS@
|
|||||||
CHANGELOG_CMD = @CHANGELOG_CMD@
|
CHANGELOG_CMD = @CHANGELOG_CMD@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CWARNFLAGS = @CWARNFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
@ -135,6 +138,7 @@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
|||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
||||||
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
||||||
|
INSTALL_CMD = @INSTALL_CMD@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
@ -196,7 +200,6 @@ build_os = @build_os@
|
|||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
distcleancheck_listfiles = @distcleancheck_listfiles@
|
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
@ -227,10 +230,9 @@ sbindir = @sbindir@
|
|||||||
sharedstatedir = @sharedstatedir@
|
sharedstatedir = @sharedstatedir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
AUTOMAKE_OPTIONS = foreign
|
|
||||||
SUBDIRS = src man compat
|
SUBDIRS = src man compat
|
||||||
EXTRA_DIST = README.G80 ChangeLog
|
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
||||||
CLEANFILES = ChangeLog
|
EXTRA_DIST = README.G80
|
||||||
all: config.h
|
all: config.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
@ -594,7 +596,6 @@ install-strip:
|
|||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
@ -602,6 +603,7 @@ distclean-generic:
|
|||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
|
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||||
clean: clean-recursive
|
clean: clean-recursive
|
||||||
|
|
||||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||||
@ -669,12 +671,16 @@ uninstall-info: uninstall-info-recursive
|
|||||||
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
|
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
|
||||||
tags tags-recursive uninstall uninstall-am uninstall-info-am
|
tags tags-recursive uninstall uninstall-am uninstall-info-am
|
||||||
|
|
||||||
.PHONY: ChangeLog
|
|
||||||
|
.PHONY: ChangeLog INSTALL
|
||||||
|
|
||||||
|
INSTALL:
|
||||||
|
$(INSTALL_CMD)
|
||||||
|
|
||||||
ChangeLog:
|
ChangeLog:
|
||||||
$(CHANGELOG_CMD)
|
$(CHANGELOG_CMD)
|
||||||
|
|
||||||
dist-hook: ChangeLog
|
dist-hook: ChangeLog INSTALL
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
621
driver/xf86-video-nv/aclocal.m4
vendored
621
driver/xf86-video-nv/aclocal.m4
vendored
@ -7636,29 +7636,23 @@ dnl
|
|||||||
dnl Copyright 2005-2006 Sun Microsystems, Inc. All rights reserved.
|
dnl Copyright 2005-2006 Sun Microsystems, Inc. All rights reserved.
|
||||||
dnl
|
dnl
|
||||||
dnl Permission is hereby granted, free of charge, to any person obtaining a
|
dnl Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
dnl copy of this software and associated documentation files (the
|
dnl copy of this software and associated documentation files (the "Software"),
|
||||||
dnl "Software"), to deal in the Software without restriction, including
|
dnl to deal in the Software without restriction, including without limitation
|
||||||
dnl without limitation the rights to use, copy, modify, merge, publish,
|
dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
dnl distribute, and/or sell copies of the Software, and to permit persons
|
dnl and/or sell copies of the Software, and to permit persons to whom the
|
||||||
dnl to whom the Software is furnished to do so, provided that the above
|
dnl Software is furnished to do so, subject to the following conditions:
|
||||||
dnl copyright notice(s) and this permission notice appear in all copies of
|
|
||||||
dnl the Software and that both the above copyright notice(s) and this
|
|
||||||
dnl permission notice appear in supporting documentation.
|
|
||||||
dnl
|
dnl
|
||||||
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
dnl The above copyright notice and this permission notice (including the next
|
||||||
dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
dnl paragraph) shall be included in all copies or substantial portions of the
|
||||||
dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
dnl Software.
|
||||||
dnl OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
||||||
dnl HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
|
|
||||||
dnl INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
|
||||||
dnl FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
dnl NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
|
||||||
dnl WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
dnl
|
dnl
|
||||||
dnl Except as contained in this notice, the name of a copyright holder
|
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
dnl shall not be used in advertising or otherwise to promote the sale, use
|
dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
dnl or other dealings in this Software without prior written authorization
|
dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
dnl of the copyright holder.
|
dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
dnl DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
# XORG_MACROS_VERSION(required-version)
|
# XORG_MACROS_VERSION(required-version)
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
@ -7676,7 +7670,7 @@ dnl of the copyright holder.
|
|||||||
# See the "minimum version" comment for each macro you use to see what
|
# See the "minimum version" comment for each macro you use to see what
|
||||||
# version you require.
|
# version you require.
|
||||||
m4_defun([XORG_MACROS_VERSION],[
|
m4_defun([XORG_MACROS_VERSION],[
|
||||||
m4_define([vers_have], [1.3.0])
|
m4_define([vers_have], [1.7.0])
|
||||||
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
|
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
|
||||||
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
|
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
|
||||||
m4_if(m4_cmp(maj_have, maj_needed), 0,,
|
m4_if(m4_cmp(maj_have, maj_needed), 0,,
|
||||||
@ -7817,6 +7811,31 @@ AC_SUBST([DRIVER_MAN_DIR])
|
|||||||
AC_SUBST([ADMIN_MAN_DIR])
|
AC_SUBST([ADMIN_MAN_DIR])
|
||||||
]) # XORG_MANPAGE_SECTIONS
|
]) # XORG_MANPAGE_SECTIONS
|
||||||
|
|
||||||
|
# XORG_CHECK_SGML_DOCTOOLS
|
||||||
|
# ------------------------
|
||||||
|
# Minimum version: 1.7.0
|
||||||
|
#
|
||||||
|
# Defines the variable XORG_SGML_PATH containing the location of X11/defs.ent
|
||||||
|
# provided by xorg-sgml-doctools, if installed.
|
||||||
|
AC_DEFUN([XORG_CHECK_SGML_DOCTOOLS],[
|
||||||
|
AC_MSG_CHECKING([for X.Org SGML entities])
|
||||||
|
XORG_SGML_PATH=
|
||||||
|
PKG_CHECK_EXISTS([xorg-sgml-doctools],
|
||||||
|
[XORG_SGML_PATH=`$PKG_CONFIG --variable=sgmlrootdir xorg-sgml-doctools`],
|
||||||
|
[if test x"$cross_compiling" != x"yes" ; then
|
||||||
|
AC_CHECK_FILE([$prefix/share/sgml/X11/defs.ent],
|
||||||
|
[XORG_SGML_PATH=$prefix/share/sgml])
|
||||||
|
fi])
|
||||||
|
|
||||||
|
if test "x$XORG_SGML_PATH" != "x" ; then
|
||||||
|
AC_MSG_RESULT([$XORG_SGML_PATH])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_SUBST(XORG_SGML_PATH)
|
||||||
|
]) # XORG_CHECK_SGML_DOCTOOLS
|
||||||
|
|
||||||
# XORG_CHECK_LINUXDOC
|
# XORG_CHECK_LINUXDOC
|
||||||
# -------------------
|
# -------------------
|
||||||
# Minimum version: 1.0.0
|
# Minimum version: 1.0.0
|
||||||
@ -7826,23 +7845,14 @@ AC_SUBST([ADMIN_MAN_DIR])
|
|||||||
# Whether or not the necessary tools and files are found can be checked
|
# Whether or not the necessary tools and files are found can be checked
|
||||||
# with the AM_CONDITIONAL "BUILD_LINUXDOC"
|
# with the AM_CONDITIONAL "BUILD_LINUXDOC"
|
||||||
AC_DEFUN([XORG_CHECK_LINUXDOC],[
|
AC_DEFUN([XORG_CHECK_LINUXDOC],[
|
||||||
if test x$XORG_SGML_PATH = x ; then
|
AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS])
|
||||||
XORG_SGML_PATH=$prefix/share/sgml
|
|
||||||
fi
|
|
||||||
HAVE_DEFS_ENT=
|
|
||||||
|
|
||||||
if test x"$cross_compiling" = x"yes" ; then
|
|
||||||
HAVE_DEFS_ENT=no
|
|
||||||
else
|
|
||||||
AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_PATH_PROG(LINUXDOC, linuxdoc)
|
AC_PATH_PROG(LINUXDOC, linuxdoc)
|
||||||
AC_PATH_PROG(PS2PDF, ps2pdf)
|
AC_PATH_PROG(PS2PDF, ps2pdf)
|
||||||
|
|
||||||
AC_MSG_CHECKING([Whether to build documentation])
|
AC_MSG_CHECKING([whether to build documentation])
|
||||||
|
|
||||||
if test x$HAVE_DEFS_ENT != x && test x$LINUXDOC != x ; then
|
if test x$XORG_SGML_PATH != x && test x$LINUXDOC != x ; then
|
||||||
BUILDDOC=yes
|
BUILDDOC=yes
|
||||||
else
|
else
|
||||||
BUILDDOC=no
|
BUILDDOC=no
|
||||||
@ -7852,7 +7862,7 @@ AM_CONDITIONAL(BUILD_LINUXDOC, [test x$BUILDDOC = xyes])
|
|||||||
|
|
||||||
AC_MSG_RESULT([$BUILDDOC])
|
AC_MSG_RESULT([$BUILDDOC])
|
||||||
|
|
||||||
AC_MSG_CHECKING([Whether to build pdf documentation])
|
AC_MSG_CHECKING([whether to build pdf documentation])
|
||||||
|
|
||||||
if test x$PS2PDF != x && test x$BUILD_PDFDOC != xno; then
|
if test x$PS2PDF != x && test x$BUILD_PDFDOC != xno; then
|
||||||
BUILDPDFDOC=yes
|
BUILDPDFDOC=yes
|
||||||
@ -7884,48 +7894,44 @@ AC_SUBST(MAKE_HTML)
|
|||||||
# indicates whether the necessary tools and files are found and, if set,
|
# indicates whether the necessary tools and files are found and, if set,
|
||||||
# $(MAKE_XXX) blah.sgml will produce blah.xxx.
|
# $(MAKE_XXX) blah.sgml will produce blah.xxx.
|
||||||
AC_DEFUN([XORG_CHECK_DOCBOOK],[
|
AC_DEFUN([XORG_CHECK_DOCBOOK],[
|
||||||
if test x$XORG_SGML_PATH = x ; then
|
AC_REQUIRE([XORG_CHECK_SGML_DOCTOOLS])
|
||||||
XORG_SGML_PATH=$prefix/share/sgml
|
|
||||||
fi
|
|
||||||
HAVE_DEFS_ENT=
|
|
||||||
BUILDTXTDOC=no
|
BUILDTXTDOC=no
|
||||||
BUILDPDFDOC=no
|
BUILDPDFDOC=no
|
||||||
BUILDPSDOC=no
|
BUILDPSDOC=no
|
||||||
BUILDHTMLDOC=no
|
BUILDHTMLDOC=no
|
||||||
|
|
||||||
AC_CHECK_FILE([$XORG_SGML_PATH/X11/defs.ent], [HAVE_DEFS_ENT=yes])
|
|
||||||
|
|
||||||
AC_PATH_PROG(DOCBOOKPS, docbook2ps)
|
AC_PATH_PROG(DOCBOOKPS, docbook2ps)
|
||||||
AC_PATH_PROG(DOCBOOKPDF, docbook2pdf)
|
AC_PATH_PROG(DOCBOOKPDF, docbook2pdf)
|
||||||
AC_PATH_PROG(DOCBOOKHTML, docbook2html)
|
AC_PATH_PROG(DOCBOOKHTML, docbook2html)
|
||||||
AC_PATH_PROG(DOCBOOKTXT, docbook2txt)
|
AC_PATH_PROG(DOCBOOKTXT, docbook2txt)
|
||||||
|
|
||||||
AC_MSG_CHECKING([Whether to build text documentation])
|
AC_MSG_CHECKING([whether to build text documentation])
|
||||||
if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKTXT != x &&
|
if test x$XORG_SGML_PATH != x && test x$DOCBOOKTXT != x &&
|
||||||
test x$BUILD_TXTDOC != xno; then
|
test x$BUILD_TXTDOC != xno; then
|
||||||
BUILDTXTDOC=yes
|
BUILDTXTDOC=yes
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes])
|
AM_CONDITIONAL(BUILD_TXTDOC, [test x$BUILDTXTDOC = xyes])
|
||||||
AC_MSG_RESULT([$BUILDTXTDOC])
|
AC_MSG_RESULT([$BUILDTXTDOC])
|
||||||
|
|
||||||
AC_MSG_CHECKING([Whether to build PDF documentation])
|
AC_MSG_CHECKING([whether to build PDF documentation])
|
||||||
if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKPDF != x &&
|
if test x$XORG_SGML_PATH != x && test x$DOCBOOKPDF != x &&
|
||||||
test x$BUILD_PDFDOC != xno; then
|
test x$BUILD_PDFDOC != xno; then
|
||||||
BUILDPDFDOC=yes
|
BUILDPDFDOC=yes
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes])
|
AM_CONDITIONAL(BUILD_PDFDOC, [test x$BUILDPDFDOC = xyes])
|
||||||
AC_MSG_RESULT([$BUILDPDFDOC])
|
AC_MSG_RESULT([$BUILDPDFDOC])
|
||||||
|
|
||||||
AC_MSG_CHECKING([Whether to build PostScript documentation])
|
AC_MSG_CHECKING([whether to build PostScript documentation])
|
||||||
if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKPS != x &&
|
if test x$XORG_SGML_PATH != x && test x$DOCBOOKPS != x &&
|
||||||
test x$BUILD_PSDOC != xno; then
|
test x$BUILD_PSDOC != xno; then
|
||||||
BUILDPSDOC=yes
|
BUILDPSDOC=yes
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes])
|
AM_CONDITIONAL(BUILD_PSDOC, [test x$BUILDPSDOC = xyes])
|
||||||
AC_MSG_RESULT([$BUILDPSDOC])
|
AC_MSG_RESULT([$BUILDPSDOC])
|
||||||
|
|
||||||
AC_MSG_CHECKING([Whether to build HTML documentation])
|
AC_MSG_CHECKING([whether to build HTML documentation])
|
||||||
if test x$HAVE_DEFS_ENT != x && test x$DOCBOOKHTML != x &&
|
if test x$XORG_SGML_PATH != x && test x$DOCBOOKHTML != x &&
|
||||||
test x$BUILD_HTMLDOC != xno; then
|
test x$BUILD_HTMLDOC != xno; then
|
||||||
BUILDHTMLDOC=yes
|
BUILDHTMLDOC=yes
|
||||||
fi
|
fi
|
||||||
@ -7943,6 +7949,490 @@ AC_SUBST(MAKE_PDF)
|
|||||||
AC_SUBST(MAKE_HTML)
|
AC_SUBST(MAKE_HTML)
|
||||||
]) # XORG_CHECK_DOCBOOK
|
]) # XORG_CHECK_DOCBOOK
|
||||||
|
|
||||||
|
# XORG_WITH_XMLTO([MIN-VERSION])
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.5.0
|
||||||
|
#
|
||||||
|
# Documentation tools are not always available on all platforms and sometimes
|
||||||
|
# not at the appropriate level. This macro enables a module to test for the
|
||||||
|
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||||
|
# the --with-xmlto option, it allows maximum flexibilty in making decisions
|
||||||
|
# as whether or not to use the xmlto package.
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# HAVE_XMLTO: used in makefiles to conditionally generate documentation
|
||||||
|
# XMLTO: returns the path of the xmlto program found
|
||||||
|
# returns the path set by the user in the environment
|
||||||
|
# --with-xmlto: 'yes' user instructs the module to use xmlto
|
||||||
|
# 'no' user instructs the module not to use xmlto
|
||||||
|
#
|
||||||
|
# If the user sets the value of XMLTO, AC_PATH_PROG skips testing the path.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_WITH_XMLTO],[
|
||||||
|
AC_ARG_VAR([XMLTO], [Path to xmlto command])
|
||||||
|
AC_ARG_WITH(xmlto,
|
||||||
|
AS_HELP_STRING([--with-xmlto],
|
||||||
|
[Use xmlto to regenerate documentation (default: yes, if installed)]),
|
||||||
|
[use_xmlto=$withval], [use_xmlto=auto])
|
||||||
|
|
||||||
|
if test "x$use_xmlto" = x"auto"; then
|
||||||
|
AC_PATH_PROG([XMLTO], [xmlto])
|
||||||
|
if test "x$XMLTO" = "x"; then
|
||||||
|
AC_MSG_WARN([xmlto not found - documentation targets will be skipped])
|
||||||
|
have_xmlto=no
|
||||||
|
else
|
||||||
|
have_xmlto=yes
|
||||||
|
fi
|
||||||
|
elif test "x$use_xmlto" = x"yes" ; then
|
||||||
|
AC_PATH_PROG([XMLTO], [xmlto])
|
||||||
|
if test "x$XMLTO" = "x"; then
|
||||||
|
AC_MSG_ERROR([--with-xmlto=yes specified but xmlto not found in PATH])
|
||||||
|
fi
|
||||||
|
have_xmlto=yes
|
||||||
|
elif test "x$use_xmlto" = x"no" ; then
|
||||||
|
if test "x$XMLTO" != "x"; then
|
||||||
|
AC_MSG_WARN([ignoring XMLTO environment variable since --with-xmlto=no was specified])
|
||||||
|
fi
|
||||||
|
have_xmlto=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([--with-xmlto expects 'yes' or 'no'])
|
||||||
|
fi
|
||||||
|
m4_ifval([$1],
|
||||||
|
[if test "$have_xmlto" = yes; then
|
||||||
|
# scrape the xmlto version
|
||||||
|
AC_MSG_CHECKING([the xmlto version])
|
||||||
|
xmlto_version=`$XMLTO --version 2>/dev/null | cut -d' ' -f3`
|
||||||
|
AC_MSG_RESULT([$xmlto_version])
|
||||||
|
AS_VERSION_COMPARE([$xmlto_version], [$1],
|
||||||
|
[if test "x$use_xmlto" = xauto; then
|
||||||
|
AC_MSG_WARN([xmlto version $xmlto_version found, but $1 needed])
|
||||||
|
have_xmlto=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([xmlto version $xmlto_version found, but $1 needed])
|
||||||
|
fi])
|
||||||
|
fi])
|
||||||
|
AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
|
||||||
|
]) # XORG_WITH_XMLTO
|
||||||
|
|
||||||
|
# XORG_WITH_ASCIIDOC([MIN-VERSION])
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.5.0
|
||||||
|
#
|
||||||
|
# Documentation tools are not always available on all platforms and sometimes
|
||||||
|
# not at the appropriate level. This macro enables a module to test for the
|
||||||
|
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||||
|
# the --with-asciidoc option, it allows maximum flexibilty in making decisions
|
||||||
|
# as whether or not to use the asciidoc package.
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# HAVE_ASCIIDOC: used in makefiles to conditionally generate documentation
|
||||||
|
# ASCIIDOC: returns the path of the asciidoc program found
|
||||||
|
# returns the path set by the user in the environment
|
||||||
|
# --with-asciidoc: 'yes' user instructs the module to use asciidoc
|
||||||
|
# 'no' user instructs the module not to use asciidoc
|
||||||
|
#
|
||||||
|
# If the user sets the value of ASCIIDOC, AC_PATH_PROG skips testing the path.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_WITH_ASCIIDOC],[
|
||||||
|
AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command])
|
||||||
|
AC_ARG_WITH(asciidoc,
|
||||||
|
AS_HELP_STRING([--with-asciidoc],
|
||||||
|
[Use asciidoc to regenerate documentation (default: yes, if installed)]),
|
||||||
|
[use_asciidoc=$withval], [use_asciidoc=auto])
|
||||||
|
|
||||||
|
if test "x$use_asciidoc" = x"auto"; then
|
||||||
|
AC_PATH_PROG([ASCIIDOC], [asciidoc])
|
||||||
|
if test "x$ASCIIDOC" = "x"; then
|
||||||
|
AC_MSG_WARN([asciidoc not found - documentation targets will be skipped])
|
||||||
|
have_asciidoc=no
|
||||||
|
else
|
||||||
|
have_asciidoc=yes
|
||||||
|
fi
|
||||||
|
elif test "x$use_asciidoc" = x"yes" ; then
|
||||||
|
AC_PATH_PROG([ASCIIDOC], [asciidoc])
|
||||||
|
if test "x$ASCIIDOC" = "x"; then
|
||||||
|
AC_MSG_ERROR([--with-asciidoc=yes specified but asciidoc not found in PATH])
|
||||||
|
fi
|
||||||
|
have_asciidoc=yes
|
||||||
|
elif test "x$use_asciidoc" = x"no" ; then
|
||||||
|
if test "x$ASCIIDOC" != "x"; then
|
||||||
|
AC_MSG_WARN([ignoring ASCIIDOC environment variable since --with-asciidoc=no was specified])
|
||||||
|
fi
|
||||||
|
have_asciidoc=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([--with-asciidoc expects 'yes' or 'no'])
|
||||||
|
fi
|
||||||
|
m4_ifval([$1],
|
||||||
|
[if test "$have_asciidoc" = yes; then
|
||||||
|
# scrape the asciidoc version
|
||||||
|
AC_MSG_CHECKING([the asciidoc version])
|
||||||
|
asciidoc_version=`$ASCIIDOC --version 2>/dev/null | cut -d' ' -f2`
|
||||||
|
AC_MSG_RESULT([$asciidoc_version])
|
||||||
|
AS_VERSION_COMPARE([$asciidoc_version], [$1],
|
||||||
|
[if test "x$use_asciidoc" = xauto; then
|
||||||
|
AC_MSG_WARN([asciidoc version $asciidoc_version found, but $1 needed])
|
||||||
|
have_asciidoc=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([asciidoc version $asciidoc_version found, but $1 needed])
|
||||||
|
fi])
|
||||||
|
fi])
|
||||||
|
AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes])
|
||||||
|
]) # XORG_WITH_ASCIIDOC
|
||||||
|
|
||||||
|
# XORG_WITH_DOXYGEN([MIN-VERSION])
|
||||||
|
# --------------------------------
|
||||||
|
# Minimum version: 1.5.0
|
||||||
|
#
|
||||||
|
# Documentation tools are not always available on all platforms and sometimes
|
||||||
|
# not at the appropriate level. This macro enables a module to test for the
|
||||||
|
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||||
|
# the --with-doxygen option, it allows maximum flexibilty in making decisions
|
||||||
|
# as whether or not to use the doxygen package.
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# HAVE_DOXYGEN: used in makefiles to conditionally generate documentation
|
||||||
|
# DOXYGEN: returns the path of the doxygen program found
|
||||||
|
# returns the path set by the user in the environment
|
||||||
|
# --with-doxygen: 'yes' user instructs the module to use doxygen
|
||||||
|
# 'no' user instructs the module not to use doxygen
|
||||||
|
#
|
||||||
|
# If the user sets the value of DOXYGEN, AC_PATH_PROG skips testing the path.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_WITH_DOXYGEN],[
|
||||||
|
AC_ARG_VAR([DOXYGEN], [Path to doxygen command])
|
||||||
|
AC_ARG_WITH(doxygen,
|
||||||
|
AS_HELP_STRING([--with-doxygen],
|
||||||
|
[Use doxygen to regenerate documentation (default: yes, if installed)]),
|
||||||
|
[use_doxygen=$withval], [use_doxygen=auto])
|
||||||
|
|
||||||
|
if test "x$use_doxygen" = x"auto"; then
|
||||||
|
AC_PATH_PROG([DOXYGEN], [doxygen])
|
||||||
|
if test "x$DOXYGEN" = "x"; then
|
||||||
|
AC_MSG_WARN([doxygen not found - documentation targets will be skipped])
|
||||||
|
have_doxygen=no
|
||||||
|
else
|
||||||
|
have_doxygen=yes
|
||||||
|
fi
|
||||||
|
elif test "x$use_doxygen" = x"yes" ; then
|
||||||
|
AC_PATH_PROG([DOXYGEN], [doxygen])
|
||||||
|
if test "x$DOXYGEN" = "x"; then
|
||||||
|
AC_MSG_ERROR([--with-doxygen=yes specified but doxygen not found in PATH])
|
||||||
|
fi
|
||||||
|
have_doxygen=yes
|
||||||
|
elif test "x$use_doxygen" = x"no" ; then
|
||||||
|
if test "x$DOXYGEN" != "x"; then
|
||||||
|
AC_MSG_WARN([ignoring DOXYGEN environment variable since --with-doxygen=no was specified])
|
||||||
|
fi
|
||||||
|
have_doxygen=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([--with-doxygen expects 'yes' or 'no'])
|
||||||
|
fi
|
||||||
|
m4_ifval([$1],
|
||||||
|
[if test "$have_doxygen" = yes; then
|
||||||
|
# scrape the doxygen version
|
||||||
|
AC_MSG_CHECKING([the doxygen version])
|
||||||
|
doxygen_version=`$DOXYGEN --version 2>/dev/null`
|
||||||
|
AC_MSG_RESULT([$doxygen_version])
|
||||||
|
AS_VERSION_COMPARE([$doxygen_version], [$1],
|
||||||
|
[if test "x$use_doxygen" = xauto; then
|
||||||
|
AC_MSG_WARN([doxygen version $doxygen_version found, but $1 needed])
|
||||||
|
have_doxygen=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([doxygen version $doxygen_version found, but $1 needed])
|
||||||
|
fi])
|
||||||
|
fi])
|
||||||
|
AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes])
|
||||||
|
]) # XORG_WITH_DOXYGEN
|
||||||
|
|
||||||
|
# XORG_WITH_GROFF
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.6.0
|
||||||
|
#
|
||||||
|
# Documentation tools are not always available on all platforms and sometimes
|
||||||
|
# not at the appropriate level. This macro enables a module to test for the
|
||||||
|
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||||
|
# the --with-groff option, it allows maximum flexibilty in making decisions
|
||||||
|
# as whether or not to use the groff package.
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# HAVE_GROFF: used in makefiles to conditionally generate documentation
|
||||||
|
# HAVE_GROFF_MM: the memorandum macros (-mm) package
|
||||||
|
# HAVE_GROFF_MS: the -ms macros package
|
||||||
|
# GROFF: returns the path of the groff program found
|
||||||
|
# returns the path set by the user in the environment
|
||||||
|
# --with-groff: 'yes' user instructs the module to use groff
|
||||||
|
# 'no' user instructs the module not to use groff
|
||||||
|
#
|
||||||
|
# If the user sets the value of GROFF, AC_PATH_PROG skips testing the path.
|
||||||
|
#
|
||||||
|
# OS and distros often splits groff in a basic and full package, the former
|
||||||
|
# having the groff program and the later having devices, fonts and macros
|
||||||
|
# Checking for the groff executable is not enough.
|
||||||
|
#
|
||||||
|
# If macros are missing, we cannot assume that groff is useless, so we don't
|
||||||
|
# unset HAVE_GROFF or GROFF env variables.
|
||||||
|
# HAVE_GROFF_?? can never be true while HAVE_GROFF is false.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_WITH_GROFF],[
|
||||||
|
AC_ARG_VAR([GROFF], [Path to groff command])
|
||||||
|
AC_ARG_WITH(groff,
|
||||||
|
AS_HELP_STRING([--with-groff],
|
||||||
|
[Use groff to regenerate documentation (default: yes, if installed)]),
|
||||||
|
[use_groff=$withval], [use_groff=auto])
|
||||||
|
|
||||||
|
if test "x$use_groff" = x"auto"; then
|
||||||
|
AC_PATH_PROG([GROFF], [groff])
|
||||||
|
if test "x$GROFF" = "x"; then
|
||||||
|
AC_MSG_WARN([groff not found - documentation targets will be skipped])
|
||||||
|
have_groff=no
|
||||||
|
else
|
||||||
|
have_groff=yes
|
||||||
|
fi
|
||||||
|
elif test "x$use_groff" = x"yes" ; then
|
||||||
|
AC_PATH_PROG([GROFF], [groff])
|
||||||
|
if test "x$GROFF" = "x"; then
|
||||||
|
AC_MSG_ERROR([--with-groff=yes specified but groff not found in PATH])
|
||||||
|
fi
|
||||||
|
have_groff=yes
|
||||||
|
elif test "x$use_groff" = x"no" ; then
|
||||||
|
if test "x$GROFF" != "x"; then
|
||||||
|
AC_MSG_WARN([ignoring GROFF environment variable since --with-groff=no was specified])
|
||||||
|
fi
|
||||||
|
have_groff=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([--with-groff expects 'yes' or 'no'])
|
||||||
|
fi
|
||||||
|
# We have groff, test for the presence of the macro packages
|
||||||
|
if test "x$have_groff" = x"yes"; then
|
||||||
|
AC_MSG_CHECKING([for ${GROFF} -ms macros])
|
||||||
|
if ${GROFF} -ms -I. /dev/null >/dev/null 2>&1 ; then
|
||||||
|
groff_ms_works=yes
|
||||||
|
else
|
||||||
|
groff_ms_works=no
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$groff_ms_works])
|
||||||
|
AC_MSG_CHECKING([for ${GROFF} -mm macros])
|
||||||
|
if ${GROFF} -mm -I. /dev/null >/dev/null 2>&1 ; then
|
||||||
|
groff_mm_works=yes
|
||||||
|
else
|
||||||
|
groff_mm_works=no
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$groff_mm_works])
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([HAVE_GROFF], [test "$have_groff" = yes])
|
||||||
|
AM_CONDITIONAL([HAVE_GROFF_MS], [test "$groff_ms_works" = yes])
|
||||||
|
AM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes])
|
||||||
|
]) # XORG_WITH_GROFF
|
||||||
|
|
||||||
|
# XORG_WITH_FOP
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.6.0
|
||||||
|
#
|
||||||
|
# Documentation tools are not always available on all platforms and sometimes
|
||||||
|
# not at the appropriate level. This macro enables a module to test for the
|
||||||
|
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||||
|
# the --with-fop option, it allows maximum flexibilty in making decisions
|
||||||
|
# as whether or not to use the fop package.
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# HAVE_FOP: used in makefiles to conditionally generate documentation
|
||||||
|
# FOP: returns the path of the fop program found
|
||||||
|
# returns the path set by the user in the environment
|
||||||
|
# --with-fop: 'yes' user instructs the module to use fop
|
||||||
|
# 'no' user instructs the module not to use fop
|
||||||
|
#
|
||||||
|
# If the user sets the value of FOP, AC_PATH_PROG skips testing the path.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_WITH_FOP],[
|
||||||
|
AC_ARG_VAR([FOP], [Path to fop command])
|
||||||
|
AC_ARG_WITH(fop,
|
||||||
|
AS_HELP_STRING([--with-fop],
|
||||||
|
[Use fop to regenerate documentation (default: yes, if installed)]),
|
||||||
|
[use_fop=$withval], [use_fop=auto])
|
||||||
|
|
||||||
|
if test "x$use_fop" = x"auto"; then
|
||||||
|
AC_PATH_PROG([FOP], [fop])
|
||||||
|
if test "x$FOP" = "x"; then
|
||||||
|
AC_MSG_WARN([fop not found - documentation targets will be skipped])
|
||||||
|
have_fop=no
|
||||||
|
else
|
||||||
|
have_fop=yes
|
||||||
|
fi
|
||||||
|
elif test "x$use_fop" = x"yes" ; then
|
||||||
|
AC_PATH_PROG([FOP], [fop])
|
||||||
|
if test "x$FOP" = "x"; then
|
||||||
|
AC_MSG_ERROR([--with-fop=yes specified but fop not found in PATH])
|
||||||
|
fi
|
||||||
|
have_fop=yes
|
||||||
|
elif test "x$use_fop" = x"no" ; then
|
||||||
|
if test "x$FOP" != "x"; then
|
||||||
|
AC_MSG_WARN([ignoring FOP environment variable since --with-fop=no was specified])
|
||||||
|
fi
|
||||||
|
have_fop=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([--with-fop expects 'yes' or 'no'])
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes])
|
||||||
|
]) # XORG_WITH_FOP
|
||||||
|
|
||||||
|
# XORG_WITH_PS2PDF
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.6.0
|
||||||
|
#
|
||||||
|
# Documentation tools are not always available on all platforms and sometimes
|
||||||
|
# not at the appropriate level. This macro enables a module to test for the
|
||||||
|
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||||
|
# the --with-ps2pdf option, it allows maximum flexibilty in making decisions
|
||||||
|
# as whether or not to use the ps2pdf package.
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# HAVE_PS2PDF: used in makefiles to conditionally generate documentation
|
||||||
|
# PS2PDF: returns the path of the ps2pdf program found
|
||||||
|
# returns the path set by the user in the environment
|
||||||
|
# --with-ps2pdf: 'yes' user instructs the module to use ps2pdf
|
||||||
|
# 'no' user instructs the module not to use ps2pdf
|
||||||
|
#
|
||||||
|
# If the user sets the value of PS2PDF, AC_PATH_PROG skips testing the path.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_WITH_PS2PDF],[
|
||||||
|
AC_ARG_VAR([PS2PDF], [Path to ps2pdf command])
|
||||||
|
AC_ARG_WITH(ps2pdf,
|
||||||
|
AS_HELP_STRING([--with-ps2pdf],
|
||||||
|
[Use ps2pdf to regenerate documentation (default: yes, if installed)]),
|
||||||
|
[use_ps2pdf=$withval], [use_ps2pdf=auto])
|
||||||
|
|
||||||
|
if test "x$use_ps2pdf" = x"auto"; then
|
||||||
|
AC_PATH_PROG([PS2PDF], [ps2pdf])
|
||||||
|
if test "x$PS2PDF" = "x"; then
|
||||||
|
AC_MSG_WARN([ps2pdf not found - documentation targets will be skipped])
|
||||||
|
have_ps2pdf=no
|
||||||
|
else
|
||||||
|
have_ps2pdf=yes
|
||||||
|
fi
|
||||||
|
elif test "x$use_ps2pdf" = x"yes" ; then
|
||||||
|
AC_PATH_PROG([PS2PDF], [ps2pdf])
|
||||||
|
if test "x$PS2PDF" = "x"; then
|
||||||
|
AC_MSG_ERROR([--with-ps2pdf=yes specified but ps2pdf not found in PATH])
|
||||||
|
fi
|
||||||
|
have_ps2pdf=yes
|
||||||
|
elif test "x$use_ps2pdf" = x"no" ; then
|
||||||
|
if test "x$PS2PDF" != "x"; then
|
||||||
|
AC_MSG_WARN([ignoring PS2PDF environment variable since --with-ps2pdf=no was specified])
|
||||||
|
fi
|
||||||
|
have_ps2pdf=no
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([--with-ps2pdf expects 'yes' or 'no'])
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes])
|
||||||
|
]) # XORG_WITH_PS2PDF
|
||||||
|
|
||||||
|
# XORG_ENABLE_DOCS (enable_docs=yes)
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.6.0
|
||||||
|
#
|
||||||
|
# Documentation tools are not always available on all platforms and sometimes
|
||||||
|
# not at the appropriate level. This macro enables a builder to skip all
|
||||||
|
# documentation targets except traditional man pages.
|
||||||
|
# Combined with the specific tool checking macros XORG_WITH_*, it provides
|
||||||
|
# maximum flexibilty in controlling documentation building.
|
||||||
|
# Refer to:
|
||||||
|
# XORG_WITH_XMLTO --with-xmlto
|
||||||
|
# XORG_WITH_ASCIIDOC --with-asciidoc
|
||||||
|
# XORG_WITH_DOXYGEN --with-doxygen
|
||||||
|
# XORG_WITH_FOP --with-fop
|
||||||
|
# XORG_WITH_GROFF --with-groff
|
||||||
|
# XORG_WITH_PS2PDF --with-ps2pdf
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# ENABLE_DOCS: used in makefiles to conditionally generate documentation
|
||||||
|
# --enable-docs: 'yes' user instructs the module to generate docs
|
||||||
|
# 'no' user instructs the module not to generate docs
|
||||||
|
# parm1: specify the default value, yes or no.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_ENABLE_DOCS],[
|
||||||
|
default=$1
|
||||||
|
if test "x$default" = x ; then
|
||||||
|
default="yes"
|
||||||
|
fi
|
||||||
|
AC_ARG_ENABLE(docs,
|
||||||
|
AS_HELP_STRING([--enable-docs],
|
||||||
|
[Enable building the documentation (default: yes)]),
|
||||||
|
[build_docs=$enableval], [build_docs=$default])
|
||||||
|
AM_CONDITIONAL(ENABLE_DOCS, [test x$build_docs = xyes])
|
||||||
|
AC_MSG_CHECKING([whether to build documentation])
|
||||||
|
AC_MSG_RESULT([$build_docs])
|
||||||
|
]) # XORG_ENABLE_DOCS
|
||||||
|
|
||||||
|
# XORG_ENABLE_DEVEL_DOCS (enable_devel_docs=yes)
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.6.0
|
||||||
|
#
|
||||||
|
# This macro enables a builder to skip all developer documentation.
|
||||||
|
# Combined with the specific tool checking macros XORG_WITH_*, it provides
|
||||||
|
# maximum flexibilty in controlling documentation building.
|
||||||
|
# Refer to:
|
||||||
|
# XORG_WITH_XMLTO --with-xmlto
|
||||||
|
# XORG_WITH_ASCIIDOC --with-asciidoc
|
||||||
|
# XORG_WITH_DOXYGEN --with-doxygen
|
||||||
|
# XORG_WITH_FOP --with-fop
|
||||||
|
# XORG_WITH_GROFF --with-groff
|
||||||
|
# XORG_WITH_PS2PDF --with-ps2pdf
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# ENABLE_DEVEL_DOCS: used in makefiles to conditionally generate developer docs
|
||||||
|
# --enable-devel-docs: 'yes' user instructs the module to generate developer docs
|
||||||
|
# 'no' user instructs the module not to generate developer docs
|
||||||
|
# parm1: specify the default value, yes or no.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_ENABLE_DEVEL_DOCS],[
|
||||||
|
devel_default=$1
|
||||||
|
if test "x$devel_default" = x ; then
|
||||||
|
devel_default="yes"
|
||||||
|
fi
|
||||||
|
AC_ARG_ENABLE(devel-docs,
|
||||||
|
AS_HELP_STRING([--enable-devel-docs],
|
||||||
|
[Enable building the developer documentation (default: yes)]),
|
||||||
|
[build_devel_docs=$enableval], [build_devel_docs=$devel_default])
|
||||||
|
AM_CONDITIONAL(ENABLE_DEVEL_DOCS, [test x$build_devel_docs = xyes])
|
||||||
|
AC_MSG_CHECKING([whether to build developer documentation])
|
||||||
|
AC_MSG_RESULT([$build_devel_docs])
|
||||||
|
]) # XORG_ENABLE_DEVEL_DOCS
|
||||||
|
|
||||||
|
# XORG_ENABLE_SPECS (enable_specs=yes)
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.6.0
|
||||||
|
#
|
||||||
|
# This macro enables a builder to skip all functional specification targets.
|
||||||
|
# Combined with the specific tool checking macros XORG_WITH_*, it provides
|
||||||
|
# maximum flexibilty in controlling documentation building.
|
||||||
|
# Refer to:
|
||||||
|
# XORG_WITH_XMLTO --with-xmlto
|
||||||
|
# XORG_WITH_ASCIIDOC --with-asciidoc
|
||||||
|
# XORG_WITH_DOXYGEN --with-doxygen
|
||||||
|
# XORG_WITH_FOP --with-fop
|
||||||
|
# XORG_WITH_GROFF --with-groff
|
||||||
|
# XORG_WITH_PS2PDF --with-ps2pdf
|
||||||
|
#
|
||||||
|
# Interface to module:
|
||||||
|
# ENABLE_SPECS: used in makefiles to conditionally generate specs
|
||||||
|
# --enable-specs: 'yes' user instructs the module to generate specs
|
||||||
|
# 'no' user instructs the module not to generate specs
|
||||||
|
# parm1: specify the default value, yes or no.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_ENABLE_SPECS],[
|
||||||
|
spec_default=$1
|
||||||
|
if test "x$spec_default" = x ; then
|
||||||
|
spec_default="yes"
|
||||||
|
fi
|
||||||
|
AC_ARG_ENABLE(specs,
|
||||||
|
AS_HELP_STRING([--enable-specs],
|
||||||
|
[Enable building the specs (default: yes)]),
|
||||||
|
[build_specs=$enableval], [build_specs=$spec_default])
|
||||||
|
AM_CONDITIONAL(ENABLE_SPECS, [test x$build_specs = xyes])
|
||||||
|
AC_MSG_CHECKING([whether to build functional specifications])
|
||||||
|
AC_MSG_RESULT([$build_specs])
|
||||||
|
]) # XORG_ENABLE_SPECS
|
||||||
|
|
||||||
# XORG_CHECK_MALLOC_ZERO
|
# XORG_CHECK_MALLOC_ZERO
|
||||||
# ----------------------
|
# ----------------------
|
||||||
# Minimum version: 1.0.0
|
# Minimum version: 1.0.0
|
||||||
@ -7972,7 +8462,8 @@ main() {
|
|||||||
exit(m0 == 0 || r0 == 0 || c0 == 0 ? 0 : 1);
|
exit(m0 == 0 || r0 == 0 || c0 == 0 ? 0 : 1);
|
||||||
}],
|
}],
|
||||||
[MALLOC_ZERO_RETURNS_NULL=yes],
|
[MALLOC_ZERO_RETURNS_NULL=yes],
|
||||||
[MALLOC_ZERO_RETURNS_NULL=no])
|
[MALLOC_ZERO_RETURNS_NULL=no],
|
||||||
|
[MALLOC_ZERO_RETURNS_NULL=yes])
|
||||||
fi
|
fi
|
||||||
AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL])
|
AC_MSG_RESULT([$MALLOC_ZERO_RETURNS_NULL])
|
||||||
|
|
||||||
@ -8074,7 +8565,7 @@ AC_REQUIRE([AC_PROG_CC])
|
|||||||
if test "x$GCC" = xyes ; then
|
if test "x$GCC" = xyes ; then
|
||||||
CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
|
CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
|
||||||
-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
|
-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
|
||||||
-Wbad-function-cast"
|
-Wbad-function-cast -Wformat=2"
|
||||||
case `$CC -dumpversion` in
|
case `$CC -dumpversion` in
|
||||||
3.4.* | 4.*)
|
3.4.* | 4.*)
|
||||||
CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
|
CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
|
||||||
@ -8087,7 +8578,6 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
AC_SUBST(CWARNFLAGS)
|
AC_SUBST(CWARNFLAGS)
|
||||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
||||||
]) # XORG_CWARNFLAGS
|
]) # XORG_CWARNFLAGS
|
||||||
|
|
||||||
# XORG_STRICT_OPTION
|
# XORG_STRICT_OPTION
|
||||||
@ -8130,8 +8620,28 @@ XORG_CWARNFLAGS
|
|||||||
XORG_STRICT_OPTION
|
XORG_STRICT_OPTION
|
||||||
XORG_RELEASE_VERSION
|
XORG_RELEASE_VERSION
|
||||||
XORG_CHANGELOG
|
XORG_CHANGELOG
|
||||||
|
XORG_INSTALL
|
||||||
XORG_MANPAGE_SECTIONS
|
XORG_MANPAGE_SECTIONS
|
||||||
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
|
||||||
|
[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
|
||||||
]) # XORG_DEFAULT_OPTIONS
|
]) # XORG_DEFAULT_OPTIONS
|
||||||
|
|
||||||
|
# XORG_INSTALL()
|
||||||
|
# ----------------
|
||||||
|
# Minimum version: 1.4.0
|
||||||
|
#
|
||||||
|
# Defines the variable INSTALL_CMD as the command to copy
|
||||||
|
# INSTALL from $prefix/share/util-macros.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_INSTALL], [
|
||||||
|
AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
|
macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
|
||||||
|
INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
|
||||||
|
mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
|
||||||
|
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
|
||||||
|
echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
|
||||||
|
AC_SUBST([INSTALL_CMD])
|
||||||
|
]) # XORG_INSTALL
|
||||||
dnl Copyright 2005 Red Hat, Inc
|
dnl Copyright 2005 Red Hat, Inc
|
||||||
dnl
|
dnl
|
||||||
dnl Permission to use, copy, modify, distribute, and sell this software and its
|
dnl Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
@ -8201,14 +8711,13 @@ AC_DEFUN([XORG_RELEASE_VERSION],[
|
|||||||
# Defines the variable CHANGELOG_CMD as the command to generate
|
# Defines the variable CHANGELOG_CMD as the command to generate
|
||||||
# ChangeLog from git.
|
# ChangeLog from git.
|
||||||
#
|
#
|
||||||
# Arrange that distcleancheck ignores ChangeLog left over by distclean.
|
|
||||||
#
|
#
|
||||||
AC_DEFUN([XORG_CHANGELOG], [
|
AC_DEFUN([XORG_CHANGELOG], [
|
||||||
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > .changelog.tmp && \
|
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
|
||||||
mv .changelog.tmp ChangeLog) || (rm -f .changelog.tmp; touch ChangeLog; \
|
mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
|
||||||
|
|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
|
||||||
echo 'git directory not found: installing possibly empty changelog.' >&2)"
|
echo 'git directory not found: installing possibly empty changelog.' >&2)"
|
||||||
AC_SUBST([CHANGELOG_CMD])
|
AC_SUBST([CHANGELOG_CMD])
|
||||||
AC_SUBST([distcleancheck_listfiles], ['find . -type f ! -name ChangeLog -print'])
|
|
||||||
]) # XORG_CHANGELOG
|
]) # XORG_CHANGELOG
|
||||||
|
|
||||||
dnl Copyright 2005 Red Hat, Inc
|
dnl Copyright 2005 Red Hat, Inc
|
||||||
|
@ -53,6 +53,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
|
|||||||
AMDEP_FALSE = @AMDEP_FALSE@
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
AMDEP_TRUE = @AMDEP_TRUE@
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
APP_MAN_DIR = @APP_MAN_DIR@
|
APP_MAN_DIR = @APP_MAN_DIR@
|
||||||
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
@ -68,6 +69,7 @@ CFLAGS = @CFLAGS@
|
|||||||
CHANGELOG_CMD = @CHANGELOG_CMD@
|
CHANGELOG_CMD = @CHANGELOG_CMD@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CWARNFLAGS = @CWARNFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
@ -92,6 +94,7 @@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
|||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
||||||
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
||||||
|
INSTALL_CMD = @INSTALL_CMD@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
@ -153,7 +156,6 @@ build_os = @build_os@
|
|||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
distcleancheck_listfiles = @distcleancheck_listfiles@
|
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
@ -213,9 +215,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu compat/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign compat/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
cd $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu compat/Makefile
|
$(AUTOMAKE) --foreign compat/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
|
@ -354,7 +354,7 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Only upload when needed, to avoid unneeded delays. */
|
/* Only upload when needed, to avoid unneeded delays. */
|
||||||
if (!crtc->active)
|
if (!crtc->active && crtc->funcs->gamma_set)
|
||||||
crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green,
|
crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green,
|
||||||
crtc->gamma_blue, crtc->gamma_size);
|
crtc->gamma_blue, crtc->gamma_size);
|
||||||
|
|
||||||
@ -384,7 +384,9 @@ done:
|
|||||||
crtc->transformPresent = saved_transform_present;
|
crtc->transformPresent = saved_transform_present;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(adjusted_mode);
|
if (adjusted_mode->name)
|
||||||
|
xfree(adjusted_mode->name);
|
||||||
|
xfree(adjusted_mode);
|
||||||
|
|
||||||
if (didLock)
|
if (didLock)
|
||||||
crtc->funcs->unlock (crtc);
|
crtc->funcs->unlock (crtc);
|
||||||
@ -803,6 +805,9 @@ xf86CrtcScreenInit (ScreenPtr screen)
|
|||||||
config->CloseScreen = screen->CloseScreen;
|
config->CloseScreen = screen->CloseScreen;
|
||||||
screen->CloseScreen = xf86CrtcCloseScreen;
|
screen->CloseScreen = xf86CrtcCloseScreen;
|
||||||
|
|
||||||
|
#ifdef XFreeXDGA
|
||||||
|
_xf86_di_dga_init_internal(screen);
|
||||||
|
#endif
|
||||||
#ifdef RANDR_13_INTERFACE
|
#ifdef RANDR_13_INTERFACE
|
||||||
return RANDR_INTERFACE_VERSION;
|
return RANDR_INTERFACE_VERSION;
|
||||||
#else
|
#else
|
||||||
@ -1372,34 +1377,6 @@ xf86InitialPanning (ScrnInfoPtr scrn)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX walk the monitor mode list and prune out duplicates that
|
|
||||||
* are inserted by xf86DDCMonitorSet. In an ideal world, that
|
|
||||||
* function would do this work by itself.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
xf86PruneDuplicateMonitorModes (MonPtr Monitor)
|
|
||||||
{
|
|
||||||
DisplayModePtr master, clone, next;
|
|
||||||
|
|
||||||
for (master = Monitor->Modes;
|
|
||||||
master && master != Monitor->Last;
|
|
||||||
master = master->next)
|
|
||||||
{
|
|
||||||
for (clone = master->next; clone && clone != Monitor->Modes; clone = next)
|
|
||||||
{
|
|
||||||
next = clone->next;
|
|
||||||
if (xf86ModesEqual (master, clone))
|
|
||||||
{
|
|
||||||
if (Monitor->Last == clone)
|
|
||||||
Monitor->Last = clone->prev;
|
|
||||||
xf86DeleteMode (&Monitor->Modes, clone);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Return - 0 + if a should be earlier, same or later than b in list
|
/** Return - 0 + if a should be earlier, same or later than b in list
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
@ -1518,6 +1495,46 @@ GuessRangeFromModes(MonPtr mon, DisplayModePtr mode)
|
|||||||
mon->vrefresh[0].lo = 58.0;
|
mon->vrefresh[0].lo = 58.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum det_monrec_source {
|
||||||
|
sync_config, sync_edid, sync_default
|
||||||
|
};
|
||||||
|
|
||||||
|
struct det_monrec_parameter {
|
||||||
|
MonRec *mon_rec;
|
||||||
|
int *max_clock;
|
||||||
|
Bool set_hsync;
|
||||||
|
Bool set_vrefresh;
|
||||||
|
enum det_monrec_source *sync_source;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void handle_detailed_monrec(struct detailed_monitor_section *det_mon,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
enum { sync_config, sync_edid, sync_default };
|
||||||
|
struct det_monrec_parameter *p;
|
||||||
|
p = (struct det_monrec_parameter *)data;
|
||||||
|
|
||||||
|
if (det_mon->type == DS_RANGES) {
|
||||||
|
struct monitor_ranges *ranges = &det_mon->section.ranges;
|
||||||
|
if (p->set_hsync && ranges->max_h) {
|
||||||
|
p->mon_rec->hsync[p->mon_rec->nHsync].lo = ranges->min_h;
|
||||||
|
p->mon_rec->hsync[p->mon_rec->nHsync].hi = ranges->max_h;
|
||||||
|
p->mon_rec->nHsync++;
|
||||||
|
if (*p->sync_source == sync_default)
|
||||||
|
*p->sync_source = sync_edid;
|
||||||
|
}
|
||||||
|
if (p->set_vrefresh && ranges->max_v) {
|
||||||
|
p->mon_rec->vrefresh[p->mon_rec->nVrefresh].lo = ranges->min_v;
|
||||||
|
p->mon_rec->vrefresh[p->mon_rec->nVrefresh].hi = ranges->max_v;
|
||||||
|
p->mon_rec->nVrefresh++;
|
||||||
|
if (*p->sync_source == sync_default)
|
||||||
|
*p->sync_source = sync_edid;
|
||||||
|
}
|
||||||
|
if (ranges->max_clock * 1000 > *p->max_clock)
|
||||||
|
*p->max_clock = ranges->max_clock * 1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
||||||
{
|
{
|
||||||
@ -1534,9 +1551,6 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||||||
maxY = config->maxHeight;
|
maxY = config->maxHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Elide duplicate modes before defaulting code uses them */
|
|
||||||
xf86PruneDuplicateMonitorModes (scrn->monitor);
|
|
||||||
|
|
||||||
/* Probe the list of modes for each output. */
|
/* Probe the list of modes for each output. */
|
||||||
for (o = 0; o < config->num_output; o++)
|
for (o = 0; o < config->num_output; o++)
|
||||||
{
|
{
|
||||||
@ -1551,7 +1565,9 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||||||
int max_clock = 0;
|
int max_clock = 0;
|
||||||
double clock;
|
double clock;
|
||||||
Bool add_default_modes = TRUE;
|
Bool add_default_modes = TRUE;
|
||||||
enum { sync_config, sync_edid, sync_default } sync_source = sync_default;
|
Bool debug_modes = config->debug_modes ||
|
||||||
|
xf86Initialising;
|
||||||
|
enum det_monrec_source sync_source = sync_default;
|
||||||
|
|
||||||
while (output->probed_modes != NULL)
|
while (output->probed_modes != NULL)
|
||||||
xf86DeleteMode(&output->probed_modes, output->probed_modes);
|
xf86DeleteMode(&output->probed_modes, output->probed_modes);
|
||||||
@ -1561,7 +1577,8 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||||||
*/
|
*/
|
||||||
output->status = (*output->funcs->detect)(output);
|
output->status = (*output->funcs->detect)(output);
|
||||||
|
|
||||||
if (output->status == XF86OutputStatusDisconnected)
|
if (output->status == XF86OutputStatusDisconnected &&
|
||||||
|
!xf86ReturnOptValBool(output->options, OPTION_ENABLE, FALSE))
|
||||||
{
|
{
|
||||||
xf86OutputSetEDID (output, NULL);
|
xf86OutputSetEDID (output, NULL);
|
||||||
continue;
|
continue;
|
||||||
@ -1596,42 +1613,24 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||||||
|
|
||||||
edid_monitor = output->MonInfo;
|
edid_monitor = output->MonInfo;
|
||||||
|
|
||||||
if (edid_monitor)
|
if (edid_monitor)
|
||||||
{
|
{
|
||||||
int i;
|
struct det_monrec_parameter p;
|
||||||
Bool set_hsync = mon_rec.nHsync == 0;
|
struct disp_features *features = &edid_monitor->features;
|
||||||
Bool set_vrefresh = mon_rec.nVrefresh == 0;
|
|
||||||
struct disp_features *features = &edid_monitor->features;
|
|
||||||
|
|
||||||
/* if display is not continuous-frequency, don't add default modes */
|
/* if display is not continuous-frequency, don't add default modes */
|
||||||
if (!GTF_SUPPORTED(features->msc))
|
if (!GTF_SUPPORTED(features->msc))
|
||||||
add_default_modes = FALSE;
|
add_default_modes = FALSE;
|
||||||
|
|
||||||
for (i = 0; i < sizeof (edid_monitor->det_mon) / sizeof (edid_monitor->det_mon[0]); i++)
|
p.mon_rec = &mon_rec;
|
||||||
{
|
p.max_clock = &max_clock;
|
||||||
if (edid_monitor->det_mon[i].type == DS_RANGES)
|
p.set_hsync = mon_rec.nHsync == 0;
|
||||||
{
|
p.set_vrefresh = mon_rec.nVrefresh == 0;
|
||||||
struct monitor_ranges *ranges = &edid_monitor->det_mon[i].section.ranges;
|
p.sync_source = &sync_source;
|
||||||
if (set_hsync && ranges->max_h)
|
|
||||||
{
|
xf86ForEachDetailedBlock(edid_monitor,
|
||||||
mon_rec.hsync[mon_rec.nHsync].lo = ranges->min_h;
|
handle_detailed_monrec,
|
||||||
mon_rec.hsync[mon_rec.nHsync].hi = ranges->max_h;
|
&p);
|
||||||
mon_rec.nHsync++;
|
|
||||||
if (sync_source == sync_default)
|
|
||||||
sync_source = sync_edid;
|
|
||||||
}
|
|
||||||
if (set_vrefresh && ranges->max_v)
|
|
||||||
{
|
|
||||||
mon_rec.vrefresh[mon_rec.nVrefresh].lo = ranges->min_v;
|
|
||||||
mon_rec.vrefresh[mon_rec.nVrefresh].hi = ranges->max_v;
|
|
||||||
mon_rec.nVrefresh++;
|
|
||||||
if (sync_source == sync_default)
|
|
||||||
sync_source = sync_edid;
|
|
||||||
}
|
|
||||||
if (ranges->max_clock * 1000 > max_clock)
|
|
||||||
max_clock = ranges->max_clock * 1000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xf86GetOptValFreq (output->options, OPTION_MIN_CLOCK,
|
if (xf86GetOptValFreq (output->options, OPTION_MIN_CLOCK,
|
||||||
@ -1720,8 +1719,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||||||
if (mode->status == MODE_OK)
|
if (mode->status == MODE_OK)
|
||||||
mode->status = (*output->funcs->mode_valid)(output, mode);
|
mode->status = (*output->funcs->mode_valid)(output, mode);
|
||||||
|
|
||||||
xf86PruneInvalidModes(scrn, &output->probed_modes,
|
xf86PruneInvalidModes(scrn, &output->probed_modes, debug_modes);
|
||||||
config->debug_modes);
|
|
||||||
|
|
||||||
output->probed_modes = xf86SortModes (output->probed_modes);
|
output->probed_modes = xf86SortModes (output->probed_modes);
|
||||||
|
|
||||||
@ -1753,7 +1751,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||||||
|
|
||||||
output->initial_rotation = xf86OutputInitialRotation (output);
|
output->initial_rotation = xf86OutputInitialRotation (output);
|
||||||
|
|
||||||
if (config->debug_modes) {
|
if (debug_modes) {
|
||||||
if (output->probed_modes != NULL) {
|
if (output->probed_modes != NULL) {
|
||||||
xf86DrvMsg(scrn->scrnIndex, X_INFO,
|
xf86DrvMsg(scrn->scrnIndex, X_INFO,
|
||||||
"Printing probed modes for output %s\n",
|
"Printing probed modes for output %s\n",
|
||||||
@ -1772,7 +1770,7 @@ xf86ProbeOutputModes (ScrnInfoPtr scrn, int maxX, int maxY)
|
|||||||
mode->VRefresh = xf86ModeVRefresh(mode);
|
mode->VRefresh = xf86ModeVRefresh(mode);
|
||||||
xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
|
xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
|
||||||
|
|
||||||
if (config->debug_modes)
|
if (debug_modes)
|
||||||
xf86PrintModeline(scrn->scrnIndex, mode);
|
xf86PrintModeline(scrn->scrnIndex, mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1921,6 +1919,10 @@ xf86SetScrnInfoModes (ScrnInfoPtr scrn)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
scrn->currentMode = scrn->modes;
|
scrn->currentMode = scrn->modes;
|
||||||
|
#ifdef XFreeXDGA
|
||||||
|
if (scrn->pScreen)
|
||||||
|
_xf86_di_dga_reinit_internal(scrn->pScreen);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -2593,8 +2595,8 @@ xf86SetDesiredModes (ScrnInfoPtr scrn)
|
|||||||
if (!crtc->enabled)
|
if (!crtc->enabled)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (config->output[config->compat_output]->crtc == crtc)
|
if (xf86CompatOutput(scrn) && xf86CompatCrtc(scrn) == crtc)
|
||||||
output = config->output[config->compat_output];
|
output = xf86CompatOutput(scrn);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (o = 0; o < config->num_output; o++)
|
for (o = 0; o < config->num_output; o++)
|
||||||
@ -2714,14 +2716,16 @@ xf86SetSingleMode (ScrnInfoPtr pScrn, DisplayModePtr desired, Rotation rotation)
|
|||||||
{
|
{
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
|
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
|
||||||
Bool ok = TRUE;
|
Bool ok = TRUE;
|
||||||
xf86OutputPtr compat_output = config->output[config->compat_output];
|
xf86OutputPtr compat_output;
|
||||||
DisplayModePtr compat_mode;
|
DisplayModePtr compat_mode = NULL;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Let the compat output drive the final mode selection
|
* Let the compat output drive the final mode selection
|
||||||
*/
|
*/
|
||||||
compat_mode = xf86OutputFindClosestMode (compat_output, desired);
|
compat_output = xf86CompatOutput(pScrn);
|
||||||
|
if (compat_output)
|
||||||
|
compat_mode = xf86OutputFindClosestMode (compat_output, desired);
|
||||||
if (compat_mode)
|
if (compat_mode)
|
||||||
desired = compat_mode;
|
desired = compat_mode;
|
||||||
|
|
||||||
@ -2891,6 +2895,35 @@ xf86OutputSetEDIDProperty (xf86OutputPtr output, void *data, int data_len)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Pull out a phyiscal size from a detailed timing if available. */
|
||||||
|
struct det_phySize_parameter {
|
||||||
|
xf86OutputPtr output;
|
||||||
|
ddc_quirk_t quirks;
|
||||||
|
Bool ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void handle_detailed_physical_size(struct detailed_monitor_section
|
||||||
|
*det_mon, void *data)
|
||||||
|
{
|
||||||
|
struct det_phySize_parameter *p;
|
||||||
|
p = (struct det_phySize_parameter *)data;
|
||||||
|
|
||||||
|
if (p->ret == TRUE )
|
||||||
|
return ;
|
||||||
|
|
||||||
|
xf86DetTimingApplyQuirks(det_mon, p->quirks,
|
||||||
|
p->output->MonInfo->features.hsize,
|
||||||
|
p->output->MonInfo->features.vsize);
|
||||||
|
if (det_mon->type == DT &&
|
||||||
|
det_mon->section.d_timings.h_size != 0 &&
|
||||||
|
det_mon->section.d_timings.v_size != 0) {
|
||||||
|
|
||||||
|
p->output->mm_width = det_mon->section.d_timings.h_size;
|
||||||
|
p->output->mm_height = det_mon->section.d_timings.v_size;
|
||||||
|
p->ret = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the EDID information for the specified output
|
* Set the EDID information for the specified output
|
||||||
*/
|
*/
|
||||||
@ -2899,7 +2932,7 @@ xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
|
|||||||
{
|
{
|
||||||
ScrnInfoPtr scrn = output->scrn;
|
ScrnInfoPtr scrn = output->scrn;
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||||
int i;
|
Bool debug_modes = config->debug_modes || xf86Initialising;
|
||||||
#ifdef RANDR_12_INTERFACE
|
#ifdef RANDR_12_INTERFACE
|
||||||
int size;
|
int size;
|
||||||
#endif
|
#endif
|
||||||
@ -2909,14 +2942,14 @@ xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
|
|||||||
|
|
||||||
output->MonInfo = edid_mon;
|
output->MonInfo = edid_mon;
|
||||||
|
|
||||||
if (config->debug_modes) {
|
if (debug_modes) {
|
||||||
xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n",
|
xf86DrvMsg(scrn->scrnIndex, X_INFO, "EDID for output %s\n",
|
||||||
output->name);
|
output->name);
|
||||||
xf86PrintEDID(edid_mon);
|
xf86PrintEDID(edid_mon);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the DDC properties for the 'compat' output */
|
/* Set the DDC properties for the 'compat' output */
|
||||||
if (output == config->output[config->compat_output])
|
if (output == xf86CompatOutput(scrn))
|
||||||
xf86SetDDCproperties(scrn, edid_mon);
|
xf86SetDDCproperties(scrn, edid_mon);
|
||||||
|
|
||||||
#ifdef RANDR_12_INTERFACE
|
#ifdef RANDR_12_INTERFACE
|
||||||
@ -2934,20 +2967,15 @@ xf86OutputSetEDID (xf86OutputPtr output, xf86MonPtr edid_mon)
|
|||||||
xf86OutputSetEDIDProperty (output, edid_mon ? edid_mon->rawData : NULL, size);
|
xf86OutputSetEDIDProperty (output, edid_mon ? edid_mon->rawData : NULL, size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (edid_mon)
|
if (edid_mon) {
|
||||||
{
|
|
||||||
/* Pull out a phyiscal size from a detailed timing if available. */
|
struct det_phySize_parameter p;
|
||||||
for (i = 0; i < 4; i++) {
|
p.output = output;
|
||||||
if (edid_mon->det_mon[i].type == DT &&
|
p.quirks = xf86DDCDetectQuirks(scrn->scrnIndex,edid_mon, FALSE);
|
||||||
edid_mon->det_mon[i].section.d_timings.h_size != 0 &&
|
p.ret = FALSE;
|
||||||
edid_mon->det_mon[i].section.d_timings.v_size != 0)
|
xf86ForEachDetailedBlock(edid_mon,
|
||||||
{
|
handle_detailed_physical_size, &p);
|
||||||
output->mm_width = edid_mon->det_mon[i].section.d_timings.h_size;
|
|
||||||
output->mm_height = edid_mon->det_mon[i].section.d_timings.v_size;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if no mm size is available from a detailed timing, check the max size field */
|
/* if no mm size is available from a detailed timing, check the max size field */
|
||||||
if ((!output->mm_width || !output->mm_height) &&
|
if ((!output->mm_width || !output->mm_height) &&
|
||||||
(edid_mon->features.hsize && edid_mon->features.vsize))
|
(edid_mon->features.hsize && edid_mon->features.vsize))
|
||||||
|
@ -689,6 +689,32 @@ extern _X_EXPORT int xf86CrtcConfigPrivateIndex;
|
|||||||
|
|
||||||
#define XF86_CRTC_CONFIG_PTR(p) ((xf86CrtcConfigPtr) ((p)->privates[xf86CrtcConfigPrivateIndex].ptr))
|
#define XF86_CRTC_CONFIG_PTR(p) ((xf86CrtcConfigPtr) ((p)->privates[xf86CrtcConfigPrivateIndex].ptr))
|
||||||
|
|
||||||
|
static _X_INLINE xf86OutputPtr
|
||||||
|
xf86CompatOutput(ScrnInfoPtr pScrn)
|
||||||
|
{
|
||||||
|
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
|
||||||
|
return config->output[config->compat_output];
|
||||||
|
}
|
||||||
|
|
||||||
|
static _X_INLINE xf86CrtcPtr
|
||||||
|
xf86CompatCrtc(ScrnInfoPtr pScrn)
|
||||||
|
{
|
||||||
|
xf86OutputPtr compat_output = xf86CompatOutput(pScrn);
|
||||||
|
if (!compat_output)
|
||||||
|
return NULL;
|
||||||
|
return compat_output->crtc;
|
||||||
|
}
|
||||||
|
|
||||||
|
static _X_INLINE RRCrtcPtr
|
||||||
|
xf86CompatRRCrtc(ScrnInfoPtr pScrn)
|
||||||
|
{
|
||||||
|
xf86CrtcPtr compat_crtc = xf86CompatCrtc(pScrn);
|
||||||
|
if (!compat_crtc)
|
||||||
|
return NULL;
|
||||||
|
return compat_crtc->randr_crtc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize xf86CrtcConfig structure
|
* Initialize xf86CrtcConfig structure
|
||||||
*/
|
*/
|
||||||
@ -833,6 +859,10 @@ xf86OutputGetEDID (xf86OutputPtr output, I2CBusPtr pDDCBus);
|
|||||||
extern _X_EXPORT Bool
|
extern _X_EXPORT Bool
|
||||||
xf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address);
|
xf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address);
|
||||||
|
|
||||||
|
/* this is the real function, used only internally */
|
||||||
|
_X_INTERNAL Bool
|
||||||
|
_xf86_di_dga_init_internal (ScreenPtr pScreen);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Re-initialize dga for this screen (as when the set of modes changes)
|
* Re-initialize dga for this screen (as when the set of modes changes)
|
||||||
*/
|
*/
|
||||||
@ -841,6 +871,10 @@ extern _X_EXPORT Bool
|
|||||||
xf86DiDGAReInit (ScreenPtr pScreen);
|
xf86DiDGAReInit (ScreenPtr pScreen);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* This is the real function, used only internally */
|
||||||
|
_X_INTERNAL Bool
|
||||||
|
_xf86_di_dga_reinit_internal (ScreenPtr pScreen);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set the subpixel order reported for the screen using
|
* Set the subpixel order reported for the screen using
|
||||||
* the information from the outputs
|
* the information from the outputs
|
||||||
|
@ -480,10 +480,10 @@ xf86_use_hw_cursor_argb (ScreenPtr screen, CursorPtr cursor)
|
|||||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||||
xf86CursorInfoPtr cursor_info = xf86_config->cursor_info;
|
xf86CursorInfoPtr cursor_info = xf86_config->cursor_info;
|
||||||
|
|
||||||
|
++cursor->refcnt;
|
||||||
if (xf86_config->cursor)
|
if (xf86_config->cursor)
|
||||||
FreeCursor (xf86_config->cursor, None);
|
FreeCursor (xf86_config->cursor, None);
|
||||||
xf86_config->cursor = cursor;
|
xf86_config->cursor = cursor;
|
||||||
++cursor->refcnt;
|
|
||||||
|
|
||||||
/* Make sure ARGB support is available */
|
/* Make sure ARGB support is available */
|
||||||
if ((cursor_info->Flags & HARDWARE_CURSOR_ARGB) == 0)
|
if ((cursor_info->Flags & HARDWARE_CURSOR_ARGB) == 0)
|
||||||
|
@ -72,8 +72,7 @@ xf86_dga_get_modes (ScreenPtr pScreen)
|
|||||||
mode = modes + num++;
|
mode = modes + num++;
|
||||||
|
|
||||||
mode->mode = display_mode;
|
mode->mode = display_mode;
|
||||||
mode->flags = DGA_CONCURRENT_ACCESS | DGA_PIXMAP_AVAILABLE;
|
mode->flags = DGA_CONCURRENT_ACCESS;
|
||||||
mode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT;
|
|
||||||
if (display_mode->Flags & V_DBLSCAN)
|
if (display_mode->Flags & V_DBLSCAN)
|
||||||
mode->flags |= DGA_DOUBLESCAN;
|
mode->flags |= DGA_DOUBLESCAN;
|
||||||
if (display_mode->Flags & V_INTERLACE)
|
if (display_mode->Flags & V_INTERLACE)
|
||||||
@ -91,14 +90,14 @@ xf86_dga_get_modes (ScreenPtr pScreen)
|
|||||||
mode->yViewportStep = 1;
|
mode->yViewportStep = 1;
|
||||||
mode->viewportFlags = DGA_FLIP_RETRACE;
|
mode->viewportFlags = DGA_FLIP_RETRACE;
|
||||||
mode->offset = 0;
|
mode->offset = 0;
|
||||||
mode->address = (unsigned char *) xf86_config->dga_address;
|
mode->address = 0;
|
||||||
mode->bytesPerScanline = xf86_config->dga_stride;
|
mode->imageWidth = mode->viewportWidth;
|
||||||
mode->imageWidth = xf86_config->dga_width;
|
mode->imageHeight = mode->viewportHeight;
|
||||||
mode->imageHeight = xf86_config->dga_height;
|
mode->bytesPerScanline = (mode->imageWidth * scrn->bitsPerPixel) >> 3;
|
||||||
mode->pixmapWidth = mode->imageWidth;
|
mode->pixmapWidth = mode->imageWidth;
|
||||||
mode->pixmapHeight = mode->imageHeight;
|
mode->pixmapHeight = mode->imageHeight;
|
||||||
mode->maxViewportX = mode->imageWidth - mode->viewportWidth;
|
mode->maxViewportX = 0;
|
||||||
mode->maxViewportY = mode->imageHeight - mode->viewportHeight;
|
mode->maxViewportY = 0;
|
||||||
|
|
||||||
display_mode = display_mode->next;
|
display_mode = display_mode->next;
|
||||||
if (display_mode == scrn->modes)
|
if (display_mode == scrn->modes)
|
||||||
@ -148,94 +147,12 @@ xf86_dga_set_viewport(ScrnInfoPtr scrn, int x, int y, int flags)
|
|||||||
scrn->AdjustFrame(scrn->pScreen->myNum, x, y, flags);
|
scrn->AdjustFrame(scrn->pScreen->myNum, x, y, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
|
||||||
xf86_dga_get_drawable_and_gc (ScrnInfoPtr scrn, DrawablePtr *ppDrawable, GCPtr *ppGC)
|
|
||||||
{
|
|
||||||
ScreenPtr pScreen = scrn->pScreen;
|
|
||||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
|
||||||
PixmapPtr pPixmap;
|
|
||||||
GCPtr pGC;
|
|
||||||
|
|
||||||
pPixmap = GetScratchPixmapHeader (pScreen, xf86_config->dga_width, xf86_config->dga_height,
|
|
||||||
scrn->depth, scrn->bitsPerPixel, xf86_config->dga_stride,
|
|
||||||
(char *) scrn->memPhysBase + scrn->fbOffset);
|
|
||||||
if (!pPixmap)
|
|
||||||
return FALSE;
|
|
||||||
pGC = GetScratchGC (scrn->depth, pScreen);
|
|
||||||
if (!pGC)
|
|
||||||
{
|
|
||||||
FreeScratchPixmapHeader (pPixmap);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
*ppDrawable = &pPixmap->drawable;
|
|
||||||
*ppGC = pGC;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
xf86_dga_release_drawable_and_gc (ScrnInfoPtr scrn, DrawablePtr pDrawable, GCPtr pGC)
|
|
||||||
{
|
|
||||||
FreeScratchGC (pGC);
|
|
||||||
FreeScratchPixmapHeader ((PixmapPtr) pDrawable);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
xf86_dga_fill_rect(ScrnInfoPtr scrn, int x, int y, int w, int h, unsigned long color)
|
|
||||||
{
|
|
||||||
GCPtr pGC;
|
|
||||||
DrawablePtr pDrawable;
|
|
||||||
XID vals[1];
|
|
||||||
xRectangle r;
|
|
||||||
|
|
||||||
if (!xf86_dga_get_drawable_and_gc (scrn, &pDrawable, &pGC))
|
|
||||||
return;
|
|
||||||
vals[0] = color;
|
|
||||||
ChangeGC (pGC, GCForeground, vals);
|
|
||||||
ValidateGC (pDrawable, pGC);
|
|
||||||
r.x = x;
|
|
||||||
r.y = y;
|
|
||||||
r.width = w;
|
|
||||||
r.height = h;
|
|
||||||
pGC->ops->PolyFillRect (pDrawable, pGC, 1, &r);
|
|
||||||
xf86_dga_release_drawable_and_gc (scrn, pDrawable, pGC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
xf86_dga_sync(ScrnInfoPtr scrn)
|
|
||||||
{
|
|
||||||
ScreenPtr pScreen = scrn->pScreen;
|
|
||||||
WindowPtr pRoot = WindowTable [pScreen->myNum];
|
|
||||||
char buffer[4];
|
|
||||||
|
|
||||||
pScreen->GetImage (&pRoot->drawable, 0, 0, 1, 1, ZPixmap, ~0L, buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
xf86_dga_blit_rect(ScrnInfoPtr scrn, int srcx, int srcy, int w, int h, int dstx, int dsty)
|
|
||||||
{
|
|
||||||
DrawablePtr pDrawable;
|
|
||||||
GCPtr pGC;
|
|
||||||
|
|
||||||
if (!xf86_dga_get_drawable_and_gc (scrn, &pDrawable, &pGC))
|
|
||||||
return;
|
|
||||||
ValidateGC (pDrawable, pGC);
|
|
||||||
pGC->ops->CopyArea (pDrawable, pDrawable, pGC, srcx, srcy, w, h, dstx, dsty);
|
|
||||||
xf86_dga_release_drawable_and_gc (scrn, pDrawable, pGC);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
xf86_dga_open_framebuffer(ScrnInfoPtr scrn,
|
xf86_dga_open_framebuffer(ScrnInfoPtr scrn,
|
||||||
char **name,
|
char **name,
|
||||||
unsigned char **mem, int *size, int *offset, int *flags)
|
unsigned char **mem, int *size, int *offset, int *flags)
|
||||||
{
|
{
|
||||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
return FALSE;
|
||||||
|
|
||||||
*size = xf86_config->dga_stride * xf86_config->dga_height;
|
|
||||||
*mem = (unsigned char *) (xf86_config->dga_address);
|
|
||||||
*offset = 0;
|
|
||||||
*flags = DGA_NEED_ROOT;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -249,18 +166,27 @@ static DGAFunctionRec xf86_dga_funcs = {
|
|||||||
xf86_dga_set_mode,
|
xf86_dga_set_mode,
|
||||||
xf86_dga_set_viewport,
|
xf86_dga_set_viewport,
|
||||||
xf86_dga_get_viewport,
|
xf86_dga_get_viewport,
|
||||||
xf86_dga_sync,
|
NULL,
|
||||||
xf86_dga_fill_rect,
|
NULL,
|
||||||
xf86_dga_blit_rect,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
xf86DiDGAReInit (ScreenPtr pScreen)
|
xf86DiDGAReInit (ScreenPtr pScreen)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Bool
|
||||||
|
_xf86_di_dga_reinit_internal (ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr scrn = xf86Screens[pScreen->myNum];
|
ScrnInfoPtr scrn = xf86Screens[pScreen->myNum];
|
||||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||||
|
|
||||||
|
if (!DGAAvailable(pScreen->myNum))
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
if (!xf86_dga_get_modes (pScreen))
|
if (!xf86_dga_get_modes (pScreen))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
@ -269,15 +195,21 @@ xf86DiDGAReInit (ScreenPtr pScreen)
|
|||||||
|
|
||||||
Bool
|
Bool
|
||||||
xf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address)
|
xf86DiDGAInit (ScreenPtr pScreen, unsigned long dga_address)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Bool
|
||||||
|
_xf86_di_dga_init_internal (ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr scrn = xf86Screens[pScreen->myNum];
|
ScrnInfoPtr scrn = xf86Screens[pScreen->myNum];
|
||||||
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
|
||||||
|
|
||||||
xf86_config->dga_flags = 0;
|
xf86_config->dga_flags = 0;
|
||||||
xf86_config->dga_address = dga_address;
|
xf86_config->dga_address = 0;
|
||||||
xf86_config->dga_width = scrn->virtualX;
|
xf86_config->dga_width = 0;
|
||||||
xf86_config->dga_height = scrn->virtualY;
|
xf86_config->dga_height = 0;
|
||||||
xf86_config->dga_stride = scrn->displayWidth * scrn->bitsPerPixel >> 3;
|
xf86_config->dga_stride = 0;
|
||||||
|
|
||||||
if (!xf86_dga_get_modes (pScreen))
|
if (!xf86_dga_get_modes (pScreen))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -45,20 +45,23 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
static void handle_detailed_rblank(struct detailed_monitor_section *det_mon,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
if (det_mon->type == DS_RANGES)
|
||||||
|
if (det_mon->section.ranges.supported_blanking & CVT_REDUCED)
|
||||||
|
*(Bool*)data = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
xf86MonitorSupportsReducedBlanking(xf86MonPtr DDC)
|
xf86MonitorSupportsReducedBlanking(xf86MonPtr DDC)
|
||||||
{
|
{
|
||||||
/* EDID 1.4 explicitly defines RB support */
|
/* EDID 1.4 explicitly defines RB support */
|
||||||
if (DDC->ver.revision >= 4) {
|
if (DDC->ver.revision >= 4) {
|
||||||
int i;
|
Bool ret = FALSE;
|
||||||
for (i = 0; i < DET_TIMINGS; i++) {
|
|
||||||
struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
|
xf86ForEachDetailedBlock(DDC, handle_detailed_rblank, &ret);
|
||||||
if (det_mon->type == DS_RANGES)
|
return ret;
|
||||||
if (det_mon->section.ranges.supported_blanking & CVT_REDUCED)
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For anything older, assume digital means RB support. Boo. */
|
/* For anything older, assume digital means RB support. Boo. */
|
||||||
@ -68,34 +71,6 @@ xf86MonitorSupportsReducedBlanking(xf86MonPtr DDC)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Quirks to work around broken EDID data from various monitors.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
DDC_QUIRK_NONE = 0,
|
|
||||||
/* First detailed mode is bogus, prefer largest mode at 60hz */
|
|
||||||
DDC_QUIRK_PREFER_LARGE_60 = 1 << 0,
|
|
||||||
/* 135MHz clock is too high, drop a bit */
|
|
||||||
DDC_QUIRK_135_CLOCK_TOO_HIGH = 1 << 1,
|
|
||||||
/* Prefer the largest mode at 75 Hz */
|
|
||||||
DDC_QUIRK_PREFER_LARGE_75 = 1 << 2,
|
|
||||||
/* Convert detailed timing's horizontal from units of cm to mm */
|
|
||||||
DDC_QUIRK_DETAILED_H_IN_CM = 1 << 3,
|
|
||||||
/* Convert detailed timing's vertical from units of cm to mm */
|
|
||||||
DDC_QUIRK_DETAILED_V_IN_CM = 1 << 4,
|
|
||||||
/* Detailed timing descriptors have bogus size values, so just take the
|
|
||||||
* maximum size and use that.
|
|
||||||
*/
|
|
||||||
DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE = 1 << 5,
|
|
||||||
/* Monitor forgot to set the first detailed is preferred bit. */
|
|
||||||
DDC_QUIRK_FIRST_DETAILED_PREFERRED = 1 << 6,
|
|
||||||
/* use +hsync +vsync for detailed mode */
|
|
||||||
DDC_QUIRK_DETAILED_SYNC_PP = 1 << 7,
|
|
||||||
/* Force single-link DVI bandwidth limit */
|
|
||||||
DDC_QUIRK_DVI_SINGLE_LINK = 1 << 8,
|
|
||||||
} ddc_quirk_t;
|
|
||||||
|
|
||||||
static Bool quirk_prefer_large_60 (int scrnIndex, xf86MonPtr DDC)
|
static Bool quirk_prefer_large_60 (int scrnIndex, xf86MonPtr DDC)
|
||||||
{
|
{
|
||||||
/* Belinea 10 15 55 */
|
/* Belinea 10 15 55 */
|
||||||
@ -160,6 +135,16 @@ static Bool quirk_detailed_v_in_cm (int scrnIndex, xf86MonPtr DDC)
|
|||||||
DDC->vendor.prod_id == 47360)
|
DDC->vendor.prod_id == 47360)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* Bug #10304: LGPhilipsLCD LP154W01-A5 */
|
||||||
|
if (memcmp(DDC->vendor.name, "LPL", 4) == 0 &&
|
||||||
|
DDC->vendor.prod_id == 0)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
/* Bug #24482: LGPhilipsLCD LP154W01-TLA1 */
|
||||||
|
if (memcmp(DDC->vendor.name, "LPL", 4) == 0 &&
|
||||||
|
DDC->vendor.prod_id == 0x2a00)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
/* Bug #21750: Samsung Syncmaster 2333HD */
|
/* Bug #21750: Samsung Syncmaster 2333HD */
|
||||||
if (memcmp (DDC->vendor.name, "SAM", 4) == 0 &&
|
if (memcmp (DDC->vendor.name, "SAM", 4) == 0 &&
|
||||||
DDC->vendor.prod_id == 1157)
|
DDC->vendor.prod_id == 1157)
|
||||||
@ -170,11 +155,6 @@ static Bool quirk_detailed_v_in_cm (int scrnIndex, xf86MonPtr DDC)
|
|||||||
|
|
||||||
static Bool quirk_detailed_use_maximum_size (int scrnIndex, xf86MonPtr DDC)
|
static Bool quirk_detailed_use_maximum_size (int scrnIndex, xf86MonPtr DDC)
|
||||||
{
|
{
|
||||||
/* Bug #10304: LGPhilipsLCD LP154W01-A5 */
|
|
||||||
if (memcmp (DDC->vendor.name, "LPL", 4) == 0 &&
|
|
||||||
(DDC->vendor.prod_id == 0 || DDC->vendor.prod_id == 0x2a00))
|
|
||||||
return TRUE;
|
|
||||||
|
|
||||||
/* Bug #21324: Iiyama Vision Master 450 */
|
/* Bug #21324: Iiyama Vision Master 450 */
|
||||||
if (memcmp (DDC->vendor.name, "IVM", 4) == 0 &&
|
if (memcmp (DDC->vendor.name, "IVM", 4) == 0 &&
|
||||||
DDC->vendor.prod_id == 6400)
|
DDC->vendor.prod_id == 6400)
|
||||||
@ -266,7 +246,7 @@ static const ddc_quirk_map_t ddc_quirks[] = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
quirk_detailed_use_maximum_size, DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE,
|
quirk_detailed_use_maximum_size, DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE,
|
||||||
"Detailed timings give sizes in cm."
|
"Use maximum size instead of detailed timing sizes."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
quirk_first_detailed_preferred, DDC_QUIRK_FIRST_DETAILED_PREFERRED,
|
quirk_first_detailed_preferred, DDC_QUIRK_FIRST_DETAILED_PREFERRED,
|
||||||
@ -498,8 +478,10 @@ DDCModesFromStandardTiming(struct std_timings *timing, ddc_quirk_t quirks,
|
|||||||
vsize = timing[i].vsize;
|
vsize = timing[i].vsize;
|
||||||
refresh = timing[i].refresh;
|
refresh = timing[i].refresh;
|
||||||
|
|
||||||
/* HDTV hack. Hooray. */
|
/* HDTV hack, because you can't say 1366 */
|
||||||
if (hsize == 1360 && vsize == 765 && refresh == 60) {
|
if (refresh == 60 &&
|
||||||
|
((hsize == 1360 && vsize == 765) ||
|
||||||
|
(hsize == 1368 && vsize == 769))) {
|
||||||
Mode = xf86CVTMode(1366, 768, 60, FALSE, FALSE);
|
Mode = xf86CVTMode(1366, 768, 60, FALSE, FALSE);
|
||||||
Mode->HDisplay = 1366;
|
Mode->HDisplay = 1366;
|
||||||
Mode->VSyncStart--;
|
Mode->VSyncStart--;
|
||||||
@ -527,6 +509,45 @@ DDCModesFromStandardTiming(struct std_timings *timing, ddc_quirk_t quirks,
|
|||||||
return Modes;
|
return Modes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
DDCModeDoInterlaceQuirks(DisplayModePtr mode)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* EDID is delightfully ambiguous about how interlaced modes are to be
|
||||||
|
* encoded. X's internal representation is of frame height, but some
|
||||||
|
* HDTV detailed timings are encoded as field height.
|
||||||
|
*
|
||||||
|
* The format list here is from CEA, in frame size. Technically we
|
||||||
|
* should be checking refresh rate too. Whatever.
|
||||||
|
*/
|
||||||
|
static const struct {
|
||||||
|
int w, h;
|
||||||
|
} cea_interlaced[] = {
|
||||||
|
{ 1920, 1080 },
|
||||||
|
{ 720, 480 },
|
||||||
|
{ 1440, 480 },
|
||||||
|
{ 2880, 480 },
|
||||||
|
{ 720, 576 },
|
||||||
|
{ 1440, 576 },
|
||||||
|
{ 2880, 576 },
|
||||||
|
};
|
||||||
|
static const int n_modes = sizeof(cea_interlaced)/sizeof(cea_interlaced[0]);
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < n_modes; i++) {
|
||||||
|
if ((mode->HDisplay == cea_interlaced[i].w) &&
|
||||||
|
(mode->VDisplay == cea_interlaced[i].h / 2)) {
|
||||||
|
mode->VDisplay *= 2;
|
||||||
|
mode->VSyncStart *= 2;
|
||||||
|
mode->VSyncEnd *= 2;
|
||||||
|
mode->VTotal *= 2;
|
||||||
|
mode->VTotal |= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mode->Flags |= V_INTERLACE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -591,12 +612,10 @@ DDCModeFromDetailedTiming(int scrnIndex, struct detailed_timings *timing,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
xf86SetModeDefaultName(Mode);
|
|
||||||
|
|
||||||
/* We ignore h/v_size and h/v_border for now. */
|
/* We ignore h/v_size and h/v_border for now. */
|
||||||
|
|
||||||
if (timing->interlaced)
|
if (timing->interlaced)
|
||||||
Mode->Flags |= V_INTERLACE;
|
DDCModeDoInterlaceQuirks(Mode);
|
||||||
|
|
||||||
if (quirks & DDC_QUIRK_DETAILED_SYNC_PP)
|
if (quirks & DDC_QUIRK_DETAILED_SYNC_PP)
|
||||||
Mode->Flags |= V_PVSYNC | V_PHSYNC;
|
Mode->Flags |= V_PVSYNC | V_PHSYNC;
|
||||||
@ -612,6 +631,8 @@ DDCModeFromDetailedTiming(int scrnIndex, struct detailed_timings *timing,
|
|||||||
Mode->Flags |= V_NHSYNC;
|
Mode->Flags |= V_NHSYNC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xf86SetModeDefaultName(Mode);
|
||||||
|
|
||||||
return Mode;
|
return Mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -774,7 +795,7 @@ DDCGuessRangesFromModes(int scrnIndex, MonPtr Monitor, DisplayModePtr Modes)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static ddc_quirk_t
|
ddc_quirk_t
|
||||||
xf86DDCDetectQuirks(int scrnIndex, xf86MonPtr DDC, Bool verbose)
|
xf86DDCDetectQuirks(int scrnIndex, xf86MonPtr DDC, Bool verbose)
|
||||||
{
|
{
|
||||||
ddc_quirk_t quirks;
|
ddc_quirk_t quirks;
|
||||||
@ -794,6 +815,25 @@ xf86DDCDetectQuirks(int scrnIndex, xf86MonPtr DDC, Bool verbose)
|
|||||||
return quirks;
|
return quirks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void xf86DetTimingApplyQuirks(struct detailed_monitor_section *det_mon,
|
||||||
|
ddc_quirk_t quirks,
|
||||||
|
int hsize, int vsize)
|
||||||
|
{
|
||||||
|
if (det_mon->type != DT)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (quirks & DDC_QUIRK_DETAILED_H_IN_CM)
|
||||||
|
det_mon->section.d_timings.h_size *= 10;
|
||||||
|
|
||||||
|
if (quirks & DDC_QUIRK_DETAILED_V_IN_CM)
|
||||||
|
det_mon->section.d_timings.v_size *= 10;
|
||||||
|
|
||||||
|
if (quirks & DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE) {
|
||||||
|
det_mon->section.d_timings.h_size = 10 * hsize;
|
||||||
|
det_mon->section.d_timings.v_size = 10 * vsize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Applies monitor-specific quirks to the decoded EDID information.
|
* Applies monitor-specific quirks to the decoded EDID information.
|
||||||
*
|
*
|
||||||
@ -807,21 +847,9 @@ xf86DDCApplyQuirks(int scrnIndex, xf86MonPtr DDC)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < DET_TIMINGS; i++) {
|
for (i = 0; i < DET_TIMINGS; i++) {
|
||||||
struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
|
xf86DetTimingApplyQuirks(DDC->det_mon + i, quirks,
|
||||||
|
DDC->features.hsize,
|
||||||
if (det_mon->type != DT)
|
DDC->features.vsize);
|
||||||
continue;
|
|
||||||
|
|
||||||
if (quirks & DDC_QUIRK_DETAILED_H_IN_CM)
|
|
||||||
det_mon->section.d_timings.h_size *= 10;
|
|
||||||
|
|
||||||
if (quirks & DDC_QUIRK_DETAILED_V_IN_CM)
|
|
||||||
det_mon->section.d_timings.v_size *= 10;
|
|
||||||
|
|
||||||
if (quirks & DDC_QUIRK_DETAILED_USE_MAXIMUM_SIZE) {
|
|
||||||
det_mon->section.d_timings.h_size = 10 * DDC->features.hsize;
|
|
||||||
det_mon->section.d_timings.v_size = 10 * DDC->features.vsize;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -866,14 +894,156 @@ xf86DDCSetPreferredRefresh(int scrnIndex, DisplayModePtr modes,
|
|||||||
best->type |= M_T_PREFERRED;
|
best->type |= M_T_PREFERRED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CEA_VIDEO_MODES_NUM 64
|
||||||
|
static const DisplayModeRec CEAVideoModes[CEA_VIDEO_MODES_NUM] = {
|
||||||
|
{ MODEPREFIX, 25175, 640, 656, 752, 800, 0, 480, 490, 492, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 1:640x480@60Hz */
|
||||||
|
{ MODEPREFIX, 27000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 2:720x480@60Hz */
|
||||||
|
{ MODEPREFIX, 27000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 3:720x480@60Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1280, 1390, 1430, 1650, 0, 720, 725, 730, 750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 4: 1280x720@60Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, V_PHSYNC | V_PVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 5:1920x1080i@60Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1478, 1602, 1716, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 6:1440x480i@60Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1478, 1602, 1716, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 7:1440x480i@60Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1478, 1602, 1716, 0, 240, 244, 247, 262, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 8:1440x240@60Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1478, 1602, 1716, 0, 240, 244, 247, 262, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 9:1440x240@60Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2956, 3204, 3432, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 10:2880x480i@60Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2956, 3204, 3432, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 11:2880x480i@60Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2956, 3204, 3432, 0, 240, 244, 247, 262, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 12:2880x240@60Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2956, 3204, 3432, 0, 240, 244, 247, 262, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 13:2880x240@60Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1472, 1596, 1716, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 14:1440x480@60Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1472, 1596, 1716, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 15:1440x480@60Hz */
|
||||||
|
{ MODEPREFIX, 148500, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 16:1920x1080@60Hz */
|
||||||
|
{ MODEPREFIX, 27000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 17:720x576@50Hz */
|
||||||
|
{ MODEPREFIX, 27000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 18:720x576@50Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1280, 1720, 1760, 1980, 0, 720, 725, 730, 750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 19: 1280x720@50Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, V_PHSYNC | V_PVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 20:1920x1080i@50Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1464, 1590, 1728, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 21:1440x576i@50Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1464, 1590, 1728, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 22:1440x576i@50Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1464, 1590, 1728, 0, 288, 290, 293, 312, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 23:1440x288@50Hz */
|
||||||
|
{ MODEPREFIX, 27000, 1440, 1464, 1590, 1728, 0, 288, 290, 293, 312, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 24:1440x288@50Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2928, 3180, 3456, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 25:2880x576i@50Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2928, 3180, 3456, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 26:2880x576i@50Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2928, 3180, 3456, 0, 288, 290, 293, 312, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 27:2880x288@50Hz */
|
||||||
|
{ MODEPREFIX, 54000, 2880, 2928, 3180, 3456, 0, 288, 290, 293, 312, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 28:2880x288@50Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1464, 1592, 1728, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 29:1440x576@50Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1464, 1592, 1728, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 30:1440x576@50Hz */
|
||||||
|
{ MODEPREFIX, 148500, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 31:1920x1080@50Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1920, 2558, 2602, 2750, 0, 1080, 1084, 1089, 1125, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 32:1920x1080@24Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1089, 1125, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 33:1920x1080@25Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 34:1920x1080@30Hz */
|
||||||
|
{ MODEPREFIX, 108000, 2880, 2944, 3192, 3432, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 35:2880x480@60Hz */
|
||||||
|
{ MODEPREFIX, 108000, 2880, 2944, 3192, 3432, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 36:2880x480@60Hz */
|
||||||
|
{ MODEPREFIX, 108000, 2880, 2928, 3184, 3456, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 37:2880x576@50Hz */
|
||||||
|
{ MODEPREFIX, 108000, 2880, 2928, 3184, 3456, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 38:2880x576@50Hz */
|
||||||
|
{ MODEPREFIX, 72000, 1920, 1952, 2120, 2304, 0, 1080, 1126, 1136, 1250, 0, V_PHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 39:1920x1080i@50Hz */
|
||||||
|
{ MODEPREFIX, 148500, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, V_PHSYNC | V_PVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 40:1920x1080i@100Hz */
|
||||||
|
{ MODEPREFIX, 148500, 1280, 1720, 1760, 1980, 0, 720, 725, 730, 750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 41:1280x720@100Hz */
|
||||||
|
{ MODEPREFIX, 54000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 42:720x576@100Hz */
|
||||||
|
{ MODEPREFIX, 54000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 43:720x576@100Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1464, 1590, 1728, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 44:1440x576i@100Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1464, 1590, 1728, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 45:1440x576i@100Hz */
|
||||||
|
{ MODEPREFIX, 148500, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1094, 1125, 0, V_PHSYNC | V_PVSYNC | V_INTERLACE, MODESUFFIX }, /* VIC 46:1920x1080i@120Hz */
|
||||||
|
{ MODEPREFIX, 148500, 1280, 1390, 1430, 1650, 0, 720, 725, 730, 750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 47:1280x720@120Hz */
|
||||||
|
{ MODEPREFIX, 54000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 48:720x480@120Hz */
|
||||||
|
{ MODEPREFIX, 54000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 49:720x480@120Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1478, 1602, 1716, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX },/* VIC 50:1440x480i@120Hz */
|
||||||
|
{ MODEPREFIX, 54000, 1440, 1478, 1602, 1716, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX },/* VIC 51:1440x480i@120Hz */
|
||||||
|
{ MODEPREFIX, 108000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 52:720x576@200Hz */
|
||||||
|
{ MODEPREFIX, 108000, 720, 732, 796, 864, 0, 576, 581, 586, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 53:720x576@200Hz */
|
||||||
|
{ MODEPREFIX, 108000, 1440, 1464, 1590, 1728, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX },/* VIC 54:1440x576i@200Hz */
|
||||||
|
{ MODEPREFIX, 108000, 1440, 1464, 1590, 1728, 0, 576, 580, 586, 625, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX },/* VIC 55:1440x576i@200Hz */
|
||||||
|
{ MODEPREFIX, 108000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 56:720x480@240Hz */
|
||||||
|
{ MODEPREFIX, 108000, 720, 736, 798, 858, 0, 480, 489, 495, 525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX }, /* VIC 57:720x480@240Hz */
|
||||||
|
{ MODEPREFIX, 108000, 1440, 1478, 1602, 1716, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX },/* VIC 58:1440x480i@240 */
|
||||||
|
{ MODEPREFIX, 108000, 1440, 1478, 1602, 1716, 0, 480, 488, 494, 525, 0, V_NHSYNC | V_NVSYNC | V_INTERLACE, MODESUFFIX },/* VIC 59:1440x480i@240 */
|
||||||
|
{ MODEPREFIX, 59400, 1280, 3040, 3080, 3300, 0, 720, 725, 730, 750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 60: 1280x720@24Hz */
|
||||||
|
{ MODEPREFIX, 74250, 3700, 3740, 1430, 3960, 0, 720, 725, 730, 750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 61: 1280x720@25Hz */
|
||||||
|
{ MODEPREFIX, 74250, 1280, 3040, 3080, 3300, 0, 720, 725, 730, 750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 62: 1280x720@30Hz */
|
||||||
|
{ MODEPREFIX, 297000, 1920, 2008, 2052, 2200, 0, 1080, 1084, 1089, 1125, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 63: 1920x1080@120Hz */
|
||||||
|
{ MODEPREFIX, 297000, 1920, 2448, 2492, 2640, 0, 1080, 1084, 1094, 1125, 0, V_PHSYNC | V_PVSYNC, MODESUFFIX }, /* VIC 64:1920x1080@100Hz */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* chose mode line by cea short video descriptor*/
|
||||||
|
static void handle_cea_svd(struct cea_video_block *video, void *data)
|
||||||
|
{
|
||||||
|
DisplayModePtr Mode;
|
||||||
|
DisplayModePtr *Modes = (DisplayModePtr *) data;
|
||||||
|
int vid;
|
||||||
|
|
||||||
|
vid = video ->video_code & 0x7f;
|
||||||
|
if (vid < CEA_VIDEO_MODES_NUM) {
|
||||||
|
Mode = xf86DuplicateMode(CEAVideoModes + vid);
|
||||||
|
*Modes = xf86ModesAdd(*Modes, Mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static DisplayModePtr
|
||||||
|
DDCModesFromCEAExtension(int scrnIndex, xf86MonPtr MonPtr)
|
||||||
|
{
|
||||||
|
DisplayModePtr Modes = NULL;
|
||||||
|
|
||||||
|
xf86ForEachVideoBlock(MonPtr,
|
||||||
|
handle_cea_svd,
|
||||||
|
&Modes);
|
||||||
|
|
||||||
|
return Modes;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct det_modes_parameter {
|
||||||
|
xf86MonPtr DDC;
|
||||||
|
ddc_quirk_t quirks;
|
||||||
|
DisplayModePtr Modes;
|
||||||
|
Bool rb;
|
||||||
|
Bool preferred;
|
||||||
|
int timing_level;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void handle_detailed_modes(struct detailed_monitor_section *det_mon,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
DisplayModePtr Mode;
|
||||||
|
struct det_modes_parameter *p = (struct det_modes_parameter *)data;
|
||||||
|
|
||||||
|
xf86DetTimingApplyQuirks(det_mon,p->quirks,
|
||||||
|
p->DDC->features.hsize,
|
||||||
|
p->DDC->features.vsize);
|
||||||
|
|
||||||
|
switch (det_mon->type) {
|
||||||
|
case DT:
|
||||||
|
Mode = DDCModeFromDetailedTiming(p->DDC->scrnIndex,
|
||||||
|
&det_mon->section.d_timings,
|
||||||
|
p->preferred,
|
||||||
|
p->quirks);
|
||||||
|
p->preferred = FALSE;
|
||||||
|
p->Modes = xf86ModesAdd(p->Modes, Mode);
|
||||||
|
break;
|
||||||
|
case DS_STD_TIMINGS:
|
||||||
|
Mode = DDCModesFromStandardTiming(det_mon->section.std_t,
|
||||||
|
p->quirks, p->timing_level,p->rb);
|
||||||
|
p->Modes = xf86ModesAdd(p->Modes, Mode);
|
||||||
|
break;
|
||||||
|
#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
|
||||||
|
case DS_CVT:
|
||||||
|
Mode = DDCModesFromCVT(p->DDC->scrnIndex, det_mon->section.cvt);
|
||||||
|
p->Modes = xf86ModesAdd(p->Modes, Mode);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
case DS_EST_III:
|
||||||
|
Mode = DDCModesFromEstIII(det_mon->section.est_iii);
|
||||||
|
p->Modes = xf86ModesAdd(p->Modes, Mode);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DisplayModePtr
|
DisplayModePtr
|
||||||
xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
|
xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
DisplayModePtr Modes = NULL, Mode;
|
DisplayModePtr Modes = NULL, Mode;
|
||||||
ddc_quirk_t quirks;
|
ddc_quirk_t quirks;
|
||||||
Bool preferred, rb;
|
Bool preferred, rb;
|
||||||
int timing_level;
|
int timing_level;
|
||||||
|
struct det_modes_parameter p;
|
||||||
|
|
||||||
xf86DrvMsg (scrnIndex, X_INFO, "EDID vendor \"%s\", prod id %d\n",
|
xf86DrvMsg (scrnIndex, X_INFO, "EDID vendor \"%s\", prod id %d\n",
|
||||||
DDC->vendor.name, DDC->vendor.prod_id);
|
DDC->vendor.name, DDC->vendor.prod_id);
|
||||||
@ -892,35 +1062,14 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
|
|||||||
|
|
||||||
timing_level = MonitorStandardTimingLevel(DDC);
|
timing_level = MonitorStandardTimingLevel(DDC);
|
||||||
|
|
||||||
for (i = 0; i < DET_TIMINGS; i++) {
|
p.quirks = quirks;
|
||||||
struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
|
p.DDC = DDC;
|
||||||
|
p.Modes = Modes;
|
||||||
Mode = NULL;
|
p.rb = rb;
|
||||||
switch (det_mon->type) {
|
p.preferred = preferred;
|
||||||
case DT:
|
p.timing_level = timing_level;
|
||||||
Mode = DDCModeFromDetailedTiming(scrnIndex,
|
xf86ForEachDetailedBlock(DDC, handle_detailed_modes, &p);
|
||||||
&det_mon->section.d_timings,
|
Modes = p.Modes;
|
||||||
preferred,
|
|
||||||
quirks);
|
|
||||||
preferred = FALSE;
|
|
||||||
break;
|
|
||||||
case DS_STD_TIMINGS:
|
|
||||||
Mode = DDCModesFromStandardTiming(det_mon->section.std_t,
|
|
||||||
quirks, timing_level, rb);
|
|
||||||
break;
|
|
||||||
#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
|
|
||||||
case DS_CVT:
|
|
||||||
Mode = DDCModesFromCVT(scrnIndex, det_mon->section.cvt);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case DS_EST_III:
|
|
||||||
Mode = DDCModesFromEstIII(det_mon->section.est_iii);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
Modes = xf86ModesAdd(Modes, Mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add established timings */
|
/* Add established timings */
|
||||||
Mode = DDCModesFromEstablished(scrnIndex, &DDC->timings1, quirks);
|
Mode = DDCModesFromEstablished(scrnIndex, &DDC->timings1, quirks);
|
||||||
@ -930,15 +1079,78 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
|
|||||||
Mode = DDCModesFromStandardTiming(DDC->timings2, quirks, timing_level, rb);
|
Mode = DDCModesFromStandardTiming(DDC->timings2, quirks, timing_level, rb);
|
||||||
Modes = xf86ModesAdd(Modes, Mode);
|
Modes = xf86ModesAdd(Modes, Mode);
|
||||||
|
|
||||||
|
/* Add cea-extension mode timings */
|
||||||
|
Mode = DDCModesFromCEAExtension(scrnIndex,DDC);
|
||||||
|
Modes = xf86ModesAdd(Modes, Mode);
|
||||||
|
|
||||||
if (quirks & DDC_QUIRK_PREFER_LARGE_60)
|
if (quirks & DDC_QUIRK_PREFER_LARGE_60)
|
||||||
xf86DDCSetPreferredRefresh(scrnIndex, Modes, 60);
|
xf86DDCSetPreferredRefresh(scrnIndex, Modes, 60);
|
||||||
|
|
||||||
if (quirks & DDC_QUIRK_PREFER_LARGE_75)
|
if (quirks & DDC_QUIRK_PREFER_LARGE_75)
|
||||||
xf86DDCSetPreferredRefresh(scrnIndex, Modes, 75);
|
xf86DDCSetPreferredRefresh(scrnIndex, Modes, 75);
|
||||||
|
|
||||||
|
Modes = xf86PruneDuplicateModes(Modes);
|
||||||
|
|
||||||
return Modes;
|
return Modes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct det_mon_parameter {
|
||||||
|
MonPtr Monitor;
|
||||||
|
ddc_quirk_t quirks;
|
||||||
|
Bool have_hsync;
|
||||||
|
Bool have_vrefresh;
|
||||||
|
Bool have_maxpixclock;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void handle_detailed_monset(struct detailed_monitor_section *det_mon,
|
||||||
|
void *data)
|
||||||
|
{
|
||||||
|
int clock;
|
||||||
|
struct det_mon_parameter *p = (struct det_mon_parameter *)data;
|
||||||
|
int scrnIndex = ((xf86MonPtr)(p->Monitor->DDC))->scrnIndex;
|
||||||
|
|
||||||
|
switch (det_mon->type) {
|
||||||
|
case DS_RANGES:
|
||||||
|
if (!p->have_hsync) {
|
||||||
|
if (!p->Monitor->nHsync)
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Using EDID range info for horizontal sync\n");
|
||||||
|
p->Monitor->hsync[p->Monitor->nHsync].lo =
|
||||||
|
det_mon->section.ranges.min_h;
|
||||||
|
p->Monitor->hsync[p->Monitor->nHsync].hi =
|
||||||
|
det_mon->section.ranges.max_h;
|
||||||
|
p->Monitor->nHsync++;
|
||||||
|
} else {
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Using hsync ranges from config file\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!p->have_vrefresh) {
|
||||||
|
if (!p->Monitor->nVrefresh)
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Using EDID range info for vertical refresh\n");
|
||||||
|
p->Monitor->vrefresh[p->Monitor->nVrefresh].lo =
|
||||||
|
det_mon->section.ranges.min_v;
|
||||||
|
p->Monitor->vrefresh[p->Monitor->nVrefresh].hi =
|
||||||
|
det_mon->section.ranges.max_v;
|
||||||
|
p->Monitor->nVrefresh++;
|
||||||
|
} else {
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Using vrefresh ranges from config file\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
clock = det_mon->section.ranges.max_clock * 1000;
|
||||||
|
if (p->quirks & DDC_QUIRK_DVI_SINGLE_LINK)
|
||||||
|
clock = min(clock, 165000);
|
||||||
|
if (!p->have_maxpixclock && clock > p->Monitor->maxPixClock)
|
||||||
|
p->Monitor->maxPixClock = clock;
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill out MonPtr with xf86MonPtr information.
|
* Fill out MonPtr with xf86MonPtr information.
|
||||||
*/
|
*/
|
||||||
@ -946,18 +1158,14 @@ void
|
|||||||
xf86EdidMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC)
|
xf86EdidMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC)
|
||||||
{
|
{
|
||||||
DisplayModePtr Modes = NULL, Mode;
|
DisplayModePtr Modes = NULL, Mode;
|
||||||
int i, clock;
|
struct det_mon_parameter p;
|
||||||
Bool have_hsync = FALSE, have_vrefresh = FALSE, have_maxpixclock = FALSE;
|
|
||||||
ddc_quirk_t quirks;
|
|
||||||
|
|
||||||
if (!Monitor || !DDC)
|
if (!Monitor || !DDC)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Monitor->DDC = DDC;
|
Monitor->DDC = DDC;
|
||||||
|
|
||||||
quirks = xf86DDCDetectQuirks(scrnIndex, DDC, FALSE);
|
if (Monitor->widthmm <= 0 || Monitor->heightmm <= 0) {
|
||||||
|
|
||||||
if (Monitor->widthmm <= 0 && Monitor->heightmm <= 0) {
|
|
||||||
Monitor->widthmm = 10 * DDC->features.hsize;
|
Monitor->widthmm = 10 * DDC->features.hsize;
|
||||||
Monitor->heightmm = 10 * DDC->features.vsize;
|
Monitor->heightmm = 10 * DDC->features.vsize;
|
||||||
}
|
}
|
||||||
@ -966,54 +1174,13 @@ xf86EdidMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC)
|
|||||||
|
|
||||||
Modes = xf86DDCGetModes(scrnIndex, DDC);
|
Modes = xf86DDCGetModes(scrnIndex, DDC);
|
||||||
|
|
||||||
/* Skip EDID ranges if they were specified in the config file */
|
|
||||||
have_hsync = (Monitor->nHsync != 0);
|
|
||||||
have_vrefresh = (Monitor->nVrefresh != 0);
|
|
||||||
have_maxpixclock = (Monitor->maxPixClock != 0);
|
|
||||||
|
|
||||||
/* Go through the detailed monitor sections */
|
/* Go through the detailed monitor sections */
|
||||||
for (i = 0; i < DET_TIMINGS; i++) {
|
p.Monitor = Monitor;
|
||||||
switch (DDC->det_mon[i].type) {
|
p.quirks = xf86DDCDetectQuirks(scrnIndex, Monitor->DDC, FALSE);
|
||||||
case DS_RANGES:
|
p.have_hsync = (Monitor->nHsync != 0);
|
||||||
if (!have_hsync) {
|
p.have_vrefresh = (Monitor->nVrefresh != 0);
|
||||||
if (!Monitor->nHsync)
|
p.have_maxpixclock = (Monitor->maxPixClock != 0);
|
||||||
xf86DrvMsg(scrnIndex, X_INFO,
|
xf86ForEachDetailedBlock(DDC, handle_detailed_monset, &p);
|
||||||
"Using EDID range info for horizontal sync\n");
|
|
||||||
Monitor->hsync[Monitor->nHsync].lo =
|
|
||||||
DDC->det_mon[i].section.ranges.min_h;
|
|
||||||
Monitor->hsync[Monitor->nHsync].hi =
|
|
||||||
DDC->det_mon[i].section.ranges.max_h;
|
|
||||||
Monitor->nHsync++;
|
|
||||||
} else {
|
|
||||||
xf86DrvMsg(scrnIndex, X_INFO,
|
|
||||||
"Using hsync ranges from config file\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!have_vrefresh) {
|
|
||||||
if (!Monitor->nVrefresh)
|
|
||||||
xf86DrvMsg(scrnIndex, X_INFO,
|
|
||||||
"Using EDID range info for vertical refresh\n");
|
|
||||||
Monitor->vrefresh[Monitor->nVrefresh].lo =
|
|
||||||
DDC->det_mon[i].section.ranges.min_v;
|
|
||||||
Monitor->vrefresh[Monitor->nVrefresh].hi =
|
|
||||||
DDC->det_mon[i].section.ranges.max_v;
|
|
||||||
Monitor->nVrefresh++;
|
|
||||||
} else {
|
|
||||||
xf86DrvMsg(scrnIndex, X_INFO,
|
|
||||||
"Using vrefresh ranges from config file\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
clock = DDC->det_mon[i].section.ranges.max_clock * 1000;
|
|
||||||
if (quirks & DDC_QUIRK_DVI_SINGLE_LINK)
|
|
||||||
clock = min(clock, 165000);
|
|
||||||
if (!have_maxpixclock && clock > Monitor->maxPixClock)
|
|
||||||
Monitor->maxPixClock = clock;
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Modes) {
|
if (Modes) {
|
||||||
/* Print Modes */
|
/* Print Modes */
|
||||||
|
@ -136,10 +136,12 @@ xf86ModeBandwidth(DisplayModePtr mode, int depth)
|
|||||||
void
|
void
|
||||||
xf86SetModeDefaultName(DisplayModePtr mode)
|
xf86SetModeDefaultName(DisplayModePtr mode)
|
||||||
{
|
{
|
||||||
if (mode->name != NULL)
|
Bool interlaced = !!(mode->Flags & V_INTERLACE);
|
||||||
xfree(mode->name);
|
|
||||||
|
|
||||||
mode->name = XNFprintf("%dx%d", mode->HDisplay, mode->VDisplay);
|
xfree(mode->name);
|
||||||
|
|
||||||
|
mode->name = XNFprintf("%dx%d%s", mode->HDisplay, mode->VDisplay,
|
||||||
|
interlaced ? "i" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -689,3 +691,37 @@ xf86GetDefaultModes (void)
|
|||||||
}
|
}
|
||||||
return head;
|
return head;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Walk a mode list and prune out duplicates. Will preserve the preferred
|
||||||
|
* mode of an otherwise-duplicate pair.
|
||||||
|
*
|
||||||
|
* Probably best to call this on lists that are all of a single class
|
||||||
|
* (driver, default, user, etc.), otherwise, which mode gets deleted is
|
||||||
|
* not especially well defined.
|
||||||
|
*
|
||||||
|
* Returns the new list.
|
||||||
|
*/
|
||||||
|
|
||||||
|
DisplayModePtr
|
||||||
|
xf86PruneDuplicateModes(DisplayModePtr modes)
|
||||||
|
{
|
||||||
|
DisplayModePtr m, n, o;
|
||||||
|
|
||||||
|
top:
|
||||||
|
for (m = modes; m; m = m->next) {
|
||||||
|
for (n = m->next; n; n = o) {
|
||||||
|
o = n->next;
|
||||||
|
if (xf86ModesEqual(m, n)) {
|
||||||
|
if (n->type & M_T_PREFERRED) {
|
||||||
|
xf86DeleteMode(&modes, m);
|
||||||
|
goto top;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
xf86DeleteMode(&modes, n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return modes;
|
||||||
|
}
|
||||||
|
@ -95,6 +95,9 @@ extern _X_EXPORT void
|
|||||||
xf86PruneInvalidModes(ScrnInfoPtr pScrn, DisplayModePtr *modeList,
|
xf86PruneInvalidModes(ScrnInfoPtr pScrn, DisplayModePtr *modeList,
|
||||||
Bool verbose);
|
Bool verbose);
|
||||||
|
|
||||||
|
extern _X_EXPORT DisplayModePtr
|
||||||
|
xf86PruneDuplicateModes(DisplayModePtr modes);
|
||||||
|
|
||||||
extern _X_EXPORT void
|
extern _X_EXPORT void
|
||||||
xf86ValidateModesFlags(ScrnInfoPtr pScrn, DisplayModePtr modeList,
|
xf86ValidateModesFlags(ScrnInfoPtr pScrn, DisplayModePtr modeList,
|
||||||
int flags);
|
int flags);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
|
* Copyright © 2002 Keith Packard, member of The XFree86 Project, Inc.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
* documentation for any purpose is hereby granted without fee, provided that
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
@ -467,9 +467,6 @@ xf86RandR12GetInfo (ScreenPtr pScreen, Rotation *rotations)
|
|||||||
{
|
{
|
||||||
xf86ProbeOutputModes (scrp, 0, 0);
|
xf86ProbeOutputModes (scrp, 0, 0);
|
||||||
xf86SetScrnInfoModes (scrp);
|
xf86SetScrnInfoModes (scrp);
|
||||||
#ifdef XFreeXDGA
|
|
||||||
xf86DiDGAReInit (pScreen);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (mode = scrp->modes; ; mode = mode->next)
|
for (mode = scrp->modes; ; mode = mode->next)
|
||||||
@ -808,9 +805,10 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xf86OutputPtr output = config->output[config->compat_output];
|
xf86OutputPtr output = xf86CompatOutput(pScrn);
|
||||||
|
|
||||||
if (output->conf_monitor &&
|
if (output &&
|
||||||
|
output->conf_monitor &&
|
||||||
(output->conf_monitor->mon_width > 0 &&
|
(output->conf_monitor->mon_width > 0 &&
|
||||||
output->conf_monitor->mon_height > 0))
|
output->conf_monitor->mon_height > 0))
|
||||||
{
|
{
|
||||||
@ -874,7 +872,12 @@ xf86RandR12Init (ScreenPtr pScreen)
|
|||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
/* XXX disable RandR when using Xinerama */
|
/* XXX disable RandR when using Xinerama */
|
||||||
if (!noPanoramiXExtension)
|
if (!noPanoramiXExtension)
|
||||||
return TRUE;
|
{
|
||||||
|
if (xf86NumScreens == 1)
|
||||||
|
noPanoramiXExtension = TRUE;
|
||||||
|
else
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (xf86RandR12Generation != serverGeneration)
|
if (xf86RandR12Generation != serverGeneration)
|
||||||
@ -1528,9 +1531,6 @@ xf86RandR12GetInfo12 (ScreenPtr pScreen, Rotation *rotations)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
xf86ProbeOutputModes (pScrn, 0, 0);
|
xf86ProbeOutputModes (pScrn, 0, 0);
|
||||||
xf86SetScrnInfoModes (pScrn);
|
xf86SetScrnInfoModes (pScrn);
|
||||||
#ifdef XFreeXDGA
|
|
||||||
xf86DiDGAReInit (pScreen);
|
|
||||||
#endif
|
|
||||||
return xf86RandR12SetInfo12 (pScreen);
|
return xf86RandR12SetInfo12 (pScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1720,10 +1720,13 @@ xf86RandR12ChangeGamma(int scrnIndex, Gamma gamma)
|
|||||||
{
|
{
|
||||||
CARD16 *points, *red, *green, *blue;
|
CARD16 *points, *red, *green, *blue;
|
||||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||||
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
|
RRCrtcPtr crtc = xf86CompatRRCrtc(pScrn);
|
||||||
RRCrtcPtr crtc = config->output[config->compat_output]->crtc->randr_crtc;
|
int size;
|
||||||
int size = max(0, crtc->gammaSize);
|
|
||||||
|
|
||||||
|
if (!crtc)
|
||||||
|
return Success;
|
||||||
|
|
||||||
|
size = max(0, crtc->gammaSize);
|
||||||
if (!size)
|
if (!size)
|
||||||
return Success;
|
return Success;
|
||||||
|
|
||||||
|
@ -268,13 +268,9 @@ xf86RotateBlockHandler(int screenNum, pointer blockData,
|
|||||||
rotation_active = xf86RotateRedisplay(pScreen);
|
rotation_active = xf86RotateRedisplay(pScreen);
|
||||||
pScreen->BlockHandler = xf86_config->BlockHandler;
|
pScreen->BlockHandler = xf86_config->BlockHandler;
|
||||||
(*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
|
(*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
|
||||||
if (rotation_active) {
|
/* cannot avoid re-wrapping until all wrapping is audited */
|
||||||
/* Re-wrap if rotation is still happening */
|
xf86_config->BlockHandler = pScreen->BlockHandler;
|
||||||
xf86_config->BlockHandler = pScreen->BlockHandler;
|
pScreen->BlockHandler = xf86RotateBlockHandler;
|
||||||
pScreen->BlockHandler = xf86RotateBlockHandler;
|
|
||||||
} else {
|
|
||||||
xf86_config->BlockHandler = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -64,6 +64,7 @@
|
|||||||
#ifndef _xf86Parser_h_
|
#ifndef _xf86Parser_h_
|
||||||
#define _xf86Parser_h_
|
#define _xf86Parser_h_
|
||||||
|
|
||||||
|
#include <X11/Xdefs.h>
|
||||||
#include "xf86Optrec.h"
|
#include "xf86Optrec.h"
|
||||||
|
|
||||||
#define HAVE_PARSER_DECLS
|
#define HAVE_PARSER_DECLS
|
||||||
@ -330,6 +331,33 @@ typedef struct
|
|||||||
}
|
}
|
||||||
XF86ConfInputrefRec, *XF86ConfInputrefPtr;
|
XF86ConfInputrefRec, *XF86ConfInputrefPtr;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
Bool set;
|
||||||
|
Bool val;
|
||||||
|
}
|
||||||
|
xf86TriState;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
GenericListRec list;
|
||||||
|
char *identifier;
|
||||||
|
char *driver;
|
||||||
|
char **match_product;
|
||||||
|
char **match_vendor;
|
||||||
|
char **match_device;
|
||||||
|
char **match_tag;
|
||||||
|
xf86TriState is_keyboard;
|
||||||
|
xf86TriState is_pointer;
|
||||||
|
xf86TriState is_joystick;
|
||||||
|
xf86TriState is_tablet;
|
||||||
|
xf86TriState is_touchpad;
|
||||||
|
xf86TriState is_touchscreen;
|
||||||
|
XF86OptionPtr option_lst;
|
||||||
|
char *comment;
|
||||||
|
}
|
||||||
|
XF86ConfInputClassRec, *XF86ConfInputClassPtr;
|
||||||
|
|
||||||
/* Values for adj_where */
|
/* Values for adj_where */
|
||||||
#define CONF_ADJ_OBSOLETE -1
|
#define CONF_ADJ_OBSOLETE -1
|
||||||
#define CONF_ADJ_ABSOLUTE 0
|
#define CONF_ADJ_ABSOLUTE 0
|
||||||
@ -438,6 +466,7 @@ typedef struct
|
|||||||
XF86ConfDevicePtr conf_device_lst;
|
XF86ConfDevicePtr conf_device_lst;
|
||||||
XF86ConfScreenPtr conf_screen_lst;
|
XF86ConfScreenPtr conf_screen_lst;
|
||||||
XF86ConfInputPtr conf_input_lst;
|
XF86ConfInputPtr conf_input_lst;
|
||||||
|
XF86ConfInputClassPtr conf_inputclass_lst;
|
||||||
XF86ConfLayoutPtr conf_layout_lst;
|
XF86ConfLayoutPtr conf_layout_lst;
|
||||||
XF86ConfVendorPtr conf_vendor_lst;
|
XF86ConfVendorPtr conf_vendor_lst;
|
||||||
XF86ConfDRIPtr conf_dri;
|
XF86ConfDRIPtr conf_dri;
|
||||||
@ -456,13 +485,16 @@ xf86ConfigSymTabRec, *xf86ConfigSymTabPtr;
|
|||||||
/*
|
/*
|
||||||
* prototypes for public functions
|
* prototypes for public functions
|
||||||
*/
|
*/
|
||||||
extern _X_EXPORT const char *xf86openConfigFile (const char *, const char *,
|
extern void xf86initConfigFiles(void);
|
||||||
const char *);
|
extern const char *xf86openConfigFile(const char *path, const char *cmdline,
|
||||||
extern _X_EXPORT void xf86setBuiltinConfig(const char *config[]);
|
const char *projroot);
|
||||||
extern _X_EXPORT XF86ConfigPtr xf86readConfigFile (void);
|
extern const char *xf86openConfigDirFiles(const char *path, const char *cmdline,
|
||||||
extern _X_EXPORT void xf86closeConfigFile (void);
|
const char *projroot);
|
||||||
extern _X_EXPORT void xf86freeConfig (XF86ConfigPtr p);
|
extern void xf86setBuiltinConfig(const char *config[]);
|
||||||
extern _X_EXPORT int xf86writeConfigFile (const char *, XF86ConfigPtr);
|
extern XF86ConfigPtr xf86readConfigFile(void);
|
||||||
|
extern void xf86closeConfigFile(void);
|
||||||
|
extern void xf86freeConfig(XF86ConfigPtr p);
|
||||||
|
extern int xf86writeConfigFile(const char *, XF86ConfigPtr);
|
||||||
extern _X_EXPORT XF86ConfDevicePtr xf86findDevice(const char *ident, XF86ConfDevicePtr p);
|
extern _X_EXPORT XF86ConfDevicePtr xf86findDevice(const char *ident, XF86ConfDevicePtr p);
|
||||||
extern _X_EXPORT XF86ConfLayoutPtr xf86findLayout(const char *name, XF86ConfLayoutPtr list);
|
extern _X_EXPORT XF86ConfLayoutPtr xf86findLayout(const char *name, XF86ConfLayoutPtr list);
|
||||||
extern _X_EXPORT XF86ConfMonitorPtr xf86findMonitor(const char *ident, XF86ConfMonitorPtr p);
|
extern _X_EXPORT XF86ConfMonitorPtr xf86findMonitor(const char *ident, XF86ConfMonitorPtr p);
|
||||||
@ -473,6 +505,7 @@ extern _X_EXPORT XF86ConfInputPtr xf86findInput(const char *ident, XF86ConfInput
|
|||||||
extern _X_EXPORT XF86ConfInputPtr xf86findInputByDriver(const char *driver, XF86ConfInputPtr p);
|
extern _X_EXPORT XF86ConfInputPtr xf86findInputByDriver(const char *driver, XF86ConfInputPtr p);
|
||||||
extern _X_EXPORT XF86ConfVideoAdaptorPtr xf86findVideoAdaptor(const char *ident,
|
extern _X_EXPORT XF86ConfVideoAdaptorPtr xf86findVideoAdaptor(const char *ident,
|
||||||
XF86ConfVideoAdaptorPtr p);
|
XF86ConfVideoAdaptorPtr p);
|
||||||
|
extern int xf86layoutAddInputDevices(XF86ConfigPtr config, XF86ConfLayoutPtr layout);
|
||||||
|
|
||||||
extern _X_EXPORT GenericListPtr xf86addListItem(GenericListPtr head, GenericListPtr c_new);
|
extern _X_EXPORT GenericListPtr xf86addListItem(GenericListPtr head, GenericListPtr c_new);
|
||||||
extern _X_EXPORT int xf86itemNotSublist(GenericListPtr list_1, GenericListPtr list_2);
|
extern _X_EXPORT int xf86itemNotSublist(GenericListPtr list_1, GenericListPtr list_2);
|
||||||
@ -480,5 +513,6 @@ extern _X_EXPORT int xf86itemNotSublist(GenericListPtr list_1, GenericListPtr li
|
|||||||
extern _X_EXPORT int xf86pathIsAbsolute(const char *path);
|
extern _X_EXPORT int xf86pathIsAbsolute(const char *path);
|
||||||
extern _X_EXPORT int xf86pathIsSafe(const char *path);
|
extern _X_EXPORT int xf86pathIsSafe(const char *path);
|
||||||
extern _X_EXPORT char *xf86addComment(char *cur, char *add);
|
extern _X_EXPORT char *xf86addComment(char *cur, char *add);
|
||||||
|
extern _X_EXPORT Bool xf86getBoolValue(Bool *val, const char *str);
|
||||||
|
|
||||||
#endif /* _xf86Parser_h_ */
|
#endif /* _xf86Parser_h_ */
|
||||||
|
3880
driver/xf86-video-nv/configure
vendored
3880
driver/xf86-video-nv/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -22,20 +22,22 @@
|
|||||||
|
|
||||||
AC_PREREQ(2.57)
|
AC_PREREQ(2.57)
|
||||||
AC_INIT([xf86-video-nv],
|
AC_INIT([xf86-video-nv],
|
||||||
2.1.15,
|
2.1.17,
|
||||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||||
xf86-video-nv)
|
xf86-video-nv)
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([Makefile.am])
|
AC_CONFIG_SRCDIR([Makefile.am])
|
||||||
AM_CONFIG_HEADER([config.h])
|
AM_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
# Require xorg-macros: XORG_RELEASE_VERSION XORG_CHANGELOG
|
# Require xorg-macros: XORG_DEFAULT_OPTIONS
|
||||||
m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2 or later before running autoconf/autogen])])
|
m4_ifndef([XORG_MACROS_VERSION],
|
||||||
XORG_MACROS_VERSION(1.2)
|
[m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])])
|
||||||
|
XORG_MACROS_VERSION(1.3)
|
||||||
|
XORG_DEFAULT_OPTIONS
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR(.)
|
AC_CONFIG_AUX_DIR(.)
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([dist-bzip2])
|
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||||
|
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
@ -70,7 +72,6 @@ PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
|
|||||||
HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]),
|
HAVE_XEXTPROTO_71="yes"; AC_DEFINE(HAVE_XEXTPROTO_71, 1, [xextproto 7.1 available]),
|
||||||
HAVE_XEXTPROTO_71="no")
|
HAVE_XEXTPROTO_71="no")
|
||||||
AM_CONDITIONAL(HAVE_XEXTPROTO_71, [ test "$HAVE_XEXTPROTO_71" = "yes" ])
|
AM_CONDITIONAL(HAVE_XEXTPROTO_71, [ test "$HAVE_XEXTPROTO_71" = "yes" ])
|
||||||
sdkdir=$(pkg-config --variable=sdkdir xorg-server)
|
|
||||||
|
|
||||||
# Checks for libraries.
|
# Checks for libraries.
|
||||||
|
|
||||||
@ -136,10 +137,6 @@ AC_SUBST([moduledir])
|
|||||||
DRIVER_NAME=nv
|
DRIVER_NAME=nv
|
||||||
AC_SUBST([DRIVER_NAME])
|
AC_SUBST([DRIVER_NAME])
|
||||||
|
|
||||||
XORG_MANPAGE_SECTIONS
|
|
||||||
XORG_RELEASE_VERSION
|
|
||||||
XORG_CHANGELOG
|
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
Makefile
|
Makefile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
|
@ -2127,17 +2127,6 @@ EOF
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
for pass in $passes; do
|
for pass in $passes; do
|
||||||
# The preopen pass in lib mode reverses $deplibs; put it back here
|
|
||||||
# so that -L comes before libs that need it for instance...
|
|
||||||
if test "$linkmode,$pass" = "lib,link"; then
|
|
||||||
## FIXME: Find the place where the list is rebuilt in the wrong
|
|
||||||
## order, and fix it there properly
|
|
||||||
tmp_deplibs=
|
|
||||||
for deplib in $deplibs; do
|
|
||||||
tmp_deplibs="$deplib $tmp_deplibs"
|
|
||||||
done
|
|
||||||
deplibs="$tmp_deplibs"
|
|
||||||
fi
|
|
||||||
if test "$linkmode,$pass" = "lib,link" ||
|
if test "$linkmode,$pass" = "lib,link" ||
|
||||||
test "$linkmode,$pass" = "prog,scan"; then
|
test "$linkmode,$pass" = "prog,scan"; then
|
||||||
libs="$deplibs"
|
libs="$deplibs"
|
||||||
|
@ -1,27 +1,24 @@
|
|||||||
#
|
#
|
||||||
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
|
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
|
||||||
#
|
#
|
||||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
# documentation for any purpose is hereby granted without fee, provided that
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
# the above copyright notice appear in all copies and that both that
|
# to deal in the Software without restriction, including without limitation
|
||||||
# copyright notice and this permission notice appear in supporting
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
# documentation.
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
#
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
# The above copyright notice and this permission notice shall be included
|
#
|
||||||
# in all copies or substantial portions of the Software.
|
# The above copyright notice and this permission notice (including the next
|
||||||
#
|
# paragraph) shall be included in all copies or substantial portions of the
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
# Software.
|
||||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
#
|
||||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
# IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
# OTHER DEALINGS IN THE SOFTWARE.
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
#
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
# Except as contained in this notice, the name of the copyright holders shall
|
# DEALINGS IN THE SOFTWARE.
|
||||||
# not be used in advertising or otherwise to promote the sale, use or
|
|
||||||
# other dealings in this Software without prior written authorization
|
|
||||||
# from the copyright holders.
|
|
||||||
#
|
#
|
||||||
|
|
||||||
drivermandir = $(DRIVER_MAN_DIR)
|
drivermandir = $(DRIVER_MAN_DIR)
|
||||||
|
@ -16,28 +16,25 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
|
# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
|
||||||
#
|
#
|
||||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
# documentation for any purpose is hereby granted without fee, provided that
|
# copy of this software and associated documentation files (the "Software"),
|
||||||
# the above copyright notice appear in all copies and that both that
|
# to deal in the Software without restriction, including without limitation
|
||||||
# copyright notice and this permission notice appear in supporting
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
# documentation.
|
# and/or sell copies of the Software, and to permit persons to whom the
|
||||||
#
|
# Software is furnished to do so, subject to the following conditions:
|
||||||
# The above copyright notice and this permission notice shall be included
|
#
|
||||||
# in all copies or substantial portions of the Software.
|
# The above copyright notice and this permission notice (including the next
|
||||||
#
|
# paragraph) shall be included in all copies or substantial portions of the
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
# Software.
|
||||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
#
|
||||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
# IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
# OTHER DEALINGS IN THE SOFTWARE.
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
#
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
# Except as contained in this notice, the name of the copyright holders shall
|
# DEALINGS IN THE SOFTWARE.
|
||||||
# not be used in advertising or otherwise to promote the sale, use or
|
|
||||||
# other dealings in this Software without prior written authorization
|
|
||||||
# from the copyright holders.
|
|
||||||
#
|
#
|
||||||
|
|
||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
@ -89,6 +86,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
|
|||||||
AMDEP_FALSE = @AMDEP_FALSE@
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
AMDEP_TRUE = @AMDEP_TRUE@
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
APP_MAN_DIR = @APP_MAN_DIR@
|
APP_MAN_DIR = @APP_MAN_DIR@
|
||||||
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
@ -104,6 +102,7 @@ CFLAGS = @CFLAGS@
|
|||||||
CHANGELOG_CMD = @CHANGELOG_CMD@
|
CHANGELOG_CMD = @CHANGELOG_CMD@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CWARNFLAGS = @CWARNFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
@ -128,6 +127,7 @@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
|||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
||||||
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
||||||
|
INSTALL_CMD = @INSTALL_CMD@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
@ -189,7 +189,6 @@ build_os = @build_os@
|
|||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
distcleancheck_listfiles = @distcleancheck_listfiles@
|
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
@ -255,9 +254,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
cd $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu man/Makefile
|
$(AUTOMAKE) --foreign man/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
|
@ -59,8 +59,8 @@ NV40, NV41, NV43, NV44, NV45, C51
|
|||||||
.B GeForce 7XXX
|
.B GeForce 7XXX
|
||||||
G70, G71, G72, G73
|
G70, G71, G72, G73
|
||||||
.TP 22
|
.TP 22
|
||||||
.B GeForce 8XXX, GeForce 9XXX
|
.B GeForce 8XXX, GeForce 9XXX, nForce 7, GeForce G, ION
|
||||||
G80, G84, G86, G92, G94, G96, G98
|
G8x, G9x, GT21x, MCP7x
|
||||||
.TP 22
|
.TP 22
|
||||||
.B GeForce GTX
|
.B GeForce GTX
|
||||||
GT200
|
GT200
|
||||||
@ -197,7 +197,7 @@ Authors include: David McKay, Jarno Paananen, Chas Inman, Dave Schmenk,
|
|||||||
Mark Vojkovich, Aaron Plattner
|
Mark Vojkovich, Aaron Plattner
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
.LP
|
.LP
|
||||||
Copyright (c) 2003 - 2008 NVIDIA, Corporation
|
Copyright (c) 2003-2008,2010 NVIDIA Corporation
|
||||||
.LP
|
.LP
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
copy of this software and associated documentation files (the
|
copy of this software and associated documentation files (the
|
||||||
|
@ -114,6 +114,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
|
|||||||
AMDEP_FALSE = @AMDEP_FALSE@
|
AMDEP_FALSE = @AMDEP_FALSE@
|
||||||
AMDEP_TRUE = @AMDEP_TRUE@
|
AMDEP_TRUE = @AMDEP_TRUE@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
|
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||||
APP_MAN_DIR = @APP_MAN_DIR@
|
APP_MAN_DIR = @APP_MAN_DIR@
|
||||||
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
@ -129,6 +130,7 @@ CFLAGS = @CFLAGS@
|
|||||||
CHANGELOG_CMD = @CHANGELOG_CMD@
|
CHANGELOG_CMD = @CHANGELOG_CMD@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
CPPFLAGS = @CPPFLAGS@
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
CWARNFLAGS = @CWARNFLAGS@
|
||||||
CXX = @CXX@
|
CXX = @CXX@
|
||||||
CXXCPP = @CXXCPP@
|
CXXCPP = @CXXCPP@
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
CXXDEPMODE = @CXXDEPMODE@
|
||||||
@ -153,6 +155,7 @@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
|||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
HAVE_XEXTPROTO_71_FALSE = @HAVE_XEXTPROTO_71_FALSE@
|
||||||
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
HAVE_XEXTPROTO_71_TRUE = @HAVE_XEXTPROTO_71_TRUE@
|
||||||
|
INSTALL_CMD = @INSTALL_CMD@
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||||
@ -214,7 +217,6 @@ build_os = @build_os@
|
|||||||
build_vendor = @build_vendor@
|
build_vendor = @build_vendor@
|
||||||
datadir = @datadir@
|
datadir = @datadir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
distcleancheck_listfiles = @distcleancheck_listfiles@
|
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
exec_prefix = @exec_prefix@
|
exec_prefix = @exec_prefix@
|
||||||
@ -340,9 +342,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
cd $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu src/Makefile
|
$(AUTOMAKE) --foreign src/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 NVIDIA, Corporation
|
* Copyright (c) 2007,2010 NVIDIA Corporation
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the
|
* copy of this software and associated documentation files (the
|
||||||
@ -42,6 +42,8 @@ typedef struct G80CrtcPrivRec {
|
|||||||
Bool cursorVisible;
|
Bool cursorVisible;
|
||||||
Bool skipModeFixup;
|
Bool skipModeFixup;
|
||||||
Bool dither;
|
Bool dither;
|
||||||
|
/* Look-up table values to be set when the CRTC is enabled */
|
||||||
|
uint16_t lut_r[256], lut_g[256], lut_b[256];
|
||||||
} G80CrtcPrivRec, *G80CrtcPrivPtr;
|
} G80CrtcPrivRec, *G80CrtcPrivPtr;
|
||||||
|
|
||||||
static void G80CrtcShowHideCursor(xf86CrtcPtr crtc, Bool show, Bool update);
|
static void G80CrtcShowHideCursor(xf86CrtcPtr crtc, Bool show, Bool update);
|
||||||
@ -488,7 +490,7 @@ G80CrtcBlankScreen(xf86CrtcPtr crtc, Bool blank)
|
|||||||
if(pPriv->cursorVisible)
|
if(pPriv->cursorVisible)
|
||||||
G80CrtcShowHideCursor(crtc, TRUE, FALSE);
|
G80CrtcShowHideCursor(crtc, TRUE, FALSE);
|
||||||
C(0x00000840 + headOff, pScrn->depth == 8 ? 0x80000000 : 0xc0000000);
|
C(0x00000840 + headOff, pScrn->depth == 8 ? 0x80000000 : 0xc0000000);
|
||||||
C(0x00000844 + headOff, (pNv->videoRam * 1024 - 0x5000) >> 8);
|
C(0x00000844 + headOff, (pNv->videoRam * 1024 - 0x5000 - 0x1000 * pPriv->head) >> 8);
|
||||||
if(pNv->architecture != 0x50)
|
if(pNv->architecture != 0x50)
|
||||||
C(0x0000085C + headOff, 1);
|
C(0x0000085C + headOff, 1);
|
||||||
C(0x00000874 + headOff, 1);
|
C(0x00000874 + headOff, 1);
|
||||||
@ -645,6 +647,101 @@ G80CrtcCommit(xf86CrtcPtr crtc)
|
|||||||
C(0x00000080, 0);
|
C(0x00000080, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
G80CrtcGammaSet(xf86CrtcPtr crtc, CARD16 *red, CARD16 *green, CARD16 *blue,
|
||||||
|
int size)
|
||||||
|
{
|
||||||
|
ScrnInfoPtr pScrn = crtc->scrn;
|
||||||
|
G80Ptr pNv = G80PTR(pScrn);
|
||||||
|
G80CrtcPrivPtr pPriv = crtc->driver_private;
|
||||||
|
int i;
|
||||||
|
volatile struct {
|
||||||
|
uint16_t red, green, blue, unused;
|
||||||
|
} *lut = (void*)&pNv->mem[pNv->videoRam * 1024 - 0x5000 - 0x1000 * pPriv->head];
|
||||||
|
|
||||||
|
assert(size == 256);
|
||||||
|
|
||||||
|
for(i = 0; i < size; i++) {
|
||||||
|
pPriv->lut_r[i] = lut[i].red = red[i] >> 2;
|
||||||
|
pPriv->lut_g[i] = lut[i].green = green[i] >> 2;
|
||||||
|
pPriv->lut_b[i] = lut[i].blue = blue[i] >> 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
lut[256] = lut[255];
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
G80LoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
|
||||||
|
VisualPtr pVisual)
|
||||||
|
{
|
||||||
|
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
|
||||||
|
int i, j, index;
|
||||||
|
int p;
|
||||||
|
uint16_t lut_r[256], lut_g[256], lut_b[256];
|
||||||
|
|
||||||
|
for(p = 0; p < xf86_config->num_crtc; p++) {
|
||||||
|
xf86CrtcPtr crtc = xf86_config->crtc[p];
|
||||||
|
G80CrtcPrivPtr pPriv = crtc->driver_private;
|
||||||
|
|
||||||
|
/* Initialize to the old lookup table values. */
|
||||||
|
for(i = 0; i < 256; i++) {
|
||||||
|
lut_r[i] = pPriv->lut_r[i] << 2;
|
||||||
|
lut_g[i] = pPriv->lut_g[i] << 2;
|
||||||
|
lut_b[i] = pPriv->lut_b[i] << 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(pScrn->depth) {
|
||||||
|
case 15:
|
||||||
|
for(i = 0; i < numColors; i++) {
|
||||||
|
index = indices[i];
|
||||||
|
for(j = 0; j < 8; j++) {
|
||||||
|
lut_r[index * 8 + j] =
|
||||||
|
colors[index].red << 8;
|
||||||
|
lut_g[index * 8 + j] =
|
||||||
|
colors[index].green << 8;
|
||||||
|
lut_b[index * 8 + j] =
|
||||||
|
colors[index].blue << 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
for(i = 0; i < numColors; i++) {
|
||||||
|
index = indices[i];
|
||||||
|
|
||||||
|
if(index <= 31) {
|
||||||
|
for(j = 0; j < 8; j++) {
|
||||||
|
lut_r[index * 8 + j] =
|
||||||
|
colors[index].red << 8;
|
||||||
|
lut_b[index * 8 + j] =
|
||||||
|
colors[index].blue << 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(j = 0; j < 4; j++) {
|
||||||
|
lut_g[index * 4 + j] =
|
||||||
|
colors[index].green << 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
for(i = 0; i < numColors; i++) {
|
||||||
|
index = indices[i];
|
||||||
|
lut_r[index] = colors[index].red << 8;
|
||||||
|
lut_g[index] = colors[index].green << 8;
|
||||||
|
lut_b[index] = colors[index].blue << 8;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make the change through RandR */
|
||||||
|
#ifdef RANDR_12_INTERFACE
|
||||||
|
RRCrtcGammaSet(crtc->randr_crtc, lut_r, lut_g, lut_b);
|
||||||
|
#else
|
||||||
|
crtc->funcs->gamma_set(crtc, lut_r, lut_g, lut_b, 256);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const xf86CrtcFuncsRec g80_crtc_funcs = {
|
static const xf86CrtcFuncsRec g80_crtc_funcs = {
|
||||||
.dpms = G80CrtcDPMSSet,
|
.dpms = G80CrtcDPMSSet,
|
||||||
.save = NULL,
|
.save = NULL,
|
||||||
@ -654,7 +751,7 @@ static const xf86CrtcFuncsRec g80_crtc_funcs = {
|
|||||||
.mode_fixup = G80CrtcModeFixup,
|
.mode_fixup = G80CrtcModeFixup,
|
||||||
.prepare = G80CrtcPrepare,
|
.prepare = G80CrtcPrepare,
|
||||||
.mode_set = G80CrtcModeSet,
|
.mode_set = G80CrtcModeSet,
|
||||||
// .gamma_set = G80DispGammaSet,
|
.gamma_set = G80CrtcGammaSet,
|
||||||
.commit = G80CrtcCommit,
|
.commit = G80CrtcCommit,
|
||||||
.shadow_create = NULL,
|
.shadow_create = NULL,
|
||||||
.shadow_destroy = NULL,
|
.shadow_destroy = NULL,
|
||||||
|
@ -22,5 +22,6 @@ void G80CrtcSetCursorPosition(xf86CrtcPtr, int x, int y);
|
|||||||
void G80CrtcSkipModeFixup(xf86CrtcPtr);
|
void G80CrtcSkipModeFixup(xf86CrtcPtr);
|
||||||
void G80CrtcSetDither(xf86CrtcPtr, Bool dither, Bool update);
|
void G80CrtcSetDither(xf86CrtcPtr, Bool dither, Bool update);
|
||||||
void G80CrtcSetScale(xf86CrtcPtr, DisplayModePtr, enum G80ScaleMode);
|
void G80CrtcSetScale(xf86CrtcPtr, DisplayModePtr, enum G80ScaleMode);
|
||||||
|
void G80LoadPalette(ScrnInfoPtr, int numColors, int *indices, LOCO *, VisualPtr);
|
||||||
|
|
||||||
void G80DispCreateCrtcs(ScrnInfoPtr pScrn);
|
void G80DispCreateCrtcs(ScrnInfoPtr pScrn);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 NVIDIA, Corporation
|
* Copyright (c) 2007,2010 NVIDIA Corporation
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
* copy of this software and associated documentation files (the
|
* copy of this software and associated documentation files (the
|
||||||
@ -57,7 +57,7 @@
|
|||||||
#include "g80_xaa.h"
|
#include "g80_xaa.h"
|
||||||
|
|
||||||
#define G80_REG_SIZE (1024 * 1024 * 16)
|
#define G80_REG_SIZE (1024 * 1024 * 16)
|
||||||
#define G80_RESERVED_VIDMEM 0xd000
|
#define G80_RESERVED_VIDMEM 0xe000
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
OPTION_HW_CURSOR,
|
OPTION_HW_CURSOR,
|
||||||
@ -614,9 +614,20 @@ G80InitHW(ScrnInfoPtr pScrn)
|
|||||||
pNv->reg[0x00706454/4] = 0x00010000;
|
pNv->reg[0x00706454/4] = 0x00010000;
|
||||||
pNv->reg[0x00706460/4] = 0x0000502d;
|
pNv->reg[0x00706460/4] = 0x0000502d;
|
||||||
pNv->reg[0x00706474/4] = 0x00010000;
|
pNv->reg[0x00706474/4] = 0x00010000;
|
||||||
pNv->reg[0x00706480/4] = 0x0019003d;
|
if(pNv->architecture == 0xaa || pNv->architecture == 0xac) {
|
||||||
pNv->reg[0x00706484/4] = (pNv->videoRam << 10) - G80_RESERVED_VIDMEM;
|
uint64_t base = (uint64_t)pNv->reg[0x00100E10/4] << 12;
|
||||||
pNv->reg[0x00706494/4] = 0x00010000;
|
size_t size = (uint64_t)pNv->reg[0x00100E14/4] << 12;
|
||||||
|
uint64_t limit = base + size - G80_RESERVED_VIDMEM;
|
||||||
|
|
||||||
|
pNv->reg[0x00706480/4] = 0x1a003d;
|
||||||
|
pNv->reg[0x00706484/4] = limit;
|
||||||
|
pNv->reg[0x00706488/4] = base;
|
||||||
|
pNv->reg[0x0070648c/4] = base >> 32 | ((limit >> 8) & 0xff000000);
|
||||||
|
} else {
|
||||||
|
pNv->reg[0x00706480/4] = 0x0019003d;
|
||||||
|
pNv->reg[0x00706484/4] = (pNv->videoRam << 10) - G80_RESERVED_VIDMEM;
|
||||||
|
pNv->reg[0x00706494/4] = 0x00010000;
|
||||||
|
}
|
||||||
pNv->reg[0x007064a0/4] = 0x0019003d;
|
pNv->reg[0x007064a0/4] = 0x0019003d;
|
||||||
pNv->reg[0x007064a4/4] = bar0_pramin + 0x1100f;
|
pNv->reg[0x007064a4/4] = bar0_pramin + 0x1100f;
|
||||||
pNv->reg[0x007064a8/4] = bar0_pramin + 0x11000;
|
pNv->reg[0x007064a8/4] = bar0_pramin + 0x11000;
|
||||||
@ -630,7 +641,7 @@ G80InitHW(ScrnInfoPtr pScrn)
|
|||||||
|
|
||||||
pNv->reg[0x00003224/4] = 0x000f0078;
|
pNv->reg[0x00003224/4] = 0x000f0078;
|
||||||
pNv->reg[0x0000322c/4] = 0x00000644;
|
pNv->reg[0x0000322c/4] = 0x00000644;
|
||||||
pNv->reg[0x00003234/4] = G80_RESERVED_VIDMEM - 0x5001;
|
pNv->reg[0x00003234/4] = G80_RESERVED_VIDMEM - 0x6001;
|
||||||
pNv->reg[0x00003254/4] = 0x00000001;
|
pNv->reg[0x00003254/4] = 0x00000001;
|
||||||
pNv->reg[0x00002210/4] = 0x1c001000;
|
pNv->reg[0x00002210/4] = 0x1c001000;
|
||||||
|
|
||||||
@ -655,7 +666,7 @@ G80InitHW(ScrnInfoPtr pScrn)
|
|||||||
|
|
||||||
pNv->dmaPut = 0;
|
pNv->dmaPut = 0;
|
||||||
pNv->dmaCurrent = SKIPS;
|
pNv->dmaCurrent = SKIPS;
|
||||||
pNv->dmaMax = (G80_RESERVED_VIDMEM - 0x5000) / 4 - 2;
|
pNv->dmaMax = (G80_RESERVED_VIDMEM - 0x6000) / 4 - 2;
|
||||||
pNv->dmaFree = pNv->dmaMax - pNv->dmaCurrent;
|
pNv->dmaFree = pNv->dmaMax - pNv->dmaCurrent;
|
||||||
|
|
||||||
G80DmaStart(pNv, 0, 1);
|
G80DmaStart(pNv, 0, 1);
|
||||||
@ -726,48 +737,6 @@ G80InitHW(ScrnInfoPtr pScrn)
|
|||||||
pNv->currentRop = ~0; /* Set to something invalid */
|
pNv->currentRop = ~0; /* Set to something invalid */
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DEPTH_SHIFT(val, w) ((val << (8 - w)) | (val >> ((w << 1) - 8)))
|
|
||||||
#define COLOR(c) (unsigned int)(0x3fff * ((c)/255.0))
|
|
||||||
static void
|
|
||||||
G80LoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
|
|
||||||
VisualPtr pVisual)
|
|
||||||
{
|
|
||||||
G80Ptr pNv = G80PTR(pScrn);
|
|
||||||
int i, index;
|
|
||||||
volatile struct {
|
|
||||||
unsigned short red, green, blue, unused;
|
|
||||||
} *lut = (void*)&pNv->mem[pNv->videoRam * 1024 - 0x5000];
|
|
||||||
|
|
||||||
switch(pScrn->depth) {
|
|
||||||
case 15:
|
|
||||||
for(i = 0; i < numColors; i++) {
|
|
||||||
index = indices[i];
|
|
||||||
lut[DEPTH_SHIFT(index, 5)].red = COLOR(colors[index].red);
|
|
||||||
lut[DEPTH_SHIFT(index, 5)].green = COLOR(colors[index].green);
|
|
||||||
lut[DEPTH_SHIFT(index, 5)].blue = COLOR(colors[index].blue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
for(i = 0; i < numColors; i++) {
|
|
||||||
index = indices[i];
|
|
||||||
lut[DEPTH_SHIFT(index, 6)].green = COLOR(colors[index].green);
|
|
||||||
if(index < 32) {
|
|
||||||
lut[DEPTH_SHIFT(index, 5)].red = COLOR(colors[index].red);
|
|
||||||
lut[DEPTH_SHIFT(index, 5)].blue = COLOR(colors[index].blue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
for(i = 0; i < numColors; i++) {
|
|
||||||
index = indices[i];
|
|
||||||
lut[index].red = COLOR(colors[index].red);
|
|
||||||
lut[index].green = COLOR(colors[index].green);
|
|
||||||
lut[index].blue = COLOR(colors[index].blue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
G80ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
G80ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -866,6 +835,9 @@ G80ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
|||||||
Must precede creation of the default colormap */
|
Must precede creation of the default colormap */
|
||||||
miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
|
miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
|
||||||
|
|
||||||
|
if(!xf86CrtcScreenInit(pScreen))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* Initialize default colormap */
|
/* Initialize default colormap */
|
||||||
if(!miCreateDefColormap(pScreen))
|
if(!miCreateDefColormap(pScreen))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -909,9 +881,6 @@ G80ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
|||||||
pNv->BlockHandler = pScreen->BlockHandler;
|
pNv->BlockHandler = pScreen->BlockHandler;
|
||||||
pScreen->BlockHandler = G80BlockHandler;
|
pScreen->BlockHandler = G80BlockHandler;
|
||||||
|
|
||||||
if(!xf86CrtcScreenInit(pScreen))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,9 +106,13 @@ static Bool G80ReadPortMapping(int scrnIndex, G80Ptr pNv)
|
|||||||
port = (b >> 4) & 0xf;
|
port = (b >> 4) & 0xf;
|
||||||
or = ffs((b >> 24) & 0xf) - 1;
|
or = ffs((b >> 24) & 0xf) - 1;
|
||||||
|
|
||||||
if(b & 0x300000)
|
if(b & 0x300000) {
|
||||||
/* Can't handle this type of output yet */
|
/* Can't handle this type of output yet */
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Ignoring unsupported external output type %d at output "
|
||||||
|
"%d\n", type, or);
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if(type == 0xe) break;
|
if(type == 0xe) break;
|
||||||
|
|
||||||
@ -140,7 +144,8 @@ static Bool G80ReadPortMapping(int scrnIndex, G80Ptr pNv)
|
|||||||
pNv->i2cMap[port].dac = or;
|
pNv->i2cMap[port].dac = or;
|
||||||
break;
|
break;
|
||||||
case 1: /* TV */
|
case 1: /* TV */
|
||||||
/* Ignore TVs */
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Ignoring unsupported TV output %d\n", or);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: /* TMDS */
|
case 2: /* TMDS */
|
||||||
@ -200,7 +205,15 @@ static Bool G80ReadPortMapping(int scrnIndex, G80Ptr pNv)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 6: /* DisplayPort */
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Ignoring unsupported DisplayPort output %d\n", or);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Ignoring unsupported output type %d at port %d\n",
|
||||||
|
type, or);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2010 NVIDIA Corporation
|
||||||
* Copyright 1996-1997 David J. McKay
|
* Copyright 1996-1997 David J. McKay
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@ -124,7 +125,7 @@ _X_EXPORT DriverRec NV = {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Known cards as of 2009/05/15 */
|
/* Known cards as of 2010/03/08 */
|
||||||
|
|
||||||
static SymTabRec NVKnownChipsets[] =
|
static SymTabRec NVKnownChipsets[] =
|
||||||
{
|
{
|
||||||
@ -416,162 +417,122 @@ static SymTabRec NVKnownChipsets[] =
|
|||||||
{ 0x10DE042D, "Quadro FX 360M" },
|
{ 0x10DE042D, "Quadro FX 360M" },
|
||||||
{ 0x10DE042E, "GeForce 9300M G" },
|
{ 0x10DE042E, "GeForce 9300M G" },
|
||||||
{ 0x10DE042F, "Quadro NVS 290" },
|
{ 0x10DE042F, "Quadro NVS 290" },
|
||||||
|
{ 0x10DE05E0, "GeForce GTX 295" },
|
||||||
{ 0x10DE05E1, "GeForce GTX 280" },
|
{ 0x10DE05E1, "GeForce GTX 280" },
|
||||||
{ 0x10DE05E2, "GeForce GTX 260" },
|
{ 0x10DE05E2, "GeForce GTX 260" },
|
||||||
|
{ 0x10DE05E3, "GeForce GTX 285" },
|
||||||
|
{ 0x10DE05E6, "GeForce GTX 275" },
|
||||||
|
{ 0x10DE05EB, "GeForce GTX 295" },
|
||||||
|
{ 0x10DE05F9, "Quadro CX" },
|
||||||
|
{ 0x10DE05FD, "Quadro FX 5800" },
|
||||||
|
{ 0x10DE05FE, "Quadro FX 4800" },
|
||||||
|
{ 0x10DE05FF, "Quadro FX 3800" },
|
||||||
{ 0x10DE0600, "GeForce 8800 GTS 512" },
|
{ 0x10DE0600, "GeForce 8800 GTS 512" },
|
||||||
|
{ 0x10DE0601, "GeForce 9800 GT" },
|
||||||
{ 0x10DE0602, "GeForce 8800 GT" },
|
{ 0x10DE0602, "GeForce 8800 GT" },
|
||||||
{ 0x10DE0604, "GeForce 9800 GX2" },
|
{ 0x10DE0604, "GeForce 9800 GX2" },
|
||||||
|
{ 0x10DE0605, "GeForce 9800 GT" },
|
||||||
{ 0x10DE0606, "GeForce 8800 GS" },
|
{ 0x10DE0606, "GeForce 8800 GS" },
|
||||||
|
{ 0x10DE0607, "GeForce GTS 240" },
|
||||||
|
{ 0x10DE0608, "GeForce 9800M GTX" },
|
||||||
{ 0x10DE0609, "GeForce 8800M GTS" },
|
{ 0x10DE0609, "GeForce 8800M GTS" },
|
||||||
|
{ 0x10DE060A, "GeForce GTX 280M" },
|
||||||
|
{ 0x10DE060B, "GeForce 9800M GT" },
|
||||||
{ 0x10DE060C, "GeForce 8800M GTX" },
|
{ 0x10DE060C, "GeForce 8800M GTX" },
|
||||||
{ 0x10DE060D, "GeForce 8800 GS" },
|
{ 0x10DE060D, "GeForce 8800 GS" },
|
||||||
{ 0x10DE0610, "GeForce 9600 GSO" },
|
{ 0x10DE0610, "GeForce 9600 GSO" },
|
||||||
{ 0x10DE0611, "GeForce 8800 GT" },
|
{ 0x10DE0611, "GeForce 8800 GT" },
|
||||||
{ 0x10DE0612, "GeForce 9800 GTX" },
|
{ 0x10DE0612, "GeForce 9800 GTX" },
|
||||||
{ 0x10DE0613, "GeForce 9800 GTK+" },
|
{ 0x10DE0613, "GeForce 9800 GTX+" },
|
||||||
{ 0x10DE0614, "GeForce 9800 GT" },
|
{ 0x10DE0614, "GeForce 9800 GT" },
|
||||||
|
{ 0x10DE0615, "GeForce GTS 250" },
|
||||||
|
{ 0x10DE0617, "GeForce 9800M GTX" },
|
||||||
|
{ 0x10DE0618, "GeForce GTX 260M" },
|
||||||
{ 0x10DE061A, "Quadro FX 3700" },
|
{ 0x10DE061A, "Quadro FX 3700" },
|
||||||
{ 0x10DE061C, "Quadro FX 3600M" },
|
{ 0x10DE061C, "Quadro FX 3600M" },
|
||||||
|
{ 0x10DE061D, "Quadro FX 2800M" },
|
||||||
|
{ 0x10DE061E, "Quadro FX 3700M" },
|
||||||
|
{ 0x10DE061F, "Quadro FX 3800M" },
|
||||||
{ 0x10DE0622, "GeForce 9600 GT" },
|
{ 0x10DE0622, "GeForce 9600 GT" },
|
||||||
{ 0x10DE0623, "GeForce 9600 GS" },
|
{ 0x10DE0623, "GeForce 9600 GS" },
|
||||||
|
{ 0x10DE0625, "GeForce 9600 GSO 512" },
|
||||||
|
{ 0x10DE0626, "GeForce GT 130" },
|
||||||
|
{ 0x10DE0627, "GeForce GT 140" },
|
||||||
{ 0x10DE0628, "GeForce 9800M GTS" },
|
{ 0x10DE0628, "GeForce 9800M GTS" },
|
||||||
{ 0x10DE062A, "GeForce 9700M GTS" },
|
{ 0x10DE062A, "GeForce 9700M GTS" },
|
||||||
|
{ 0x10DE062B, "GeForce 9800M GS" },
|
||||||
{ 0x10DE062C, "GeForce 9800M GTS" },
|
{ 0x10DE062C, "GeForce 9800M GTS" },
|
||||||
|
{ 0x10DE0638, "Quadro FX 1800" },
|
||||||
|
{ 0x10DE063A, "Quadro FX 2700M" },
|
||||||
{ 0x10DE0640, "GeForce 9500 GT" },
|
{ 0x10DE0640, "GeForce 9500 GT" },
|
||||||
|
{ 0x10DE0641, "GeForce 9400 GT" },
|
||||||
|
{ 0x10DE0643, "GeForce 9500 GT" },
|
||||||
|
{ 0x10DE0644, "GeForce 9500 GS" },
|
||||||
|
{ 0x10DE0646, "GeForce GT 120" },
|
||||||
{ 0x10DE0647, "GeForce 9600M GT" },
|
{ 0x10DE0647, "GeForce 9600M GT" },
|
||||||
{ 0x10DE0648, "GeForce 9600M GS" },
|
{ 0x10DE0648, "GeForce 9600M GS" },
|
||||||
{ 0x10DE0649, "GeForce 9600M GT" },
|
{ 0x10DE0649, "GeForce 9600M GT" },
|
||||||
|
{ 0x10DE064A, "GeForce 9700M GT" },
|
||||||
{ 0x10DE064B, "GeForce 9500M G" },
|
{ 0x10DE064B, "GeForce 9500M G" },
|
||||||
|
{ 0x10DE064C, "GeForce 9650M GT" },
|
||||||
|
{ 0x10DE0652, "GeForce GT 130M" },
|
||||||
|
{ 0x10DE0656, "GeForce 9500 GT" },
|
||||||
|
{ 0x10DE0658, "Quadro FX 380" },
|
||||||
|
{ 0x10DE0659, "Quadro FX 580" },
|
||||||
|
{ 0x10DE065A, "Quadro FX 1700M" },
|
||||||
|
{ 0x10DE065C, "Quadro FX 770M" },
|
||||||
{ 0x10DE06E0, "GeForce 9300 GE" },
|
{ 0x10DE06E0, "GeForce 9300 GE" },
|
||||||
{ 0x10DE06E1, "GeForce 9300 GS" },
|
{ 0x10DE06E1, "GeForce 9300 GS" },
|
||||||
{ 0x10DE06E4, "GeForce 8400 GS" },
|
{ 0x10DE06E4, "GeForce 8400 GS" },
|
||||||
{ 0x10DE06E5, "GeForce 9300M GS" },
|
{ 0x10DE06E5, "GeForce 9300M GS" },
|
||||||
|
{ 0x10DE06E6, "GeForce G100" },
|
||||||
{ 0x10DE06E8, "GeForce 9200M GS" },
|
{ 0x10DE06E8, "GeForce 9200M GS" },
|
||||||
{ 0x10DE06E9, "GeForce 9300M GS" },
|
{ 0x10DE06E9, "GeForce 9300M GS" },
|
||||||
{ 0x10DE06EA, "Quadro NVS 150M" },
|
{ 0x10DE06EA, "Quadro NVS 150M" },
|
||||||
{ 0x10DE06EB, "Quadro NVS 160M" },
|
{ 0x10DE06EB, "Quadro NVS 160M" },
|
||||||
{ 0x10DE084B, "GeForce 9300 GE" },
|
{ 0x10DE06EC, "GeForce G 105M" },
|
||||||
|
{ 0x10DE06EF, "GeForce G 103M" },
|
||||||
|
{ 0x10DE06F8, "Quadro NVS 420" },
|
||||||
|
{ 0x10DE06F9, "Quadro FX 370 LP" },
|
||||||
|
{ 0x10DE06FA, "Quadro NVS 450" },
|
||||||
|
{ 0x10DE06FD, "Quadro NVS 295" },
|
||||||
|
{ 0x10DE0847, "GeForce 9100" },
|
||||||
|
{ 0x10DE0848, "GeForce 8300" },
|
||||||
|
{ 0x10DE0849, "GeForce 8200" },
|
||||||
|
{ 0x10DE084A, "nForce 730a" },
|
||||||
|
{ 0x10DE084B, "GeForce 9200" },
|
||||||
|
{ 0x10DE084C, "nForce 980a/780a SLI" },
|
||||||
|
{ 0x10DE084D, "nForce 750a SLI" },
|
||||||
|
{ 0x10DE084F, "GeForce 8100 / nForce 720a" },
|
||||||
|
{ 0x10DE0844, "GeForce 9100M G" },
|
||||||
|
{ 0x10DE0845, "GeForce 8200M G" },
|
||||||
|
{ 0x10DE0861, "GeForce 9400" },
|
||||||
|
{ 0x10DE0862, "GeForce 9400M G" },
|
||||||
|
{ 0x10DE0863, "GeForce 9400M" },
|
||||||
|
{ 0x10DE086C, "GeForce 9300 / nForce 730i" },
|
||||||
|
{ 0x10DE0872, "GeForce G102M" },
|
||||||
|
{ 0x10DE0873, "GeForce G102M" },
|
||||||
|
{ 0x10DE087A, "GeForce 9400" },
|
||||||
|
{ 0x10DE087D, "ION" },
|
||||||
|
{ 0x10DE087F, "ION LE" },
|
||||||
|
{ 0x10DE0A20, "GeForce GT 220" },
|
||||||
|
{ 0x10DE0A23, "GeForce 210" },
|
||||||
|
{ 0x10DE0A2A, "GeForce GT 230M" },
|
||||||
|
{ 0x10DE0A34, "GeForce GT 240M" },
|
||||||
|
{ 0x10DE0A60, "GeForce G210" },
|
||||||
|
{ 0x10DE0A62, "GeForce 205" },
|
||||||
|
{ 0x10DE0A63, "GeForce 310" },
|
||||||
|
{ 0x10DE0A65, "GeForce 210" },
|
||||||
|
{ 0x10DE0A66, "GeForce 310" },
|
||||||
|
{ 0x10DE0A74, "GeForce G210M" },
|
||||||
|
{ 0x10DE0A78, "Quadro FX 380 LP" },
|
||||||
|
{ 0x10DE0CA3, "GeForce GT 240" },
|
||||||
|
{ 0x10DE0CA8, "GeForce GTS 260M" },
|
||||||
|
{ 0x10DE0CA9, "GeForce GTS 250M" },
|
||||||
|
|
||||||
{-1, NULL}
|
{-1, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* List of symbols from other modules that this module references. This
|
|
||||||
* list is used to tell the loader that it is OK for symbols here to be
|
|
||||||
* unresolved providing that it hasn't been told that they haven't been
|
|
||||||
* told that they are essential via a call to xf86LoaderReqSymbols() or
|
|
||||||
* xf86LoaderReqSymLists(). The purpose is this is to avoid warnings about
|
|
||||||
* unresolved symbols that are not required.
|
|
||||||
*/
|
|
||||||
|
|
||||||
static const char *vgahwSymbols[] = {
|
|
||||||
"vgaHWUnmapMem",
|
|
||||||
"vgaHWDPMSSet",
|
|
||||||
"vgaHWFreeHWRec",
|
|
||||||
"vgaHWGetHWRec",
|
|
||||||
"vgaHWGetIndex",
|
|
||||||
"vgaHWInit",
|
|
||||||
"vgaHWMapMem",
|
|
||||||
"vgaHWProtect",
|
|
||||||
"vgaHWRestore",
|
|
||||||
"vgaHWSave",
|
|
||||||
"vgaHWSaveScreen",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *fbSymbols[] = {
|
|
||||||
"fbPictureInit",
|
|
||||||
"fbScreenInit",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *xaaSymbols[] = {
|
|
||||||
"XAACopyROP",
|
|
||||||
"XAACreateInfoRec",
|
|
||||||
"XAADestroyInfoRec",
|
|
||||||
"XAAFallbackOps",
|
|
||||||
"XAAInit",
|
|
||||||
"XAAPatternROP",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *ramdacSymbols[] = {
|
|
||||||
"xf86CreateCursorInfoRec",
|
|
||||||
"xf86DestroyCursorInfoRec",
|
|
||||||
"xf86InitCursor",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *ddcSymbols[] = {
|
|
||||||
"xf86PrintEDID",
|
|
||||||
"xf86DoEDID_DDC2",
|
|
||||||
"xf86SetDDCproperties",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef XFree86LOADER
|
|
||||||
static const char *vbeSymbols[] = {
|
|
||||||
"VBEInit",
|
|
||||||
"vbeFree",
|
|
||||||
"vbeDoEDID",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *vbeModeSymbols[] = {
|
|
||||||
"VBEExtendedInit",
|
|
||||||
"VBEGetVBEInfo",
|
|
||||||
"VBEGetModePool",
|
|
||||||
"VBEValidateModes",
|
|
||||||
"VBESetModeParameters",
|
|
||||||
"VBEGetVBEMode",
|
|
||||||
"VBESetVBEMode",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const char *i2cSymbols[] = {
|
|
||||||
"xf86CreateI2CBusRec",
|
|
||||||
"xf86I2CBusInit",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *shadowSymbols[] = {
|
|
||||||
"ShadowFBInit",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *fbdevHWSymbols[] = {
|
|
||||||
"fbdevHWInit",
|
|
||||||
"fbdevHWUseBuildinMode",
|
|
||||||
|
|
||||||
"fbdevHWGetVidmem",
|
|
||||||
|
|
||||||
/* colormap */
|
|
||||||
"fbdevHWLoadPaletteWeak",
|
|
||||||
|
|
||||||
/* ScrnInfo hooks */
|
|
||||||
"fbdevHWAdjustFrameWeak",
|
|
||||||
"fbdevHWEnterVT",
|
|
||||||
"fbdevHWLeaveVTWeak",
|
|
||||||
"fbdevHWModeInit",
|
|
||||||
"fbdevHWSave",
|
|
||||||
"fbdevHWSwitchModeWeak",
|
|
||||||
"fbdevHWValidModeWeak",
|
|
||||||
|
|
||||||
"fbdevHWMapMMIO",
|
|
||||||
"fbdevHWMapVidmem",
|
|
||||||
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *int10Symbols[] = {
|
|
||||||
"xf86FreeInt10",
|
|
||||||
"xf86InitInt10",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef XFree86LOADER
|
#ifdef XFree86LOADER
|
||||||
|
|
||||||
static MODULESETUPPROTO(nvSetup);
|
static MODULESETUPPROTO(nvSetup);
|
||||||
@ -812,9 +773,16 @@ NVIsG80(int chipType)
|
|||||||
case 0x0650:
|
case 0x0650:
|
||||||
case 0x06e0:
|
case 0x06e0:
|
||||||
case 0x06f0:
|
case 0x06f0:
|
||||||
|
case 0x0840:
|
||||||
|
case 0x0850:
|
||||||
|
case 0x0860:
|
||||||
|
case 0x0870:
|
||||||
|
case 0x0a20:
|
||||||
|
case 0x0a30:
|
||||||
case 0x0a60:
|
case 0x0a60:
|
||||||
case 0x0a70:
|
case 0x0a70:
|
||||||
case 0x0ca0:
|
case 0x0ca0:
|
||||||
|
case 0x0cb0:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user