configure.ac                                                        |   59 
++++++
 debian/changelog                                                    |   19 ++
 debian/patches/0002-Update-manpage-for-new-accelmethod-option.patch |   15 +
 debian/patches/series                                               |    1 
 debian/rules                                                        |    2 
 src/Makefile.am                                                     |    1 
 src/common.h                                                        |    2 
 src/intel_display.c                                                 |   21 ++
 src/intel_driver.c                                                  |   86 
---------
 src/intel_driver.h                                                  |    2 
 src/intel_glamor.c                                                  |   15 +
 src/intel_module.c                                                  |   90 
++++++----
 src/intel_options.h                                                 |   75 
++++++++
 src/legacy/i810/i810_driver.c                                       |    3 
 src/legacy/legacy.h                                                 |    2 
 src/sna/sna.h                                                       |   15 -
 src/sna/sna_display.c                                               |    2 
 src/sna/sna_dri.c                                                   |    6 
 src/sna/sna_driver.c                                                |   32 +--
 src/sna/sna_module.h                                                |    4 
 src/sna/sna_video.c                                                 |    2 
 src/sna/sna_video_overlay.c                                         |    2 
 src/sna/sna_video_sprite.c                                          |    2 
 23 files changed, 297 insertions(+), 161 deletions(-)

New commits:
commit d76d28952241dd22f7252fbf28f3f0049965f201
Author: Cyril Brulebois <k...@debian.org>
Date:   Mon Jun 11 22:22:04 2012 +0000

    Upload to unstable.

diff --git a/debian/changelog b/debian/changelog
index e203e41..3b45678 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xserver-xorg-video-intel (2:2.19.0-2) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.19.0-2) unstable; urgency=low
 
   * Cherry-pick the following commits to make it possible to build both
     uxa (legacy acceleration method) and sna (experimental acceleration
@@ -15,7 +15,7 @@ xserver-xorg-video-intel (2:2.19.0-2) UNRELEASED; urgency=low
   * Add patch to document the new AccelMethod option accordingly:
     - 0002-Update-manpage-for-new-accelmethod-option.patch
 
- -- Cyril Brulebois <k...@debian.org>  Mon, 11 Jun 2012 21:55:45 +0000
+ -- Cyril Brulebois <k...@debian.org>  Mon, 11 Jun 2012 22:22:00 +0000
 
 xserver-xorg-video-intel (2:2.19.0-1) unstable; urgency=low
 

commit 28febcb6451e8cc9eb4fd5b05c6176529b54aef3
Author: Cyril Brulebois <k...@debian.org>
Date:   Mon Jun 11 22:21:38 2012 +0000

    Add patch to document the new AccelMethod option accordingly: 
0002-Update-manpage-for-new-accelmethod-option.patch

diff --git a/debian/changelog b/debian/changelog
index 22ced2a..e203e41 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,8 @@ xserver-xorg-video-intel (2:2.19.0-2) UNRELEASED; urgency=low
   * rules: Enable sna and uxa accel methods, default to uxa. The switch
     to sna can be achieved through a minimal xorg.conf (look for “AccelMethod”
     in: man intel).
+  * Add patch to document the new AccelMethod option accordingly:
+    - 0002-Update-manpage-for-new-accelmethod-option.patch
 
  -- Cyril Brulebois <k...@debian.org>  Mon, 11 Jun 2012 21:55:45 +0000
 
diff --git 
a/debian/patches/0002-Update-manpage-for-new-accelmethod-option.patch 
b/debian/patches/0002-Update-manpage-for-new-accelmethod-option.patch
new file mode 100644
index 0000000..11fd542
--- /dev/null
+++ b/debian/patches/0002-Update-manpage-for-new-accelmethod-option.patch
@@ -0,0 +1,15 @@
+--- a/man/intel.man
++++ b/man/intel.man
+@@ -57,6 +57,12 @@ The following driver
+ .B Options
+ are supported
+ .TP
++.BI "Option \*qAccelMethod\*q \*q" string \*q
++This sets the acceleration method. The legacy method is uxa, the experimental
++one is sna.
++.IP
++Default: uxa.
++.TP
+ .BI "Option \*qColorKey\*q \*q" integer \*q
+ This sets the default pixel value for the YUV video overlay key.
+ .IP
diff --git a/debian/patches/series b/debian/patches/series
index 3569ab4..340efc7 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 0001-Fix-build-failure-when-passing-with-builderstring.patch
+0002-Update-manpage-for-new-accelmethod-option.patch

commit 63bc77e1c5906e7ccc1820e560cbd080299de64e
Author: Cyril Brulebois <k...@debian.org>
Date:   Mon Jun 11 22:01:37 2012 +0000

    rules: Enable sna and uxa accel methods, default to uxa.

diff --git a/debian/changelog b/debian/changelog
index 996b253..22ced2a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -9,6 +9,9 @@ xserver-xorg-video-intel (2:2.19.0-2) UNRELEASED; urgency=low
     - 318982566b sna/dri: Disable experimental code by default
     - 7614a54188 configure: Harden --with-default-accel against simple mistakes
     - 4e984b79cc configure: Correct the help string for --with-default-accel
+  * rules: Enable sna and uxa accel methods, default to uxa. The switch
+    to sna can be achieved through a minimal xorg.conf (look for “AccelMethod”
+    in: man intel).
 
  -- Cyril Brulebois <k...@debian.org>  Mon, 11 Jun 2012 21:55:45 +0000
 
diff --git a/debian/rules b/debian/rules
index 493cd9c..451de4d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -6,7 +6,7 @@ BUILDER        := $(shell dpkg-parsechangelog | awk -F': ' 
'/^Maintainer: / {pri
 
 # Enable SNA, pass builderstring:
 override_dh_auto_configure:
-       dh_auto_configure -- --disable-sna --with-builderstring="$(SOURCE_NAME) 
$(SOURCE_VERSION) ($(BUILDER))"
+       dh_auto_configure -- --enable-sna --enable-uxa --with-default-accel=uxa 
--with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(BUILDER))"
 
 # Install in debian/tmp to retain control through dh_install:
 override_dh_auto_install:

commit a0366c845df384d9ba3a2501025764ec4bdcc289
Author: Cyril Brulebois <k...@debian.org>
Date:   Mon Jun 11 21:57:24 2012 +0000

    Document the cherry-picks.

diff --git a/debian/changelog b/debian/changelog
index 884957b..996b253 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+xserver-xorg-video-intel (2:2.19.0-2) UNRELEASED; urgency=low
+
+  * Cherry-pick the following commits to make it possible to build both
+    uxa (legacy acceleration method) and sna (experimental acceleration
+    method):
+    - 3f3bde4f0c uxa: Only consider an output valid if the kernel reports it 
attached
+    - df6ab02c36 Unify options handling between UXA and SNA
+    - e456291350 Allow runtime switching of AccelMethod between uxa/sna and 
even glamor
+    - 318982566b sna/dri: Disable experimental code by default
+    - 7614a54188 configure: Harden --with-default-accel against simple mistakes
+    - 4e984b79cc configure: Correct the help string for --with-default-accel
+
+ -- Cyril Brulebois <k...@debian.org>  Mon, 11 Jun 2012 21:55:45 +0000
+
 xserver-xorg-video-intel (2:2.19.0-1) unstable; urgency=low
 
   * New upstream release.

commit fd9a6d4f787572d1ebaeec3f80bc9ffffd03f2ae
Author: Chris Wilson <ch...@chris-wilson.co.uk>
Date:   Mon Jun 11 09:02:03 2012 +0100

    configure: Correct the help string for --with-default-accel
    
    Prior to finalizing the defaults I changed my mind and realised that the
    default had to reflect the current behaviour of someone enabling SNA for
    the first time, and not the previous behaviour of --enable-sna to
    override UXA. This is so that distro's could offer an SNA enabled DDX
    for the brave whilst not affecting their typical no-xorg.conf users.
    
    Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
    (cherry picked from commit 4e984b79cce038ba5026d8bdd93dec9b5a6ced8a)

diff --git a/configure.ac b/configure.ac
index 8969c51..cc498a7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -160,7 +160,7 @@ fi
 
 AC_ARG_WITH(default-accel,
            AS_HELP_STRING([--with-default-accel],
-                          [Select the default acceleration method [default=sna 
if enabled, otherwise uxa]]),
+                          [Select the default acceleration method [default=uxa 
if enabled, otherwise sna]]),
                           [accel="$withval"],
                           [accel=auto])
 if test "x$accel" = xyes; then

commit f67f7ab109bb610b071a3700595dd50f148cd8e4
Author: Chris Wilson <ch...@chris-wilson.co.uk>
Date:   Sun Jun 10 09:36:38 2012 +0100

    configure: Harden --with-default-accel against simple mistakes
    
    If the user specifies no options, assume automatic selection. Then
    double check we found a valid backend and so avoid later breaking the
    build.
    
    Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
    (cherry picked from commit 7614a541886dd9eb5c9d441e2618785e9cc53a65)

diff --git a/configure.ac b/configure.ac
index e4da047..8969c51 100644
--- a/configure.ac
+++ b/configure.ac
@@ -163,6 +163,10 @@ AC_ARG_WITH(default-accel,
                           [Select the default acceleration method [default=sna 
if enabled, otherwise uxa]]),
                           [accel="$withval"],
                           [accel=auto])
+if test "x$accel" = xyes; then
+       AC_MSG_WARN([No default acceleration specified, choosing automatic 
selection])
+       accel="auto"
+fi
 
 AC_MSG_CHECKING([which acceleration method to use by default])
 if test "x$accel" = xauto; then
@@ -178,9 +182,11 @@ if test "x$accel" = xauto; then
        fi
 fi
 
+have_accel=no
 if test "x$accel" = xsna; then
        if test "x$SNA" != "xno"; then
                AC_DEFINE(DEFAULT_ACCEL_METHOD, SNA, [Default acceleration 
method])
+               have_accel=yes
        else
                AC_MSG_ERROR([SNA requested as default, but is not enabled])
        fi
@@ -189,11 +195,15 @@ fi
 if test "x$accel" = xuxa; then
        if test "x$UXA" != "xno"; then
                AC_DEFINE(DEFAULT_ACCEL_METHOD, UXA, [Default acceleration 
method])
+               have_accel=yes
        else
                AC_MSG_ERROR([UXA requested as default, but is not enabled])
        fi
 fi
 AC_MSG_RESULT($accel)
+if test "x$accel" = xno; then
+       AC_MSG_ERROR([No default acceleration option])
+fi
 
 AC_ARG_ENABLE(vmap,
              AS_HELP_STRING([--enable-vmap],

commit 16181d27d13d87dfef92f78af5e80e89cf085b90
Author: Chris Wilson <ch...@chris-wilson.co.uk>
Date:   Thu Jun 7 21:56:04 2012 +0100

    sna/dri: Disable experimental code by default
    
    Since these require non-upstream patches to other components, we don't
    want it enabled by default and randomly breaking builds.
    
    Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
    (cherry picked from commit 318982566bbc7145847bd03601087150eef7a8d8)
    
    Conflicts:
    
        src/sna/sna_dri.c
    
    The diff was applied manually for that file, the context changed a lot.

diff --git a/configure.ac b/configure.ac
index 2d860b8..e4da047 100644
--- a/configure.ac
+++ b/configure.ac
@@ -197,7 +197,7 @@ AC_MSG_RESULT($accel)
 
 AC_ARG_ENABLE(vmap,
              AS_HELP_STRING([--enable-vmap],
-                            [Enable use of vmap [default=no]]),
+                            [Enable use of vmap (experimental) [default=no]]),
              [VMAP="$enableval"],
              [VMAP=no])
 AM_CONDITIONAL(USE_VMAP, test x$VMAP = xyes)
@@ -205,6 +205,15 @@ if test "x$VMAP" = xyes; then
        AC_DEFINE(USE_VMAP,1,[Assume VMAP support])
 fi
 
+AC_ARG_ENABLE(async-swap,
+             AS_HELP_STRING([--enable-async-swap],
+                            [Enable use of asynchronous swaps (experimental) 
[default=no]]),
+             [ASYNC_SWAP="$enableval"],
+             [ASYNC_SWAP=no])
+AM_CONDITIONAL(USE_ASYNC_SWAP, test x$ASYNC_SWAP = xyes)
+if test "x$ASYNC_SWAP" = xyes; then
+       AC_DEFINE(USE_ASYNC_SWAP,1,[Assume asynchronous swap support])
+fi
 
 AC_ARG_ENABLE(debug,
              AS_HELP_STRING([--enable-debug],
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 1a7b6bd..f8d057a 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -1210,7 +1210,7 @@ static void sna_dri_flip_event(struct sna *sna,
                }
                break;
 
-#if DRI2INFOREC_VERSION >= 7
+#if USE_ASYNC_SWAP && DRI2INFOREC_VERSION >= 7
        case DRI2_ASYNC_FLIP:
                DBG(("%s: async swap flip completed on pipe %d, pending? %d, 
new? %d\n",
                     __FUNCTION__, flip->pipe,
@@ -1698,7 +1698,7 @@ blit_fallback:
        return TRUE;
 }
 
-#if DRI2INFOREC_VERSION >= 7
+#if USE_ASYNC_SWAP && DRI2INFOREC_VERSION >= 7
 static Bool
 sna_dri_async_swap(ClientPtr client, DrawablePtr draw,
                   DRI2BufferPtr front, DRI2BufferPtr back,
@@ -2078,7 +2078,7 @@ Bool sna_dri_open(struct sna *sna, ScreenPtr screen)
        info.ReuseBufferNotify = NULL;
 #endif
 
-#if DRI2INFOREC_VERSION >= 7
+#if USE_ASYNC_SWAP && DRI2INFOREC_VERSION >= 7
        info.version = 7;
        info.AsyncSwap = sna_dri_async_swap;
 #endif

commit 88bf278f12110154e917b8e5a850e79f4aae86da
Author: Chris Wilson <ch...@chris-wilson.co.uk>
Date:   Thu May 24 18:22:45 2012 +0100

    Allow runtime switching of AccelMethod between uxa/sna and even glamor
    
    Section "Device"
      Option "AccelMethod" "uxa/glamor/sna"
    EndSection
    
    The appropriate backend must also be enabled at compile time for the
    runtime option to be available (i.e. --enable-uxa (default) --enable-sna
    --enable-glamor)
    
    Demanded-by: Adam Jackson <a...@redhat.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50290
    Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
    (cherry picked from commit e45629135065d0cc73c285f8df35ab4e1d07c6dc)

diff --git a/configure.ac b/configure.ac
index 3770983..2d860b8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -158,6 +158,43 @@ if test "x$GLAMOR" != "xno"; then
        AC_DEFINE(USE_GLAMOR, 1, [Enable glamor acceleration])
 fi
 
+AC_ARG_WITH(default-accel,
+           AS_HELP_STRING([--with-default-accel],
+                          [Select the default acceleration method [default=sna 
if enabled, otherwise uxa]]),
+                          [accel="$withval"],
+                          [accel=auto])
+
+AC_MSG_CHECKING([which acceleration method to use by default])
+if test "x$accel" = xauto; then
+       if test "x$UXA" != "xno"; then
+               accel=uxa
+       else
+               if test "x$SNA" != "xno"; then
+                       accel=sna
+               fi
+       fi
+       if test "x$accel" = xauto; then
+               AC_MSG_ERROR([No default acceleration option])
+       fi
+fi
+
+if test "x$accel" = xsna; then
+       if test "x$SNA" != "xno"; then
+               AC_DEFINE(DEFAULT_ACCEL_METHOD, SNA, [Default acceleration 
method])
+       else
+               AC_MSG_ERROR([SNA requested as default, but is not enabled])
+       fi
+fi
+
+if test "x$accel" = xuxa; then
+       if test "x$UXA" != "xno"; then
+               AC_DEFINE(DEFAULT_ACCEL_METHOD, UXA, [Default acceleration 
method])
+       else
+               AC_MSG_ERROR([UXA requested as default, but is not enabled])
+       fi
+fi
+AC_MSG_RESULT($accel)
+
 AC_ARG_ENABLE(vmap,
              AS_HELP_STRING([--enable-vmap],
                             [Enable use of vmap [default=no]]),
@@ -174,7 +211,6 @@ AC_ARG_ENABLE(debug,
                             [Enables internal debugging [default=no]]),
               [DEBUG="$enableval"],
               [DEBUG=no])
-
 # Store the list of server defined optional extensions in REQUIRED_MODULES
 XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
 XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
diff --git a/src/common.h b/src/common.h
index 06b2192..e3ab1f2 100644
--- a/src/common.h
+++ b/src/common.h
@@ -63,7 +63,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 /* I830 hooks for the I810 driver setup/probe. */
 extern const OptionInfoRec *I830AvailableOptions(int chipid, int busid);
-extern void intel_init_scrn(ScrnInfoPtr scrn);
+extern Bool intel_init_scrn(ScrnInfoPtr scrn);
 
 /* Symbol lists shared by the i810 and i830 parts. */
 extern int I830EntityIndex;
diff --git a/src/intel_driver.c b/src/intel_driver.c
index 5a8a953..261e7a5 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -1236,7 +1236,7 @@ static Bool I830PMEvent(int scrnIndex, pmEvent event, 
Bool undo)
        return TRUE;
 }
 
-void intel_init_scrn(ScrnInfoPtr scrn)
+Bool intel_init_scrn(ScrnInfoPtr scrn)
 {
        scrn->PreInit = I830PreInit;
        scrn->ScreenInit = I830ScreenInit;
@@ -1247,4 +1247,5 @@ void intel_init_scrn(ScrnInfoPtr scrn)
        scrn->FreeScreen = I830FreeScreen;
        scrn->ValidMode = I830ValidMode;
        scrn->PMEvent = I830PMEvent;
+       return TRUE;
 }
diff --git a/src/intel_glamor.c b/src/intel_glamor.c
index a868157..f318b17 100644
--- a/src/intel_glamor.c
+++ b/src/intel_glamor.c
@@ -172,6 +172,18 @@ intel_glamor_finish_access(PixmapPtr pixmap, uxa_access_t 
access)
        return;
 }
 
+static Bool
+intel_glamor_enabled(intel_screen_private *intel)
+{
+       const char *s;
+
+       s = xf86GetOptString(intel->Options, ACCEL_METHOD);
+       if (s == NULL)
+               return FALSE;
+
+       return strcasecmp(s, "glamor") == 0;
+}
+
 Bool
 intel_glamor_init(ScreenPtr screen)
 {
@@ -181,6 +193,9 @@ intel_glamor_init(ScreenPtr screen)
        if ((intel->uxa_flags & UXA_GLAMOR_EGL_INITIALIZED) == 0)
                goto fail;
 
+       if (!intel_glamor_enabled(intel))
+               goto fail;
+
        if (!glamor_init(screen, GLAMOR_INVERTED_Y_AXIS | 
GLAMOR_USE_EGL_SCREEN)) {
                xf86DrvMsg(scrn->scrnIndex, X_ERROR,
                           "Failed to initialize glamor.\n");
diff --git a/src/intel_module.c b/src/intel_module.c
index ac6dae1..4430ac6 100644
--- a/src/intel_module.c
+++ b/src/intel_module.c
@@ -31,6 +31,7 @@
 #include <xf86.h>
 #include <xf86_OSproc.h>
 #include <xf86cmap.h>
+#include <xf86Parser.h>
 #include <xf86drmMode.h>
 
 #include <xorgVersion.h>
@@ -292,6 +293,43 @@ static Bool has_kernel_mode_setting(struct pci_device *dev)
        return ret == 0;
 }
 
+extern XF86ConfigPtr xf86configptr;
+
+static XF86ConfDevicePtr
+_xf86findDriver(const char *ident, XF86ConfDevicePtr p)
+{
+       while (p) {
+               if (xf86nameCompare(ident, p->dev_driver) == 0)
+                       return p;
+
+               p = p->list.next;
+       }
+       return NULL;
+}
+
+static enum accel_method { UXA, SNA } get_accel_method(void)
+{
+       enum accel_method accel_method = DEFAULT_ACCEL_METHOD;
+       XF86ConfDevicePtr dev;
+
+       dev = _xf86findDriver("intel", xf86configptr->conf_device_lst);
+       if (dev && dev->dev_option_lst) {
+               const char *s;
+
+               s = xf86FindOptionValue(dev->dev_option_lst, "AccelMethod");
+               if (s ) {
+                       if (strcasecmp(s, "sna") == 0)
+                               accel_method = SNA;
+                       else if (strcasecmp(s, "uxa") == 0)
+                               accel_method = UXA;
+                       else if (strcasecmp(s, "glamor") == 0)
+                               accel_method = UXA;
+               }
+       }
+
+       return accel_method;
+}
+
 /*
  * intel_pci_probe --
  *
@@ -338,34 +376,35 @@ static Bool intel_pci_probe(DriverPtr             driver,
 
        scrn = xf86ConfigPciEntity(NULL, 0, entity_num, intel_pci_chipsets,
                                   NULL, NULL, NULL, NULL, NULL);
-       if (scrn != NULL) {
-               scrn->driverVersion = INTEL_VERSION;
-               scrn->driverName = INTEL_DRIVER_NAME;
-               scrn->name = INTEL_NAME;
-               scrn->Probe = NULL;
+       if (scrn == NULL)
+               return FALSE;
+
+       scrn->driverVersion = INTEL_VERSION;
+       scrn->driverName = INTEL_DRIVER_NAME;
+       scrn->name = INTEL_NAME;
+       scrn->Probe = NULL;
 
-               switch (DEVICE_ID(device)) {
 #if !KMS_ONLY
-               case PCI_CHIP_I810:
-               case PCI_CHIP_I810_DC100:
-               case PCI_CHIP_I810_E:
-               case PCI_CHIP_I815:
-                       lg_i810_init(scrn);
-                       break;
+       switch (DEVICE_ID(device)) {
+       case PCI_CHIP_I810:
+       case PCI_CHIP_I810_DC100:
+       case PCI_CHIP_I810_E:
+       case PCI_CHIP_I815:
+               return lg_i810_init(scrn);
+       }
 #endif
 
-               default:
+       switch (get_accel_method()) {
 #if USE_SNA
-                       sna_init_scrn(scrn, entity_num);
-#elif USE_UXA
-                       intel_init_scrn(scrn);
-#else
-                       scrn = NULL;
+       case SNA: return sna_init_scrn(scrn, entity_num);
 #endif
-                       break;
-               }
+
+#if USE_UXA
+       case UXA: return intel_init_scrn(scrn);
+#endif
+
+       default: return FALSE;
        }
-       return scrn != NULL;
 }
 
 #ifdef XFree86LOADER
diff --git a/src/intel_options.h b/src/intel_options.h
index 9367751..8863878 100644
--- a/src/intel_options.h
+++ b/src/intel_options.h
@@ -8,6 +8,7 @@
  */
 
 enum intel_options {
+       OPTION_ACCEL_METHOD,
        OPTION_DRI,
        OPTION_VIDEO_KEY,
        OPTION_COLOR_KEY,
@@ -40,6 +41,7 @@ enum intel_options {
 };
 
 static OptionInfoRec intel_options[] = {
+       {OPTION_ACCEL_METHOD,   "AccelMethod",  OPTV_STRING,    {0},    0},
        {OPTION_DRI,            "DRI",          OPTV_BOOLEAN,   {0},    TRUE},
        {OPTION_COLOR_KEY,      "ColorKey",     OPTV_INTEGER,   {0},    FALSE},
        {OPTION_VIDEO_KEY,      "VideoKey",     OPTV_INTEGER,   {0},    FALSE},
diff --git a/src/legacy/i810/i810_driver.c b/src/legacy/i810/i810_driver.c
index 02da574..59700fb 100644
--- a/src/legacy/i810/i810_driver.c
+++ b/src/legacy/i810/i810_driver.c
@@ -2102,7 +2102,7 @@ lg_i810_available_options(int chipid, int busid)
 }
 
 
-void lg_i810_init(ScrnInfoPtr scrn)
+Bool lg_i810_init(ScrnInfoPtr scrn)
 {
     scrn->PreInit = I810PreInit;
     scrn->ScreenInit = I810ScreenInit;
@@ -2112,4 +2112,5 @@ void lg_i810_init(ScrnInfoPtr scrn)
     scrn->LeaveVT = I810LeaveVT;
     scrn->FreeScreen = I810FreeScreen;
     scrn->ValidMode = I810ValidMode;
+    return TRUE;
 }
diff --git a/src/legacy/legacy.h b/src/legacy/legacy.h
index 7bdd172..0ff3299 100644
--- a/src/legacy/legacy.h
+++ b/src/legacy/legacy.h
@@ -1,3 +1,3 @@
 /* The old i810 (only) driver. */
 const OptionInfoRec *lg_i810_available_options(int chipid, int busid);
-void lg_i810_init(ScrnInfoPtr scrn);
+Bool lg_i810_init(ScrnInfoPtr scrn);
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index e63665e..41b42da 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -1049,7 +1049,7 @@ static Bool sna_pm_event(int scrnIndex, pmEvent event, 
Bool undo)
        return TRUE;
 }
 
-void sna_init_scrn(ScrnInfoPtr scrn, int entity_num)
+Bool sna_init_scrn(ScrnInfoPtr scrn, int entity_num)
 {
        EntityInfoPtr entity;
 
@@ -1083,8 +1083,13 @@ void sna_init_scrn(ScrnInfoPtr scrn, int entity_num)
        xf86SetEntitySharable(scrn->entityList[0]);
 
        entity = xf86GetEntityInfo(entity_num);
+       if (!entity)
+               return FALSE;
+
        xf86SetEntityInstanceForScreen(scrn,
                                       entity->index,
                                       
xf86GetNumEntityInstances(entity->index)-1);
        free(entity);
+
+       return TRUE;
 }
diff --git a/src/sna/sna_module.h b/src/sna/sna_module.h
index aa1ae0d..1b46cb7 100644
--- a/src/sna/sna_module.h
+++ b/src/sna/sna_module.h
@@ -1 +1 @@
-void sna_init_scrn(ScrnInfoPtr scrn, int entity_num);
+Bool sna_init_scrn(ScrnInfoPtr scrn, int entity_num);

commit 1e6fdd07aec0b4744e06127d42fd7785f73127fb
Author: Eugeni Dodonov <eugeni.dodo...@intel.com>
Date:   Mon Oct 31 14:43:22 2011 -0200

    Unify options handling between UXA and SNA
    
    Unifies available options for both UXA and SNA drivers, and
    moves them into a common header file, intel_opts.h.
    
    Signed-off-by: Eugeni Dodonov <eugeni.dodo...@intel.com>
    (cherry picked from commit df6ab02c3690eea8393ecc8c113e2f2891856cc6)

diff --git a/src/Makefile.am b/src/Makefile.am
index 448a354..de97018 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -42,6 +42,7 @@ NULL:=#
 
 intel_drv_la_SOURCES = \
        intel_list.h \
+       intel_options.h \
        intel_module.c \
        $(NULL)
 
diff --git a/src/intel_display.c b/src/intel_display.c
index 77a1cce..89f7259 100644
--- a/src/intel_display.c
+++ b/src/intel_display.c
@@ -1702,7 +1702,6 @@ int intel_crtc_to_pipe(xf86CrtcPtr crtc)
 
 Bool intel_crtc_on(xf86CrtcPtr crtc)
 {
-       ScrnInfoPtr scrn = crtc->scrn;
        struct intel_crtc *intel_crtc = crtc->driver_private;
        drmModeCrtcPtr drm_crtc;
        Bool ret;
diff --git a/src/intel_driver.c b/src/intel_driver.c
index 3a27a14..5a8a953 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -78,59 +78,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <xf86drmMode.h>
 
 #include "intel_glamor.h"
-
-/* *INDENT-OFF* */
-/*
- * Note: "ColorKey" is provided for compatibility with the i810 driver.
- * However, the correct option name is "VideoKey".  "ColorKey" usually
- * refers to the tranparency key for 8+24 overlays, not for video overlays.
- */
-
-typedef enum {
-   OPTION_DRI,
-   OPTION_VIDEO_KEY,
-   OPTION_COLOR_KEY,
-   OPTION_FALLBACKDEBUG,
-   OPTION_TILING_FB,
-   OPTION_TILING_2D,
-   OPTION_SHADOW,
-   OPTION_SWAPBUFFERS_WAIT,
-   OPTION_TRIPLE_BUFFER,
-#ifdef INTEL_XVMC
-   OPTION_XVMC,
-#endif
-   OPTION_PREFER_OVERLAY,
-   OPTION_DEBUG_FLUSH_BATCHES,
-   OPTION_DEBUG_FLUSH_CACHES,
-   OPTION_DEBUG_WAIT,
-   OPTION_HOTPLUG,
-   OPTION_RELAXED_FENCING,
-   OPTION_BUFFER_CACHE,
-} I830Opts;
-
-static OptionInfoRec I830Options[] = {
-   {OPTION_DRI,                "DRI",          OPTV_BOOLEAN,   {0},    TRUE},
-   {OPTION_COLOR_KEY,  "ColorKey",     OPTV_INTEGER,   {0},    FALSE},
-   {OPTION_VIDEO_KEY,  "VideoKey",     OPTV_INTEGER,   {0},    FALSE},
-   {OPTION_FALLBACKDEBUG, "FallbackDebug", OPTV_BOOLEAN, {0},  FALSE},
-   {OPTION_TILING_2D,  "Tiling",       OPTV_BOOLEAN,   {0},    TRUE},
-   {OPTION_TILING_FB,  "LinearFramebuffer",    OPTV_BOOLEAN,   {0},    FALSE},
-   {OPTION_SHADOW,     "Shadow",       OPTV_BOOLEAN,   {0},    FALSE},
-   {OPTION_SWAPBUFFERS_WAIT, "SwapbuffersWait", OPTV_BOOLEAN,  {0},    TRUE},
-   {OPTION_TRIPLE_BUFFER, "TripleBuffer", OPTV_BOOLEAN,        {0},    TRUE},
-#ifdef INTEL_XVMC
-   {OPTION_XVMC,       "XvMC",         OPTV_BOOLEAN,   {0},    TRUE},
-#endif
-   {OPTION_PREFER_OVERLAY, "XvPreferOverlay", OPTV_BOOLEAN, {0}, FALSE},
-   {OPTION_DEBUG_FLUSH_BATCHES, "DebugFlushBatches", OPTV_BOOLEAN, {0}, FALSE},
-   {OPTION_DEBUG_FLUSH_CACHES, "DebugFlushCaches", OPTV_BOOLEAN, {0}, FALSE},
-   {OPTION_DEBUG_WAIT, "DebugWait", OPTV_BOOLEAN, {0}, FALSE},
-   {OPTION_HOTPLUG,    "HotPlug",      OPTV_BOOLEAN,   {0},    TRUE},
-   {OPTION_RELAXED_FENCING,    "RelaxedFencing",       OPTV_BOOLEAN,   {0},    
TRUE},
-   {OPTION_BUFFER_CACHE,       "BufferCache",  OPTV_BOOLEAN,   {0},    TRUE},
-   {-1,                        NULL,           OPTV_NONE,      {0},    FALSE}
-};
-/* *INDENT-ON* */
+#include "intel_options.h"
 
 static void i830AdjustFrame(int scrnIndex, int x, int y, int flags);
 static Bool I830CloseScreen(int scrnIndex, ScreenPtr screen);
@@ -140,11 +88,6 @@ static Bool I830EnterVT(int scrnIndex, int flags);
 extern void xf86SetCursor(ScreenPtr screen, CursorPtr pCurs, int x, int y);
 
 /* Export I830 options to i830 driver where necessary */
-const OptionInfoRec *intel_uxa_available_options(int chipid, int busid)
-{
-       return I830Options;
-}
-
 static void
 I830LoadPalette(ScrnInfoPtr scrn, int numColors, int *indices,
                LOCO * colors, VisualPtr pVisual)
@@ -278,9 +221,9 @@ static Bool I830GetEarlyOptions(ScrnInfoPtr scrn)
 
        /* Process the options */
        xf86CollectOptions(scrn, NULL);
-       if (!(intel->Options = malloc(sizeof(I830Options))))
+       if (!(intel->Options = malloc(sizeof(intel_options))))
                return FALSE;
-       memcpy(intel->Options, I830Options, sizeof(I830Options));
+       memcpy(intel->Options, intel_options, sizeof(intel_options));
        xf86ProcessOptions(scrn->scrnIndex, scrn->options, intel->Options);
 
        intel->fallback_debug = xf86ReturnOptValBool(intel->Options,
diff --git a/src/intel_driver.h b/src/intel_driver.h
index 98973e5..f33d135 100644
--- a/src/intel_driver.h
+++ b/src/intel_driver.h
@@ -247,7 +247,5 @@ void intel_detect_chipset(ScrnInfoPtr scrn,
                          struct pci_device *pci,
                          struct intel_chipset *chipset);
 
-const OptionInfoRec *intel_uxa_available_options(int chipid, int busid);
-
 
 #endif /* INTEL_DRIVER_H */
diff --git a/src/intel_module.c b/src/intel_module.c
index c6f94f5..ac6dae1 100644
--- a/src/intel_module.c
+++ b/src/intel_module.c
@@ -41,6 +41,7 @@
 
 #include "common.h"
 #include "intel_driver.h"
+#include "intel_options.h"
 #include "legacy/legacy.h"
 #include "sna/sna_module.h"
 
@@ -397,13 +398,7 @@ intel_available_options(int chipid, int busid)
 #endif
 
        default:
-#if USE_SNA
-               return sna_available_options(chipid, busid);
-#elif USE_UXA
-               return intel_uxa_available_options(chipid, busid);
-#else
-               return NULL;
-#endif
+               return intel_options;
        }
 }
 
diff --git a/src/intel_options.h b/src/intel_options.h
new file mode 100644
index 0000000..9367751
--- /dev/null
+++ b/src/intel_options.h
@@ -0,0 +1,73 @@
+#ifndef INTEL_OPTIONS_H
+#define INTEL_OPTIONS_H
+
+/*
+ * Note: "ColorKey" is provided for compatibility with the i810 driver.
+ * However, the correct option name is "VideoKey".  "ColorKey" usually
+ * refers to the tranparency key for 8+24 overlays, not for video overlays.
+ */
+
+enum intel_options {
+       OPTION_DRI,
+       OPTION_VIDEO_KEY,
+       OPTION_COLOR_KEY,
+       OPTION_TILING_FB,
+       OPTION_TILING_2D,
+       OPTION_SHADOW,
+       OPTION_SWAPBUFFERS_WAIT,
+       OPTION_TRIPLE_BUFFER,
+#ifdef INTEL_XVMC
+       OPTION_XVMC,
+#endif
+       OPTION_PREFER_OVERLAY,
+       OPTION_DEBUG_FLUSH_BATCHES,
+       OPTION_DEBUG_FLUSH_CACHES,
+       OPTION_DEBUG_WAIT,
+       OPTION_HOTPLUG,
+       OPTION_RELAXED_FENCING,
+       OPTION_USE_SNA,
+#ifdef USE_SNA
+       OPTION_THROTTLE,
+       OPTION_VMAP,
+       OPTION_ZAPHOD,
+       OPTION_DELAYED_FLUSH,
+#endif
+#ifdef USE_UXA
+       OPTION_FALLBACKDEBUG,
+       OPTION_BUFFER_CACHE,
+#endif
+       NUM_OPTIONS,
+};
+
+static OptionInfoRec intel_options[] = {
+       {OPTION_DRI,            "DRI",          OPTV_BOOLEAN,   {0},    TRUE},
+       {OPTION_COLOR_KEY,      "ColorKey",     OPTV_INTEGER,   {0},    FALSE},
+       {OPTION_VIDEO_KEY,      "VideoKey",     OPTV_INTEGER,   {0},    FALSE},
+       {OPTION_TILING_2D,      "Tiling",       OPTV_BOOLEAN,   {0},    TRUE},
+       {OPTION_TILING_FB,      "LinearFramebuffer",    OPTV_BOOLEAN,   {0},    
FALSE},
+       {OPTION_SHADOW, "Shadow",       OPTV_BOOLEAN,   {0},    FALSE},
+       {OPTION_SWAPBUFFERS_WAIT, "SwapbuffersWait", OPTV_BOOLEAN,      {0},    
TRUE},
+       {OPTION_TRIPLE_BUFFER, "TripleBuffer", OPTV_BOOLEAN,    {0},    TRUE},
+#ifdef INTEL_XVMC
+       {OPTION_XVMC,   "XvMC",         OPTV_BOOLEAN,   {0},    TRUE},
+#endif
+       {OPTION_PREFER_OVERLAY, "XvPreferOverlay", OPTV_BOOLEAN, {0}, FALSE},
+       {OPTION_DEBUG_FLUSH_BATCHES, "DebugFlushBatches", OPTV_BOOLEAN, {0}, 
FALSE},
+       {OPTION_DEBUG_FLUSH_CACHES, "DebugFlushCaches", OPTV_BOOLEAN, {0}, 
FALSE},
+       {OPTION_DEBUG_WAIT, "DebugWait", OPTV_BOOLEAN, {0}, FALSE},
+       {OPTION_HOTPLUG,        "HotPlug",      OPTV_BOOLEAN,   {0},    TRUE},
+       {OPTION_RELAXED_FENCING,        "RelaxedFencing",       OPTV_BOOLEAN,   
{0},    TRUE},
+#ifdef USE_SNA
+       {OPTION_THROTTLE,       "Throttle",     OPTV_BOOLEAN,   {0},    TRUE},
+       {OPTION_VMAP,   "UseVmap",      OPTV_BOOLEAN,   {0},    TRUE},
+       {OPTION_ZAPHOD, "ZaphodHeads",  OPTV_STRING,    {0},    FALSE},
+       {OPTION_DELAYED_FLUSH,  "DelayedFlush", OPTV_BOOLEAN,   {0},    TRUE},
+#endif
+#ifdef USE_UXA
+       {OPTION_FALLBACKDEBUG, "FallbackDebug", OPTV_BOOLEAN, {0},      FALSE},
+       {OPTION_BUFFER_CACHE,       "BufferCache",  OPTV_BOOLEAN,   {0},    
TRUE},
+#endif
+       {-1,                    NULL,           OPTV_NONE,      {0},    FALSE}
+};
+
+#endif /* INTEL_OPTIONS_H */
diff --git a/src/sna/sna.h b/src/sna/sna.h
index 308e329..96b0335 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -192,21 +192,6 @@ static inline struct sna_gc *sna_gc(GCPtr gc)
 }
 
 enum {
-       OPTION_TILING_FB,
-       OPTION_TILING_2D,
-       OPTION_PREFER_OVERLAY,
-       OPTION_COLOR_KEY,
-       OPTION_VIDEO_KEY,
-       OPTION_HOTPLUG,
-       OPTION_THROTTLE,
-       OPTION_RELAXED_FENCING,
-       OPTION_VMAP,
-       OPTION_ZAPHOD,
-       OPTION_DELAYED_FLUSH,
-       NUM_OPTIONS
-};
-
-enum {
        FLUSH_TIMER = 0,
        EXPIRE_TIMER,
        INACTIVE_TIMER,
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 5275d4a..092eeb3 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -45,6 +45,8 @@
 #include "sna.h"
 #include "sna_reg.h"
 
+#include "intel_options.h"
+
 #if DEBUG_DISPLAY
 #undef DBG
 #define DBG(x) ErrorF x
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 7b3cfce..e63665e 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -55,6 +55,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "sna_video.h"
 
 #include "intel_driver.h"
+#include "intel_options.h"
 
 #include <sys/ioctl.h>
 #include <sys/fcntl.h>
@@ -76,31 +77,11 @@ DevPrivateKeyRec sna_gc_index;
 DevPrivateKeyRec sna_glyph_key;
 DevPrivateKeyRec sna_glyph_image_key;
 
-static OptionInfoRec sna_options[] = {
-   {OPTION_TILING_FB,  "LinearFramebuffer",    OPTV_BOOLEAN,   {0},    FALSE},
-   {OPTION_TILING_2D,  "Tiling",       OPTV_BOOLEAN,   {0},    TRUE},
-   {OPTION_PREFER_OVERLAY, "XvPreferOverlay", OPTV_BOOLEAN, {0}, FALSE},
-   {OPTION_COLOR_KEY,  "ColorKey",     OPTV_INTEGER,   {0},    FALSE},
-   {OPTION_VIDEO_KEY,  "VideoKey",     OPTV_INTEGER,   {0},    FALSE},
-   {OPTION_HOTPLUG,    "HotPlug",      OPTV_BOOLEAN,   {0},    TRUE},
-   {OPTION_THROTTLE,   "Throttle",     OPTV_BOOLEAN,   {0},    TRUE},
-   {OPTION_RELAXED_FENCING,    "UseRelaxedFencing",    OPTV_BOOLEAN,   {0},    
TRUE},
-   {OPTION_VMAP,       "UseVmap",      OPTV_BOOLEAN,   {0},    TRUE},
-   {OPTION_ZAPHOD,     "ZaphodHeads",  OPTV_STRING,    {0},    FALSE},
-   {OPTION_DELAYED_FLUSH,      "DelayedFlush", OPTV_BOOLEAN,   {0},    TRUE},
-   {-1,                        NULL,           OPTV_NONE,      {0},    FALSE}
-};
-
 static Bool sna_enter_vt(int scrnIndex, int flags);
 
 /* temporary */
 extern void xf86SetCursor(ScreenPtr screen, CursorPtr pCurs, int x, int y);
 
-const OptionInfoRec *sna_available_options(int chipid, int busid)
-{
-       return sna_options;
-}
-
 static void
 sna_load_palette(ScrnInfoPtr scrn, int numColors, int *indices,
                 LOCO * colors, VisualPtr pVisual)
@@ -280,10 +261,10 @@ static Bool sna_get_early_options(ScrnInfoPtr scrn)
 
        /* Process the options */
        xf86CollectOptions(scrn, NULL);
-       if (!(sna->Options = malloc(sizeof(sna_options))))
+       if (!(sna->Options = malloc(sizeof(intel_options))))
                return FALSE;
 
-       memcpy(sna->Options, sna_options, sizeof(sna_options));
+       memcpy(sna->Options, intel_options, sizeof(intel_options));


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/e1sedlq-0003vy...@vasks.debian.org

Reply via email to