OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // This API is consistent with other OpenGL setup APIs like window's WGL | 5 // This API is consistent with other OpenGL setup APIs like window's WGL |
6 // and pepper's PGL. This API is used to manage OpenGL RendererGLContexts in the | 6 // and pepper's PGL. This API is used to manage OpenGL RendererGLContexts in the |
7 // Chrome renderer process in a way that is consistent with other platforms. | 7 // Chrome renderer process in a way that is consistent with other platforms. |
8 | 8 |
9 #ifndef CONTENT_RENDERER_GPU_RENDERER_GL_CONTEXT_H_ | 9 #ifndef CONTENT_RENDERER_GPU_RENDERER_GL_CONTEXT_H_ |
10 #define CONTENT_RENDERER_GPU_RENDERER_GL_CONTEXT_H_ | 10 #define CONTENT_RENDERER_GPU_RENDERER_GL_CONTEXT_H_ |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 // Create a RendererGLContext that renders to an offscreen frame buffer. If | 101 // Create a RendererGLContext that renders to an offscreen frame buffer. If |
102 // parent is not NULL, that RendererGLContext can access a copy of the created | 102 // parent is not NULL, that RendererGLContext can access a copy of the created |
103 // RendererGLContext's frame buffer that is updated every time SwapBuffers is | 103 // RendererGLContext's frame buffer that is updated every time SwapBuffers is |
104 // called. It is not as general as shared RendererGLContexts in other | 104 // called. It is not as general as shared RendererGLContexts in other |
105 // implementations of OpenGL. If parent is not NULL, it must be used on the | 105 // implementations of OpenGL. If parent is not NULL, it must be used on the |
106 // same thread as the parent. A child RendererGLContext may not outlive its | 106 // same thread as the parent. A child RendererGLContext may not outlive its |
107 // parent. attrib_list must be NULL or a NONE-terminated list of | 107 // parent. attrib_list must be NULL or a NONE-terminated list of |
108 // attribute/value pairs. | 108 // attribute/value pairs. |
109 static RendererGLContext* CreateOffscreenContext( | 109 static RendererGLContext* CreateOffscreenContext( |
110 GpuChannelHost* channel, | 110 GpuChannelHost* channel, |
111 RendererGLContext* parent, | |
112 const gfx::Size& size, | 111 const gfx::Size& size, |
113 const char* allowed_extensions, | 112 const char* allowed_extensions, |
114 const int32* attrib_list, | 113 const int32* attrib_list, |
115 const GURL& active_url); | 114 const GURL& active_url); |
116 | 115 |
| 116 // Sets the parent context. If any parent textures have been created for |
| 117 // another parent, it is important to delete them before changing the parent. |
| 118 bool SetParent(RendererGLContext* parent); |
| 119 |
117 // Resize an offscreen frame buffer. The resize occurs on the next call to | 120 // Resize an offscreen frame buffer. The resize occurs on the next call to |
118 // SwapBuffers. This is to avoid waiting until all pending GL calls have been | 121 // SwapBuffers. This is to avoid waiting until all pending GL calls have been |
119 // executed by the GPU process. Everything rendered up to the call to | 122 // executed by the GPU process. Everything rendered up to the call to |
120 // SwapBuffers will be lost. A lost RendererGLContext will be reported if the | 123 // SwapBuffers will be lost. A lost RendererGLContext will be reported if the |
121 // resize fails. | 124 // resize fails. |
122 void ResizeOffscreen(const gfx::Size& size); | 125 void ResizeOffscreen(const gfx::Size& size); |
123 | 126 |
124 // For an offscreen frame buffer RendererGLContext, return the texture ID with | 127 // For an offscreen frame buffer RendererGLContext, return the texture ID with |
125 // respect to the parent RendererGLContext. Returns zero if RendererGLContext | 128 // respect to the parent RendererGLContext. Returns zero if RendererGLContext |
126 // does not have a parent. | 129 // does not have a parent. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 // Destroy a latch. | 179 // Destroy a latch. |
177 bool DestroyLatch(uint32 latch); | 180 bool DestroyLatch(uint32 latch); |
178 | 181 |
179 // All child contexts get a latch pair automatically. These latches are used | 182 // All child contexts get a latch pair automatically. These latches are used |
180 // for synchronization with parent context. If *this* context does not have a | 183 // for synchronization with parent context. If *this* context does not have a |
181 // parent context, these methods will return false. | 184 // parent context, these methods will return false. |
182 bool GetParentToChildLatch(uint32* parent_to_child_latch); | 185 bool GetParentToChildLatch(uint32* parent_to_child_latch); |
183 bool GetChildToParentLatch(uint32* child_to_parent_latch); | 186 bool GetChildToParentLatch(uint32* child_to_parent_latch); |
184 | 187 |
185 private: | 188 private: |
186 RendererGLContext(GpuChannelHost* channel, | 189 explicit RendererGLContext(GpuChannelHost* channel); |
187 RendererGLContext* parent); | |
188 | 190 |
189 bool Initialize(bool onscreen, | 191 bool Initialize(bool onscreen, |
190 gfx::PluginWindowHandle render_surface, | 192 gfx::PluginWindowHandle render_surface, |
191 int render_view_id, | 193 int render_view_id, |
192 const gfx::Size& size, | 194 const gfx::Size& size, |
193 const char* allowed_extensions, | 195 const char* allowed_extensions, |
194 const int32* attrib_list, | 196 const int32* attrib_list, |
195 const GURL& active_url); | 197 const GURL& active_url); |
196 void Destroy(); | 198 void Destroy(); |
197 | 199 |
(...skipping 13 matching lines...) Expand all Loading... |
211 int32 transfer_buffer_id_; | 213 int32 transfer_buffer_id_; |
212 gpu::gles2::GLES2Implementation* gles2_implementation_; | 214 gpu::gles2::GLES2Implementation* gles2_implementation_; |
213 gfx::Size size_; | 215 gfx::Size size_; |
214 Error last_error_; | 216 Error last_error_; |
215 int frame_number_; | 217 int frame_number_; |
216 | 218 |
217 DISALLOW_COPY_AND_ASSIGN(RendererGLContext); | 219 DISALLOW_COPY_AND_ASSIGN(RendererGLContext); |
218 }; | 220 }; |
219 | 221 |
220 #endif // CONTENT_RENDERER_GPU_RENDERER_GL_CONTEXT_H_ | 222 #endif // CONTENT_RENDERER_GPU_RENDERER_GL_CONTEXT_H_ |
OLD | NEW |