| OLD | NEW |
| 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_COMPOSITOR_COMPOSITOR_H_ | 5 #ifndef UI_COMPOSITOR_COMPOSITOR_H_ |
| 6 #define UI_COMPOSITOR_COMPOSITOR_H_ | 6 #define UI_COMPOSITOR_COMPOSITOR_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/containers/hash_tables.h" | 10 #include "base/containers/hash_tables.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 class SkBitmap; | 25 class SkBitmap; |
| 26 | 26 |
| 27 namespace base { | 27 namespace base { |
| 28 class MessageLoopProxy; | 28 class MessageLoopProxy; |
| 29 class RunLoop; | 29 class RunLoop; |
| 30 } | 30 } |
| 31 | 31 |
| 32 namespace cc { | 32 namespace cc { |
| 33 class ContextProvider; | 33 class ContextProvider; |
| 34 class FakeContextProvider; |
| 34 class Layer; | 35 class Layer; |
| 35 class LayerTreeDebugState; | 36 class LayerTreeDebugState; |
| 36 class LayerTreeHost; | 37 class LayerTreeHost; |
| 37 } | 38 } |
| 38 | 39 |
| 39 namespace gfx { | 40 namespace gfx { |
| 40 class GLContext; | 41 class GLContext; |
| 41 class GLSurface; | 42 class GLSurface; |
| 42 class GLShareGroup; | 43 class GLShareGroup; |
| 43 class Point; | 44 class Point; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 73 // If this function isn't called (for tests), a "default" factory will be | 74 // If this function isn't called (for tests), a "default" factory will be |
| 74 // created on the first call of GetInstance. | 75 // created on the first call of GetInstance. |
| 75 static void SetInstance(ContextFactory* instance); | 76 static void SetInstance(ContextFactory* instance); |
| 76 | 77 |
| 77 // Creates an output surface for the given compositor. The factory may keep | 78 // Creates an output surface for the given compositor. The factory may keep |
| 78 // per-compositor data (e.g. a shared context), that needs to be cleaned up | 79 // per-compositor data (e.g. a shared context), that needs to be cleaned up |
| 79 // by calling RemoveCompositor when the compositor gets destroyed. | 80 // by calling RemoveCompositor when the compositor gets destroyed. |
| 80 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( | 81 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( |
| 81 Compositor* compositor) = 0; | 82 Compositor* compositor) = 0; |
| 82 | 83 |
| 83 // Creates a context used for offscreen rendering. This context can be shared | |
| 84 // with all compositors. | |
| 85 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() = 0; | |
| 86 | |
| 87 // Creates a reflector that copies the content of the |mirrored_compositor| | 84 // Creates a reflector that copies the content of the |mirrored_compositor| |
| 88 // onto |mirroing_layer|. | 85 // onto |mirroing_layer|. |
| 89 virtual scoped_refptr<Reflector> CreateReflector( | 86 virtual scoped_refptr<Reflector> CreateReflector( |
| 90 Compositor* mirrored_compositor, | 87 Compositor* mirrored_compositor, |
| 91 Layer* mirroring_layer) = 0; | 88 Layer* mirroring_layer) = 0; |
| 92 // Removes the reflector, which stops the mirroring. | 89 // Removes the reflector, which stops the mirroring. |
| 93 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) = 0; | 90 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) = 0; |
| 94 | 91 |
| 95 virtual scoped_refptr<cc::ContextProvider> | 92 virtual scoped_refptr<cc::ContextProvider> |
| 96 OffscreenContextProviderForMainThread() = 0; | 93 OffscreenContextProviderForMainThread() = 0; |
| 97 virtual scoped_refptr<cc::ContextProvider> | 94 virtual scoped_refptr<cc::ContextProvider> |
| 98 OffscreenContextProviderForCompositorThread() = 0; | 95 OffscreenContextProviderForCompositorThread() = 0; |
| 99 | 96 |
| 100 // Destroys per-compositor data. | 97 // Destroys per-compositor data. |
| 101 virtual void RemoveCompositor(Compositor* compositor) = 0; | 98 virtual void RemoveCompositor(Compositor* compositor) = 0; |
| 102 }; | 99 }; |
| 103 | 100 |
| 104 // The default factory that creates in-process contexts. | 101 // The default factory that creates in-process contexts. |
| 105 class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { | 102 class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { |
| 106 public: | 103 public: |
| 107 DefaultContextFactory(); | 104 DefaultContextFactory(); |
| 108 virtual ~DefaultContextFactory(); | 105 virtual ~DefaultContextFactory(); |
| 109 | 106 |
| 110 // ContextFactory implementation | 107 // ContextFactory implementation |
| 111 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( | 108 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( |
| 112 Compositor* compositor) OVERRIDE; | 109 Compositor* compositor) OVERRIDE; |
| 113 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() | |
| 114 OVERRIDE; | |
| 115 | 110 |
| 116 virtual scoped_refptr<Reflector> CreateReflector( | 111 virtual scoped_refptr<Reflector> CreateReflector( |
| 117 Compositor* compositor, | 112 Compositor* compositor, |
| 118 Layer* layer) OVERRIDE; | 113 Layer* layer) OVERRIDE; |
| 119 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; | 114 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; |
| 120 | 115 |
| 121 virtual scoped_refptr<cc::ContextProvider> | 116 virtual scoped_refptr<cc::ContextProvider> |
| 122 OffscreenContextProviderForMainThread() OVERRIDE; | 117 OffscreenContextProviderForMainThread() OVERRIDE; |
| 123 virtual scoped_refptr<cc::ContextProvider> | 118 virtual scoped_refptr<cc::ContextProvider> |
| 124 OffscreenContextProviderForCompositorThread() OVERRIDE; | 119 OffscreenContextProviderForCompositorThread() OVERRIDE; |
| 125 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; | 120 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; |
| 126 | 121 |
| 127 bool Initialize(); | 122 bool Initialize(); |
| 128 | 123 |
| 129 private: | 124 private: |
| 130 scoped_ptr<WebKit::WebGraphicsContext3D> CreateContextCommon( | 125 static scoped_ptr<WebKit::WebGraphicsContext3D> CreateContextCommon( |
| 131 Compositor* compositor, | 126 Compositor* compositor, |
| 132 bool offscreen); | 127 bool offscreen); |
| 133 | 128 |
| 134 scoped_refptr<ContextProviderFromContextFactory> | 129 scoped_refptr<cc::FakeContextProvider> offscreen_contexts_main_thread_; |
| 135 offscreen_contexts_main_thread_; | 130 scoped_refptr<cc::FakeContextProvider> offscreen_contexts_compositor_thread_; |
| 136 scoped_refptr<ContextProviderFromContextFactory> | |
| 137 offscreen_contexts_compositor_thread_; | |
| 138 | 131 |
| 139 DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory); | 132 DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory); |
| 140 }; | 133 }; |
| 141 | 134 |
| 142 // The factory that creates test contexts. | 135 // The factory that creates test contexts. |
| 143 class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory { | 136 class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory { |
| 144 public: | 137 public: |
| 145 TestContextFactory(); | 138 TestContextFactory(); |
| 146 virtual ~TestContextFactory(); | 139 virtual ~TestContextFactory(); |
| 147 | 140 |
| 148 // ContextFactory implementation | 141 // ContextFactory implementation |
| 149 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( | 142 virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( |
| 150 Compositor* compositor) OVERRIDE; | 143 Compositor* compositor) OVERRIDE; |
| 151 virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() | |
| 152 OVERRIDE; | |
| 153 | 144 |
| 154 virtual scoped_refptr<Reflector> CreateReflector( | 145 virtual scoped_refptr<Reflector> CreateReflector( |
| 155 Compositor* mirrored_compositor, | 146 Compositor* mirrored_compositor, |
| 156 Layer* mirroring_layer) OVERRIDE; | 147 Layer* mirroring_layer) OVERRIDE; |
| 157 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; | 148 virtual void RemoveReflector(scoped_refptr<Reflector> reflector) OVERRIDE; |
| 158 | 149 |
| 159 virtual scoped_refptr<cc::ContextProvider> | 150 virtual scoped_refptr<cc::ContextProvider> |
| 160 OffscreenContextProviderForMainThread() OVERRIDE; | 151 OffscreenContextProviderForMainThread() OVERRIDE; |
| 161 virtual scoped_refptr<cc::ContextProvider> | 152 virtual scoped_refptr<cc::ContextProvider> |
| 162 OffscreenContextProviderForCompositorThread() OVERRIDE; | 153 OffscreenContextProviderForCompositorThread() OVERRIDE; |
| 163 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; | 154 virtual void RemoveCompositor(Compositor* compositor) OVERRIDE; |
| 164 | 155 |
| 165 private: | 156 private: |
| 166 scoped_refptr<ContextProviderFromContextFactory> | 157 static scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext(); |
| 167 offscreen_contexts_main_thread_; | 158 |
| 168 scoped_refptr<ContextProviderFromContextFactory> | 159 scoped_refptr<cc::FakeContextProvider> offscreen_contexts_main_thread_; |
| 169 offscreen_contexts_compositor_thread_; | 160 scoped_refptr<cc::ContextProvider> offscreen_contexts_compositor_thread_; |
| 170 | 161 |
| 171 DISALLOW_COPY_AND_ASSIGN(TestContextFactory); | 162 DISALLOW_COPY_AND_ASSIGN(TestContextFactory); |
| 172 }; | 163 }; |
| 173 | 164 |
| 174 // Texture provide an abstraction over the external texture that can be passed | 165 // Texture provide an abstraction over the external texture that can be passed |
| 175 // to a layer. | 166 // to a layer. |
| 176 class COMPOSITOR_EXPORT Texture : public base::RefCounted<Texture> { | 167 class COMPOSITOR_EXPORT Texture : public base::RefCounted<Texture> { |
| 177 public: | 168 public: |
| 178 Texture(bool flipped, const gfx::Size& size, float device_scale_factor); | 169 Texture(bool flipped, const gfx::Size& size, float device_scale_factor); |
| 179 | 170 |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 bool disable_schedule_composite_; | 431 bool disable_schedule_composite_; |
| 441 | 432 |
| 442 CompositorLock* compositor_lock_; | 433 CompositorLock* compositor_lock_; |
| 443 | 434 |
| 444 DISALLOW_COPY_AND_ASSIGN(Compositor); | 435 DISALLOW_COPY_AND_ASSIGN(Compositor); |
| 445 }; | 436 }; |
| 446 | 437 |
| 447 } // namespace ui | 438 } // namespace ui |
| 448 | 439 |
| 449 #endif // UI_COMPOSITOR_COMPOSITOR_H_ | 440 #endif // UI_COMPOSITOR_COMPOSITOR_H_ |
| OLD | NEW |