Update to xf86-video-vmware 10.16.8
This commit is contained in:
parent
56ccae54cf
commit
8b6a5661b0
89
driver/xf86-video-vmware/aclocal.m4
vendored
89
driver/xf86-video-vmware/aclocal.m4
vendored
@ -7631,7 +7631,7 @@ AC_SUBST([am__tar])
|
|||||||
AC_SUBST([am__untar])
|
AC_SUBST([am__untar])
|
||||||
]) # _AM_PROG_TAR
|
]) # _AM_PROG_TAR
|
||||||
|
|
||||||
dnl xorg-macros.m4. Generated from xorg-macros.m4.in:xorgversion.m4 by configure.
|
dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure.
|
||||||
dnl
|
dnl
|
||||||
dnl Copyright 2005-2006 Sun Microsystems, Inc. All rights reserved.
|
dnl Copyright 2005-2006 Sun Microsystems, Inc. All rights reserved.
|
||||||
dnl
|
dnl
|
||||||
@ -7668,27 +7668,24 @@ dnl of the copyright holder.
|
|||||||
# your configure.ac with the minimum required version, such as:
|
# your configure.ac with the minimum required version, such as:
|
||||||
# XORG_MACROS_VERSION(1.1)
|
# XORG_MACROS_VERSION(1.1)
|
||||||
#
|
#
|
||||||
# To force at least a version with this macro defined, also add:
|
# To ensure that this macro is defined, also add:
|
||||||
# m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.1 or later before running autoconf/autogen])])
|
# m4_ifndef([XORG_MACROS_VERSION],
|
||||||
|
# [m4_fatal([must install xorg-macros 1.1 or later before running autoconf/autogen])])
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# 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.
|
||||||
AC_DEFUN([XORG_MACROS_VERSION],[
|
m4_defun([XORG_MACROS_VERSION],[
|
||||||
[XORG_MACROS_needed_version=$1
|
m4_define([vers_have], [1.3.0])
|
||||||
XORG_MACROS_needed_major=`echo $XORG_MACROS_needed_version | sed 's/\..*$//'`
|
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
|
||||||
XORG_MACROS_needed_minor=`echo $XORG_MACROS_needed_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`]
|
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
|
||||||
AC_MSG_CHECKING([if xorg-macros used to generate configure is at least ${XORG_MACROS_needed_major}.${XORG_MACROS_needed_minor}])
|
m4_if(m4_cmp(maj_have, maj_needed), 0,,
|
||||||
[XORG_MACROS_version=1.2.1
|
[m4_fatal([xorg-macros major version ]maj_needed[ is required but ]vers_have[ found])])
|
||||||
XORG_MACROS_major=`echo $XORG_MACROS_version | sed 's/\..*$//'`
|
m4_if(m4_version_compare(vers_have, [$1]), -1,
|
||||||
XORG_MACROS_minor=`echo $XORG_MACROS_version | sed -e 's/^[0-9]*\.//' -e 's/\..*$//'`]
|
[m4_fatal([xorg-macros version $1 or higher is required but ]vers_have[ found])])
|
||||||
if test $XORG_MACROS_major -ne $XORG_MACROS_needed_major ; then
|
m4_undefine([vers_have])
|
||||||
AC_MSG_ERROR([configure built with incompatible version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.x])
|
m4_undefine([maj_have])
|
||||||
fi
|
m4_undefine([maj_needed])
|
||||||
if test $XORG_MACROS_minor -lt $XORG_MACROS_needed_minor ; then
|
|
||||||
AC_MSG_ERROR([configure built with too old of a version of xorg-macros.m4 - requires version ${XORG_MACROS_major}.${XORG_MACROS_minor}.0 or newer])
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT([yes, $XORG_MACROS_version])
|
|
||||||
]) # XORG_MACROS_VERSION
|
]) # XORG_MACROS_VERSION
|
||||||
|
|
||||||
# XORG_PROG_RAWCPP()
|
# XORG_PROG_RAWCPP()
|
||||||
@ -7955,7 +7952,7 @@ AC_SUBST(MAKE_HTML)
|
|||||||
# their AM_CFLAGS (or other appropriate *_CFLAGS) to use them.
|
# their AM_CFLAGS (or other appropriate *_CFLAGS) to use them.
|
||||||
AC_DEFUN([XORG_CHECK_MALLOC_ZERO],[
|
AC_DEFUN([XORG_CHECK_MALLOC_ZERO],[
|
||||||
AC_ARG_ENABLE(malloc0returnsnull,
|
AC_ARG_ENABLE(malloc0returnsnull,
|
||||||
AC_HELP_STRING([--enable-malloc0returnsnull],
|
AS_HELP_STRING([--enable-malloc0returnsnull],
|
||||||
[malloc(0) returns NULL (default: auto)]),
|
[malloc(0) returns NULL (default: auto)]),
|
||||||
[MALLOC_ZERO_RETURNS_NULL=$enableval],
|
[MALLOC_ZERO_RETURNS_NULL=$enableval],
|
||||||
[MALLOC_ZERO_RETURNS_NULL=auto])
|
[MALLOC_ZERO_RETURNS_NULL=auto])
|
||||||
@ -8007,7 +8004,7 @@ AC_SUBST([XTMALLOC_ZERO_CFLAGS])
|
|||||||
AC_DEFUN([XORG_WITH_LINT],[
|
AC_DEFUN([XORG_WITH_LINT],[
|
||||||
|
|
||||||
# Allow checking code with lint, sparse, etc.
|
# Allow checking code with lint, sparse, etc.
|
||||||
AC_ARG_WITH(lint, [AC_HELP_STRING([--with-lint],
|
AC_ARG_WITH(lint, [AS_HELP_STRING([--with-lint],
|
||||||
[Use a lint-style source code checker (default: disabled)])],
|
[Use a lint-style source code checker (default: disabled)])],
|
||||||
[use_lint=$withval], [use_lint=no])
|
[use_lint=$withval], [use_lint=no])
|
||||||
if test "x$use_lint" = "xyes" ; then
|
if test "x$use_lint" = "xyes" ; then
|
||||||
@ -8048,7 +8045,7 @@ AM_CONDITIONAL(LINT, [test x$LINT != xno])
|
|||||||
AC_DEFUN([XORG_LINT_LIBRARY],[
|
AC_DEFUN([XORG_LINT_LIBRARY],[
|
||||||
AC_REQUIRE([XORG_WITH_LINT])
|
AC_REQUIRE([XORG_WITH_LINT])
|
||||||
# Build lint "library" for more indepth checks of programs calling this library
|
# Build lint "library" for more indepth checks of programs calling this library
|
||||||
AC_ARG_ENABLE(lint-library, [AC_HELP_STRING([--enable-lint-library],
|
AC_ARG_ENABLE(lint-library, [AS_HELP_STRING([--enable-lint-library],
|
||||||
[Create lint library (default: disabled)])],
|
[Create lint library (default: disabled)])],
|
||||||
[make_lint_lib=$enableval], [make_lint_lib=no])
|
[make_lint_lib=$enableval], [make_lint_lib=no])
|
||||||
if test "x$make_lint_lib" != "xno" ; then
|
if test "x$make_lint_lib" != "xno" ; then
|
||||||
@ -8078,9 +8075,9 @@ 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"
|
||||||
case `gcc -dumpversion` in
|
case `$CC -dumpversion` in
|
||||||
3.4.* | 4.*)
|
3.4.* | 4.*)
|
||||||
CWARNFLAGS+=" -Wold-style-definition -Wdeclaration-after-statement"
|
CWARNFLAGS="$CWARNFLAGS -Wold-style-definition -Wdeclaration-after-statement"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
@ -8090,7 +8087,51 @@ 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
|
||||||
|
# -----------------------
|
||||||
|
# Minimum version: 1.3.0
|
||||||
|
#
|
||||||
|
# Add configure option to enable strict compilation
|
||||||
|
AC_DEFUN([XORG_STRICT_OPTION], [
|
||||||
|
AC_REQUIRE([AC_PROG_CC])
|
||||||
|
AC_REQUIRE([AC_PROG_CC_C99])
|
||||||
|
AC_REQUIRE([XORG_CWARNFLAGS])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(strict-compilation,
|
||||||
|
AS_HELP_STRING([--enable-strict-compilation],
|
||||||
|
[Enable all warnings from compiler and make them errors (default: disabled)]),
|
||||||
|
[STRICT_COMPILE=$enableval], [STRICT_COMPILE=no])
|
||||||
|
if test "x$STRICT_COMPILE" = "xyes"; then
|
||||||
|
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
|
||||||
|
AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
|
||||||
|
if test "x$GCC" = xyes ; then
|
||||||
|
STRICT_CFLAGS="-pedantic -Werror"
|
||||||
|
elif test "x$SUNCC" = "xyes"; then
|
||||||
|
STRICT_CFLAGS="-errwarn"
|
||||||
|
elif test "x$INTELCC" = "xyes"; then
|
||||||
|
STRICT_CFLAGS="-Werror"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
|
||||||
|
AC_SUBST([CWARNFLAGS])
|
||||||
|
]) # XORG_STRICT_OPTION
|
||||||
|
|
||||||
|
# XORG_DEFAULT_OPTIONS
|
||||||
|
# --------------------
|
||||||
|
# Minimum version: 1.3.0
|
||||||
|
#
|
||||||
|
# Defines default options for X.Org modules.
|
||||||
|
#
|
||||||
|
AC_DEFUN([XORG_DEFAULT_OPTIONS], [
|
||||||
|
XORG_CWARNFLAGS
|
||||||
|
XORG_STRICT_OPTION
|
||||||
|
XORG_RELEASE_VERSION
|
||||||
|
XORG_CHANGELOG
|
||||||
|
XORG_MANPAGE_SECTIONS
|
||||||
|
]) # XORG_DEFAULT_OPTIONS
|
||||||
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
|
||||||
@ -8125,7 +8166,7 @@ dnl
|
|||||||
|
|
||||||
AC_DEFUN([XORG_RELEASE_VERSION],[
|
AC_DEFUN([XORG_RELEASE_VERSION],[
|
||||||
AC_ARG_WITH(release-version,
|
AC_ARG_WITH(release-version,
|
||||||
AC_HELP_STRING([--with-release-version=STRING],
|
AS_HELP_STRING([--with-release-version=STRING],
|
||||||
[Use release version string in package name]),
|
[Use release version string in package name]),
|
||||||
[RELEASE_VERSION="$withval"],
|
[RELEASE_VERSION="$withval"],
|
||||||
[RELEASE_VERSION=""])
|
[RELEASE_VERSION=""])
|
||||||
|
20
driver/xf86-video-vmware/configure
vendored
20
driver/xf86-video-vmware/configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.62 for xf86-video-vmware 10.16.6.
|
# Generated by GNU Autoconf 2.62 for xf86-video-vmware 10.16.8.
|
||||||
#
|
#
|
||||||
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
||||||
#
|
#
|
||||||
@ -750,8 +750,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='xf86-video-vmware'
|
PACKAGE_NAME='xf86-video-vmware'
|
||||||
PACKAGE_TARNAME='xf86-video-vmware'
|
PACKAGE_TARNAME='xf86-video-vmware'
|
||||||
PACKAGE_VERSION='10.16.6'
|
PACKAGE_VERSION='10.16.8'
|
||||||
PACKAGE_STRING='xf86-video-vmware 10.16.6'
|
PACKAGE_STRING='xf86-video-vmware 10.16.8'
|
||||||
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
||||||
|
|
||||||
ac_unique_file="Makefile.am"
|
ac_unique_file="Makefile.am"
|
||||||
@ -1507,7 +1507,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures xf86-video-vmware 10.16.6 to adapt to many kinds of systems.
|
\`configure' configures xf86-video-vmware 10.16.8 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1578,7 +1578,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of xf86-video-vmware 10.16.6:";;
|
short | recursive ) echo "Configuration of xf86-video-vmware 10.16.8:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1697,7 +1697,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
xf86-video-vmware configure 10.16.6
|
xf86-video-vmware configure 10.16.8
|
||||||
generated by GNU Autoconf 2.62
|
generated by GNU Autoconf 2.62
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||||
@ -1711,7 +1711,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by xf86-video-vmware $as_me 10.16.6, which was
|
It was created by xf86-video-vmware $as_me 10.16.8, which was
|
||||||
generated by GNU Autoconf 2.62. Invocation command line was
|
generated by GNU Autoconf 2.62. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -2365,7 +2365,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='xf86-video-vmware'
|
PACKAGE='xf86-video-vmware'
|
||||||
VERSION='10.16.6'
|
VERSION='10.16.8'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -22252,7 +22252,7 @@ exec 6>&1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by xf86-video-vmware $as_me 10.16.6, which was
|
This file was extended by xf86-video-vmware $as_me 10.16.8, which was
|
||||||
generated by GNU Autoconf 2.62. Invocation command line was
|
generated by GNU Autoconf 2.62. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -22305,7 +22305,7 @@ Report bugs to <bug-autoconf@gnu.org>."
|
|||||||
_ACEOF
|
_ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
xf86-video-vmware config.status 10.16.6
|
xf86-video-vmware config.status 10.16.8
|
||||||
configured by $0, generated by GNU Autoconf 2.62,
|
configured by $0, generated by GNU Autoconf 2.62,
|
||||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
AC_PREREQ(2.57)
|
AC_PREREQ(2.57)
|
||||||
AC_INIT([xf86-video-vmware],
|
AC_INIT([xf86-video-vmware],
|
||||||
10.16.6,
|
10.16.8,
|
||||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
|
||||||
xf86-video-vmware)
|
xf86-video-vmware)
|
||||||
|
|
||||||
|
@ -18,7 +18,9 @@ char rcsId_vmware[] =
|
|||||||
|
|
||||||
#include "xf86.h"
|
#include "xf86.h"
|
||||||
#include "xf86_OSproc.h"
|
#include "xf86_OSproc.h"
|
||||||
|
#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6
|
||||||
#include "xf86Resources.h"
|
#include "xf86Resources.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "compiler.h" /* inb/outb */
|
#include "compiler.h" /* inb/outb */
|
||||||
|
|
||||||
@ -83,7 +85,7 @@ char rcsId_vmware[] =
|
|||||||
#define VMWARE_DRIVER_NAME "vmware"
|
#define VMWARE_DRIVER_NAME "vmware"
|
||||||
#define VMWARE_MAJOR_VERSION 10
|
#define VMWARE_MAJOR_VERSION 10
|
||||||
#define VMWARE_MINOR_VERSION 16
|
#define VMWARE_MINOR_VERSION 16
|
||||||
#define VMWARE_PATCHLEVEL 6
|
#define VMWARE_PATCHLEVEL 8
|
||||||
#define VMWARE_DRIVER_VERSION \
|
#define VMWARE_DRIVER_VERSION \
|
||||||
(VMWARE_MAJOR_VERSION * 65536 + VMWARE_MINOR_VERSION * 256 + VMWARE_PATCHLEVEL)
|
(VMWARE_MAJOR_VERSION * 65536 + VMWARE_MINOR_VERSION * 256 + VMWARE_PATCHLEVEL)
|
||||||
#define VMWARE_DRIVER_VERSION_STRING \
|
#define VMWARE_DRIVER_VERSION_STRING \
|
||||||
@ -109,11 +111,15 @@ static SymTabRec VMWAREChipsets[] = {
|
|||||||
{ -1, NULL }
|
{ -1, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef XSERVER_LIBPCIACCESS
|
||||||
static resRange vmwareLegacyRes[] = {
|
static resRange vmwareLegacyRes[] = {
|
||||||
{ ResExcIoBlock, SVGA_LEGACY_BASE_PORT,
|
{ ResExcIoBlock, SVGA_LEGACY_BASE_PORT,
|
||||||
SVGA_LEGACY_BASE_PORT + SVGA_NUM_PORTS*sizeof(uint32)},
|
SVGA_LEGACY_BASE_PORT + SVGA_NUM_PORTS*sizeof(uint32)},
|
||||||
_VGA_EXCLUSIVE, _END
|
_VGA_EXCLUSIVE, _END
|
||||||
};
|
};
|
||||||
|
#else
|
||||||
|
#define vmwareLegacyRes NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
#if XSERVER_LIBPCIACCESS
|
#if XSERVER_LIBPCIACCESS
|
||||||
|
|
||||||
@ -306,7 +312,7 @@ vmwareSendSVGACmdUpdate(VMWAREPtr pVMWARE, BoxPtr pBB)
|
|||||||
vmwareWriteWordToFIFO(pVMWARE, pBB->y2 - pBB->y1);
|
vmwareWriteWordToFIFO(pVMWARE, pBB->y2 - pBB->y1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
vmwareSendSVGACmdUpdateFullScreen(VMWAREPtr pVMWARE)
|
vmwareSendSVGACmdUpdateFullScreen(VMWAREPtr pVMWARE)
|
||||||
{
|
{
|
||||||
BoxRec BB;
|
BoxRec BB;
|
||||||
@ -652,6 +658,7 @@ VMWAREPreInit(ScrnInfoPtr pScrn, int flags)
|
|||||||
"No supported VMware SVGA found (read ID 0x%08x).\n", id);
|
"No supported VMware SVGA found (read ID 0x%08x).\n", id);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
pVMWARE->suspensionSavedRegId = id;
|
||||||
|
|
||||||
#if !XSERVER_LIBPCIACCESS
|
#if !XSERVER_LIBPCIACCESS
|
||||||
pVMWARE->PciTag = pciTag(pVMWARE->PciInfo->bus, pVMWARE->PciInfo->device,
|
pVMWARE->PciTag = pciTag(pVMWARE->PciInfo->bus, pVMWARE->PciInfo->device,
|
||||||
@ -1162,8 +1169,40 @@ VMWAREModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool rebuildPixmap)
|
|||||||
vgaHWProtect(pScrn, FALSE);
|
vgaHWProtect(pScrn, FALSE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX -- If we want to check that we got the mode we asked for, this
|
* Push the new Xinerama state to X clients and the hardware,
|
||||||
* would be a good place.
|
* synchronously with the mode change. Note that this must happen
|
||||||
|
* AFTER we write the new width and height to the hardware
|
||||||
|
* registers, since updating the WIDTH and HEIGHT registers will
|
||||||
|
* reset the device's multimon topology.
|
||||||
|
*/
|
||||||
|
vmwareNextXineramaState(pVMWARE);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
vmwareNextXineramaState(VMWAREPtr pVMWARE)
|
||||||
|
{
|
||||||
|
VMWARERegPtr vmwareReg = &pVMWARE->ModeReg;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Switch to the next Xinerama state (from pVMWARE->xineramaNextState).
|
||||||
|
*
|
||||||
|
* This new state will be available to X clients via the Xinerama
|
||||||
|
* extension, and we push the new state to the virtual hardware,
|
||||||
|
* in order to configure a number of virtual monitors within the
|
||||||
|
* device's framebuffer.
|
||||||
|
*
|
||||||
|
* This function can be called at any time, but it should usually be
|
||||||
|
* called just after a mode switch. This is for two reasons:
|
||||||
|
*
|
||||||
|
* 1) We don't want X clients to see a Xinerama topology and a video
|
||||||
|
* mode that are inconsistent with each other, so we'd like to switch
|
||||||
|
* both at the same time.
|
||||||
|
*
|
||||||
|
* 2) We must set the host's display topology registers after setting
|
||||||
|
* the new video mode, since writes to WIDTH/HEIGHT will reset the
|
||||||
|
* hardware display topology.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1177,7 +1216,14 @@ VMWAREModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool rebuildPixmap)
|
|||||||
|
|
||||||
pVMWARE->xineramaNextState = NULL;
|
pVMWARE->xineramaNextState = NULL;
|
||||||
pVMWARE->xineramaNextNumOutputs = 0;
|
pVMWARE->xineramaNextNumOutputs = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
/*
|
||||||
|
* There is no next state pending. Switch back to
|
||||||
|
* single-monitor mode. This is necessary for resetting the
|
||||||
|
* Xinerama state if we get a mode change which doesn't
|
||||||
|
* follow a VMwareCtrlDoSetTopology call.
|
||||||
|
*/
|
||||||
VMWAREXineramaPtr basicState =
|
VMWAREXineramaPtr basicState =
|
||||||
(VMWAREXineramaPtr)xcalloc(1, sizeof (VMWAREXineramaRec));
|
(VMWAREXineramaPtr)xcalloc(1, sizeof (VMWAREXineramaRec));
|
||||||
if (basicState) {
|
if (basicState) {
|
||||||
@ -1194,7 +1240,8 @@ VMWAREModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool rebuildPixmap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Update host's view of guest topology.
|
* Update host's view of guest topology. This tells the device
|
||||||
|
* how we're carving up its framebuffer into virtual screens.
|
||||||
*/
|
*/
|
||||||
if (pVMWARE->vmwareCapability & SVGA_CAP_DISPLAY_TOPOLOGY) {
|
if (pVMWARE->vmwareCapability & SVGA_CAP_DISPLAY_TOPOLOGY) {
|
||||||
if (pVMWARE->xinerama) {
|
if (pVMWARE->xinerama) {
|
||||||
@ -1222,14 +1269,13 @@ VMWAREModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode, Bool rebuildPixmap)
|
|||||||
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_IS_PRIMARY, TRUE);
|
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_IS_PRIMARY, TRUE);
|
||||||
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_POSITION_X, 0);
|
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_POSITION_X, 0);
|
||||||
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_POSITION_Y, 0);
|
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_POSITION_Y, 0);
|
||||||
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_WIDTH, mode->HDisplay);
|
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_WIDTH, vmwareReg->svga_reg_width);
|
||||||
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_HEIGHT, mode->VDisplay);
|
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_HEIGHT, vmwareReg->svga_reg_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Done. */
|
||||||
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_ID, SVGA_INVALID_DISPLAY_ID);
|
vmwareWriteReg(pVMWARE, SVGA_REG_DISPLAY_ID, SVGA_INVALID_DISPLAY_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1435,6 +1481,7 @@ VMWAREAddDisplayMode(ScrnInfoPtr pScrn,
|
|||||||
DisplayModeRec *mode;
|
DisplayModeRec *mode;
|
||||||
|
|
||||||
mode = xalloc(sizeof(DisplayModeRec));
|
mode = xalloc(sizeof(DisplayModeRec));
|
||||||
|
memset(mode, 0, sizeof *mode);
|
||||||
|
|
||||||
mode->name = xalloc(strlen(name) + 1);
|
mode->name = xalloc(strlen(name) + 1);
|
||||||
strcpy(mode->name, name);
|
strcpy(mode->name, name);
|
||||||
@ -1820,6 +1867,12 @@ VMWAREEnterVT(int scrnIndex, int flags)
|
|||||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||||
VMWAREPtr pVMWARE = VMWAREPTR(pScrn);
|
VMWAREPtr pVMWARE = VMWAREPTR(pScrn);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After system resumes from hiberation, EnterVT will be called and this
|
||||||
|
* is a good place to restore the SVGA ID register.
|
||||||
|
*/
|
||||||
|
vmwareWriteReg(pVMWARE, SVGA_REG_ID, pVMWARE->suspensionSavedRegId);
|
||||||
|
|
||||||
if (!pVMWARE->SavedReg.svga_fifo_enabled) {
|
if (!pVMWARE->SavedReg.svga_fifo_enabled) {
|
||||||
VMWAREInitFIFO(pScrn);
|
VMWAREInitFIFO(pScrn);
|
||||||
}
|
}
|
||||||
@ -1831,6 +1884,14 @@ static void
|
|||||||
VMWARELeaveVT(int scrnIndex, int flags)
|
VMWARELeaveVT(int scrnIndex, int flags)
|
||||||
{
|
{
|
||||||
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
|
||||||
|
VMWAREPtr pVMWARE = VMWAREPTR(pScrn);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Before shutting down system for hibneration, LeaveVT will be called,
|
||||||
|
* we save the ID register value here and later restore it in EnterVT.
|
||||||
|
*/
|
||||||
|
pVMWARE->suspensionSavedRegId = vmwareReadReg(pVMWARE, SVGA_REG_ID);
|
||||||
|
|
||||||
VMWARERestore(pScrn);
|
VMWARERestore(pScrn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,12 +19,14 @@
|
|||||||
|
|
||||||
#include "xf86.h"
|
#include "xf86.h"
|
||||||
#include "xf86_OSproc.h"
|
#include "xf86_OSproc.h"
|
||||||
#include "xf86Resources.h"
|
|
||||||
|
|
||||||
#include <X11/extensions/panoramiXproto.h>
|
#include <X11/extensions/panoramiXproto.h>
|
||||||
|
|
||||||
#ifdef XSERVER_LIBPCIACCESS
|
#ifdef XSERVER_LIBPCIACCESS
|
||||||
#include <pciaccess.h>
|
#include <pciaccess.h>
|
||||||
|
#else
|
||||||
|
#include "xf86Resources.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "compiler.h" /* inb/outb */
|
#include "compiler.h" /* inb/outb */
|
||||||
@ -102,6 +104,7 @@ typedef struct {
|
|||||||
|
|
||||||
VMWARERegRec SavedReg;
|
VMWARERegRec SavedReg;
|
||||||
VMWARERegRec ModeReg;
|
VMWARERegRec ModeReg;
|
||||||
|
CARD32 suspensionSavedRegId;
|
||||||
|
|
||||||
DisplayModePtr dynModes[NUM_DYN_MODES];
|
DisplayModePtr dynModes[NUM_DYN_MODES];
|
||||||
|
|
||||||
@ -244,6 +247,10 @@ void vmwareSendSVGACmdUpdate(
|
|||||||
VMWAREPtr pVMWARE, BoxPtr pBB
|
VMWAREPtr pVMWARE, BoxPtr pBB
|
||||||
);
|
);
|
||||||
|
|
||||||
|
void vmwareSendSVGACmdUpdateFullScreen(
|
||||||
|
VMWAREPtr pVMWARE
|
||||||
|
);
|
||||||
|
|
||||||
DisplayModeRec *VMWAREAddDisplayMode(
|
DisplayModeRec *VMWAREAddDisplayMode(
|
||||||
ScrnInfoPtr pScrn,
|
ScrnInfoPtr pScrn,
|
||||||
const char *name,
|
const char *name,
|
||||||
@ -256,6 +263,10 @@ Bool vmwareIsRegionEqual(
|
|||||||
const RegionPtr reg2
|
const RegionPtr reg2
|
||||||
);
|
);
|
||||||
|
|
||||||
|
void vmwareNextXineramaState(
|
||||||
|
VMWAREPtr pVMWARE
|
||||||
|
);
|
||||||
|
|
||||||
/* vmwarecurs.c */
|
/* vmwarecurs.c */
|
||||||
Bool vmwareCursorInit(
|
Bool vmwareCursorInit(
|
||||||
ScreenPtr pScr
|
ScreenPtr pScr
|
||||||
|
@ -282,11 +282,59 @@ VMwareCtrlDoSetTopology(ScrnInfoPtr pScrn,
|
|||||||
if (xineramaState) {
|
if (xineramaState) {
|
||||||
memcpy(xineramaState, extents, number * sizeof (VMWAREXineramaRec));
|
memcpy(xineramaState, extents, number * sizeof (VMWAREXineramaRec));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make this the new pending Xinerama state. Normally we'll
|
||||||
|
* wait until the next mode switch in order to synchronously
|
||||||
|
* push this state out to X clients and the virtual hardware.
|
||||||
|
*
|
||||||
|
* However, if we're already in the right video mode, there
|
||||||
|
* will be no mode change. In this case, push it out
|
||||||
|
* immediately.
|
||||||
|
*/
|
||||||
xfree(pVMWARE->xineramaNextState);
|
xfree(pVMWARE->xineramaNextState);
|
||||||
pVMWARE->xineramaNextState = xineramaState;
|
pVMWARE->xineramaNextState = xineramaState;
|
||||||
pVMWARE->xineramaNextNumOutputs = number;
|
pVMWARE->xineramaNextNumOutputs = number;
|
||||||
|
|
||||||
|
if (maxX == pVMWARE->ModeReg.svga_reg_width &&
|
||||||
|
maxY == pVMWARE->ModeReg.svga_reg_height) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* XXX:
|
||||||
|
*
|
||||||
|
* There are problems with trying to set a Xinerama state
|
||||||
|
* without a mode switch. The biggest one is that
|
||||||
|
* applications typically won't notice a topology change
|
||||||
|
* that occurs without a mode switch. If you run "xdpyinfo
|
||||||
|
* -ext XINERAMA" after one such topology change, it will
|
||||||
|
* report the new data, but apps (like the GNOME Panel)
|
||||||
|
* will not notice until the next mode change.
|
||||||
|
*
|
||||||
|
* I don't think there's any good solution to this... as
|
||||||
|
* far as I know, even on a non-virtualized machine
|
||||||
|
* there's no way for an app to find out if the Xinerama
|
||||||
|
* opology changes without a resolution change also
|
||||||
|
* occurring. There might be some cheats we can take, like
|
||||||
|
* swithcing to a new mode with the same resolution and a
|
||||||
|
* different (fake) refresh rate, or temporarily switching
|
||||||
|
* to an intermediate mode. Ick.
|
||||||
|
*
|
||||||
|
* The other annoyance here is that when we reprogram the
|
||||||
|
* SVGA device's monitor topology registers, it may
|
||||||
|
* rearrange those monitors on the host's screen, but they
|
||||||
|
* will still have the old contents. This might be
|
||||||
|
* correct, but it isn't guaranteed to match what's on X's
|
||||||
|
* framebuffer at the moment. So we'll send a
|
||||||
|
* full-framebuffer update rect afterwards.
|
||||||
|
*/
|
||||||
|
|
||||||
|
vmwareNextXineramaState(pVMWARE);
|
||||||
|
vmwareSendSVGACmdUpdateFullScreen(pVMWARE);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
return VMwareCtrlDoSetRes(pScrn, maxX, maxY, FALSE);
|
return VMwareCtrlDoSetRes(pScrn, maxX, maxY, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user