X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fgraphics%2Fgles%2Fegl-implementation.cpp;h=76fa78a62b542c5f900fd721a4c43f5ca985f18d;hb=0e542d2c071b28da232aa2827a18935a01592484;hp=d27fc942142023292eaa3f2dfc61b8912975a69e;hpb=9b00c6f7a71351551191e242de00aa89b360ffa9;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/dali/internal/graphics/gles/egl-implementation.cpp b/dali/internal/graphics/gles/egl-implementation.cpp index d27fc94..76fa78a 100755 --- a/dali/internal/graphics/gles/egl-implementation.cpp +++ b/dali/internal/graphics/gles/egl-implementation.cpp @@ -147,17 +147,6 @@ bool EglImplementation::CreateContext() DALI_ASSERT_ALWAYS( (mEglContext == 0) && "EGL context recreated" ); mEglContext = eglCreateContext(mEglDisplay, mEglConfig, NULL, &(mContextAttribs[0])); - if ( eglGetError() != EGL_SUCCESS ) - { - if( mGlesVersion >= 30 ) - { - eglDestroySurface( mEglDisplay, mEglContext ); - mEglContext = NULL; - mEglConfig = NULL; - DALI_LOG_ERROR("Fail to use OpenGL es 3.0. Retrying to use OpenGL es 2.0."); - return false; - } - } TEST_EGL_ERROR("eglCreateContext render thread"); DALI_ASSERT_ALWAYS( EGL_NO_CONTEXT != mEglContext && "EGL context not created" ); @@ -222,10 +211,7 @@ void EglImplementation::MakeContextCurrent( EGLSurface eglSurface, EGLContext eg if(mIsOwnSurface) { - if( mCurrentEglContext != EGL_NO_CONTEXT ) - { - glFinish(); - } + glFinish(); eglMakeCurrent( mEglDisplay, eglSurface, eglSurface, eglContext ); @@ -254,10 +240,7 @@ void EglImplementation::MakeCurrent( EGLNativePixmapType pixmap, EGLSurface eglS if(mIsOwnSurface) { - if( mCurrentEglContext != EGL_NO_CONTEXT ) - { - glFinish(); - } + glFinish(); eglMakeCurrent( mEglDisplay, eglSurface, eglSurface, mEglContext ); @@ -343,6 +326,8 @@ bool EglImplementation::ChooseConfig( bool isWindowType, ColorDepth depth ) return true; } + bool isTransparent = ( depth == COLOR_DEPTH_32 ); + mColorDepth = depth; mIsWindow = isWindowType; @@ -365,7 +350,11 @@ bool EglImplementation::ChooseConfig( bool isWindowType, ColorDepth depth ) if( mGlesVersion >= 30 ) { +#ifdef _ARCH_ARM_ configAttribs.PushBack( EGL_OPENGL_ES3_BIT_KHR ); +#else + configAttribs.PushBack( EGL_OPENGL_ES2_BIT ); +#endif // _ARCH_ARM_ } else { @@ -383,10 +372,18 @@ bool EglImplementation::ChooseConfig( bool isWindowType, ColorDepth depth ) configAttribs.PushBack( EGL_BLUE_SIZE ); configAttribs.PushBack( 8 ); - // In the previous code, there was a branch for ARM. - // If there is an issue in only ARM, we need to check here again. - configAttribs.PushBack( EGL_ALPHA_SIZE ); - configAttribs.PushBack( 8 ); + if ( isTransparent ) + { + configAttribs.PushBack( EGL_ALPHA_SIZE ); +#ifdef _ARCH_ARM_ + // For underlay video playback, we also need to set the alpha value of the 24/32bit window. + configAttribs.PushBack( 8 ); +#else + // There is a bug in the desktop emulator + // setting EGL_ALPHA_SIZE to 8 results in eglChooseConfig failing + configAttribs.PushBack( 8 ); +#endif // _ARCH_ARM_ + } configAttribs.PushBack( EGL_DEPTH_SIZE ); configAttribs.PushBack( mDepthBufferRequired ? 24 : 0 ); @@ -412,7 +409,7 @@ bool EglImplementation::ChooseConfig( bool isWindowType, ColorDepth depth ) if( mGlesVersion >= 30 ) { mEglConfig = NULL; - DALI_LOG_ERROR("Fail to use OpenGL es 3.0. Retrying to use OpenGL es 2.0."); + DALI_LOG_ERROR("Fail to use OpenGL es 3.0. Retring to use OpenGL es 2.0."); return false; }