cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7316bda15096841ef3564647b92304736d5387f3

commit 7316bda15096841ef3564647b92304736d5387f3
Author: Cedric Bail <[email protected]>
Date:   Thu Dec 8 15:04:11 2016 -0800

    evas: refactor swap mode info get.
---
 src/modules/evas/engines/eglfs/Evas_Engine_Eglfs.h | 12 +---
 src/modules/evas/engines/eglfs/evas_engine.c       | 65 +-------------------
 .../evas/engines/gl_drm/Evas_Engine_GL_Drm.h       | 16 ++---
 src/modules/evas/engines/gl_drm/evas_engine.c      | 67 +-------------------
 .../engines/gl_generic/Evas_Engine_GL_Generic.h    |  2 +
 .../evas/engines/gl_x11/Evas_Engine_GL_X11.h       | 14 +----
 src/modules/evas/engines/gl_x11/evas_engine.c      | 71 +---------------------
 .../Evas_Engine_Software_Generic.h                 | 12 +---
 8 files changed, 18 insertions(+), 241 deletions(-)

diff --git a/src/modules/evas/engines/eglfs/Evas_Engine_Eglfs.h 
b/src/modules/evas/engines/eglfs/Evas_Engine_Eglfs.h
index 7472c7b..abbc18a 100644
--- a/src/modules/evas/engines/eglfs/Evas_Engine_Eglfs.h
+++ b/src/modules/evas/engines/eglfs/Evas_Engine_Eglfs.h
@@ -1,15 +1,7 @@
 #ifndef _EVAS_ENGINE_EGLFS_H
 # define _EVAS_ENGINE_EGLFS_H
 
-typedef enum _Evas_Engine_Info_Eglfs_Swap_Mode
-{
-   EVAS_ENGINE_EGLFS_SWAP_MODE_AUTO = 0,
-   EVAS_ENGINE_EGLFS_SWAP_MODE_FULL = 1,
-   EVAS_ENGINE_EGLFS_SWAP_MODE_COPY = 2,
-   EVAS_ENGINE_EGLFS_SWAP_MODE_DOUBLE = 3,
-   EVAS_ENGINE_EGLFS_SWAP_MODE_TRIPLE = 4,
-   EVAS_ENGINE_EGLFS_SWAP_MODE_QUADRUPLE = 5
-} Evas_Engine_Info_Eglfs_Swap_Mode;
+#include "../gl_generic/Evas_Engine_GL_Shared.h"
 
 typedef struct _Evas_Engine_Info_Eglfs Evas_Engine_Info_Eglfs;
 
@@ -28,7 +20,7 @@ struct _Evas_Engine_Info_Eglfs
         Eina_Bool destination_alpha : 1;
         Eina_Bool vsync : 1;
         Eina_Bool indirect : 1;
-        unsigned char swap_mode : 4;
+        Evas_Engine_Info_Gl_Swap_Mode swap_mode : 4;
      } info;
 
    struct
diff --git a/src/modules/evas/engines/eglfs/evas_engine.c 
b/src/modules/evas/engines/eglfs/evas_engine.c
index d4eb3de..3e5b7ee 100644
--- a/src/modules/evas/engines/eglfs/evas_engine.c
+++ b/src/modules/evas/engines/eglfs/evas_engine.c
@@ -690,69 +690,6 @@ eng_info_free(Evas *eo_e EINA_UNUSED, void *in)
      free(info);
 }
 
-static Render_Engine_Swap_Mode
-_eng_swapmode_get(void)
-{
-   Render_Engine_Swap_Mode swap_mode = MODE_FULL;
-   const char *s = NULL;
-
-   s = getenv("EVAS_GL_SWAP_MODE");
-   if (s)
-     {
-        if ((!strcasecmp(s, "full")) || (!strcasecmp(s, "f")))
-          swap_mode = MODE_FULL;
-        else if ((!strcasecmp(s, "copy")) || (!strcasecmp(s, "c")))
-          swap_mode = MODE_COPY;
-        else if ((!strcasecmp(s, "double")) ||
-                 (!strcasecmp(s, "d")) || (!strcasecmp(s, "2")))
-          swap_mode = MODE_DOUBLE;
-        else if ((!strcasecmp(s, "triple")) ||
-                 (!strcasecmp(s, "t")) || (!strcasecmp(s, "3")))
-          swap_mode = MODE_TRIPLE;
-        else if ((!strcasecmp(s, "quadruple")) ||
-                 (!strcasecmp(s, "q")) || (!strcasecmp(s, "4")))
-          swap_mode = MODE_QUADRUPLE;
-     }
-   else
-     {
-// in most gl implementations - egl and glx here that we care about the TEND
-// to either swap or copy backbuffer and front buffer, but strictly that is
-// not true. technically backbuffer content is totally undefined after a swap
-// and thus you MUST re-render all of it, thus MODE_FULL
-        swap_mode = MODE_FULL;
-// BUT... reality is that lmost every implementation copies or swaps so
-// triple buffer mode can be used as it is a superset of double buffer and
-// copy (though using those explicitly is more efficient). so let's play with
-// triple buffer mdoe as a default and see.
-//        re->mode = MODE_TRIPLE;
-// XXX: note - the above seems to break on some older intel chipsets and
-// drivers. it seems we CANT depend on backbuffer staying around. bugger!
-        switch (info->info.swap_mode)
-          {
-           case EVAS_ENGINE_EGLFS_SWAP_MODE_FULL:
-             swap_mode = MODE_FULL;
-             break;
-           case EVAS_ENGINE_EGLFS_SWAP_MODE_COPY:
-             swap_mode = MODE_COPY;
-             break;
-           case EVAS_ENGINE_EGLFS_SWAP_MODE_DOUBLE:
-             swap_mode = MODE_DOUBLE;
-             break;
-           case EVAS_ENGINE_EGLFS_SWAP_MODE_TRIPLE:
-             swap_mode = MODE_TRIPLE;
-             break;
-           case EVAS_ENGINE_EGLFS_SWAP_MODE_QUADRUPLE:
-             swap_mode = MODE_QUADRUPLE;
-             break;
-           default:
-             swap_mode = MODE_AUTO;
-             break;
-          }
-     }
-
-   return swap_mode;
-}
-
 static void *
 eng_setup(void *in, unsigned int w, unsigned int h)
 {
@@ -762,7 +699,7 @@ eng_setup(void *in, unsigned int w, unsigned int h)
    Render_Engine_Merge_Mode merge_mode = MERGE_BOUNDING;
    Render_Engine_Swap_Mode swap_mode;
 
-   swap_mode = _eng_swapmode_get();
+   swap_mode = evas_render_engine_gl_swap_mode_get(info->info.swap_mode);
 
    if (!initted)
      {
diff --git a/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h 
b/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h
index 514aa80..9fd4b3c 100644
--- a/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h
+++ b/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h
@@ -1,19 +1,11 @@
 #ifndef _EVAS_ENGINE_GL_DRM_H
 # define _EVAS_ENGINE_GL_DRM_H
 
+#include "../gl_generic/Evas_Engine_GL_Shared.h"
+
 # include <Ecore_Drm2.h>
 # include <gbm.h>
 
-typedef enum _Evas_Engine_Info_GL_Drm_Swap_Mode
-{
-   EVAS_ENGINE_GL_DRM_SWAP_MODE_AUTO = 0,
-   EVAS_ENGINE_GL_DRM_SWAP_MODE_FULL = 1,
-   EVAS_ENGINE_GL_DRM_SWAP_MODE_COPY = 2,
-   EVAS_ENGINE_GL_DRM_SWAP_MODE_DOUBLE = 3,
-   EVAS_ENGINE_GL_DRM_SWAP_MODE_TRIPLE = 4,
-   EVAS_ENGINE_GL_DRM_SWAP_MODE_QUADRUPLE = 5
-} Evas_Engine_Info_GL_Drm_Swap_Mode;
-
 typedef struct _Evas_Engine_Info_GL_Drm Evas_Engine_Info_GL_Drm;
 
 struct _Evas_Engine_Info_GL_Drm
@@ -22,7 +14,7 @@ struct _Evas_Engine_Info_GL_Drm
    /* at you and make nasty noises */
    Evas_Engine_Info magic;
 
-   struct 
+   struct
      {
         struct gbm_device *gbm;
 
@@ -35,7 +27,7 @@ struct _Evas_Engine_Info_GL_Drm
         Eina_Bool destination_alpha : 1;
         Eina_Bool vsync : 1;
         Eina_Bool indirect : 1;
-        unsigned char swap_mode : 4;
+        Evas_Engine_Info_Gl_Swap_Mode swap_mode : 4;
      } info;
 
    struct
diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c 
b/src/modules/evas/engines/gl_drm/evas_engine.c
index 111c5ac..3ebe209 100644
--- a/src/modules/evas/engines/gl_drm/evas_engine.c
+++ b/src/modules/evas/engines/gl_drm/evas_engine.c
@@ -827,69 +827,6 @@ eng_info_free(Evas *eo_e EINA_UNUSED, void *in)
      free(info);
 }
 
-static Render_Engine_Swap_Mode
-_eng_swap_mode_get(Evas_Engine_Info_GL_Drm_Swap_Mode info_swap_mode)
-{
-   Render_Engine_Swap_Mode swap_mode = MODE_FULL;
-   const char *s;
-
-   s = getenv("EVAS_GL_SWAP_MODE");
-   if (s)
-     {
-        if ((!strcasecmp(s, "full")) || (!strcasecmp(s, "f")))
-          swap_mode = MODE_FULL;
-        else if ((!strcasecmp(s, "copy")) || (!strcasecmp(s, "c")))
-          swap_mode = MODE_COPY;
-        else if ((!strcasecmp(s, "double")) ||
-                 (!strcasecmp(s, "d")) || (!strcasecmp(s, "2")))
-          swap_mode = MODE_DOUBLE;
-        else if ((!strcasecmp(s, "triple")) ||
-                 (!strcasecmp(s, "t")) || (!strcasecmp(s, "3")))
-          swap_mode = MODE_TRIPLE;
-        else if ((!strcasecmp(s, "quadruple")) ||
-                 (!strcasecmp(s, "q")) || (!strcasecmp(s, "4")))
-          swap_mode = MODE_QUADRUPLE;
-     }
-   else
-     {
-// in most gl implementations - egl and glx here that we care about the TEND
-// to either swap or copy backbuffer and front buffer, but strictly that is
-// not true. technically backbuffer content is totally undefined after a swap
-// and thus you MUST re-render all of it, thus MODE_FULL
-        swap_mode = MODE_FULL;
-// BUT... reality is that lmost every implementation copies or swaps so
-// triple buffer mode can be used as it is a superset of double buffer and
-// copy (though using those explicitly is more efficient). so let's play with
-// triple buffer mdoe as a default and see.
-//        re->mode = MODE_TRIPLE;
-// XXX: note - the above seems to break on some older intel chipsets and
-// drivers. it seems we CANT depend on backbuffer staying around. bugger!
-        switch (info_swap_mode)
-          {
-           case EVAS_ENGINE_GL_DRM_SWAP_MODE_FULL:
-             swap_mode = MODE_FULL;
-             break;
-           case EVAS_ENGINE_GL_DRM_SWAP_MODE_COPY:
-             swap_mode = MODE_COPY;
-             break;
-           case EVAS_ENGINE_GL_DRM_SWAP_MODE_DOUBLE:
-             swap_mode = MODE_DOUBLE;
-             break;
-           case EVAS_ENGINE_GL_DRM_SWAP_MODE_TRIPLE:
-             swap_mode = MODE_TRIPLE;
-             break;
-           case EVAS_ENGINE_GL_DRM_SWAP_MODE_QUADRUPLE:
-             swap_mode = MODE_QUADRUPLE;
-             break;
-           default:
-             swap_mode = MODE_AUTO;
-             break;
-          }
-     }
-
-   return swap_mode;
-}
-
 static Render_Engine_Merge_Mode
 _eng_merge_mode_get(void)
 {
@@ -919,7 +856,7 @@ eng_setup(void *in, unsigned int w, unsigned int h)
    Render_Engine_Swap_Mode swap_mode;
    Render_Engine_Merge_Mode merge_mode;
 
-   swap_mode = _eng_swap_mode_get(info->info.swap_mode);
+   swap_mode = evas_render_engine_gl_swap_mode_get(info->info.swap_mode);
    merge_mode = _eng_merge_mode_get();
 
    if (!initted)
@@ -1018,7 +955,7 @@ eng_update(void *data, void *in, unsigned int w, unsigned 
int h)
 
              if (ob_old) evas_outbuf_free(ob_old);
 
-             swap_mode = _eng_swap_mode_get(info->info.swap_mode);
+             swap_mode = 
evas_render_engine_gl_swap_mode_get(info->info.swap_mode);
              ob = evas_outbuf_new(info, w, h, swap_mode);
              if (!ob)
                {
diff --git a/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h 
b/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h
index ace326d..6ee302d 100644
--- a/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h
+++ b/src/modules/evas/engines/gl_generic/Evas_Engine_GL_Generic.h
@@ -2,6 +2,8 @@
 # define EVAS_ENGINE_GL_GENERIC_H__
 
 #include "../software_generic/Evas_Engine_Software_Generic.h"
+#include "Evas_Engine_GL_Shared.h"
+
 #include "../gl_common/evas_gl_common.h"
 #include "../gl_common/evas_gl_core.h"
 #include "../gl_common/evas_gl_core_private.h"
diff --git a/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h 
b/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h
index ded7ca4..5122506 100644
--- a/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h
+++ b/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h
@@ -1,21 +1,13 @@
 #ifndef _EVAS_ENGINE_GL_X11_H
 #define _EVAS_ENGINE_GL_X11_H
 
+#include "../gl_generic/Evas_Engine_GL_Shared.h"
+
 typedef struct _Evas_Engine_Info_GL_X11              Evas_Engine_Info_GL_X11;
 
 /* have this feature */
 #define EVAS_ENGINE_GL_X11_SWAP_MODE_EXISTS 1
 
-typedef enum _Evas_Engine_Info_GL_X11_Swap_Mode
-{
-   EVAS_ENGINE_GL_X11_SWAP_MODE_AUTO      = 0,
-   EVAS_ENGINE_GL_X11_SWAP_MODE_FULL      = 1,
-   EVAS_ENGINE_GL_X11_SWAP_MODE_COPY      = 2,
-   EVAS_ENGINE_GL_X11_SWAP_MODE_DOUBLE    = 3,
-   EVAS_ENGINE_GL_X11_SWAP_MODE_TRIPLE    = 4,
-   EVAS_ENGINE_GL_X11_SWAP_MODE_QUADRUPLE = 5
-} Evas_Engine_Info_GL_X11_Swap_Mode;
-
 struct _Evas_Engine_Info_GL_X11
 {
    /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
@@ -53,7 +45,7 @@ struct _Evas_Engine_Info_GL_X11
 
    unsigned char vsync : 1; // does nothing right now
    unsigned char indirect : 1; // use indirect rendering
-   unsigned char swap_mode : 4; // what swap mode to assume
+   Evas_Engine_Info_Gl_Swap_Mode swap_mode : 4; // what swap mode to assume
 
    /* window surface should be made with these config */
    int           depth_bits;
diff --git a/src/modules/evas/engines/gl_x11/evas_engine.c 
b/src/modules/evas/engines/gl_x11/evas_engine.c
index df29103..5303549 100644
--- a/src/modules/evas/engines/gl_x11/evas_engine.c
+++ b/src/modules/evas/engines/gl_x11/evas_engine.c
@@ -1614,73 +1614,6 @@ _re_winfree(Render_Engine *re)
    eng_window_unsurf(eng_get_ob(re));
 }
 
-static Render_Engine_Swap_Mode
-_eng_swap_mode_get(Evas_Engine_Info_GL_X11_Swap_Mode info_swap_mode)
-{
-   Render_Engine_Swap_Mode swap_mode = MODE_FULL;
-   const char *s;
-
-   if ((s = getenv("EVAS_GL_SWAP_MODE")))
-     {
-        if ((!strcasecmp(s, "full")) ||
-            (!strcasecmp(s, "f")))
-          swap_mode = MODE_FULL;
-        else if ((!strcasecmp(s, "copy")) ||
-                 (!strcasecmp(s, "c")))
-          swap_mode = MODE_COPY;
-        else if ((!strcasecmp(s, "double")) ||
-                 (!strcasecmp(s, "d")) ||
-                 (!strcasecmp(s, "2")))
-          swap_mode = MODE_DOUBLE;
-        else if ((!strcasecmp(s, "triple")) ||
-                 (!strcasecmp(s, "t")) ||
-                 (!strcasecmp(s, "3")))
-          swap_mode = MODE_TRIPLE;
-        else if ((!strcasecmp(s, "quadruple")) ||
-                 (!strcasecmp(s, "q")) ||
-                 (!strcasecmp(s, "4")))
-          swap_mode = MODE_QUADRUPLE;
-     }
-   else
-     {
-// in most gl implementations - egl and glx here that we care about the TEND
-// to either swap or copy backbuffer and front buffer, but strictly that is
-// not true. technically backbuffer content is totally undefined after a swap
-// and thus you MUST re-render all of it, thus MODE_FULL
-        swap_mode = MODE_FULL;
-// BUT... reality is that lmost every implementation copies or swaps so
-// triple buffer mode can be used as it is a superset of double buffer and
-// copy (though using those explicitly is more efficient). so let's play with
-// triple buffer mdoe as a default and see.
-//        re->mode = MODE_TRIPLE;
-// XXX: note - the above seems to break on some older intel chipsets and
-// drivers. it seems we CANT depend on backbuffer staying around. bugger!
-        switch (info_swap_mode)
-          {
-           case EVAS_ENGINE_GL_X11_SWAP_MODE_FULL:
-             swap_mode = MODE_FULL;
-             break;
-           case EVAS_ENGINE_GL_X11_SWAP_MODE_COPY:
-             swap_mode = MODE_COPY;
-             break;
-           case EVAS_ENGINE_GL_X11_SWAP_MODE_DOUBLE:
-             swap_mode = MODE_DOUBLE;
-             break;
-           case EVAS_ENGINE_GL_X11_SWAP_MODE_TRIPLE:
-             swap_mode = MODE_TRIPLE;
-             break;
-           case EVAS_ENGINE_GL_X11_SWAP_MODE_QUADRUPLE:
-             swap_mode = MODE_QUADRUPLE;
-             break;
-           default:
-             swap_mode = MODE_AUTO;
-             break;
-          }
-     }
-
-   return swap_mode;
-}
-
 static void *
 eng_setup(void *in, unsigned int w, unsigned int h)
 {
@@ -1691,7 +1624,7 @@ eng_setup(void *in, unsigned int w, unsigned int h)
    Render_Engine_Swap_Mode swap_mode;
    const char *s;
 
-   swap_mode = _eng_swap_mode_get(info->swap_mode);
+   swap_mode = evas_render_engine_gl_swap_mode_get(info->swap_mode);
 
    // Set this env var to dump files every frame
    // Or set the global var in gdb to 1|0 to turn it on and off
@@ -1818,7 +1751,7 @@ eng_update(void *data, void *in, unsigned int w, unsigned 
int h)
    Render_Engine *re = data;
    Render_Engine_Swap_Mode swap_mode;
 
-   swap_mode = _eng_swap_mode_get(info->swap_mode);
+   swap_mode = evas_render_engine_gl_swap_mode_get(info->swap_mode);
 
    if (eng_get_ob(re) && _re_wincheck(eng_get_ob(re)))
      {
diff --git 
a/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h 
b/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
index 05863cd..ee85165 100644
--- a/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
+++ b/src/modules/evas/engines/software_generic/Evas_Engine_Software_Generic.h
@@ -1,6 +1,8 @@
 #ifndef EVAS_ENGINE_SOFTWARE_GENERIC_H_
 # define EVAS_ENGINE_SOFTWARE_GENERIC_H_
 
+#include "Evas_Engine_Software_Shared.h"
+
 typedef enum _Outbuf_Depth
 {
    OUTBUF_DEPTH_NONE,
@@ -25,16 +27,6 @@ typedef enum _Outbuf_Depth
 
 typedef enum 
 {
-   MODE_FULL,
-   MODE_COPY,
-   MODE_DOUBLE,
-   MODE_TRIPLE,
-   MODE_QUADRUPLE,
-   MODE_AUTO
-} Render_Engine_Swap_Mode;
-
-typedef enum 
-{
    MERGE_BOUNDING,
    MERGE_FULL,
    MERGE_SMART

-- 


Reply via email to