xf86-video-intel: 3 commits - configure.ac xvmc/intel_xvmc.c xvmc/intel_xvmc_private.h xvmc/Makefile.am

Chris Wilson ickle at kemper.freedesktop.org
Fri Jun 13 01:32:41 PDT 2014


 configure.ac              |    5 ++---
 xvmc/Makefile.am          |    6 ++----
 xvmc/intel_xvmc.c         |   23 +++++++----------------
 xvmc/intel_xvmc_private.h |   39 +++++++++++----------------------------
 4 files changed, 22 insertions(+), 51 deletions(-)

New commits:
commit cd381ad96eadb72eb1a983c973a5dd47f547fc8b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 13 09:31:50 2014 +0100

    xvmc: Refactor mutex locking
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/xvmc/intel_xvmc.c b/xvmc/intel_xvmc.c
index 2a2c8b9..9a09aeb 100644
--- a/xvmc/intel_xvmc.c
+++ b/xvmc/intel_xvmc.c
@@ -103,21 +103,6 @@ unsigned int mb_bytes_420[] = {
 	768			/* 111111 */
 };
 
-void LOCK_HARDWARE(drm_context_t ctx)
-{
-	PPTHREAD_MUTEX_LOCK();
-	assert(!xvmc_driver->locked);
-
-	xvmc_driver->locked = 1;
-}
-
-void UNLOCK_HARDWARE(drm_context_t ctx)
-{
-	xvmc_driver->locked = 0;
-
-	PPTHREAD_MUTEX_UNLOCK();
-}
-
 static int
 dri2_connect(Display *display)
 {
@@ -340,8 +325,14 @@ _X_EXPORT Status XvMCCreateContext(Display * display, XvPortID port,
 		return ret;
 	}
 
-
+	sigfillset(&xvmc_driver->sa_mask);
+	sigdelset(&xvmc_driver->sa_mask, SIGFPE);
+	sigdelset(&xvmc_driver->sa_mask, SIGILL);
+	sigdelset(&xvmc_driver->sa_mask, SIGSEGV);
+	sigdelset(&xvmc_driver->sa_mask, SIGBUS);
+	sigdelset(&xvmc_driver->sa_mask, SIGKILL);
 	pthread_mutex_init(&xvmc_driver->ctxmutex, NULL);
+
 	intel_xvmc_dump_open();
 
 	return Success;
diff --git a/xvmc/intel_xvmc_private.h b/xvmc/intel_xvmc_private.h
index e2ea2dc..d3f7b9e 100644
--- a/xvmc/intel_xvmc_private.h
+++ b/xvmc/intel_xvmc_private.h
@@ -147,9 +147,8 @@ typedef struct _intel_xvmc_driver {
 	} alloc;
 	intel_xvmc_drm_map_t batchbuffer;
 
-	sigset_t sa_mask;
+	sigset_t sa_mask, old_mask;
 	pthread_mutex_t ctxmutex;
-	int locked;
 
 	int num_ctx;
 	intel_xvmc_context_ptr ctx_list;
@@ -194,33 +193,17 @@ extern struct _intel_xvmc_driver i965_xvmc_mc_driver;
 extern struct _intel_xvmc_driver xvmc_vld_driver;
 extern struct _intel_xvmc_driver *xvmc_driver;
 
-#define SET_BLOCKED_SIGSET()   do {    \
-        sigset_t bl_mask;                       \
-        sigfillset(&bl_mask);           \
-        sigdelset(&bl_mask, SIGFPE);    \
-        sigdelset(&bl_mask, SIGILL);    \
-        sigdelset(&bl_mask, SIGSEGV);   \
-        sigdelset(&bl_mask, SIGBUS);    \
-        sigdelset(&bl_mask, SIGKILL);   \
-        pthread_sigmask(SIG_SETMASK, &bl_mask, &xvmc_driver->sa_mask); \
-    } while (0)
-
-#define RESTORE_BLOCKED_SIGSET() do {    \
-        pthread_sigmask(SIG_SETMASK, &xvmc_driver->sa_mask, NULL); \
-    } while (0)
-
-#define PPTHREAD_MUTEX_LOCK() do {             \
-        SET_BLOCKED_SIGSET();                  \
-        pthread_mutex_lock(&xvmc_driver->ctxmutex);       \
-    } while (0)
-
-#define PPTHREAD_MUTEX_UNLOCK() do {           \
-        pthread_mutex_unlock(&xvmc_driver->ctxmutex);     \
-        RESTORE_BLOCKED_SIGSET();              \
-    } while (0)
+static inline void LOCK_HARDWARE(drm_context_t ctx)
+{
+        pthread_mutex_lock(&xvmc_driver->ctxmutex);
+        pthread_sigmask(SIG_SETMASK, &xvmc_driver->sa_mask, &xvmc_driver->old_mask);
+}
 
-extern void LOCK_HARDWARE(drm_context_t);
-extern void UNLOCK_HARDWARE(drm_context_t);
+static inline void UNLOCK_HARDWARE(drm_context_t ctx)
+{
+        pthread_sigmask(SIG_SETMASK, &xvmc_driver->old_mask, NULL);
+        pthread_mutex_unlock(&xvmc_driver->ctxmutex);
+}
 
 static inline const char *intel_xvmc_decoder_string(int flag)
 {
commit bccfb768ee14348b6db5b140fdd6df5fdbfcad0c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 13 09:14:47 2014 +0100

    xvmc: Sanitize compile and library flags
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/configure.ac b/configure.ac
index bd654f3..09dd830 100644
--- a/configure.ac
+++ b/configure.ac
@@ -622,8 +622,7 @@ AM_CONDITIONAL(SNA, test "x$SNA" != "xno")
 AC_MSG_RESULT([$SNA])
 
 if test "$XVMC" = "yes"; then
-	PKG_CHECK_MODULES(XVMCLIB, [xvmc dri2proto x11], [], [XVMC="no"])
-	PKG_CHECK_MODULES(XCB, [x11-xcb xcb-dri2 xcb-aux], [], [XVMC="no"])
+	PKG_CHECK_MODULES(XVMCLIB, [xvmc dri2proto x11 x11-xcb xcb-dri2 xcb-aux libdrm_intel], [], [XVMC="no"])
 fi
 AC_MSG_CHECKING([whether to include XvMC support])
 AC_MSG_RESULT([$XVMC])
diff --git a/xvmc/Makefile.am b/xvmc/Makefile.am
index eaa88ea..a91b138 100644
--- a/xvmc/Makefile.am
+++ b/xvmc/Makefile.am
@@ -24,9 +24,7 @@ libIntelXvMC_la_SOURCES = \
         intel_batchbuffer.h \
 	$(NULL)
 
-AM_CFLAGS = @XORG_CFLAGS@ @DRM_CFLAGS@ @DRI2_CFLAGS@ \
-	    @XVMCLIB_CFLAGS@ @XCB_CFLAGS@ \
-	    -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0
+AM_CFLAGS = $(XVMCLIB_CFLAGS) $(XORG_CFLAGS) -I$(top_srcdir)/src -DTRUE=1 -DFALSE=0
 
 libIntelXvMC_la_LDFLAGS = -version-number 1:0:0
-libIntelXvMC_la_LIBADD = @DRI2_LIBS@ @DRM_LIBS@ @XVMCLIB_LIBS@ @XCB_LIBS@ @DRMINTEL_LIBS@ -lpthread
+libIntelXvMC_la_LIBADD = $(XVMCLIB_LIBS) -lpthread
commit 5a0cb1049c2fa0586708719210a2d2cffa7a4491
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Fri Jun 13 09:15:30 2014 +0100

    configure: Fix DRI2 build
    
    One s/DRI2/have_dri2/ too far.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/configure.ac b/configure.ac
index 21a0bf9..bd654f3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -520,7 +520,7 @@ have_dri2=no
 have_dri3=no
 if test "x$DRI" != "xno"; then
 	if test "x$DRI2" != "xno"; then
-		PKG_CHECK_MODULES(have_dri2, [dri2proto >= 2.6], [have_dri2=$DRI], [have_dri2=no])
+		PKG_CHECK_MODULES(DRI2, [dri2proto >= 2.6], [have_dri2=$DRI], [have_dri2=no])
 	fi
 	if test "x$have_dri2" != "xno"; then
 		save_CFLAGS=$CFLAGS


More information about the xorg-commit mailing list