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

Unified Diff: content/browser/android/in_process/synchronous_compositor_output_surface.cc

Issue 20185002: ContextProvider in OutputSurface (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: contextprovider: don't access Context3d() in OutputSurface contructors, it's not bound yet Created 7 years, 4 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/browser/android/in_process/synchronous_compositor_output_surface.cc
diff --git a/content/browser/android/in_process/synchronous_compositor_output_surface.cc b/content/browser/android/in_process/synchronous_compositor_output_surface.cc
index a6115e989942203974653fd321462b4b25de467d..7d1158a6f4424de71ada95c2c9476c8e70be57c5 100644
--- a/content/browser/android/in_process/synchronous_compositor_output_surface.cc
+++ b/content/browser/android/in_process/synchronous_compositor_output_surface.cc
@@ -13,7 +13,6 @@
#include "cc/output/output_surface_client.h"
#include "cc/output/software_output_device.h"
#include "content/browser/android/in_process/synchronous_compositor_impl.h"
-#include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
#include "content/public/browser/browser_thread.h"
#include "gpu/command_buffer/client/gl_in_process_context.h"
#include "third_party/skia/include/core/SkCanvas.h"
@@ -22,18 +21,18 @@
#include "ui/gfx/skia_util.h"
#include "ui/gfx/transform.h"
#include "ui/gl/gl_surface.h"
+#include "webkit/common/gpu/context_provider_in_process.h"
#include "webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h"
-
namespace content {
namespace {
-scoped_ptr<WebKit::WebGraphicsContext3D> CreateWebGraphicsContext3D(
- scoped_refptr<gfx::GLSurface> surface) {
+scoped_ptr<webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl>
+CreateWebGraphicsContext3D(scoped_refptr<gfx::GLSurface> surface) {
using webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl;
if (!gfx::GLSurface::InitializeOneOff())
- return scoped_ptr<WebKit::WebGraphicsContext3D>();
+ return scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl>();
const char* allowed_extensions = "*";
const gfx::GpuPreference gpu_preference = gfx::PreferDiscreteGpu;
@@ -54,11 +53,10 @@ scoped_ptr<WebKit::WebGraphicsContext3D> CreateWebGraphicsContext3D(
gpu_preference));
if (!context.get())
- return scoped_ptr<WebKit::WebGraphicsContext3D>();
+ return scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl>();
- return scoped_ptr<WebKit::WebGraphicsContext3D>(
- WebGraphicsContext3DInProcessCommandBufferImpl::WrapContext(
- context.Pass(), attributes));
+ return WebGraphicsContext3DInProcessCommandBufferImpl::WrapContext(
+ context.Pass(), attributes).Pass();
}
void DidActivatePendingTree(int routing_id) {
@@ -176,8 +174,8 @@ void SynchronousCompositorOutputSurface::SetNeedsBeginFrame(
void SynchronousCompositorOutputSurface::SwapBuffers(
cc::CompositorFrame* frame) {
if (!ForcedDrawToSoftwareDevice()) {
- DCHECK(context3d());
- context3d()->shallowFlushCHROMIUM();
+ DCHECK(context_provider_);
+ context_provider_->Context3d()->shallowFlushCHROMIUM();
}
SynchronousCompositorOutputSurfaceDelegate* delegate = GetDelegate();
if (delegate)
@@ -197,14 +195,17 @@ void AdjustTransformForClip(gfx::Transform* transform, gfx::Rect clip) {
bool SynchronousCompositorOutputSurface::InitializeHwDraw(
scoped_refptr<gfx::GLSurface> surface,
- scoped_refptr<cc::ContextProvider> offscreen_context) {
+ scoped_refptr<cc::ContextProvider> offscreen_context_provider) {
DCHECK(CalledOnValidThread());
DCHECK(HasClient());
- DCHECK(!context3d_);
+ DCHECK(!context_provider_);
DCHECK(surface);
- return InitializeAndSetContext3D(
- CreateWebGraphicsContext3D(surface).Pass(), offscreen_context);
+ scoped_refptr<cc::ContextProvider> onscreen_context_provider =
+ webkit::gpu::ContextProviderInProcess::Create(
+ base::Bind(&CreateWebGraphicsContext3D, surface));
+ return InitializeAndSetContext3d(onscreen_context_provider,
+ offscreen_context_provider);
}
void SynchronousCompositorOutputSurface::ReleaseHwDraw() {
@@ -218,7 +219,7 @@ bool SynchronousCompositorOutputSurface::DemandDrawHw(
bool stencil_enabled) {
DCHECK(CalledOnValidThread());
DCHECK(HasClient());
- DCHECK(context3d());
+ DCHECK(context_provider_);
gfx::Transform adjusted_transform = transform;
AdjustTransformForClip(&adjusted_transform, clip);

Powered by Google App Engine
This is Rietveld 408576698