Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(349)

Side by Side Diff: ui/gl/gl_surface_egl.h

Issue 2616723002: Refactor GL surface format handling (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_GL_GL_SURFACE_EGL_H_ 5 #ifndef UI_GL_GL_SURFACE_EGL_H_
6 #define UI_GL_GL_SURFACE_EGL_H_ 6 #define UI_GL_GL_SURFACE_EGL_H_
7 7
8 #if defined(OS_WIN) 8 #if defined(OS_WIN)
9 #include <windows.h> 9 #include <windows.h>
10 #endif 10 #endif
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 }; 68 };
69 69
70 // Interface for EGL surface. 70 // Interface for EGL surface.
71 class GL_EXPORT GLSurfaceEGL : public GLSurface { 71 class GL_EXPORT GLSurfaceEGL : public GLSurface {
72 public: 72 public:
73 GLSurfaceEGL(); 73 GLSurfaceEGL();
74 74
75 // Implement GLSurface. 75 // Implement GLSurface.
76 EGLDisplay GetDisplay() override; 76 EGLDisplay GetDisplay() override;
77 EGLConfig GetConfig() override; 77 EGLConfig GetConfig() override;
78 GLSurface::Format GetFormat() override; 78 GLSurfaceFormat GetFormat() override;
79 79
80 static bool InitializeOneOff(EGLNativeDisplayType native_display); 80 static bool InitializeOneOff(EGLNativeDisplayType native_display);
81 static void ShutdownOneOff(); 81 static void ShutdownOneOff();
82 static EGLDisplay GetHardwareDisplay(); 82 static EGLDisplay GetHardwareDisplay();
83 static EGLDisplay InitializeDisplay(EGLNativeDisplayType native_display); 83 static EGLDisplay InitializeDisplay(EGLNativeDisplayType native_display);
84 static EGLNativeDisplayType GetNativeDisplay(); 84 static EGLNativeDisplayType GetNativeDisplay();
85 85
86 // These aren't particularly tied to surfaces, but since we already 86 // These aren't particularly tied to surfaces, but since we already
87 // have the static InitializeOneOff here, it's easiest to reuse its 87 // have the static InitializeOneOff here, it's easiest to reuse its
88 // initialization guards. 88 // initialization guards.
89 static const char* GetEGLExtensions(); 89 static const char* GetEGLExtensions();
90 static bool HasEGLExtension(const char* name); 90 static bool HasEGLExtension(const char* name);
91 static bool IsCreateContextRobustnessSupported(); 91 static bool IsCreateContextRobustnessSupported();
92 static bool IsCreateContextBindGeneratesResourceSupported(); 92 static bool IsCreateContextBindGeneratesResourceSupported();
93 static bool IsCreateContextWebGLCompatabilitySupported(); 93 static bool IsCreateContextWebGLCompatabilitySupported();
94 static bool IsEGLSurfacelessContextSupported(); 94 static bool IsEGLSurfacelessContextSupported();
95 static bool IsDirectCompositionSupported(); 95 static bool IsDirectCompositionSupported();
96 96
97 protected: 97 protected:
98 ~GLSurfaceEGL() override; 98 ~GLSurfaceEGL() override;
99 99
100 EGLConfig config_ = nullptr; 100 EGLConfig config_ = nullptr;
101 GLSurface::Format format_ = GLSurface::SURFACE_DEFAULT; 101 GLSurfaceFormat format_;
102 102
103 private: 103 private:
104 DISALLOW_COPY_AND_ASSIGN(GLSurfaceEGL); 104 DISALLOW_COPY_AND_ASSIGN(GLSurfaceEGL);
105 static bool initialized_; 105 static bool initialized_;
106 }; 106 };
107 107
108 // Encapsulates an EGL surface bound to a view. 108 // Encapsulates an EGL surface bound to a view.
109 class GL_EXPORT NativeViewGLSurfaceEGL : public GLSurfaceEGL { 109 class GL_EXPORT NativeViewGLSurfaceEGL : public GLSurfaceEGL {
110 public: 110 public:
111 explicit NativeViewGLSurfaceEGL(EGLNativeWindowType window); 111 explicit NativeViewGLSurfaceEGL(EGLNativeWindowType window);
112 112
113 // Implement GLSurface. 113 // Implement GLSurface.
114 using GLSurfaceEGL::Initialize; 114 using GLSurfaceEGL::Initialize;
115 bool Initialize(GLSurface::Format format) override; 115 bool Initialize(GLSurfaceFormat format) override;
116 void Destroy() override; 116 void Destroy() override;
117 bool Resize(const gfx::Size& size, 117 bool Resize(const gfx::Size& size,
118 float scale_factor, 118 float scale_factor,
119 bool has_alpha) override; 119 bool has_alpha) override;
120 bool Recreate() override; 120 bool Recreate() override;
121 bool IsOffscreen() override; 121 bool IsOffscreen() override;
122 gfx::SwapResult SwapBuffers() override; 122 gfx::SwapResult SwapBuffers() override;
123 gfx::Size GetSize() override; 123 gfx::Size GetSize() override;
124 EGLSurface GetHandle() override; 124 EGLSurface GetHandle() override;
125 bool SupportsSwapBuffersWithDamage() override; 125 bool SupportsSwapBuffersWithDamage() override;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 184
185 DISALLOW_COPY_AND_ASSIGN(NativeViewGLSurfaceEGL); 185 DISALLOW_COPY_AND_ASSIGN(NativeViewGLSurfaceEGL);
186 }; 186 };
187 187
188 // Encapsulates a pbuffer EGL surface. 188 // Encapsulates a pbuffer EGL surface.
189 class GL_EXPORT PbufferGLSurfaceEGL : public GLSurfaceEGL { 189 class GL_EXPORT PbufferGLSurfaceEGL : public GLSurfaceEGL {
190 public: 190 public:
191 explicit PbufferGLSurfaceEGL(const gfx::Size& size); 191 explicit PbufferGLSurfaceEGL(const gfx::Size& size);
192 192
193 // Implement GLSurface. 193 // Implement GLSurface.
194 bool Initialize() override; 194 bool Initialize(GLSurfaceFormat format) override;
195 bool Initialize(GLSurface::Format format) override;
196 void Destroy() override; 195 void Destroy() override;
197 bool IsOffscreen() override; 196 bool IsOffscreen() override;
198 gfx::SwapResult SwapBuffers() override; 197 gfx::SwapResult SwapBuffers() override;
199 gfx::Size GetSize() override; 198 gfx::Size GetSize() override;
200 bool Resize(const gfx::Size& size, 199 bool Resize(const gfx::Size& size,
201 float scale_factor, 200 float scale_factor,
202 bool has_alpha) override; 201 bool has_alpha) override;
203 EGLSurface GetHandle() override; 202 EGLSurface GetHandle() override;
204 void* GetShareHandle() override; 203 void* GetShareHandle() override;
205 204
206 protected: 205 protected:
207 ~PbufferGLSurfaceEGL() override; 206 ~PbufferGLSurfaceEGL() override;
208 207
209 private: 208 private:
210 gfx::Size size_; 209 gfx::Size size_;
211 EGLSurface surface_; 210 EGLSurface surface_;
212 211
213 DISALLOW_COPY_AND_ASSIGN(PbufferGLSurfaceEGL); 212 DISALLOW_COPY_AND_ASSIGN(PbufferGLSurfaceEGL);
214 }; 213 };
215 214
216 // SurfacelessEGL is used as Offscreen surface when platform supports 215 // SurfacelessEGL is used as Offscreen surface when platform supports
217 // KHR_surfaceless_context and GL_OES_surfaceless_context. This would avoid the 216 // KHR_surfaceless_context and GL_OES_surfaceless_context. This would avoid the
218 // need to create a dummy EGLsurface in case we render to client API targets. 217 // need to create a dummy EGLsurface in case we render to client API targets.
219 class GL_EXPORT SurfacelessEGL : public GLSurfaceEGL { 218 class GL_EXPORT SurfacelessEGL : public GLSurfaceEGL {
220 public: 219 public:
221 explicit SurfacelessEGL(const gfx::Size& size); 220 explicit SurfacelessEGL(const gfx::Size& size);
222 221
223 // Implement GLSurface. 222 // Implement GLSurface.
224 bool Initialize() override; 223 bool Initialize(GLSurfaceFormat format) override;
225 bool Initialize(GLSurface::Format format) override;
226 void Destroy() override; 224 void Destroy() override;
227 bool IsOffscreen() override; 225 bool IsOffscreen() override;
228 bool IsSurfaceless() const override; 226 bool IsSurfaceless() const override;
229 gfx::SwapResult SwapBuffers() override; 227 gfx::SwapResult SwapBuffers() override;
230 gfx::Size GetSize() override; 228 gfx::Size GetSize() override;
231 bool Resize(const gfx::Size& size, 229 bool Resize(const gfx::Size& size,
232 float scale_factor, 230 float scale_factor,
233 bool has_alpha) override; 231 bool has_alpha) override;
234 EGLSurface GetHandle() override; 232 EGLSurface GetHandle() override;
235 void* GetShareHandle() override; 233 void* GetShareHandle() override;
236 234
237 protected: 235 protected:
238 ~SurfacelessEGL() override; 236 ~SurfacelessEGL() override;
239 237
240 private: 238 private:
241 gfx::Size size_; 239 gfx::Size size_;
242 DISALLOW_COPY_AND_ASSIGN(SurfacelessEGL); 240 DISALLOW_COPY_AND_ASSIGN(SurfacelessEGL);
243 }; 241 };
244 242
245 } // namespace gl 243 } // namespace gl
246 244
247 #endif // UI_GL_GL_SURFACE_EGL_H_ 245 #endif // UI_GL_GL_SURFACE_EGL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698