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

Unified Diff: apps/moterm/gl_helper.h

Issue 1556683004: Port Moterm to Mozart. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-16
Patch Set: fix nits Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « apps/moterm/BUILD.gn ('k') | apps/moterm/gl_helper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: apps/moterm/gl_helper.h
diff --git a/apps/moterm/gl_helper.h b/apps/moterm/gl_helper.h
deleted file mode 100644
index a1818157fa126e26a96f4ed823a7a6d8125fe012..0000000000000000000000000000000000000000
--- a/apps/moterm/gl_helper.h
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef APPS_MOTERM_GL_HELPER_H_
-#define APPS_MOTERM_GL_HELPER_H_
-
-#include <GLES2/gl2.h>
-#include <MGL/mgl_types.h>
-
-#include <deque>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "mojo/public/cpp/bindings/binding.h"
-#include "mojo/services/geometry/interfaces/geometry.mojom.h"
-#include "mojo/services/gpu/interfaces/gpu.mojom.h"
-#include "mojo/services/surfaces/interfaces/surface_id.mojom.h"
-#include "mojo/services/surfaces/interfaces/surfaces.mojom.h"
-
-namespace mojo {
-class Shell;
-}
-
-// A class that helps with drawing surfaces using GL.
-class GlHelper : public mojo::ResourceReturner {
- public:
- class Client {
- public:
- // Called when the surface ID changes (including the first time it becomes
- // available).
- virtual void OnSurfaceIdChanged(mojo::SurfaceIdPtr surface_id) = 0;
-
- // Called when the GL context is lost.
- virtual void OnContextLost() = 0;
-
- // Called when the frame with ID |frame_id| (from |EndFrame()|) is drawn for
- // the first time. Use this to rate-limit draws.
- virtual void OnFrameDisplayed(uint32_t frame_id) = 0;
- };
-
- // Both |client| and |shell| must outlive us. |texture_format| is the texture
- // format to use, e.g., |GL_RGBA| or |GL_BGRA_EXT|. |flipped| means that the
- // texture is in the usual GL orientation (origin at lower-left). This object
- // will create a surface (of initial size |initial_size|), and call the
- // client's |OnSurfaceIdChanged()| when it has a surface ID for it (which the
- // client can then provide to its |View|).
- GlHelper(Client* client,
- mojo::Shell* shell,
- GLint texture_format,
- bool flipped,
- const mojo::Size& initial_size);
- ~GlHelper() override;
-
- // Sets the size of the surface. (The surface will only be created at this
- // size lazily at the next |StartFrame()|.)
- void SetSurfaceSize(const mojo::Size& surface_size);
-
- // Ensures that a GL context is available and makes it current. (Note that
- // this is automatically called by |StartFrame()|, so this is mostly useful
- // for creating GL resources outside |StartFrame()|/|EndFrame()|.
- void MakeCurrent();
-
- // Starts a frame; makes an appropriate GL context current, and binds a
- // texture of the current size (creating it if necessary), returning its ID.
- // Between |StartFrame()| and |EndFrame()|, the run loop must not be run and
- // no other methods of this object other than |MakeCurrent()| and
- // |GetFrameTexture()| may be called. This object must not be destroyed after
- // |StartFrame()| before calling |EndFrame()|.
- void StartFrame();
- // Completes the current frame (started using |StartFrame()|). Before calling
- // this, the frame's texture must be bound and the GL context must be current.
- // (This is the default state after |StartFrame()|, so nothing has to be done
- // unless another texture is bound or another GL context is made current,
- // respectively.) Returns an ID for this frame (which will be given to the
- // client on |OnFrameDisplayed()|).
- uint32_t EndFrame();
-
- // Gets the texture that will be used for the current frame, e.g., so that it
- // may be (re)bound. Only valid between |StartFrame()| and |EndFrame()|. (Note
- // that this texture is automatically bound by |StartFrame()|, so this is
- // typically only needed if another texture is bound.)
- GLuint GetFrameTexture();
-
- private:
- struct TextureInfo {
- TextureInfo(uint32_t resource_id, GLuint texture, const mojo::Size& size)
- : resource_id(resource_id), texture(texture), size(size) {}
-
- // Only interesting if it's pending return.
- uint32_t resource_id;
- GLuint texture;
- mojo::Size size;
- };
-
- // |mojo::ResourceReturner|:
- void ReturnResources(
- mojo::Array<mojo::ReturnedResourcePtr> resources) override;
-
- // Ensures that we have a GL context and that it is current.
- void EnsureContext();
-
- // Ensures that we have a surface of the appropriate size. This should only be
- // called with a valid GL context which is current (e.g., after calling
- // |EnsureContext()|).
- void EnsureSurface();
-
- // Calls the client's |OnSurfaceIdChanged()| if appropriate (both
- // |id_namespace_| and |local_id_| must be set).
- void CallOnSurfaceIdChanged();
-
- // Texture queue functions. (For all functions, |mgl_context_| should be
- // current.)
- // Gets and binds a texture of size |current_surface_size_|.
- TextureInfo GetTexture();
- // Returns a texture to the queue (or deletes it, if it's not of the right
- // size or there are already enough textures in the queue).
- void ReturnTexture(const TextureInfo& texture_info);
- // Clears all textures (i.e., calls |glDeleteTextures()| on all textures in
- // the texture queue).
- void ClearTextures();
-
- // Callbacks:
-
- // Callback for |GetIdNamespace()|:
- void GetIdNamespaceCallback(uint32_t id_namespace);
-
- // "Callback" for |MojoGLES2CreateContext()|:
- static void OnContextLostThunk(void* self);
- void OnContextLost();
-
- // Callback for |SubmitFrame()|:
- void SubmitFrameCallback(uint32_t frame_id);
-
- Client* const client_;
- const GLint texture_format_;
- const bool flipped_;
-
- mojo::GpuPtr gpu_;
- mojo::SurfacePtr surface_;
- mojo::Binding<mojo::ResourceReturner> returner_binding_;
-
- // The size for the surface at the next |StartFrame()|.
- mojo::Size next_surface_size_;
-
- MGLContext mgl_context_;
-
- std::deque<TextureInfo> textures_;
-
- uint32_t next_frame_id_;
- // The texture that'll be used to draw the current frame. Only valid (nonzero)
- // between |StartFrame()| and |EndFrame()|.
- GLuint frame_texture_;
-
- uint32_t id_namespace_;
- uint32_t local_id_;
- // If |local_id_| is nonzero, there's currently a surface, in which case this
- // is its size.
- mojo::Size current_surface_size_;
-
- uint32_t next_resource_id_;
- std::vector<TextureInfo> textures_pending_return_;
-
- base::WeakPtrFactory<GlHelper> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(GlHelper);
-};
-
-#endif // APPS_MOTERM_GL_HELPER_H_
« no previous file with comments | « apps/moterm/BUILD.gn ('k') | apps/moterm/gl_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698