add checking DRI3 and Present extensions 16/28316/1
authorRoman Marchenko <r.marchenko@samsung.com>
Thu, 2 Oct 2014 10:22:58 +0000 (13:22 +0300)
committerRoman Marchenko <r.marchenko@samsung.com>
Thu, 2 Oct 2014 10:23:13 +0000 (13:23 +0300)
Change-Id: I64844c9988b67278c08bbd9efcca2aabf0a19a0a
Signed-off-by: Roman Marchenko <r.marchenko@samsung.com>
configure.ac
src/Makefile.am
src/sec.c

index 513586d..848b1cf 100644 (file)
@@ -77,6 +77,12 @@ fi
 # Checks for header files.
 AC_HEADER_STDC
 
+AC_CHECK_FILES( /usr/include/xorg/dri3.h /usr/include/xorg/present.h, [dri3=yes], [dri3=no]) 
+AM_CONDITIONAL(ENABLE_DRI3_PRESENT, [test "x$dri3" = xyes])
+if test "x$dri3" = xyes; then
+    AC_DEFINE(HAVE_DRI3_PRESENT_H, 1, [ DRI3 and Present is enabled ])
+fi
+
 AC_SUBST([EXYNOS_CFLAGS])
 AC_SUBST([EXYNOS_LIBS])
 
index 6958ba3..c8626b2 100644 (file)
@@ -25,11 +25,15 @@ AM_CFLAGS += -I@top_srcdir@/src/crtcconfig
 exynos_drv_la_SOURCES += \
        accel/sec_exa.c \
        accel/sec_exa_sw.c \
-       accel/sec_present.c \
-       accel/sec_dri3.c \
        accel/sec_dri2.c
 AM_CFLAGS += -I@top_srcdir@/src/accel
 
+if ENABLE_DRI3_PRESENT
+exynos_drv_la_SOURCES += \
+       accel/sec_present.c \
+       accel/sec_dri3.c
+endif
+
 # xv
 exynos_drv_la_SOURCES += \
        xv/sec_video_tvout.c \
index ae933ec..2b7c369 100644 (file)
--- a/src/sec.c
+++ b/src/sec.c
@@ -508,6 +508,7 @@ _checkDriverOptions (ScrnInfoPtr pScrn)
         }
     }
 
+#ifdef HAVE_DRI3_PRESENT_H
     /* present */
     if (xf86ReturnOptValBool (pSec->Options, OPTION_PRESENT, FALSE))
     {
@@ -519,6 +520,7 @@ _checkDriverOptions (ScrnInfoPtr pScrn)
     {
         pSec->is_dri3 = TRUE;
     }
+#endif
 
     /* rotate */
     pSec->rotate = RR_Rotate_0;
@@ -1041,7 +1043,8 @@ SECScreenInit (ScreenPtr pScreen, int argc, char **argv)
                                 "DRI2 initialization failed\n");
                 }
             }
-            
+
+#ifdef HAVE_DRI3_PRESENT_H
             if (pSec->is_present)
             {
                if(!secPresentScreenInit(pScreen))
@@ -1060,6 +1063,7 @@ SECScreenInit (ScreenPtr pScreen, int argc, char **argv)
                                 "DRI3 initialization failed\n");
                 }
             }
+#endif
         }
     }
 
@@ -1814,7 +1818,9 @@ secSwapToRenderBo(ScrnInfoPtr pScrn, int width, int height, tbm_bo carr_bo)
 {
     SECPtr pSec = SECPTR (pScrn);
 
-    return _secFbCreateBo2(pSec->pFb, -1, -1, width, height, carr_bo);
+    tbm_bo tbo = _secFbCreateBo2(pSec->pFb, -1, -1, width, height, carr_bo);
+
+       return tbo ? 1 : 0;
 }
 
 tbm_bo