[4.0] Support EGL_DONT_CARE for multi-sampling level
[platform/core/uifw/dali-adaptor.git] / adaptors / common / gl / egl-factory.cpp
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include "egl-factory.h"
20
21 // INTERNAL INCLUDES
22 #include <gl/egl-implementation.h>
23 #include <gl/egl-image-extensions.h>
24 #include <gl/egl-sync-implementation.h>
25
26 namespace Dali
27 {
28 namespace Internal
29 {
30 namespace Adaptor
31 {
32
33 EglFactory::EglFactory( int multiSamplingLevel )
34 : mEglImplementation(NULL),
35   mEglImageExtensions(NULL),
36   mEglSync(new EglSyncImplementation), // Created early, as needed by Core constructor
37   mMultiSamplingLevel( multiSamplingLevel )
38 {
39 }
40
41 EglFactory::~EglFactory()
42 {
43   // Ensure the EGL implementation is destroyed
44   delete mEglImageExtensions;
45   delete mEglImplementation;
46   delete mEglSync;
47 }
48
49 EglInterface* EglFactory::Create()
50 {
51   // Created by RenderThread (After Core construction)
52   mEglImplementation = new EglImplementation( mMultiSamplingLevel );
53   mEglImageExtensions = new EglImageExtensions( mEglImplementation );
54
55   mEglSync->Initialize(mEglImplementation); // The sync impl needs the EglDisplay
56   return mEglImplementation;
57 }
58
59 void EglFactory::Destroy()
60 {
61   delete mEglImageExtensions;
62   mEglImageExtensions = NULL;
63   delete mEglImplementation;
64   mEglImplementation = NULL;
65 }
66
67 EglInterface* EglFactory::GetImplementation()
68 {
69   return mEglImplementation;
70 }
71
72 EglImageExtensions* EglFactory::GetImageExtensions()
73 {
74   return mEglImageExtensions;
75 }
76
77 EglSyncImplementation* EglFactory::GetSyncImplementation()
78 {
79   return mEglSync;
80 }
81
82 } // Adaptor
83 } // Internal
84 } // Dali