jpeg pushed a commit to branch master.

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

commit ce21e513d5a86dbcf3ff4f72c131c763d67a04ec
Author: Jean-Philippe Andre <jp.an...@samsung.com>
Date:   Fri Dec 11 11:32:06 2015 +0900

    Evas GL: Avoid confusing ERR message when requesting depth & stencil
    
    An ERR message would be printed out mentionning that direct rendering
    won't work on this window, even if DR was not requested.
    Also, set the DR-specific flags only if DR is enabled.
    
    See T2936.
---
 src/modules/evas/engines/gl_common/evas_gl_core.c | 108 ++++++++++++----------
 1 file changed, 59 insertions(+), 49 deletions(-)

diff --git a/src/modules/evas/engines/gl_common/evas_gl_core.c 
b/src/modules/evas/engines/gl_common/evas_gl_core.c
index 633f54a..2059957 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_core.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_core.c
@@ -1330,7 +1330,6 @@ _internal_config_set(void *eng_data, EVGL_Surface *sfc, 
Evas_GL_Config *cfg)
    int color_bit = 0, depth_bit = 0, stencil_bit = 0, msaa_samples = 0;
    int depth_size = 0;
    int native_win_depth = 0, native_win_stencil = 0, native_win_msaa = 0;
-   Eina_Bool support_win_cfg = 1;
 
    // Check if engine is valid
    if (!evgl_engine)
@@ -1384,58 +1383,69 @@ try_again:
              sfc->msaa_samples      = evgl_engine->caps.fbo_fmts[i].samples;
 
              // Direct Rendering Option
-             if (evgl_engine->funcs->native_win_surface_config_get)
-               evgl_engine->funcs->native_win_surface_config_get(eng_data, 
&native_win_depth, &native_win_stencil, &native_win_msaa);
-             if ((native_win_depth >= depth_size)
-                 && (native_win_stencil >= stencil_bit)
-                 && (native_win_msaa >= msaa_samples))
+             if (cfg->options_bits & EVAS_GL_OPTIONS_DIRECT)
                {
-                  DBG("Win cfg can support the Req Evas GL's config 
successfully");
-                  support_win_cfg = EINA_TRUE;
-               }
-             else
-               {
-                  ERR("Win cfg can't support Evas GL DR, win: [depth %d, 
stencil %d, msaa %d] "
-                      "want: [depth %d, stencil %d, msaa %d]",
-                      native_win_depth, native_win_stencil, native_win_msaa,
-                      depth_size, stencil_bit, msaa_samples);
-                  support_win_cfg = EINA_FALSE;
-               }
+                  Eina_Bool support_win_cfg = EINA_FALSE;
 
-             if ((sfc->direct_override) || support_win_cfg)
-               sfc->direct_fb_opt = !!(cfg->options_bits & 
EVAS_GL_OPTIONS_DIRECT);
-             else if (cfg->options_bits & EVAS_GL_OPTIONS_DIRECT)
-               {
-                  const char *s1[] = { "", ":depth8", ":depth16", ":depth24", 
":depth32" };
-                  const char *s2[] = { "", ":stencil1", ":stencil2", 
":stencil4", ":stencil8", ":stencil16" };
-                  const char *s3[] = { "", ":msaa_low", ":msaa_mid", 
":msaa_high" };
-                  INF("Can not enable direct rendering with depth %d, stencil 
%d "
-                      "and MSAA %d. When using Elementary GLView, try to call "
-                      "elm_config_accel_preference_set(\"opengl%s%s%s\") 
before "
-                      "creating any window.",
-                      depth_size, stencil_bit, msaa_samples,
-                      s1[cfg->depth_bits], s2[cfg->stencil_bits], 
s3[cfg->multisample_bits]);
-               }
+                  if (evgl_engine->funcs->native_win_surface_config_get)
+                    
evgl_engine->funcs->native_win_surface_config_get(eng_data, &native_win_depth, 
&native_win_stencil, &native_win_msaa);
+                  if ((native_win_depth >= depth_size)
+                      && (native_win_stencil >= stencil_bit)
+                      && (native_win_msaa >= msaa_samples))
+                    {
+                       DBG("Win cfg can support the Req Evas GL's config 
successfully");
+                       support_win_cfg = EINA_TRUE;
+                    }
+                  else
+                    {
+                       ERR("Win config can't support Evas GL direct rendering, 
"
+                           "win: [depth %d, stencil %d, msaa %d] "
+                           "want: [depth %d, stencil %d, msaa %d]. %s",
+                           native_win_depth, native_win_stencil, 
native_win_msaa,
+                           depth_size, stencil_bit, msaa_samples,
+                           sfc->direct_override ?
+                              "Forcing direct rendering anyway." :
+                              "Falling back to indirect rendering (FBO).");
+                       support_win_cfg = EINA_FALSE;
+                    }
 
-             // When direct rendering is enabled, FBO configuration should 
match
-             // window surface configuration as FBO will be used in fallback 
cases.
-             // So we search again for the formats that match window surface's.
-             if (sfc->direct_fb_opt &&
-                 ((native_win_depth != depth_size) ||
-                  (native_win_stencil != stencil_bit) ||
-                  (native_win_msaa != msaa_samples)))
-               {
-                  if (native_win_depth < 8) depth_bit = 0;
-                  else depth_bit = (1 << ((native_win_depth / 8) - 1));
-                  depth_size = native_win_depth;
-                  stencil_bit = native_win_stencil;
-                  msaa_samples = native_win_msaa;
-                  goto try_again;
-               }
+                  if (sfc->direct_override || support_win_cfg)
+                    {
+                       sfc->direct_fb_opt = EINA_TRUE;
 
-             // Extra flags for direct rendering
-             sfc->client_side_rotation = !!(cfg->options_bits & 
EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION);
-             sfc->alpha = (cfg->color_format == EVAS_GL_RGBA_8888);
+                       // Extra flags for direct rendering
+                       sfc->client_side_rotation = !!(cfg->options_bits & 
EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION);
+                       sfc->alpha = (cfg->color_format == EVAS_GL_RGBA_8888);
+                    }
+                  else
+                    {
+                       const char *s1[] = { "", ":depth8", ":depth16", 
":depth24", ":depth32" };
+                       const char *s2[] = { "", ":stencil1", ":stencil2", 
":stencil4", ":stencil8", ":stencil16" };
+                       const char *s3[] = { "", ":msaa_low", ":msaa_mid", 
":msaa_high" };
+                       INF("Can not enable direct rendering with depth %d, 
stencil %d "
+                           "and MSAA %d. When using Elementary GLView, try to 
call "
+                           "elm_config_accel_preference_set(\"opengl%s%s%s\") 
before "
+                           "creating any window.",
+                           depth_size, stencil_bit, msaa_samples,
+                           s1[cfg->depth_bits], s2[cfg->stencil_bits], 
s3[cfg->multisample_bits]);
+                    }
+
+                  // When direct rendering is enabled, FBO configuration 
should match
+                  // window surface configuration as FBO will be used in 
fallback cases.
+                  // So we search again for the formats that match window 
surface's.
+                  if (sfc->direct_fb_opt &&
+                      ((native_win_depth != depth_size) ||
+                       (native_win_stencil != stencil_bit) ||
+                       (native_win_msaa != msaa_samples)))
+                    {
+                       if (native_win_depth < 8) depth_bit = 0;
+                       else depth_bit = (1 << ((native_win_depth / 8) - 1));
+                       depth_size = native_win_depth;
+                       stencil_bit = native_win_stencil;
+                       msaa_samples = native_win_msaa;
+                       goto try_again;
+                    }
+               }
 
              cfg_index = i;
              break;

-- 


Reply via email to