[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-intel: Changes to 'upstream-unstable'



 .gitignore                      |    1 
 Makefile.am                     |    8 
 NEWS                            |   56 
 configure.ac                    |   55 
 src/Makefile.am                 |   14 
 src/common.h                    |   10 
 src/i915_video.c                |    1 
 src/i965_reg.h                  |    4 
 src/i965_render.c               |  102 
 src/i965_video.c                |    3 
 src/intel.h                     |   16 
 src/intel_batchbuffer.c         |   52 
 src/intel_display.c             |    2 
 src/intel_dri.c                 |    2 
 src/intel_driver.c              |   13 
 src/intel_module.c              |   14 
 src/intel_uxa.c                 |   31 
 src/intel_video.c               |   38 
 src/legacy/i810/Makefile.am     |    1 
 src/legacy/i810/i810.h          |   14 
 src/legacy/i810/i810_cursor.c   |   19 
 src/legacy/i810/i810_driver.c   |   21 
 src/legacy/i810/i810_io.c       |  133 
 src/legacy/i810/xvmc/I810XvMC.c |    2 
 src/sna/Makefile.am             |   12 
 src/sna/blt.c                   |   57 
 src/sna/compiler.h              |   51 
 src/sna/gen2_render.c           | 1016 +++--
 src/sna/gen3_render.c           |  984 +++--
 src/sna/gen4_render.c           |  334 +
 src/sna/gen5_render.c           |  768 +++-
 src/sna/gen5_render.h           |   47 
 src/sna/gen6_render.c           |  734 +++-
 src/sna/gen7_render.c           |  388 +-
 src/sna/gen7_render.h           |    6 
 src/sna/kgem.c                  |  851 +++-
 src/sna/kgem.h                  |   79 
 src/sna/kgem_debug.c            |   24 
 src/sna/kgem_debug.h            |    3 
 src/sna/kgem_debug_gen2.c       |  631 +++
 src/sna/kgem_debug_gen3.c       |    1 
 src/sna/kgem_debug_gen7.c       |  747 ++++
 src/sna/rop.h                   |  264 +
 src/sna/sna.h                   |  150 
 src/sna/sna_accel.c             | 7301 ++++++++++++++++++++++++++++++++++------
 src/sna/sna_blt.c               |  823 +++-
 src/sna/sna_composite.c         |  190 -
 src/sna/sna_damage.c            |  704 +++
 src/sna/sna_damage.h            |   81 
 src/sna/sna_display.c           |   85 
 src/sna/sna_dri.c               | 1051 +++--
 src/sna/sna_driver.c            |  141 
 src/sna/sna_glyphs.c            |  439 +-
 src/sna/sna_gradient.c          |   67 
 src/sna/sna_io.c                |   51 
 src/sna/sna_reg.h               |   50 
 src/sna/sna_render.c            |  141 
 src/sna/sna_render.h            |   62 
 src/sna/sna_render_inline.h     |   37 
 src/sna/sna_tiling.c            |   29 
 src/sna/sna_trapezoids.c        | 4208 +++++++++++++++++------
 src/sna/sna_video.c             |  261 -
 src/sna/sna_video.h             |   25 
 src/sna/sna_video_overlay.c     |   36 
 src/sna/sna_video_textured.c    |   77 
 src/xvmc/i965_xvmc.c            |    2 
 src/xvmc/intel_batchbuffer.h    |    1 
 src/xvmc/intel_xvmc.c           |    2 
 src/xvmc/xvmc_vld.c             |    2 
 test/.gitignore                 |    1 
 test/Makefile.am                |    1 
 test/basic-copyarea-size.c      |    6 
 test/basic-copyarea.c           |    3 
 test/basic-fillrect.c           |    3 
 test/basic-lines.c              |  147 
 test/basic-putimage.c           |    3 
 test/basic-stress.c             |    3 
 test/mixed-stress.c             |    3 
 test/render-composite-solid.c   |    3 
 test/render-copyarea-size.c     |    6 
 test/render-copyarea.c          |    3 
 test/render-fill-copy.c         |    3 
 test/render-fill.c              |    3 
 test/render-trapezoid-image.c   |    6 
 test/render-trapezoid.c         |    6 
 test/test.h                     |    2 
 test/test_image.c               |    7 
 uxa/uxa-glyphs.c                |   17 
 uxa/uxa-priv.h                  |    4 
 uxa/uxa-render.c                |   16 
 uxa/uxa-unaccel.c               |   50 
 91 files changed, 18521 insertions(+), 5400 deletions(-)

New commits:
commit 24ece4a87e34c27115ffb55f91294bce2bdf1502
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Nov 16 23:14:25 2011 +0000

    configure: Version bump for 2.17.0 release
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/configure.ac b/configure.ac
index 3fd28b0..8afe25b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.63])
 AC_INIT([xf86-video-intel],
-        [2.16.902],
+        [2.17.0],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-intel])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 14b3176962bd535933623d8ed77ba286b077d6f0
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Nov 16 23:13:44 2011 +0000

    NEWS: Release notes for 2.17.0
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/NEWS b/NEWS
index 36d5776..2bd476b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,14 @@
+Release 2.17.0 (2011-11-16)
+==============================
+A few months have passed, and we have accumulated a surprising number of
+bug fixes. Oops! We would strongly encourage everyone to upgrade.
+
+Bugs fixed in this snapshot (compared to 2.16.902)
+--------------------------------------------------
+
+* Video clobbering composite batch state
+  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=635953
+
 Snapshot 2.16.902 (2011-11-13)
 ==============================
 This is the second release candidate in preparation for the upcoming

commit c259144e3fc52d078b0a78107c38f0f3d3a2bbc1
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Nov 16 10:28:23 2011 +0000

    sna: The block handler is passed an indirect pointer to the timeval
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 4c9f298..45e8fb2 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -582,13 +582,14 @@ static void
 sna_block_handler(int i, pointer data, pointer timeout, pointer read_mask)
 {
 	struct sna *sna = data;
-	struct timeval *tv = timeout;
+	struct timeval **tv = timeout;
 
-	DBG(("%s\n", __FUNCTION__));
+	DBG(("%s (tv=%ld.%06ld)\n", __FUNCTION__,
+	     *tv ? (*tv)->tv_sec : -1, *tv ? (*tv)->tv_usec : 0));
 
 	sna->BlockHandler(i, sna->BlockData, timeout, read_mask);
 
-	if (tv == NULL || (tv->tv_usec | tv->tv_sec))
+	if (*tv == NULL || ((*tv)->tv_usec | (*tv)->tv_sec))
 		sna_accel_block_handler(sna);
 }
 

commit bfd2bb40274d1242001d295a4010211fd51b0fc3
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Nov 15 10:38:09 2011 +0000

    sna: Correct dependencies for DRI2
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/configure.ac b/configure.ac
index 2c40760..3fd28b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -175,7 +175,7 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
 PKG_CHECK_MODULES(XORG, [xorg-server >= $required_xorg_xserver_version xproto fontsproto pixman-1 >= $required_pixman_version $REQUIRED_MODULES])
 PKG_CHECK_MODULES(DRM, [libdrm >= 2.4.23])
 PKG_CHECK_MODULES(DRI, [xf86driproto], , DRI=no)
-PKG_CHECK_MODULES(DRI2, [dri2proto >= 2.6])
+PKG_CHECK_MODULES(DRI2, [dri2proto >= 2.6],, DRI2=no)
 PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10])
 
 sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
@@ -218,6 +218,10 @@ else
                 AC_MSG_ERROR([DRI requested but prerequisites not found])
         fi
 fi
+AM_CONDITIONAL(DRI2, test x$DRI2 != xno)
+if test "x$DRI2" != "xno"; then
+        AC_DEFINE(USE_DRI2,1,[Enable DRI2 driver support])
+fi
 
 if test "$XVMC" = yes; then
 	PKG_CHECK_MODULES(XVMCLIB,
diff --git a/src/sna/Makefile.am b/src/sna/Makefile.am
index 30cedc6..65e85bf 100644
--- a/src/sna/Makefile.am
+++ b/src/sna/Makefile.am
@@ -74,7 +74,7 @@ libsna_la_SOURCES = \
 	gen7_render.h \
 	$(NULL)
 
-if DRI
+if DRI2
 libsna_la_SOURCES += \
 	sna_dri.c \
 	$(NULL)
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 19413a9..4c9f298 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -925,7 +925,7 @@ sna_screen_init(int scrnIndex, ScreenPtr screen, int argc, char **argv)
 	xf86DPMSInit(screen, xf86DPMSSet, 0);
 
 	sna_video_init(sna, screen);
-#ifdef DRI2
+#if USE_DRI2
 	sna->directRenderingOpen = sna_dri_open(sna, screen);
 	if (sna->directRenderingOpen)
 		xf86DrvMsg(scrn->scrnIndex, X_INFO,

commit 3771387ad11b5842a83e58a4b373c2acdd827bd2
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Nov 15 10:32:34 2011 +0000

    Compile out UXA if so desired
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/Makefile.am b/Makefile.am
index 29c04fd..48c3477 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,7 +20,13 @@
 
 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 
-SUBDIRS = uxa src man
+SUBDIRS = man
+
+if UXA
+SUBDIRS += uxa
+endif
+
+SUBDIRS += src
 MAINTAINERCLEANFILES = ChangeLog INSTALL
 
 if HAVE_X11
diff --git a/configure.ac b/configure.ac
index 831f6b3..2c40760 100644
--- a/configure.ac
+++ b/configure.ac
@@ -120,14 +120,13 @@ AC_ARG_ENABLE(kms-only, AS_HELP_STRING([--enable-kms-only],
               [KMS_ONLY="$enableval"],
               [KMS_ONLY=no])
 
+AC_MSG_CHECKING([whether to include SNA support])
 AC_ARG_ENABLE(sna,
 	      AS_HELP_STRING([--enable-sna],
 			     [Enable SandyBridge's New Acceleration (SNA) [default=no]]),
 	      [SNA="$enableval"],
 	      [SNA=no])
 AM_CONDITIONAL(SNA, test x$SNA != xno)
-AC_MSG_CHECKING([whether to include SNA support])
-
 required_xorg_xserver_version=1.6
 required_pixman_version=0.16
 if test "x$SNA" != "xno"; then
@@ -137,6 +136,17 @@ if test "x$SNA" != "xno"; then
 fi
 AC_MSG_RESULT([$SNA])
 
+AC_MSG_CHECKING([whether to include UXA support])
+AC_ARG_ENABLE(uxa,
+	      AS_HELP_STRING([--enable-uxa],
+			     [Enable Unified Acceleration Architecture (UXA) [default=yes]]),
+	      [UXA="$enableval"],
+	      [UXA=yes])
+AM_CONDITIONAL(UXA, test x$UXA != xno)
+if test "x$UXA" != "xno"; then
+	AC_DEFINE(USE_UXA, 1, [Enable UXA support])
+fi
+AC_MSG_RESULT([$UXA])
 
 AC_ARG_ENABLE(vmap,
 	      AS_HELP_STRING([--enable-vmap],
diff --git a/src/Makefile.am b/src/Makefile.am
index cd1bb36..e5097da 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -27,13 +27,12 @@ SUBDIRS = xvmc render_program legacy
 # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
 
 AM_CFLAGS = @CWARNFLAGS@ @XORG_CFLAGS@ @UDEV_CFLAGS@ @DRM_CFLAGS@ @DRI_CFLAGS@ \
-	@PCIACCESS_CFLAGS@ -I$(top_srcdir)/uxa -I$(top_srcdir)/src/render_program
+	@PCIACCESS_CFLAGS@
 
 intel_drv_la_LTLIBRARIES = intel_drv.la
 intel_drv_la_LDFLAGS = -module -avoid-version
 intel_drv_ladir = @moduledir@/drivers
-intel_drv_la_LIBADD = @UDEV_LIBS@ -lm @DRM_LIBS@ -ldrm_intel ../uxa/libuxa.la legacy/liblegacy.la
-intel_drv_la_LIBADD += @PCIACCESS_LIBS@
+intel_drv_la_LIBADD = legacy/liblegacy.la @PCIACCESS_LIBS@
 
 if SNA
 SUBDIRS += sna
@@ -43,11 +42,17 @@ endif
 NULL:=#
 
 intel_drv_la_SOURCES = \
+	intel_module.c \
+	$(NULL)
+
+if UXA
+AM_CFLAGS += -I$(top_srcdir)/uxa -I$(top_srcdir)/src/render_program
+intel_drv_la_LIBADD += @UDEV_LIBS@ @DRM_LIBS@ -ldrm_intel ../uxa/libuxa.la
+intel_drv_la_SOURCES += \
          brw_defines.h \
          brw_structs.h \
          common.h \
          intel.h \
-	 intel_module.c \
          intel_batchbuffer.c \
          intel_batchbuffer.h \
 	 intel_display.c \
@@ -87,3 +92,4 @@ intel_drv_la_SOURCES += \
 	intel_hwmc.c \
 	$(NULL)
 endif
+endif
diff --git a/src/i915_video.c b/src/i915_video.c
index d46c6d1..c73615e 100644
--- a/src/i915_video.c
+++ b/src/i915_video.c
@@ -33,6 +33,7 @@
 #include "xf86_OSproc.h"
 #include "xf86xv.h"
 #include "fourcc.h"
+#include "gcstruct.h"
 
 #include "intel.h"
 #include "intel_video.h"
diff --git a/src/intel.h b/src/intel.h
index ed95063..1a002e2 100644
--- a/src/intel.h
+++ b/src/intel.h
@@ -75,7 +75,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <libudev.h>
 #endif
 
-#include "uxa.h"
 /* XXX
  * The X server gained an *almost* identical implementation in 1.9.
  *
@@ -316,7 +315,7 @@ typedef struct intel_screen_private {
 	void (*batch_flush) (struct intel_screen_private *intel);
 	void (*batch_commit_notify) (struct intel_screen_private *intel);
 
-	uxa_driver_t *uxa_driver;
+	struct _UxaDriver *uxa_driver;
 	Bool need_sync;
 	int accel_pixmap_offset_alignment;
 	int accel_max_x;
diff --git a/src/intel_batchbuffer.c b/src/intel_batchbuffer.c
index 89a9969..2b8fbb6 100644
--- a/src/intel_batchbuffer.c
+++ b/src/intel_batchbuffer.c
@@ -40,6 +40,8 @@
 #include "i915_drm.h"
 #include "i965_reg.h"
 
+#include "uxa.h"
+
 #define DUMP_BATCHBUFFERS NULL // "/tmp/i915-batchbuffers.dump"
 
 static void intel_end_vertex(intel_screen_private *intel)
diff --git a/src/intel_dri.c b/src/intel_dri.c
index 1227dbb..135ba4e 100644
--- a/src/intel_dri.c
+++ b/src/intel_dri.c
@@ -56,8 +56,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include "windowstr.h"
 #include "shadow.h"
-
 #include "xaarop.h"
+#include "fb.h"
 
 #include "intel.h"
 #include "i830_reg.h"
diff --git a/src/intel_driver.c b/src/intel_driver.c
index f385819..188c512 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -70,6 +70,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #endif
 
 #include "legacy/legacy.h"
+#include "uxa.h"
 
 #include <sys/ioctl.h>
 #include "i915_drm.h"
diff --git a/src/intel_module.c b/src/intel_module.c
index 3a0ecc9..80b5da8 100644
--- a/src/intel_module.c
+++ b/src/intel_module.c
@@ -346,8 +346,10 @@ static Bool intel_pci_probe(DriverPtr		driver,
 		default:
 #if USE_SNA
 			sna_init_scrn(scrn, entity_num);
-#else
+#elif USE_UXA
 			intel_init_scrn(scrn);
+#else
+			scrn = NULL;
 #endif
 			break;
 		}
@@ -387,8 +389,10 @@ intel_available_options(int chipid, int busid)
 	default:
 #if USE_SNA
 		return sna_available_options(chipid, busid);
-#else
+#elif USE_UXA
 		return intel_uxa_available_options(chipid, busid);
+#else
+		return NULL;
 #endif
 	}
 }
diff --git a/src/intel_uxa.c b/src/intel_uxa.c
index 8c6f754..94dfb86 100644
--- a/src/intel_uxa.c
+++ b/src/intel_uxa.c
@@ -40,6 +40,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <string.h>
 #include <errno.h>
 
+#include "uxa.h"
+
 static const int I830CopyROP[16] = {
 	ROP_0,			/* GXclear */
 	ROP_DSa,		/* GXand */

commit edbeab8c4edf9e0e89d85add485fe659795b6350
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Nov 15 10:17:06 2011 +0000

    sna: Reduce and clarify dependencies
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/src/common.h b/src/common.h
index 6b9c315..f9f2300 100644
--- a/src/common.h
+++ b/src/common.h
@@ -109,7 +109,7 @@ static inline void memcpy_volatile(volatile void *dst, const void *src,
     size_t i;
 
     for (i = 0; i < len; i++)
-	((volatile char *)dst)[i] = ((volatile char *)src)[i];
+	((volatile char *)dst)[i] = ((const volatile char *)src)[i];
 }
 
 /* Memory mapped register access macros */
diff --git a/src/intel.h b/src/intel.h
index 3b3f87d..ed95063 100644
--- a/src/intel.h
+++ b/src/intel.h
@@ -57,7 +57,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "xf86Pci.h"
 #include "xf86Cursor.h"
 #include "xf86xv.h"
-#include "vgaHW.h"
 #include "xf86Crtc.h"
 #include "xf86RandR12.h"
 
@@ -636,7 +635,7 @@ intel_get_transformed_coordinates_3d(int x, int y, PictTransformPtr transform,
 				    float *x_out, float *y_out, float *z_out);
 
 static inline void
-intel_debug_fallback(ScrnInfoPtr scrn, char *format, ...)
+intel_debug_fallback(ScrnInfoPtr scrn, const char *format, ...)
 {
 	intel_screen_private *intel = intel_get_screen_private(scrn);
 	va_list ap;
diff --git a/src/intel_display.c b/src/intel_display.c
index 84c7c08..542dc20 100644
--- a/src/intel_display.c
+++ b/src/intel_display.c
@@ -42,6 +42,8 @@
 #include "intel_bufmgr.h"
 #include "xf86drmMode.h"
 #include "X11/Xatom.h"
+#include "X11/extensions/dpmsconst.h"
+#include "xf86DDC.h"
 
 struct intel_mode {
 	int fd;
diff --git a/src/intel_driver.c b/src/intel_driver.c
index 24696da..f385819 100644
--- a/src/intel_driver.c
+++ b/src/intel_driver.c
@@ -50,11 +50,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "xf86cmap.h"
 #include "compiler.h"
 #include "mibstore.h"
-#include "vgaHW.h"
 #include "mipointer.h"
 #include "micmap.h"
 #include "shadowfb.h"
 #include <X11/extensions/randr.h>
+#include <X11/extensions/dpmsconst.h>
 #include "fb.h"
 #include "miscstruct.h"
 #include "dixstruct.h"
@@ -1118,9 +1118,6 @@ static void I830FreeScreen(int scrnIndex, int flags)
 		free(intel);
 		scrn->driverPrivate = NULL;
 	}
-
-	if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
-		vgaHWFreeHWRec(xf86Screens[scrnIndex]);
 }
 
 static void I830LeaveVT(int scrnIndex, int flags)
diff --git a/src/sna/Makefile.am b/src/sna/Makefile.am
index ac60988..30cedc6 100644
--- a/src/sna/Makefile.am
+++ b/src/sna/Makefile.am
@@ -35,6 +35,7 @@ libsna_la_SOURCES = \
 	compiler.h \
 	kgem.c \
 	kgem.h \
+	rop.h \
 	sna.h \
 	sna_accel.c \
 	sna_blt.c \
diff --git a/src/sna/rop.h b/src/sna/rop.h
new file mode 100644
index 0000000..9db15cf
--- /dev/null
+++ b/src/sna/rop.h
@@ -0,0 +1,264 @@
+#ifndef ROP_H
+#define ROP_H
+
+#define ROP_0		0x00
+#define ROP_DPSoon	0x01
+#define ROP_DPSona	0x02
+#define ROP_PSon	0x03
+#define ROP_SDPona	0x04
+#define ROP_DPon	0x05
+#define ROP_PDSxnon	0x06
+#define ROP_PDSaon	0x07
+#define ROP_SDPnaa	0x08
+#define ROP_PDSxon	0x09
+#define ROP_DPna	0x0A
+#define ROP_PSDnaon	0x0B
+#define ROP_SPna	0x0C
+#define ROP_PDSnaon	0x0D
+#define ROP_PDSonon	0x0E
+#define ROP_Pn		0x0F
+#define ROP_PDSona	0x10
+#define ROP_DSon	0x11
+#define ROP_SDPxnon	0x12
+#define ROP_SDPaon	0x13
+#define ROP_DPSxnon	0x14
+#define ROP_DPSaon	0x15
+#define ROP_PSDPSanaxx	0x16
+#define ROP_SSPxDSxaxn	0x17
+#define ROP_SPxPDxa	0x18
+#define ROP_SDPSanaxn	0x19
+#define ROP_PDSPaox	0x1A
+#define ROP_SDPSxaxn	0x1B
+#define ROP_PSDPaox	0x1C
+#define ROP_DSPDxaxn	0x1D
+#define ROP_PDSox	0x1E
+#define ROP_PDSoan	0x1F
+#define ROP_DPSnaa	0x20
+#define ROP_SDPxon	0x21
+#define ROP_DSna	0x22
+#define ROP_SPDnaon	0x23
+#define ROP_SPxDSxa	0x24
+#define ROP_PDSPanaxn	0x25
+#define ROP_SDPSaox	0x26
+#define ROP_SDPSxnox	0x27
+#define ROP_DPSxa	0x28
+#define ROP_PSDPSaoxxn	0x29
+#define ROP_DPSana	0x2A
+#define ROP_SSPxPDxaxn	0x2B
+#define ROP_SPDSoax	0x2C
+#define ROP_PSDnox	0x2D
+#define ROP_PSDPxox	0x2E
+#define ROP_PSDnoan	0x2F
+#define ROP_PSna	0x30
+#define ROP_SDPnaon	0x31
+#define ROP_SDPSoox	0x32
+#define ROP_Sn		0x33
+#define ROP_SPDSaox	0x34
+#define ROP_SPDSxnox	0x35
+#define ROP_SDPox	0x36
+#define ROP_SDPoan	0x37
+#define ROP_PSDPoax	0x38
+#define ROP_SPDnox	0x39
+#define ROP_SPDSxox	0x3A
+#define ROP_SPDnoan	0x3B
+#define ROP_PSx		0x3C
+#define ROP_SPDSonox	0x3D
+#define ROP_SPDSnaox	0x3E
+#define ROP_PSan	0x3F
+#define ROP_PSDnaa	0x40
+#define ROP_DPSxon	0x41
+#define ROP_SDxPDxa	0x42
+#define ROP_SPDSanaxn	0x43
+#define ROP_SDna	0x44
+#define ROP_DPSnaon	0x45
+#define ROP_DSPDaox	0x46
+#define ROP_PSDPxaxn	0x47
+#define ROP_SDPxa	0x48
+#define ROP_PDSPDaoxxn	0x49
+#define ROP_DPSDoax	0x4A
+#define ROP_PDSnox	0x4B
+#define ROP_SDPana	0x4C
+#define ROP_SSPxDSxoxn	0x4D
+#define ROP_PDSPxox	0x4E
+#define ROP_PDSnoan	0x4F
+#define ROP_PDna	0x50
+#define ROP_DSPnaon	0x51
+#define ROP_DPSDaox	0x52
+#define ROP_SPDSxaxn	0x53
+#define ROP_DPSonon	0x54
+#define ROP_Dn		0x55
+#define ROP_DPSox	0x56
+#define ROP_DPSoan	0x57
+#define ROP_PDSPoax	0x58
+#define ROP_DPSnox	0x59
+#define ROP_DPx		0x5A
+#define ROP_DPSDonox	0x5B
+#define ROP_DPSDxox	0x5C
+#define ROP_DPSnoan	0x5D
+#define ROP_DPSDnaox	0x5E
+#define ROP_DPan	0x5F
+#define ROP_PDSxa	0x60
+#define ROP_DSPDSaoxxn	0x61
+#define ROP_DSPDoax	0x62
+#define ROP_SDPnox	0x63
+#define ROP_SDPSoax	0x64
+#define ROP_DSPnox	0x65
+#define ROP_DSx		0x66
+#define ROP_SDPSonox	0x67
+#define ROP_DSPDSonoxxn	0x68
+#define ROP_PDSxxn	0x69
+#define ROP_DPSax	0x6A
+#define ROP_PSDPSoaxxn	0x6B
+#define ROP_SDPax	0x6C
+#define ROP_PDSPDoaxxn	0x6D
+#define ROP_SDPSnoax	0x6E
+#define ROP_PDSxnan	0x6F
+#define ROP_PDSana	0x70
+#define ROP_SSDxPDxaxn	0x71
+#define ROP_SDPSxox	0x72
+#define ROP_SDPnoan	0x73
+#define ROP_DSPDxox	0x74
+#define ROP_DSPnoan	0x75
+#define ROP_SDPSnaox	0x76
+#define ROP_DSan	0x77
+#define ROP_PDSax	0x78
+#define ROP_DSPDSoaxxn	0x79
+#define ROP_DPSDnoax	0x7A
+#define ROP_SDPxnan	0x7B
+#define ROP_SPDSnoax	0x7C
+#define ROP_DPSxnan	0x7D
+#define ROP_SPxDSxo	0x7E
+#define ROP_DPSaan	0x7F
+#define ROP_DPSaa	0x80
+#define ROP_SPxDSxon	0x81
+#define ROP_DPSxna	0x82
+#define ROP_SPDSnoaxn	0x83
+#define ROP_SDPxna	0x84
+#define ROP_PDSPnoaxn	0x85
+#define ROP_DSPDSoaxx	0x86
+#define ROP_PDSaxn	0x87
+#define ROP_DSa		0x88
+#define ROP_SDPSnaoxn	0x89
+#define ROP_DSPnoa	0x8A
+#define ROP_DSPDxoxn	0x8B
+#define ROP_SDPnoa	0x8C
+#define ROP_SDPSxoxn	0x8D
+#define ROP_SSDxPDxax	0x8E
+#define ROP_PDSanan	0x8F
+#define ROP_PDSxna	0x90
+#define ROP_SDPSnoaxn	0x91
+#define ROP_DPSDPoaxx	0x92
+#define ROP_SPDaxn	0x93
+#define ROP_PSDPSoaxx	0x94
+#define ROP_DPSaxn	0x95
+#define ROP_DPSxx	0x96
+#define ROP_PSDPSonoxx	0x97
+#define ROP_SDPSonoxn	0x98
+#define ROP_DSxn	0x99
+#define ROP_DPSnax	0x9A
+#define ROP_SDPSoaxn	0x9B
+#define ROP_SPDnax	0x9C
+#define ROP_DSPDoaxn	0x9D
+#define ROP_DSPDSaoxx	0x9E
+#define ROP_PDSxan	0x9F
+#define ROP_DPa		0xA0
+#define ROP_PDSPnaoxn	0xA1
+#define ROP_DPSnoa	0xA2
+#define ROP_DPSDxoxn	0xA3
+#define ROP_PDSPonoxn	0xA4
+#define ROP_PDxn	0xA5
+#define ROP_DSPnax	0xA6
+#define ROP_PDSPoaxn	0xA7
+#define ROP_DPSoa	0xA8
+#define ROP_DPSoxn	0xA9
+#define ROP_D		0xAA
+#define ROP_DPSono	0xAB
+#define ROP_SPDSxax	0xAC
+#define ROP_DPSDaoxn	0xAD
+#define ROP_DSPnao	0xAE
+#define ROP_DPno	0xAF
+#define ROP_PDSnoa	0xB0
+#define ROP_PDSPxoxn	0xB1
+#define ROP_SSPxDSxox	0xB2
+#define ROP_SDPanan	0xB3
+#define ROP_PSDnax	0xB4
+#define ROP_DPSDoaxn	0xB5
+#define ROP_DPSDPaoxx	0xB6
+#define ROP_SDPxan	0xB7
+#define ROP_PSDPxax	0xB8
+#define ROP_DSPDaoxn	0xB9
+#define ROP_DPSnao	0xBA
+#define ROP_DSno	0xBB
+#define ROP_SPDSanax	0xBC
+#define ROP_SDxPDxan	0xBD
+#define ROP_DPSxo	0xBE
+#define ROP_DPSano	0xBF
+#define ROP_Psa		0xC0
+#define ROP_SPDSnaoxn	0xC1
+#define ROP_SPDSonoxn	0xC2
+#define ROP_PSxn	0xC3
+#define ROP_SPDnoa	0xC4
+#define ROP_SPDSxoxn	0xC5
+#define ROP_SDPnax	0xC6
+#define ROP_PSDPoaxn	0xC7
+#define ROP_SDPoa	0xC8
+#define ROP_SPDoxn	0xC9
+#define ROP_DPSDxax	0xCA
+#define ROP_SPDSaoxn	0xCB
+#define ROP_S		0xCC
+#define ROP_SDPono	0xCD
+#define ROP_SDPnao	0xCE
+#define ROP_SPno	0xCF
+#define ROP_PSDnoa	0xD0
+#define ROP_PSDPxoxn	0xD1
+#define ROP_PDSnax	0xD2
+#define ROP_SPDSoaxn	0xD3
+#define ROP_SSPxPDxax	0xD4
+#define ROP_DPSanan	0xD5
+#define ROP_PSDPSaoxx	0xD6
+#define ROP_DPSxan	0xD7
+#define ROP_PDSPxax	0xD8
+#define ROP_SDPSaoxn	0xD9
+#define ROP_DPSDanax	0xDA
+#define ROP_SPxDSxan	0xDB
+#define ROP_SPDnao	0xDC
+#define ROP_SDno	0xDD
+#define ROP_SDPxo	0xDE
+#define ROP_SDPano	0xDF
+#define ROP_PDSoa	0xE0
+#define ROP_PDSoxn	0xE1
+#define ROP_DSPDxax	0xE2
+#define ROP_PSDPaoxn	0xE3
+#define ROP_SDPSxax	0xE4
+#define ROP_PDSPaoxn	0xE5
+#define ROP_SDPSanax	0xE6
+#define ROP_SPxPDxan	0xE7
+#define ROP_SSPxDSxax	0xE8
+#define ROP_DSPDSanaxxn	0xE9
+#define ROP_DPSao	0xEA
+#define ROP_DPSxno	0xEB
+#define ROP_SDPao	0xEC
+#define ROP_SDPxno	0xED
+#define ROP_DSo		0xEE
+#define ROP_SDPnoo	0xEF
+#define ROP_P		0xF0
+#define ROP_PDSono	0xF1
+#define ROP_PDSnao	0xF2
+#define ROP_PSno	0xF3
+#define ROP_PSDnao	0xF4
+#define ROP_PDno	0xF5
+#define ROP_PDSxo	0xF6
+#define ROP_PDSano	0xF7
+#define ROP_PDSao	0xF8
+#define ROP_PDSxno	0xF9
+#define ROP_DPo		0xFA
+#define ROP_DPSnoo	0xFB
+#define ROP_PSo		0xFC
+#define ROP_PSDnoo	0xFD
+#define ROP_DPSoo	0xFE
+#define ROP_1		0xFF
+
+#define NO_SRC_ROP(rop) \
+   ((rop == GXnoop) || (rop == GXset) || (rop == GXclear) || (rop == GXinvert))
+
+#endif /* ROP_H */
diff --git a/src/sna/sna.h b/src/sna/sna.h
index 573fe0e..9492fc2 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -49,7 +49,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <xf86Pci.h>
 #include <xf86Cursor.h>
 #include <xf86xv.h>
-#include <vgaHW.h>
 #include <xf86Crtc.h>
 #include <xf86RandR12.h>
 #include <gcstruct.h>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index e0990c5..46992f6 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -31,11 +31,11 @@
 
 #include "sna.h"
 #include "sna_reg.h"
+#include "rop.h"
 
 #include <X11/fonts/font.h>
 #include <X11/fonts/fontstruct.h>
 
-#include <xaarop.h>
 #include <fb.h>
 #include <dixfontstr.h>
 
diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
index 0290a33..4c7beab 100644
--- a/src/sna/sna_blt.c
+++ b/src/sna/sna_blt.c
@@ -36,10 +36,10 @@
 #include "sna_render.h"
 #include "sna_render_inline.h"
 #include "sna_reg.h"
+#include "rop.h"
 
 #include <mipict.h>
 #include <fbpict.h>
-#include <xaarop.h>
 
 #if DEBUG_BLT
 #undef DBG
diff --git a/src/sna/sna_composite.c b/src/sna/sna_composite.c
index 532dd80..1d66a8d 100644
--- a/src/sna/sna_composite.c
+++ b/src/sna/sna_composite.c
@@ -726,7 +726,6 @@ fallback:
 		sna_drawable_move_to_cpu(dst->alphaMap->pDrawable, true);
 
 	if (op == PictOpSrc || op == PictOpClear) {
-		PixmapPtr pixmap = get_drawable_pixmap(dst->pDrawable);
 		int nbox = REGION_NUM_RECTS(&region);
 		BoxPtr box = REGION_RECTS(&region);
 		uint32_t pixel;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index b1275ed..32162ef 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -39,6 +39,8 @@
 
 #include <xorgVersion.h>
 #include <X11/Xatom.h>
+#include <X11/extensions/dpmsconst.h>
+#include <xf86DDC.h>
 
 #include "sna.h"
 #include "sna_reg.h"
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 693febc..19413a9 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -45,21 +45,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <stdio.h>
 #include <errno.h>
 
-#include "xf86.h"
-#include "xf86_OSproc.h"
-#include "xf86cmap.h"
+#include <xf86cmap.h>
+#include <micmap.h>
+#include <fb.h>
+
 #include "compiler.h"
-#include "mibstore.h"
-#include "vgaHW.h"
-#include "mipointer.h"
-#include "micmap.h"
-#include "shadowfb.h"
-#include <X11/extensions/randr.h>
-#include "fb.h"
-#include "miscstruct.h"
-#include "dixstruct.h"
-#include "xf86xv.h"
-#include <X11/extensions/Xv.h>
 #include "sna.h"
 #include "sna_module.h"
 #include "sna_video.h"
@@ -973,9 +963,6 @@ static void sna_free_screen(int scrnIndex, int flags)
 	}
 
 	sna_close_drm_master(scrn);
-
-	if (xf86LoaderCheckSymbol("vgaHWFreeHWRec"))
-		vgaHWFreeHWRec(xf86Screens[scrnIndex]);
 }
 
 /*

commit 78d4e99fc916e6477edb01c6f24b69ad73adc552
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Nov 15 11:06:04 2011 +0000

    sna: And keep unity happy
    
    Rewrite the DRI layer to avoid the various bugs and shortcomings of the
    Xserver and interfacing with mesa.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38732
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=39044
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index c854846..89caf96 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -263,7 +263,6 @@ static struct kgem_bo *__kgem_bo_init(struct kgem_bo *bo,
 	bo->handle = handle;
 	bo->size = size;
 	bo->reusable = true;
-	bo->purgeable = true;
 	bo->cpu_read = true;
 	bo->cpu_write = true;
 	list_init(&bo->request);
@@ -577,6 +576,8 @@ static void kgem_bo_free(struct kgem *kgem, struct kgem_bo *bo)
 {
 	struct kgem_bo_binding *b;
 
+	DBG(("%s: handle=%d\n", __FUNCTION__, bo->handle));
+
 	b = bo->binding.next;
 	while (b) {
 		struct kgem_bo_binding *next = b->next;
@@ -592,6 +593,8 @@ static void kgem_bo_free(struct kgem *kgem, struct kgem_bo *bo)
 
 static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
 {
+	DBG(("%s: handle=%d\n", __FUNCTION__, bo->handle));
+
 	assert(list_is_empty(&bo->list));
 	assert(bo->refcnt == 0);
 
@@ -603,9 +606,11 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
 	if(!bo->reusable)
 		goto destroy;
 
-	if (bo->purgeable && !bo->rq && !bo->needs_flush) {
+	if (!bo->rq && !bo->needs_flush) {
 		assert(!bo->purged);
 
+		DBG(("%s: handle=%d, purged\n", __FUNCTION__, bo->handle));
+
 		if (!gem_madvise(kgem->fd, bo->handle, I915_MADV_DONTNEED)) {
 			kgem->need_purge |= bo->gpu;
 			goto destroy;
@@ -616,10 +621,13 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo)
 
 	kgem->need_expire = true;
 	if (bo->rq) {
+		DBG(("%s: handle=%d -> active\n", __FUNCTION__, bo->handle));
 		list_move(&bo->list, active(kgem, bo->size));
 	} else if (bo->purged) {
+		DBG(("%s: handle=%d -> inactive\n", __FUNCTION__, bo->handle));
 		list_move(&bo->list, inactive(kgem, bo->size));
 	} else {
+		DBG(("%s: handle=%d -> flushing\n", __FUNCTION__, bo->handle));
 		assert(list_is_empty(&bo->request));


Reply to: