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

Unified Diff: ui/gfx/gl/gl_surface_egl.h

Issue 6839008: Split EGLContext in GLContextEGL and GLSurfaceEGL. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/gl/gl_surface.cc ('k') | ui/gfx/gl/gl_surface_egl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/gl/gl_surface_egl.h
===================================================================
--- ui/gfx/gl/gl_surface_egl.h (revision 80956)
+++ ui/gfx/gl/gl_surface_egl.h (working copy)
@@ -2,118 +2,79 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef UI_GFX_GL_GL_CONTEXT_EGL_H_
-#define UI_GFX_GL_GL_CONTEXT_EGL_H_
+#ifndef UI_GFX_GL_GL_SURFACE_EGL_H_
+#define UI_GFX_GL_GL_SURFACE_EGL_H_
#pragma once
-#include "base/memory/ref_counted.h"
-#include "ui/gfx/gl/gl_context.h"
+#include "ui/gfx/gl/gl_surface.h"
#include "ui/gfx/size.h"
+typedef void* EGLConfig;
typedef void* EGLDisplay;
-typedef void* EGLContext;
typedef void* EGLSurface;
namespace gfx {
-// Takes ownership of an EGL surface and reference counts it so it can be shared
-// by multiple EGL contexts and destroyed with the last.
-class SharedEGLSurface : public base::RefCounted<SharedEGLSurface> {
+// Interface for EGL contexts.
+class GLSurfaceEGL : public GLSurface {
public:
- explicit SharedEGLSurface(EGLSurface surface);
- ~SharedEGLSurface();
+ GLSurfaceEGL();
+ virtual ~GLSurfaceEGL();
- EGLSurface egl_surface() const;
-
- private:
- EGLSurface surface_;
- DISALLOW_COPY_AND_ASSIGN(SharedEGLSurface);
-};
-
-// Interface for EGL contexts. Adds an EGL specific accessor for retreiving
-// the surface.
-class BaseEGLContext : public GLContext {
- public:
- BaseEGLContext() {}
- virtual ~BaseEGLContext() {}
-
static bool InitializeOneOff();
-
static EGLDisplay GetDisplay();
+ static EGLConfig GetConfig();
- // Get the associated EGL surface.
- virtual SharedEGLSurface* GetSurface() = 0;
-
- // Implement GLContext.
- virtual std::string GetExtensions();
-
private:
- DISALLOW_COPY_AND_ASSIGN(BaseEGLContext);
+ DISALLOW_COPY_AND_ASSIGN(GLSurfaceEGL);
};
-// Encapsulates an EGL OpenGL ES context that renders to a view.
-class NativeViewEGLContext : public BaseEGLContext {
+// Encapsulates an EGL surface bound to a view.
+class NativeViewGLSurfaceEGL : public GLSurfaceEGL {
public:
- explicit NativeViewEGLContext(void* window);
- virtual ~NativeViewEGLContext();
+ explicit NativeViewGLSurfaceEGL(void* window);
+ virtual ~NativeViewGLSurfaceEGL();
// Initialize an EGL context.
bool Initialize();
- // Implement GLContext.
+ // Implement GLSurface.
virtual void Destroy();
- virtual bool MakeCurrent();
- virtual bool IsCurrent();
virtual bool IsOffscreen();
virtual bool SwapBuffers();
virtual gfx::Size GetSize();
- virtual void* GetHandle();
- virtual void SetSwapInterval(int interval);
+ virtual EGLSurface GetHandle();
- // Implement BaseEGLContext.
- virtual SharedEGLSurface* GetSurface();
-
private:
void* window_;
- scoped_refptr<SharedEGLSurface> surface_;
- EGLContext context_;
+ EGLSurface surface_;
- DISALLOW_COPY_AND_ASSIGN(NativeViewEGLContext);
+ DISALLOW_COPY_AND_ASSIGN(NativeViewGLSurfaceEGL);
};
-// Encapsulates an EGL OpenGL ES context intended for offscreen use. It is
-// actually associated with a native window or a pbuffer on supporting platforms
-// and will render to it. The caller must bind an FBO to prevent this.
-// TODO(apatrick): implement pbuffers in ANGLE and change this to
-// PbufferEGLContext and use it on all EGL platforms.
-class SecondaryEGLContext : public BaseEGLContext {
+// Encapsulates a pbuffer EGL surface.
+class PbufferGLSurfaceEGL : public GLSurfaceEGL {
public:
- SecondaryEGLContext();
- virtual ~SecondaryEGLContext();
+ explicit PbufferGLSurfaceEGL(const gfx::Size& size);
+ virtual ~PbufferGLSurfaceEGL();
// Initialize an EGL context that shares a namespace with another.
- bool Initialize(GLContext* shared_context);
+ bool Initialize();
- // Implement GLContext.
+ // Implement GLSurface.
virtual void Destroy();
- virtual bool MakeCurrent();
- virtual bool IsCurrent();
virtual bool IsOffscreen();
virtual bool SwapBuffers();
virtual gfx::Size GetSize();
- virtual void* GetHandle();
- virtual void SetSwapInterval(int interval);
+ virtual EGLSurface GetHandle();
- // Implement BaseEGLContext.
- virtual SharedEGLSurface* GetSurface();
-
private:
- scoped_refptr<SharedEGLSurface> surface_;
- EGLContext context_;
+ gfx::Size size_;
+ EGLSurface surface_;
- DISALLOW_COPY_AND_ASSIGN(SecondaryEGLContext);
+ DISALLOW_COPY_AND_ASSIGN(PbufferGLSurfaceEGL);
};
} // namespace gfx
-#endif // UI_GFX_GL_GL_CONTEXT_EGL_H_
+#endif // UI_GFX_GL_GL_SURFACE_EGL_H_
« no previous file with comments | « ui/gfx/gl/gl_surface.cc ('k') | ui/gfx/gl/gl_surface_egl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698