Index: ui/aura/bench/bench_main.cc |
diff --git a/ui/aura/bench/bench_main.cc b/ui/aura/bench/bench_main.cc |
index aee7e79c83a417a9ffbc5865163e438e4fdd4e5f..17ed068e60b97ed9c31cdd9bcb970c68ac08adc5 100644 |
--- a/ui/aura/bench/bench_main.cc |
+++ b/ui/aura/bench/bench_main.cc |
@@ -10,6 +10,7 @@ |
#include "base/message_loop/message_loop.h" |
#include "base/strings/string_split.h" |
#include "base/time/time.h" |
+#include "cc/output/context_provider.h" |
#include "third_party/khronos/GLES2/gl2.h" |
#include "third_party/skia/include/core/SkXfermode.h" |
#include "ui/aura/client/default_capture_client.h" |
@@ -181,7 +182,7 @@ class WebGLBench : public BenchCompositorObserver { |
parent_(parent), |
webgl_(ui::LAYER_TEXTURED), |
compositor_(compositor), |
- context_(), |
+ context_provider_(), |
texture_(), |
fbo_(0), |
do_draw_(true) { |
@@ -207,24 +208,26 @@ class WebGLBench : public BenchCompositorObserver { |
webgl_.SetBounds(bounds); |
parent_->Add(&webgl_); |
- context_ = ui::ContextFactory::GetInstance()->CreateOffscreenContext(); |
- context_->makeContextCurrent(); |
- texture_ = new WebGLTexture(context_.get(), bounds.size()); |
- fbo_ = context_->createFramebuffer(); |
+ context_provider_ = ui::ContextFactory::GetInstance() |
+ ->OffscreenContextProviderForMainThread(); |
+ WebKit::WebGraphicsContext3D* context = context_provider_->Context3d(); |
+ context->makeContextCurrent(); |
+ texture_ = new WebGLTexture(context, bounds.size()); |
+ fbo_ = context->createFramebuffer(); |
compositor->AddObserver(this); |
webgl_.SetExternalTexture(texture_.get()); |
- context_->bindFramebuffer(GL_FRAMEBUFFER, fbo_); |
- context_->framebufferTexture2D( |
+ context->bindFramebuffer(GL_FRAMEBUFFER, fbo_); |
+ context->framebufferTexture2D( |
GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, |
GL_TEXTURE_2D, texture_->PrepareTexture(), 0); |
- context_->clearColor(0.f, 1.f, 0.f, 1.f); |
- context_->clear(GL_COLOR_BUFFER_BIT); |
- context_->flush(); |
+ context->clearColor(0.f, 1.f, 0.f, 1.f); |
+ context->clear(GL_COLOR_BUFFER_BIT); |
+ context->flush(); |
} |
virtual ~WebGLBench() { |
- context_->makeContextCurrent(); |
- context_->deleteFramebuffer(fbo_); |
+ context_provider_->Context3d()->makeContextCurrent(); |
+ context_provider_->Context3d()->deleteFramebuffer(fbo_); |
webgl_.SetExternalTexture(NULL); |
texture_ = NULL; |
compositor_->RemoveObserver(this); |
@@ -232,10 +235,11 @@ class WebGLBench : public BenchCompositorObserver { |
virtual void Draw() OVERRIDE { |
if (do_draw_) { |
- context_->makeContextCurrent(); |
- context_->clearColor((frames() % kFrames)*1.0/kFrames, 1.f, 0.f, 1.f); |
- context_->clear(GL_COLOR_BUFFER_BIT); |
- context_->flush(); |
+ WebKit::WebGraphicsContext3D* context = context_provider_->Context3d(); |
+ context->makeContextCurrent(); |
+ context->clearColor((frames() % kFrames)*1.0/kFrames, 1.f, 0.f, 1.f); |
+ context->clear(GL_COLOR_BUFFER_BIT); |
+ context->flush(); |
} |
webgl_.SetExternalTexture(texture_.get()); |
webgl_.SchedulePaint(gfx::Rect(webgl_.bounds().size())); |
@@ -246,7 +250,7 @@ class WebGLBench : public BenchCompositorObserver { |
Layer* parent_; |
Layer webgl_; |
Compositor* compositor_; |
- scoped_ptr<WebGraphicsContext3D> context_; |
+ scoped_refptr<cc::ContextProvider> context_provider_; |
scoped_refptr<WebGLTexture> texture_; |
// The FBO that is used to render to the texture. |