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_ |