Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(175)

Unified Diff: content/common/gpu/client/context_provider_command_buffer.cc

Issue 1907783002: Delete //gpu/blink/ and WebGraphicsContext3DImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rm-webgraphicscontext3dimpl: noflush Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/gpu/client/context_provider_command_buffer.cc
diff --git a/content/common/gpu/client/context_provider_command_buffer.cc b/content/common/gpu/client/context_provider_command_buffer.cc
index 204287f27b0d0d09e292782cf1294cfd97231963..03791359c5adfa5e736a0e962a9f2bccf58c7f6b 100644
--- a/content/common/gpu/client/context_provider_command_buffer.cc
+++ b/content/common/gpu/client/context_provider_command_buffer.cc
@@ -12,24 +12,28 @@
#include <vector>
#include "base/callback_helpers.h"
+#include "base/command_line.h"
#include "base/strings/stringprintf.h"
#include "cc/output/managed_memory_policy.h"
#include "gpu/command_buffer/client/gles2_implementation.h"
+#include "gpu/command_buffer/client/gles2_trace_implementation.h"
+#include "gpu/command_buffer/client/gpu_switches.h"
#include "gpu/skia_bindings/grcontext_for_gles2_interface.h"
#include "third_party/skia/include/gpu/GrContext.h"
namespace content {
class ContextProviderCommandBuffer::LostContextCallbackProxy
- : public blink::WebGraphicsContext3D::WebGraphicsContextLostCallback {
+ : public WebGraphicsContext3DCommandBufferImpl::
+ WebGraphicsContextLostCallback {
public:
explicit LostContextCallbackProxy(ContextProviderCommandBuffer* provider)
: provider_(provider) {
- provider_->context3d_->setContextLostCallback(this);
+ provider_->context3d_->SetContextLostCallback(this);
}
~LostContextCallbackProxy() override {
- provider_->context3d_->setContextLostCallback(NULL);
+ provider_->context3d_->SetContextLostCallback(nullptr);
}
void onContextLost() override { provider_->OnLostContext(); }
@@ -56,9 +60,14 @@ ContextProviderCommandBuffer::~ContextProviderCommandBuffer() {
context_thread_checker_.CalledOnValidThread());
// Destroy references to the context3d_ before leaking it.
+ // TODO(danakj): Delete this.
if (context3d_->GetCommandBufferProxy())
context3d_->GetCommandBufferProxy()->SetLock(nullptr);
- lost_context_callback_proxy_.reset();
+
+ if (lost_context_callback_proxy_) {
+ // Disconnect lost callbacks during destruction.
+ lost_context_callback_proxy_.reset();
+ }
}
gpu::CommandBufferProxyImpl*
@@ -71,7 +80,6 @@ ContextProviderCommandBuffer::WebContext3D() {
DCHECK(context3d_);
DCHECK(lost_context_callback_proxy_); // Is bound to thread.
DCHECK(context_thread_checker_.CalledOnValidThread());
-
return context3d_.get();
}
@@ -85,13 +93,20 @@ bool ContextProviderCommandBuffer::BindToCurrentThread() {
context3d_->SetContextType(context_type_);
if (!context3d_->InitializeOnCurrentThread(memory_limits_))
return false;
+ lost_context_callback_proxy_.reset(new LostContextCallbackProxy(this));
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableGpuClientTracing)) {
+ // This wraps the real GLES2Implementation and we should always use this
+ // instead when it's present.
+ trace_impl_.reset(new gpu::gles2::GLES2TraceImplementation(
+ context3d_->GetImplementation()));
+ }
+
+ // Do this last once the context is set up.
std::string unique_context_name =
base::StringPrintf("%s-%p", debug_name_.c_str(), context3d_.get());
- context3d_->GetGLInterface()->TraceBeginCHROMIUM("gpu_toplevel",
- unique_context_name.c_str());
-
- lost_context_callback_proxy_.reset(new LostContextCallbackProxy(this));
+ ContextGL()->TraceBeginCHROMIUM("gpu_toplevel", unique_context_name.c_str());
return true;
}
@@ -104,6 +119,8 @@ gpu::gles2::GLES2Interface* ContextProviderCommandBuffer::ContextGL() {
DCHECK(lost_context_callback_proxy_); // Is bound to thread.
DCHECK(context_thread_checker_.CalledOnValidThread());
+ if (trace_impl_)
+ return trace_impl_.get();
return context3d_->GetImplementation();
}
@@ -118,8 +135,7 @@ class GrContext* ContextProviderCommandBuffer::GrContext() {
if (gr_context_)
return gr_context_->get();
- gr_context_.reset(new skia_bindings::GrContextForGLES2Interface(
- context3d_->GetGLInterface()));
+ gr_context_.reset(new skia_bindings::GrContextForGLES2Interface(ContextGL()));
// If GlContext is already lost, also abandon the new GrContext.
if (gr_context_->get() &&
@@ -149,6 +165,7 @@ base::Lock* ContextProviderCommandBuffer::GetLock() {
gpu::Capabilities ContextProviderCommandBuffer::ContextCapabilities() {
DCHECK(lost_context_callback_proxy_); // Is bound to thread.
DCHECK(context_thread_checker_.CalledOnValidThread());
+ // Skips past the trace_impl_ as it doesn't have capabilities.
return context3d_->GetImplementation()->capabilities();
}

Powered by Google App Engine
This is Rietveld 408576698