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
This commit is contained in:
Carsten Haitzler 2015-09-08 22:00:33 +09:00
parent d4444bf7a0
commit 66d53e5968
1 changed files with 62 additions and 23 deletions

View File

@ -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: