Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "android_webview/browser/aw_render_thread_context_provider.h" | 5 #include "android_webview/browser/aw_render_thread_context_provider.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
| 11 #include "cc/output/managed_memory_policy.h" | 11 #include "cc/output/managed_memory_policy.h" |
| 12 #include "gpu/blink/webgraphicscontext3d_impl.h" | 12 #include "gpu/blink/webgraphicscontext3d_impl.h" |
| 13 #include "gpu/command_buffer/client/gl_in_process_context.h" | 13 #include "gpu/command_buffer/client/gl_in_process_context.h" |
| 14 #include "gpu/command_buffer/client/gles2_implementation.h" | 14 #include "gpu/command_buffer/client/gles2_implementation.h" |
| 15 #include "gpu/command_buffer/client/gles2_lib.h" | 15 #include "gpu/command_buffer/client/gles2_lib.h" |
| 16 #include "gpu/command_buffer/client/shared_memory_limits.h" | |
| 16 #include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h" | 17 #include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h" |
| 17 #include "third_party/skia/include/gpu/GrContext.h" | 18 #include "third_party/skia/include/gpu/GrContext.h" |
| 18 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" | 19 #include "third_party/skia/include/gpu/gl/GrGLInterface.h" |
| 19 | 20 |
| 20 namespace android_webview { | 21 namespace android_webview { |
| 21 | 22 |
| 22 // static | 23 // static |
| 23 scoped_refptr<AwRenderThreadContextProvider> | 24 scoped_refptr<AwRenderThreadContextProvider> |
| 24 AwRenderThreadContextProvider::Create( | 25 AwRenderThreadContextProvider::Create( |
| 25 scoped_refptr<gfx::GLSurface> surface, | 26 scoped_refptr<gfx::GLSurface> surface, |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 43 // having them both in order to integrate its output with the content behind | 44 // having them both in order to integrate its output with the content behind |
| 44 // it. | 45 // it. |
| 45 attributes.alpha_size = 8; | 46 attributes.alpha_size = 8; |
| 46 attributes.stencil_size = 8; | 47 attributes.stencil_size = 8; |
| 47 // The depth buffer may exist due to having a stencil buffer, but we don't | 48 // The depth buffer may exist due to having a stencil buffer, but we don't |
| 48 // need one, so use -1 for it. | 49 // need one, so use -1 for it. |
| 49 attributes.depth_size = -1; | 50 attributes.depth_size = -1; |
| 50 attributes.samples = 0; | 51 attributes.samples = 0; |
| 51 attributes.sample_buffers = 0; | 52 attributes.sample_buffers = 0; |
| 52 attributes.bind_generates_resource = false; | 53 attributes.bind_generates_resource = false; |
| 54 | |
| 55 gpu::SharedMemoryLimits limits; | |
| 56 // TODO(boliu): Why? | |
| 57 limits.start_transfer_buffer_size = 4 * 1024 * 1024; | |
|
danakj
2016/04/20 02:13:53
I took this from the old defaults which were diffe
boliu
2016/04/20 02:39:23
This only runs the delegated compositor, which is
danakj
2016/04/20 21:55:02
Stealing from compositor_impl_android then.
| |
| 58 | |
| 53 context_.reset(gpu::GLInProcessContext::Create( | 59 context_.reset(gpu::GLInProcessContext::Create( |
| 54 service, surface, surface->IsOffscreen(), gfx::kNullAcceleratedWidget, | 60 service, surface, surface->IsOffscreen(), gfx::kNullAcceleratedWidget, |
| 55 surface->GetSize(), nullptr /* share_context */, attributes, | 61 surface->GetSize(), nullptr /* share_context */, attributes, |
| 56 gfx::PreferDiscreteGpu, gpu::GLInProcessContextSharedMemoryLimits(), | 62 gfx::PreferDiscreteGpu, limits, nullptr, nullptr)); |
| 57 nullptr, nullptr)); | |
| 58 | 63 |
| 59 context_->GetImplementation()->SetLostContextCallback(base::Bind( | 64 context_->GetImplementation()->SetLostContextCallback(base::Bind( |
| 60 &AwRenderThreadContextProvider::OnLostContext, base::Unretained(this))); | 65 &AwRenderThreadContextProvider::OnLostContext, base::Unretained(this))); |
| 61 } | 66 } |
| 62 | 67 |
| 63 AwRenderThreadContextProvider::~AwRenderThreadContextProvider() { | 68 AwRenderThreadContextProvider::~AwRenderThreadContextProvider() { |
| 64 DCHECK(main_thread_checker_.CalledOnValidThread()); | 69 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 65 if (gr_context_) | 70 if (gr_context_) |
| 66 gr_context_->releaseResourcesAndAbandonContext(); | 71 gr_context_->releaseResourcesAndAbandonContext(); |
| 67 } | 72 } |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 140 void AwRenderThreadContextProvider::OnLostContext() { | 145 void AwRenderThreadContextProvider::OnLostContext() { |
| 141 DCHECK(main_thread_checker_.CalledOnValidThread()); | 146 DCHECK(main_thread_checker_.CalledOnValidThread()); |
| 142 | 147 |
| 143 if (!lost_context_callback_.is_null()) | 148 if (!lost_context_callback_.is_null()) |
| 144 lost_context_callback_.Run(); | 149 lost_context_callback_.Run(); |
| 145 if (gr_context_) | 150 if (gr_context_) |
| 146 gr_context_->abandonContext(); | 151 gr_context_->abandonContext(); |
| 147 } | 152 } |
| 148 | 153 |
| 149 } // namespace android_webview | 154 } // namespace android_webview |
| OLD | NEW |