Index: android_webview/browser/context_provider_in_process.cc |
diff --git a/webkit/common/gpu/context_provider_in_process.cc b/android_webview/browser/context_provider_in_process.cc |
similarity index 85% |
copy from webkit/common/gpu/context_provider_in_process.cc |
copy to android_webview/browser/context_provider_in_process.cc |
index 87b5df6297239a73083d1b8af17e1092ff1d787b..d90c7ca0a9b245acabf9d902338d65a41d4bc467 100644 |
--- a/webkit/common/gpu/context_provider_in_process.cc |
+++ b/android_webview/browser/context_provider_in_process.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "webkit/common/gpu/context_provider_in_process.h" |
+#include "android_webview/browser/context_provider_in_process.h" |
#include "base/bind.h" |
#include "base/callback_helpers.h" |
@@ -10,12 +10,12 @@ |
#include "cc/output/managed_memory_policy.h" |
#include "gpu/blink/webgraphicscontext3d_in_process_command_buffer_impl.h" |
#include "gpu/command_buffer/client/gles2_implementation.h" |
-#include "webkit/common/gpu/grcontext_for_webgraphicscontext3d.h" |
+#include "third_party/skia/include/gpu/GrContext.h" |
+#include "third_party/skia/include/gpu/gl/SkNullGLContext.h" |
using gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl; |
-namespace webkit { |
-namespace gpu { |
+namespace android_webview { |
class ContextProviderInProcess::LostContextCallbackProxy |
: public blink::WebGraphicsContext3D::WebGraphicsContextLostCallback { |
@@ -46,23 +46,6 @@ scoped_refptr<ContextProviderInProcess> ContextProviderInProcess::Create( |
return new ContextProviderInProcess(context3d.Pass(), debug_name); |
} |
-// static |
-scoped_refptr<ContextProviderInProcess> |
-ContextProviderInProcess::CreateOffscreen( |
- bool lose_context_when_out_of_memory) { |
- blink::WebGraphicsContext3D::Attributes attributes; |
- attributes.depth = false; |
- attributes.stencil = true; |
- attributes.antialias = false; |
- attributes.shareResources = true; |
- attributes.noAutomaticFlushes = true; |
- |
- return Create( |
- WebGraphicsContext3DInProcessCommandBufferImpl::CreateOffscreenContext( |
- attributes, lose_context_when_out_of_memory), |
- "Offscreen"); |
-} |
- |
ContextProviderInProcess::ContextProviderInProcess( |
scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> context3d, |
const std::string& debug_name) |
@@ -154,10 +137,19 @@ class GrContext* ContextProviderInProcess::GrContext() { |
DCHECK(context_thread_checker_.CalledOnValidThread()); |
if (gr_context_) |
- return gr_context_->get(); |
+ return gr_context_.get(); |
+ |
+ skia::RefPtr<class SkGLContext> gl_context = |
tfarina
2015/04/13 22:52:28
I copied this from cc/test/test_context_provide.cc
boliu
2015/04/14 00:29:52
You are creating a *new* context for GrContext, bu
|
+ skia::AdoptRef(SkNullGLContext::Create(kNone_GrGLStandard)); |
+ gl_context->makeCurrent(); |
+ gr_context_ = skia::AdoptRef(GrContext::Create( |
+ kOpenGL_GrBackend, reinterpret_cast<GrBackendContext>(gl_context->gl()))); |
- gr_context_.reset(new GrContextForWebGraphicsContext3D(context3d_.get())); |
- return gr_context_->get(); |
+ // If GlContext is already lost, also abandon the new GrContext. |
+ if (IsContextLost()) |
+ gr_context_->abandonContext(); |
+ |
+ return gr_context_.get(); |
} |
void ContextProviderInProcess::SetupLock() { |
@@ -184,10 +176,6 @@ void ContextProviderInProcess::VerifyContexts() { |
} |
void ContextProviderInProcess::DeleteCachedResources() { |
- DCHECK(context_thread_checker_.CalledOnValidThread()); |
- |
- if (gr_context_) |
- gr_context_->FreeGpuResources(); |
} |
void ContextProviderInProcess::OnLostContext() { |
@@ -201,7 +189,7 @@ void ContextProviderInProcess::OnLostContext() { |
if (!lost_context_callback_.is_null()) |
base::ResetAndReturn(&lost_context_callback_).Run(); |
if (gr_context_) |
- gr_context_->OnLostContext(); |
+ gr_context_->abandonContext(); |
} |
bool ContextProviderInProcess::DestroyedOnMainThread() { |
@@ -224,5 +212,4 @@ void ContextProviderInProcess::SetMemoryPolicyChangedCallback( |
// There's no memory manager for the in-process implementation. |
} |
-} // namespace gpu |
-} // namespace webkit |
+} // namespace android_webview |