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

Unified Diff: ui/ozone/public/surface_factory_ozone.h

Issue 2122243002: Add new Ozone surface API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gl_egl
Patch Set: Even more deps. Created 4 years, 5 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/ozone/ozone.gyp ('k') | ui/ozone/public/surface_factory_ozone.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/public/surface_factory_ozone.h
diff --git a/ui/ozone/public/surface_factory_ozone.h b/ui/ozone/public/surface_factory_ozone.h
index 46a69755c3d2d0ae82bdd552a7be4a5e133c8b1f..0522b45bdf049ec77346c1e1d8f6dc77c6b934af 100644
--- a/ui/ozone/public/surface_factory_ozone.h
+++ b/ui/ozone/public/surface_factory_ozone.h
@@ -12,11 +12,14 @@
#include "base/callback.h"
#include "base/macros.h"
+#include "base/memory/ref_counted.h"
#include "base/native_library.h"
#include "ui/gfx/buffer_types.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/native_widget_types.h"
#include "ui/gfx/overlay_transform.h"
+#include "ui/gl/gl_implementation.h"
+#include "ui/gl/gl_surface.h"
#include "ui/ozone/ozone_base_export.h"
#include "ui/ozone/public/native_pixmap.h"
@@ -28,22 +31,24 @@ class SurfaceOzoneEGL;
// The Ozone interface allows external implementations to hook into Chromium to
// provide a system specific implementation. The Ozone interface supports two
-// drawing modes: 1) accelerated drawing through EGL and 2) software drawing
+// drawing modes: 1) accelerated drawing using GL and 2) software drawing
// through Skia.
//
-// If you want to paint on a window with ozone, you need to create a
-// SurfaceOzoneEGL or SurfaceOzoneCanvas for that window. The platform can
-// support software, EGL, or both for painting on the window.
-// The following functionality is specific to the drawing mode and may not have
-// any meaningful implementation in the other mode. An implementation must
-// provide functionality for at least one mode.
+// If you want to paint on a window with ozone, you need to create a GLSurface
+// or SurfaceOzoneCanvas for that window. The platform can support software, GL,
+// or both for painting on the window. The following functionality is specific
+// to the drawing mode and may not have any meaningful implementation in the
+// other mode. An implementation must provide functionality for at least one
+// mode.
//
-// 1) Accelerated Drawing (EGL path):
+// 1) Accelerated Drawing (GL path):
//
-// The following functions are specific to EGL:
-// - GetNativeDisplay
-// - LoadEGLGLES2Bindings
-// - CreateEGLSurfaceForWidget
+// The following functions are specific to GL:
+// - GetNativeDisplay (EGL only)
+// - LoadEGLGLES2Bindings (EGL only)
+// - CreateViewGLSurface (all GL implementations)
+// - CreateSurfacelessViewGLSurface (EGL only)
+// - CreateOffscreenGLSurface (all GL implementations)
//
// 2) Software Drawing (Skia):
//
@@ -66,6 +71,28 @@ class OZONE_BASE_EXPORT SurfaceFactoryOzone {
// display connection for the native display.
virtual intptr_t GetNativeDisplay();
+ // Checks if platform uses the new surface creation API.
+ // TODO(kylechar): Delete when using all implementations use new surface API.
+ virtual bool UseNewSurfaceAPI();
+
+ // Creates a GL surface that renders directly to a view for the specified GL
+ // implementation.
+ virtual scoped_refptr<gl::GLSurface> CreateViewGLSurface(
+ gl::GLImplementation implementation,
+ gfx::AcceleratedWidget widget);
+
+ // Creates a GL surface that renders directly into a window with surfaceless
+ // semantics for the specified GL implementation.
+ virtual scoped_refptr<gl::GLSurface> CreateSurfacelessViewGLSurface(
+ gl::GLImplementation implementation,
+ gfx::AcceleratedWidget widget);
+
+ // Creates a GL surface used for offscreen rendering for the specified GL
+ // implementation.
+ virtual scoped_refptr<gl::GLSurface> CreateOffscreenGLSurface(
+ gl::GLImplementation implementation,
+ const gfx::Size& size);
+
// Create SurfaceOzoneEGL for the specified gfx::AcceleratedWidget.
//
// Note: When used from content, this is called in the GPU process. The
« no previous file with comments | « ui/ozone/ozone.gyp ('k') | ui/ozone/public/surface_factory_ozone.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698