| 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 #include "content/renderer/pepper_platform_context_3d_impl.h" | 5 #include "content/renderer/pepper_platform_context_3d_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "content/common/gpu/client/content_gl_context.h" |
| 9 #include "content/common/gpu/client/gpu_channel_host.h" |
| 10 #include "content/common/gpu/client/command_buffer_proxy.h" |
| 8 #include "content/renderer/pepper_parent_context_provider.h" | 11 #include "content/renderer/pepper_parent_context_provider.h" |
| 9 #include "content/renderer/render_thread_impl.h" | 12 #include "content/renderer/render_thread_impl.h" |
| 10 #include "content/renderer/gpu/renderer_gl_context.h" | |
| 11 #include "content/renderer/gpu/gpu_channel_host.h" | |
| 12 #include "content/renderer/gpu/command_buffer_proxy.h" | |
| 13 #include "googleurl/src/gurl.h" | 13 #include "googleurl/src/gurl.h" |
| 14 #include "gpu/command_buffer/client/gles2_cmd_helper.h" | 14 #include "gpu/command_buffer/client/gles2_cmd_helper.h" |
| 15 #include "gpu/command_buffer/client/gles2_implementation.h" | 15 #include "gpu/command_buffer/client/gles2_implementation.h" |
| 16 #include "ui/gfx/gl/gpu_preference.h" | 16 #include "ui/gfx/gl/gpu_preference.h" |
| 17 | 17 |
| 18 #ifdef ENABLE_GPU | 18 #ifdef ENABLE_GPU |
| 19 | 19 |
| 20 PlatformContext3DImpl::PlatformContext3DImpl( | 20 PlatformContext3DImpl::PlatformContext3DImpl( |
| 21 PepperParentContextProvider* parent_context_provider) | 21 PepperParentContextProvider* parent_context_provider) |
| 22 : parent_context_provider_(parent_context_provider), | 22 : parent_context_provider_(parent_context_provider), |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 } | 82 } |
| 83 } while (retry); | 83 } while (retry); |
| 84 | 84 |
| 85 gfx::Size surface_size; | 85 gfx::Size surface_size; |
| 86 std::vector<int32> attribs; | 86 std::vector<int32> attribs; |
| 87 // TODO(alokp): Change GpuChannelHost::CreateOffscreenCommandBuffer() | 87 // TODO(alokp): Change GpuChannelHost::CreateOffscreenCommandBuffer() |
| 88 // interface to accept width and height in the attrib_list so that | 88 // interface to accept width and height in the attrib_list so that |
| 89 // we do not need to filter for width and height here. | 89 // we do not need to filter for width and height here. |
| 90 if (attrib_list) { | 90 if (attrib_list) { |
| 91 for (const int32_t* attr = attrib_list; | 91 for (const int32_t* attr = attrib_list; |
| 92 attr[0] != RendererGLContext::NONE; | 92 attr[0] != ContentGLContext::NONE; |
| 93 attr += 2) { | 93 attr += 2) { |
| 94 switch (attr[0]) { | 94 switch (attr[0]) { |
| 95 case RendererGLContext::WIDTH: | 95 case ContentGLContext::WIDTH: |
| 96 surface_size.set_width(attr[1]); | 96 surface_size.set_width(attr[1]); |
| 97 break; | 97 break; |
| 98 case RendererGLContext::HEIGHT: | 98 case ContentGLContext::HEIGHT: |
| 99 surface_size.set_height(attr[1]); | 99 surface_size.set_height(attr[1]); |
| 100 break; | 100 break; |
| 101 default: | 101 default: |
| 102 attribs.push_back(attr[0]); | 102 attribs.push_back(attr[0]); |
| 103 attribs.push_back(attr[1]); | 103 attribs.push_back(attr[1]); |
| 104 break; | 104 break; |
| 105 } | 105 } |
| 106 } | 106 } |
| 107 attribs.push_back(RendererGLContext::NONE); | 107 attribs.push_back(ContentGLContext::NONE); |
| 108 } | 108 } |
| 109 | 109 |
| 110 command_buffer_ = channel_->CreateOffscreenCommandBuffer( | 110 command_buffer_ = channel_->CreateOffscreenCommandBuffer( |
| 111 surface_size, | 111 surface_size, |
| 112 NULL, | 112 NULL, |
| 113 "*", | 113 "*", |
| 114 attribs, | 114 attribs, |
| 115 GURL::EmptyGURL(), | 115 GURL::EmptyGURL(), |
| 116 gpu_preference); | 116 gpu_preference); |
| 117 if (!command_buffer_) | 117 if (!command_buffer_) |
| 118 return false; | 118 return false; |
| 119 | 119 |
| 120 command_buffer_->SetChannelErrorCallback( | 120 command_buffer_->SetChannelErrorCallback( |
| 121 base::Bind(&PlatformContext3DImpl::OnContextLost, | 121 base::Bind(&PlatformContext3DImpl::OnContextLost, |
| 122 weak_ptr_factory_.GetWeakPtr())); | 122 weak_ptr_factory_.GetWeakPtr())); |
| 123 | 123 |
| 124 // Fetch the parent context now, after any potential shutdown of the | 124 // Fetch the parent context now, after any potential shutdown of the |
| 125 // channel due to GPU switching, and creation of the Pepper 3D | 125 // channel due to GPU switching, and creation of the Pepper 3D |
| 126 // context with the discrete GPU preference. | 126 // context with the discrete GPU preference. |
| 127 RendererGLContext* parent_context = | 127 ContentGLContext* parent_context = |
| 128 parent_context_provider_->GetParentContextForPlatformContext3D(); | 128 parent_context_provider_->GetParentContextForPlatformContext3D(); |
| 129 if (!parent_context) | 129 if (!parent_context) |
| 130 return false; | 130 return false; |
| 131 | 131 |
| 132 parent_context_provider_ = NULL; | 132 parent_context_provider_ = NULL; |
| 133 parent_context_ = parent_context->AsWeakPtr(); | 133 parent_context_ = parent_context->AsWeakPtr(); |
| 134 | 134 |
| 135 // Flush any remaining commands in the parent context to make sure the | 135 // Flush any remaining commands in the parent context to make sure the |
| 136 // texture id accounting stays consistent. | 136 // texture id accounting stays consistent. |
| 137 gpu::gles2::GLES2Implementation* parent_gles2 = | 137 gpu::gles2::GLES2Implementation* parent_gles2 = |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 } | 170 } |
| 171 | 171 |
| 172 void PlatformContext3DImpl::OnContextLost() { | 172 void PlatformContext3DImpl::OnContextLost() { |
| 173 DCHECK(command_buffer_); | 173 DCHECK(command_buffer_); |
| 174 | 174 |
| 175 if (!context_lost_callback_.is_null()) | 175 if (!context_lost_callback_.is_null()) |
| 176 context_lost_callback_.Run(); | 176 context_lost_callback_.Run(); |
| 177 } | 177 } |
| 178 | 178 |
| 179 #endif // ENABLE_GPU | 179 #endif // ENABLE_GPU |
| OLD | NEW |