raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=66d53e596809ca858db112d20f3801639c19600a

commit 66d53e596809ca858db112d20f3801639c19600a
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Tue Sep 8 22:00:33 2015 +0900

    ecore x vsync - add in exynos checks and move kernel v checks inside
    
    this adds asmung exynos driver as a whiteliested drm vsync driver.
    this means 3.0 needs to work so move kernel ver checks inot each driver.
    
    @feature
---
 src/lib/ecore_x/xlib/ecore_x_vsync.c | 85 ++++++++++++++++++++++++++----------
 1 file changed, 62 insertions(+), 23 deletions(-)

diff --git a/src/lib/ecore_x/xlib/ecore_x_vsync.c 
b/src/lib/ecore_x/xlib/ecore_x_vsync.c
index 1701168..1cc807b 100644
--- a/src/lib/ecore_x/xlib/ecore_x_vsync.c
+++ b/src/lib/ecore_x/xlib/ecore_x_vsync.c
@@ -400,6 +400,7 @@ _drm_init(int *flags)
    struct stat st;
    char buf[512];
    Eina_Bool ok = EINA_FALSE;
+   int vmaj = 0, vmin = 0;
 
    // vboxvideo 4.3.14 is crashing when calls drmWaitVBlank()
    // https://www.virtualbox.org/ticket/13265
@@ -431,11 +432,9 @@ _drm_init(int *flags)
           {
              if (fgets(buf, sizeof(buf), fp))
                {
-                  int vmaj = 0, vmin = 0;
-
                   if (sscanf(buf, "%i.%i.%*s", &vmaj, &vmin) == 2)
                     {
-                       if ((vmaj >= 3) && (vmin >= 14)) ok = EINA_TRUE;
+                       if (vmaj >= 3) ok = EINA_TRUE;
                     }
                }
              fclose(fp);
@@ -500,13 +499,27 @@ _drm_init(int *flags)
             (drmver->date_len < 200))
           {
              // whitelist of known-to-work drivers
+             if ((!strcmp(drmver->name, "exynos")) &&
+                 (strstr(drmver->desc, "Samsung")))
+               {
+                  if (((vmaj >= 3) && (vmin >= 0)) || (vmaj >= 4))
+                    {
+                       if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
+                         fprintf(stderr, "Whitelisted exynos OK\n");
+                       ok = EINA_TRUE;
+                       goto checkdone;
+                    }
+               }
              if ((!strcmp(drmver->name, "i915")) &&
                  (strstr(drmver->desc, "Intel Graphics")))
                {
-                  if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
-                    fprintf(stderr, "Whitelisted intel OK\n");
-                  ok = EINA_TRUE;
-                  goto checkdone;
+                  if (((vmaj >= 3) && (vmin >= 14)) || (vmaj >= 4))
+                    {
+                       if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
+                         fprintf(stderr, "Whitelisted intel OK\n");
+                       ok = EINA_TRUE;
+                       goto checkdone;
+                    }
                }
              if ((!strcmp(drmver->name, "radeon")) &&
                  (strstr(drmver->desc, "Radeon")) &&
@@ -514,10 +527,13 @@ _drm_init(int *flags)
                    (drmver->version_minor >= 39)) ||
                   (drmver->version_major > 2)))
                {
-                  if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
-                    fprintf(stderr, "Whitelisted radeon OK\n");
-                  ok = EINA_TRUE;
-                  goto checkdone;
+                  if (((vmaj >= 3) && (vmin >= 14)) || (vmaj >= 4))
+                    {
+                       if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
+                         fprintf(stderr, "Whitelisted radeon OK\n");
+                       ok = EINA_TRUE;
+                       goto checkdone;
+                    }
                }
           }
         if ((((drmverbroken->version_major == 1) &&
@@ -527,13 +543,27 @@ _drm_init(int *flags)
             (drmverbroken->date_len < 200))
           {
              // whitelist of known-to-work drivers
+             if ((!strcmp(drmverbroken->name, "exynos")) &&
+                 (strstr(drmverbroken->desc, "Samsung")))
+               {
+                  if (((vmaj >= 3) && (vmin >= 0)) || (vmaj >= 4))
+                    {
+                       if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
+                         fprintf(stderr, "Whitelisted exynos OK\n");
+                       ok = EINA_TRUE;
+                       goto checkdone;
+                    }
+               }
              if ((!strcmp(drmverbroken->name, "i915")) &&
                  (strstr(drmverbroken->desc, "Intel Graphics")))
                {
-                  if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
-                    fprintf(stderr, "Whitelisted intel OK\n");
-                  ok = EINA_TRUE;
-                  goto checkdone;
+                  if (((vmaj >= 3) && (vmin >= 14)) || (vmaj >= 4))
+                    {
+                       if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
+                         fprintf(stderr, "Whitelisted intel OK\n");
+                       ok = EINA_TRUE;
+                       goto checkdone;
+                    }
                }
              if ((!strcmp(drmverbroken->name, "radeon")) &&
                  (strstr(drmverbroken->desc, "Radeon")) &&
@@ -541,10 +571,13 @@ _drm_init(int *flags)
                    (drmver->version_minor >= 39)) ||
                   (drmver->version_major > 2)))
                {
-                  if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
-                    fprintf(stderr, "Whitelisted radeon OK\n");
-                  ok = EINA_TRUE;
-                  goto checkdone;
+                  if (((vmaj >= 3) && (vmin >= 14)) || (vmaj >= 4))
+                    {
+                       if (getenv("ECORE_VSYNC_DRM_VERSION_DEBUG"))
+                         fprintf(stderr, "Whitelisted radeon OK\n");
+                       ok = EINA_TRUE;
+                       goto checkdone;
+                    }
                }
           }
         if ((drmver->version_major >= 0) &&
@@ -555,8 +588,11 @@ _drm_init(int *flags)
              if ((!strcmp(drmver->name, "nvidia-drm")) &&
                  (strstr(drmver->desc, "NVIDIA DRM driver")))
                {
-                  *flags |= DRM_HAVE_NVIDIA;
-                  goto checkdone;
+                  if (((vmaj >= 3) && (vmin >= 14)) || (vmaj >= 4))
+                    {
+                       *flags |= DRM_HAVE_NVIDIA;
+                       goto checkdone;
+                    }
                }
           }
         if ((drmverbroken->version_major >= 0) &&
@@ -567,8 +603,11 @@ _drm_init(int *flags)
              if ((!strcmp(drmverbroken->name, "nvidia-drm")) &&
                  (strstr(drmverbroken->desc, "NVIDIA DRM driver")))
                {
-                  *flags |= DRM_HAVE_NVIDIA;
-                  goto checkdone;
+                  if (((vmaj >= 3) && (vmin >= 14)) || (vmaj >= 4))
+                    {
+                       *flags |= DRM_HAVE_NVIDIA;
+                       goto checkdone;
+                    }
                }
           }
 checkdone:

-- 


Reply via email to