diff options
Diffstat (limited to 'chromium/ui/compositor')
-rw-r--r-- | chromium/ui/compositor/compositor.cc | 72 | ||||
-rw-r--r-- | chromium/ui/compositor/compositor.gyp | 5 | ||||
-rw-r--r-- | chromium/ui/compositor/compositor.h | 29 | ||||
-rw-r--r-- | chromium/ui/compositor/context_provider_from_context_factory.cc | 76 | ||||
-rw-r--r-- | chromium/ui/compositor/context_provider_from_context_factory.h | 45 | ||||
-rw-r--r-- | chromium/ui/compositor/layer_animation_sequence.cc | 5 | ||||
-rw-r--r-- | chromium/ui/compositor/layer_animation_sequence.h | 5 | ||||
-rw-r--r-- | chromium/ui/compositor/layer_animation_sequence_unittest.cc | 16 | ||||
-rw-r--r-- | chromium/ui/compositor/test_web_graphics_context_3d.cc | 220 | ||||
-rw-r--r-- | chromium/ui/compositor/test_web_graphics_context_3d.h | 450 |
10 files changed, 874 insertions, 49 deletions
diff --git a/chromium/ui/compositor/compositor.cc b/chromium/ui/compositor/compositor.cc index 88cfc563717..f16e56bf827 100644 --- a/chromium/ui/compositor/compositor.cc +++ b/chromium/ui/compositor/compositor.cc @@ -16,8 +16,6 @@ #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" #include "cc/base/switches.h" -#include "cc/debug/test_context_provider.h" -#include "cc/debug/test_web_graphics_context_3d.h" #include "cc/input/input_handler.h" #include "cc/layers/layer.h" #include "cc/output/context_provider.h" @@ -26,14 +24,15 @@ #include "third_party/skia/include/core/SkBitmap.h" #include "ui/compositor/compositor_observer.h" #include "ui/compositor/compositor_switches.h" +#include "ui/compositor/context_provider_from_context_factory.h" #include "ui/compositor/dip_util.h" #include "ui/compositor/layer.h" #include "ui/compositor/reflector.h" +#include "ui/compositor/test_web_graphics_context_3d.h" #include "ui/gl/gl_context.h" #include "ui/gl/gl_implementation.h" #include "ui/gl/gl_surface.h" #include "ui/gl/gl_switches.h" -#include "webkit/common/gpu/context_provider_in_process.h" #include "webkit/common/gpu/grcontext_for_webgraphicscontext3d.h" #include "webkit/common/gpu/webgraphicscontext3d_in_process_command_buffer_impl.h" @@ -109,17 +108,13 @@ bool DefaultContextFactory::Initialize() { scoped_ptr<cc::OutputSurface> DefaultContextFactory::CreateOutputSurface( Compositor* compositor) { - WebKit::WebGraphicsContext3D::Attributes attrs; - attrs.depth = false; - attrs.stencil = false; - attrs.antialias = false; - attrs.shareResources = true; + return make_scoped_ptr(new cc::OutputSurface( + CreateContextCommon(compositor, false))); +} - using webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl; - scoped_ptr<WebKit::WebGraphicsContext3D> context( - WebGraphicsContext3DInProcessCommandBufferImpl::CreateViewContext( - attrs, compositor->widget())); - return make_scoped_ptr(new cc::OutputSurface(context.Pass())); +scoped_ptr<WebKit::WebGraphicsContext3D> +DefaultContextFactory::CreateOffscreenContext() { + return CreateContextCommon(NULL, true); } scoped_refptr<Reflector> DefaultContextFactory::CreateReflector( @@ -137,7 +132,7 @@ DefaultContextFactory::OffscreenContextProviderForMainThread() { if (!offscreen_contexts_main_thread_.get() || !offscreen_contexts_main_thread_->DestroyedOnMainThread()) { offscreen_contexts_main_thread_ = - webkit::gpu::ContextProviderInProcess::CreateOffscreen(); + ContextProviderFromContextFactory::CreateForOffscreen(this); if (offscreen_contexts_main_thread_.get() && !offscreen_contexts_main_thread_->BindToCurrentThread()) offscreen_contexts_main_thread_ = NULL; @@ -150,7 +145,7 @@ DefaultContextFactory::OffscreenContextProviderForCompositorThread() { if (!offscreen_contexts_compositor_thread_.get() || !offscreen_contexts_compositor_thread_->DestroyedOnMainThread()) { offscreen_contexts_compositor_thread_ = - webkit::gpu::ContextProviderInProcess::CreateOffscreen(); + ContextProviderFromContextFactory::CreateForOffscreen(this); } return offscreen_contexts_compositor_thread_; } @@ -160,15 +155,39 @@ void DefaultContextFactory::RemoveCompositor(Compositor* compositor) { bool DefaultContextFactory::DoesCreateTestContexts() { return false; } +scoped_ptr<WebKit::WebGraphicsContext3D> +DefaultContextFactory::CreateContextCommon(Compositor* compositor, + bool offscreen) { + DCHECK(offscreen || compositor); + WebKit::WebGraphicsContext3D::Attributes attrs; + attrs.depth = false; + attrs.stencil = false; + attrs.antialias = false; + attrs.shareResources = true; + using webkit::gpu::WebGraphicsContext3DInProcessCommandBufferImpl; + if (offscreen) { + return WebGraphicsContext3DInProcessCommandBufferImpl:: + CreateOffscreenContext(attrs); + } + return WebGraphicsContext3DInProcessCommandBufferImpl::CreateViewContext( + attrs, compositor->widget()); +} + TestContextFactory::TestContextFactory() {} TestContextFactory::~TestContextFactory() {} scoped_ptr<cc::OutputSurface> TestContextFactory::CreateOutputSurface( Compositor* compositor) { - scoped_ptr<WebKit::WebGraphicsContext3D> context( - cc::TestWebGraphicsContext3D::Create()); - return make_scoped_ptr(new cc::OutputSurface(context.Pass())); + return make_scoped_ptr(new cc::OutputSurface(CreateOffscreenContext())); +} + +scoped_ptr<WebKit::WebGraphicsContext3D> +TestContextFactory::CreateOffscreenContext() { + scoped_ptr<ui::TestWebGraphicsContext3D> context( + new ui::TestWebGraphicsContext3D); + context->Initialize(); + return context.PassAs<WebKit::WebGraphicsContext3D>(); } scoped_refptr<Reflector> TestContextFactory::CreateReflector( @@ -184,7 +203,8 @@ scoped_refptr<cc::ContextProvider> TestContextFactory::OffscreenContextProviderForMainThread() { if (!offscreen_contexts_main_thread_.get() || offscreen_contexts_main_thread_->DestroyedOnMainThread()) { - offscreen_contexts_main_thread_ = cc::TestContextProvider::Create(); + offscreen_contexts_main_thread_ = + ContextProviderFromContextFactory::CreateForOffscreen(this); CHECK(offscreen_contexts_main_thread_->BindToCurrentThread()); } return offscreen_contexts_main_thread_; @@ -194,7 +214,8 @@ scoped_refptr<cc::ContextProvider> TestContextFactory::OffscreenContextProviderForCompositorThread() { if (!offscreen_contexts_compositor_thread_.get() || offscreen_contexts_compositor_thread_->DestroyedOnMainThread()) { - offscreen_contexts_compositor_thread_ = cc::TestContextProvider::Create(); + offscreen_contexts_compositor_thread_ = + ContextProviderFromContextFactory::CreateForOffscreen(this); } return offscreen_contexts_compositor_thread_; } @@ -479,7 +500,18 @@ void Compositor::Initialize() { #endif if (use_thread) { g_compositor_thread = new base::Thread("Browser Compositor"); +#if defined(OS_POSIX) + // Workaround for crbug.com/293736 + // On Posix, MessagePumpDefault uses system time, so delayed tasks (for + // compositor scheduling) work incorrectly across system time changes (e.g. + // tlsdate). So instead, use an IO loop, which uses libevent, that uses + // monotonic time (immune to these problems). + base::Thread::Options options; + options.message_loop_type = base::MessageLoop::TYPE_IO; + g_compositor_thread->StartWithOptions(options); +#else g_compositor_thread->Start(); +#endif } DCHECK(!g_compositor_initialized) << "Compositor initialized twice."; diff --git a/chromium/ui/compositor/compositor.gyp b/chromium/ui/compositor/compositor.gyp index 83d197131fa..57a4aafae21 100644 --- a/chromium/ui/compositor/compositor.gyp +++ b/chromium/ui/compositor/compositor.gyp @@ -30,6 +30,8 @@ 'compositor_observer.h', 'compositor_switches.cc', 'compositor_switches.h', + 'context_provider_from_context_factory.cc', + 'context_provider_from_context_factory.h', 'debug_utils.cc', 'debug_utils.h', 'dip_util.cc', @@ -56,6 +58,9 @@ 'scoped_animation_duration_scale_mode.h', 'scoped_layer_animation_settings.cc', 'scoped_layer_animation_settings.h', + # UI tests need TestWebGraphicsContext3D, so we always build it. + 'test_web_graphics_context_3d.cc', + 'test_web_graphics_context_3d.h', 'transform_animation_curve_adapter.cc', 'transform_animation_curve_adapter.h', ], diff --git a/chromium/ui/compositor/compositor.h b/chromium/ui/compositor/compositor.h index bc97dbafd6a..92cdd7194f8 100644 --- a/chromium/ui/compositor/compositor.h +++ b/chromium/ui/compositor/compositor.h @@ -34,7 +34,6 @@ class ContextProvider; class Layer; class LayerTreeDebugState; class LayerTreeHost; -class TestContextProvider; } namespace gfx { @@ -50,12 +49,6 @@ namespace WebKit { class WebGraphicsContext3D; } -namespace webkit { -namespace gpu { -class ContextProviderInProcess; -} -} - namespace ui { class Compositor; @@ -87,6 +80,10 @@ class COMPOSITOR_EXPORT ContextFactory { virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( Compositor* compositor) = 0; + // Creates a context used for offscreen rendering. This context can be shared + // with all compositors. + virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() = 0; + // Creates a reflector that copies the content of the |mirrored_compositor| // onto |mirroing_layer|. virtual scoped_refptr<Reflector> CreateReflector( @@ -117,6 +114,8 @@ class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { // ContextFactory implementation virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( Compositor* compositor) OVERRIDE; + virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() + OVERRIDE; virtual scoped_refptr<Reflector> CreateReflector( Compositor* compositor, @@ -133,9 +132,13 @@ class COMPOSITOR_EXPORT DefaultContextFactory : public ContextFactory { bool Initialize(); private: - scoped_refptr<webkit::gpu::ContextProviderInProcess> + scoped_ptr<WebKit::WebGraphicsContext3D> CreateContextCommon( + Compositor* compositor, + bool offscreen); + + scoped_refptr<ContextProviderFromContextFactory> offscreen_contexts_main_thread_; - scoped_refptr<webkit::gpu::ContextProviderInProcess> + scoped_refptr<ContextProviderFromContextFactory> offscreen_contexts_compositor_thread_; DISALLOW_COPY_AND_ASSIGN(DefaultContextFactory); @@ -150,6 +153,8 @@ class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory { // ContextFactory implementation virtual scoped_ptr<cc::OutputSurface> CreateOutputSurface( Compositor* compositor) OVERRIDE; + virtual scoped_ptr<WebKit::WebGraphicsContext3D> CreateOffscreenContext() + OVERRIDE; virtual scoped_refptr<Reflector> CreateReflector( Compositor* mirrored_compositor, @@ -164,8 +169,10 @@ class COMPOSITOR_EXPORT TestContextFactory : public ContextFactory { virtual bool DoesCreateTestContexts() OVERRIDE; private: - scoped_refptr<cc::TestContextProvider> offscreen_contexts_main_thread_; - scoped_refptr<cc::TestContextProvider> offscreen_contexts_compositor_thread_; + scoped_refptr<ContextProviderFromContextFactory> + offscreen_contexts_main_thread_; + scoped_refptr<ContextProviderFromContextFactory> + offscreen_contexts_compositor_thread_; DISALLOW_COPY_AND_ASSIGN(TestContextFactory); }; diff --git a/chromium/ui/compositor/context_provider_from_context_factory.cc b/chromium/ui/compositor/context_provider_from_context_factory.cc new file mode 100644 index 00000000000..262998a886a --- /dev/null +++ b/chromium/ui/compositor/context_provider_from_context_factory.cc @@ -0,0 +1,76 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "context_provider_from_context_factory.h" + +#include "base/logging.h" + +namespace ui { + +// static +scoped_refptr<ContextProviderFromContextFactory> +ContextProviderFromContextFactory::CreateForOffscreen(ContextFactory* factory) { + scoped_refptr<ContextProviderFromContextFactory> provider = + new ContextProviderFromContextFactory(factory); + if (!provider->InitializeOnMainThread()) + return NULL; + return provider; +} + +ContextProviderFromContextFactory::ContextProviderFromContextFactory( + ContextFactory* factory) + : factory_(factory), + destroyed_(false) { +} + +ContextProviderFromContextFactory::~ContextProviderFromContextFactory() { +} + +bool ContextProviderFromContextFactory::BindToCurrentThread() { + DCHECK(context3d_); + return context3d_->makeContextCurrent(); +} + +WebKit::WebGraphicsContext3D* ContextProviderFromContextFactory::Context3d() { + DCHECK(context3d_); + return context3d_.get(); +} + +class GrContext* ContextProviderFromContextFactory::GrContext() { + DCHECK(context3d_); + + if (!gr_context_) { + gr_context_.reset( + new webkit::gpu::GrContextForWebGraphicsContext3D(context3d_.get())); + } + return gr_context_->get(); +} + +void ContextProviderFromContextFactory::VerifyContexts() { + DCHECK(context3d_); + + if (context3d_->isContextLost()) { + base::AutoLock lock(destroyed_lock_); + destroyed_ = true; + } +} + +bool ContextProviderFromContextFactory::DestroyedOnMainThread() { + base::AutoLock lock(destroyed_lock_); + return destroyed_; +} + +void ContextProviderFromContextFactory::SetLostContextCallback( + const LostContextCallback& cb) { + NOTIMPLEMENTED(); +} + +bool ContextProviderFromContextFactory::InitializeOnMainThread() { + if (context3d_) + return true; + context3d_ = factory_->CreateOffscreenContext(); + return !!context3d_; +} + +} // namespace ui diff --git a/chromium/ui/compositor/context_provider_from_context_factory.h b/chromium/ui/compositor/context_provider_from_context_factory.h new file mode 100644 index 00000000000..57be7f47efd --- /dev/null +++ b/chromium/ui/compositor/context_provider_from_context_factory.h @@ -0,0 +1,45 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_COMPOSITOR_CONTEXT_PROVIDER_FROM_CONTEXT_FACTORY_H_ +#define UI_COMPOSITOR_CONTEXT_PROVIDER_FROM_CONTEXT_FACTORY_H_ + +#include "base/synchronization/lock.h" +#include "cc/output/context_provider.h" +#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" +#include "ui/compositor/compositor.h" +#include "webkit/common/gpu/grcontext_for_webgraphicscontext3d.h" + +namespace ui { + +class ContextProviderFromContextFactory + : public cc::ContextProvider { + public: + static scoped_refptr<ContextProviderFromContextFactory> CreateForOffscreen( + ContextFactory* factory); + + virtual bool BindToCurrentThread() OVERRIDE; + virtual WebKit::WebGraphicsContext3D* Context3d() OVERRIDE; + virtual class GrContext* GrContext() OVERRIDE; + virtual void VerifyContexts() OVERRIDE; + virtual bool DestroyedOnMainThread() OVERRIDE; + virtual void SetLostContextCallback(const LostContextCallback& cb) OVERRIDE; + + protected: + ContextProviderFromContextFactory(ContextFactory* factory); + virtual ~ContextProviderFromContextFactory(); + + bool InitializeOnMainThread(); + + private: + ContextFactory* factory_; + base::Lock destroyed_lock_; + bool destroyed_; + scoped_ptr<WebKit::WebGraphicsContext3D> context3d_; + scoped_ptr<webkit::gpu::GrContextForWebGraphicsContext3D> gr_context_; +}; + +} // namespace ui + +#endif // UI_COMPOSITOR_CONTEXT_PROVIDER_FROM_CONTEXT_FACTORY_H_ diff --git a/chromium/ui/compositor/layer_animation_sequence.cc b/chromium/ui/compositor/layer_animation_sequence.cc index f1c7eba6932..371e5409219 100644 --- a/chromium/ui/compositor/layer_animation_sequence.cc +++ b/chromium/ui/compositor/layer_animation_sequence.cc @@ -8,7 +8,6 @@ #include <iterator> #include "base/debug/trace_event.h" -#include "cc/animation/animation_id_provider.h" #include "ui/compositor/layer_animation_delegate.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animation_observer.h" @@ -77,10 +76,8 @@ void LayerAnimationSequence::Progress(base::TimeTicks now, } if (is_cyclic_ || last_element_ < elements_.size()) { - if (!elements_[current_index]->Started()) { - animation_group_id_ = cc::AnimationIdProvider::NextGroupId(); + if (!elements_[current_index]->Started()) elements_[current_index]->Start(delegate, animation_group_id_); - } if (elements_[current_index]->Progress(now, delegate)) redraw_required = true; last_progressed_fraction_ = diff --git a/chromium/ui/compositor/layer_animation_sequence.h b/chromium/ui/compositor/layer_animation_sequence.h index a2972f72be8..838c6b98841 100644 --- a/chromium/ui/compositor/layer_animation_sequence.h +++ b/chromium/ui/compositor/layer_animation_sequence.h @@ -102,8 +102,6 @@ class COMPOSITOR_EXPORT LayerAnimationSequence bool IsFirstElementThreaded() const; // Used to identify groups of sequences that are supposed to start together. - // Once started, used to identify the sequence that owns a particular - // threaded animation. int animation_group_id() const { return animation_group_id_; } void set_animation_group_id(int id) { animation_group_id_ = id; } @@ -166,9 +164,6 @@ class COMPOSITOR_EXPORT LayerAnimationSequence bool waiting_for_group_start_; // Identifies groups of sequences that are supposed to start together. - // Also used to identify the owner of a particular threaded animation; any - // in-progress threaded animation owned by this sequence will have this - // group id. int animation_group_id_; // These parties are notified when layer animations end. diff --git a/chromium/ui/compositor/layer_animation_sequence_unittest.cc b/chromium/ui/compositor/layer_animation_sequence_unittest.cc index 3b4591762b0..fe70601f15d 100644 --- a/chromium/ui/compositor/layer_animation_sequence_unittest.cc +++ b/chromium/ui/compositor/layer_animation_sequence_unittest.cc @@ -82,8 +82,8 @@ TEST(LayerAnimationSequenceTest, SingleThreadedElement) { LayerAnimationElement::CreateOpacityElement(target, delta)); for (int i = 0; i < 2; ++i) { - int starting_group_id = 1; - sequence.set_animation_group_id(starting_group_id); + int group_id = 1; + sequence.set_animation_group_id(group_id); start_time = effective_start + delta; sequence.set_start_time(start_time); delegate.SetOpacityFromAnimation(start); @@ -94,7 +94,7 @@ TEST(LayerAnimationSequenceTest, SingleThreadedElement) { sequence.OnThreadedAnimationStarted(cc::AnimationEvent( cc::AnimationEvent::Started, 0, - sequence.animation_group_id(), + group_id, cc::Animation::Opacity, (effective_start - base::TimeTicks()).InSecondsF())); sequence.Progress(effective_start + delta/2, &delegate); @@ -139,8 +139,8 @@ TEST(LayerAnimationSequenceTest, MultipleElement) { LayerAnimationElement::CreateTransformElement(target_transform, delta)); for (int i = 0; i < 2; ++i) { - int starting_group_id = 1; - sequence.set_animation_group_id(starting_group_id); + int group_id = 1; + sequence.set_animation_group_id(group_id); start_time = opacity_effective_start + 4 * delta; sequence.set_start_time(start_time); delegate.SetOpacityFromAnimation(start_opacity); @@ -150,11 +150,10 @@ TEST(LayerAnimationSequenceTest, MultipleElement) { sequence.Progress(start_time, &delegate); EXPECT_FLOAT_EQ(0.0, sequence.last_progressed_fraction()); opacity_effective_start = start_time + delta; - EXPECT_EQ(starting_group_id, sequence.animation_group_id()); sequence.OnThreadedAnimationStarted(cc::AnimationEvent( cc::AnimationEvent::Started, 0, - sequence.animation_group_id(), + group_id, cc::Animation::Opacity, (opacity_effective_start - base::TimeTicks()).InSecondsF())); sequence.Progress(opacity_effective_start + delta/2, &delegate); @@ -181,11 +180,10 @@ TEST(LayerAnimationSequenceTest, MultipleElement) { delegate.GetTransformForAnimation()); EXPECT_FLOAT_EQ(0.0, sequence.last_progressed_fraction()); transform_effective_start = opacity_effective_start + 3 * delta; - EXPECT_NE(starting_group_id, sequence.animation_group_id()); sequence.OnThreadedAnimationStarted(cc::AnimationEvent( cc::AnimationEvent::Started, 0, - sequence.animation_group_id(), + group_id, cc::Animation::Transform, (transform_effective_start - base::TimeTicks()).InSecondsF())); sequence.Progress(transform_effective_start + delta/2, &delegate); diff --git a/chromium/ui/compositor/test_web_graphics_context_3d.cc b/chromium/ui/compositor/test_web_graphics_context_3d.cc new file mode 100644 index 00000000000..d8febc9ca08 --- /dev/null +++ b/chromium/ui/compositor/test_web_graphics_context_3d.cc @@ -0,0 +1,220 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/compositor/test_web_graphics_context_3d.h" + +#include "ui/gl/gl_bindings.h" +#include "ui/gl/gl_context_stub.h" +#include "ui/gl/gl_surface_stub.h" + +namespace ui { + +TestWebGraphicsContext3D::TestWebGraphicsContext3D() + : next_texture_id_(1) {} + +TestWebGraphicsContext3D::~TestWebGraphicsContext3D() {} + +void TestWebGraphicsContext3D::Initialize() { + gl_surface_ = new gfx::GLSurfaceStub; + gl_context_ = new gfx::GLContextStub; + gl_context_->MakeCurrent(gl_surface_.get()); +} + +bool TestWebGraphicsContext3D::makeContextCurrent() { + return true; +} + +int TestWebGraphicsContext3D::width() { + return 0; +} + +int TestWebGraphicsContext3D::height() { + return 0; +} + +bool TestWebGraphicsContext3D::isContextLost() { + return false; +} + +void* TestWebGraphicsContext3D::mapBufferSubDataCHROMIUM( + WebKit::WGC3Denum target, + WebKit::WGC3Dintptr offset, + WebKit::WGC3Dsizeiptr size, + WebKit::WGC3Denum access) { + return 0; +} + +void* TestWebGraphicsContext3D::mapTexSubImage2DCHROMIUM( + WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Dint xoffset, + WebKit::WGC3Dint yoffset, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Denum format, + WebKit::WGC3Denum type, + WebKit::WGC3Denum access) { + return 0; +} + +WebKit::WebString TestWebGraphicsContext3D::getRequestableExtensionsCHROMIUM() { + return WebKit::WebString(); +} + +WebKit::WGC3Denum TestWebGraphicsContext3D::checkFramebufferStatus( + WebKit::WGC3Denum target) { + return GL_FRAMEBUFFER_COMPLETE; +} + +bool TestWebGraphicsContext3D::getActiveAttrib(WebKit::WebGLId program, + WebKit::WGC3Duint index, + ActiveInfo& info) { + return false; +} + +bool TestWebGraphicsContext3D::getActiveUniform(WebKit::WebGLId program, + WebKit::WGC3Duint index, + ActiveInfo& info) { + return false; +} + +WebKit::WGC3Dint TestWebGraphicsContext3D::getAttribLocation( + WebKit::WebGLId program, + const WebKit::WGC3Dchar* name) { + return 0; +} + +TestWebGraphicsContext3D::Attributes +TestWebGraphicsContext3D::getContextAttributes() { + return Attributes(); +} + +WebKit::WGC3Denum TestWebGraphicsContext3D::getError() { + return 0; +} + +void TestWebGraphicsContext3D::getIntegerv(WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) { + if (pname == GL_MAX_TEXTURE_SIZE) + *value = 1024; + else if (pname == GL_ACTIVE_TEXTURE) + *value = GL_TEXTURE0; +} + +void TestWebGraphicsContext3D::getProgramiv(WebKit::WebGLId program, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) { + if (pname == GL_LINK_STATUS) + *value = 1; +} + +WebKit::WebString TestWebGraphicsContext3D::getProgramInfoLog( + WebKit::WebGLId program) { + return WebKit::WebString(); +} + +void TestWebGraphicsContext3D::getShaderiv(WebKit::WebGLId shader, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) { + if (pname == GL_COMPILE_STATUS) + *value = 1; +} + +WebKit::WebString TestWebGraphicsContext3D::getShaderInfoLog( + WebKit::WebGLId shader) { + return WebKit::WebString(); +} + +WebKit::WebString TestWebGraphicsContext3D::getShaderSource( + WebKit::WebGLId shader) { + return WebKit::WebString(); +} + +WebKit::WebString TestWebGraphicsContext3D::getString(WebKit::WGC3Denum name) { + return WebKit::WebString(); +} + +WebKit::WGC3Dint TestWebGraphicsContext3D::getUniformLocation( + WebKit::WebGLId program, + const WebKit::WGC3Dchar* name) { + return 0; +} + +WebKit::WGC3Dsizeiptr TestWebGraphicsContext3D::getVertexAttribOffset( + WebKit::WGC3Duint index, + WebKit::WGC3Denum pname) { + return 0; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isBuffer( + WebKit::WebGLId buffer) { + return false; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isEnabled( + WebKit::WGC3Denum cap) { + return false; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isFramebuffer( + WebKit::WebGLId framebuffer) { + return false; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isProgram( + WebKit::WebGLId program) { + return false; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isRenderbuffer( + WebKit::WebGLId renderbuffer) { + return false; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isShader( + WebKit::WebGLId shader) { + return false; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isTexture( + WebKit::WebGLId texture) { + return false; +} + +WebKit::WebGLId TestWebGraphicsContext3D::createBuffer() { + return 1; +} + +WebKit::WebGLId TestWebGraphicsContext3D::createFramebuffer() { + return 1; +} + +WebKit::WebGLId TestWebGraphicsContext3D::createProgram() { + return 1; +} + +WebKit::WebGLId TestWebGraphicsContext3D::createRenderbuffer() { + return 1; +} + +WebKit::WebGLId TestWebGraphicsContext3D::createShader( + WebKit::WGC3Denum value) { + return 1; +} + +WebKit::WebGLId TestWebGraphicsContext3D::createTexture() { + return next_texture_id_++; +} + +WebKit::WebGLId TestWebGraphicsContext3D::createQueryEXT() +{ + return 1; +} + +WebKit::WGC3Dboolean TestWebGraphicsContext3D::isQueryEXT(WebKit::WebGLId) +{ + return true; +} + +} // namespace ui diff --git a/chromium/ui/compositor/test_web_graphics_context_3d.h b/chromium/ui/compositor/test_web_graphics_context_3d.h new file mode 100644 index 00000000000..f7a96220a47 --- /dev/null +++ b/chromium/ui/compositor/test_web_graphics_context_3d.h @@ -0,0 +1,450 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_COMPOSITOR_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ +#define UI_COMPOSITOR_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ + +#include "base/logging.h" +#include "base/memory/ref_counted.h" +#include "third_party/WebKit/public/platform/WebGraphicsContext3D.h" +#include "third_party/WebKit/public/platform/WebString.h" +#include "ui/compositor/compositor_export.h" + +namespace gfx { +class GLContext; +class GLSurface; +} + +namespace ui { + +// WebGraphicsContext3D that does nothing. Suitable for testing. +class COMPOSITOR_EXPORT TestWebGraphicsContext3D : + public NON_EXPORTED_BASE(WebKit::WebGraphicsContext3D) { + public: + TestWebGraphicsContext3D(); + virtual ~TestWebGraphicsContext3D(); + + void Initialize(); + virtual bool makeContextCurrent(); + virtual int width(); + virtual int height(); + virtual void reshape(int width, int height) {} + virtual void prepareTexture() {} + virtual void postSubBufferCHROMIUM(int x, int y, int width, int height) {} + virtual void synthesizeGLError(WebKit::WGC3Denum value) {} + virtual bool isContextLost(); + virtual void* mapBufferSubDataCHROMIUM(WebKit::WGC3Denum target, + WebKit::WGC3Dintptr offset, + WebKit::WGC3Dsizeiptr size, + WebKit::WGC3Denum access); + virtual void unmapBufferSubDataCHROMIUM(const void* data) {} + virtual void* mapTexSubImage2DCHROMIUM(WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Dint xoffset, + WebKit::WGC3Dint yoffset, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Denum format, + WebKit::WGC3Denum type, + WebKit::WGC3Denum access); + virtual void unmapTexSubImage2DCHROMIUM(const void* data) {} + virtual void setVisibilityCHROMIUM(bool visible) {} + virtual void discardFramebufferEXT(WebKit::WGC3Denum target, + WebKit::WGC3Dsizei numAttachments, + const WebKit::WGC3Denum* attachments) {} + virtual void setMemoryAllocationChangedCallbackCHROMIUM( + WebGraphicsMemoryAllocationChangedCallbackCHROMIUM*) { } + virtual WebKit::WebString getRequestableExtensionsCHROMIUM(); + virtual void requestExtensionCHROMIUM(const char*) {} + virtual void blitFramebufferCHROMIUM(WebKit::WGC3Dint src_x0, + WebKit::WGC3Dint src_y0, + WebKit::WGC3Dint src_x1, + WebKit::WGC3Dint src_y1, + WebKit::WGC3Dint dst_x0, + WebKit::WGC3Dint dst_y0, + WebKit::WGC3Dint dst_x1, + WebKit::WGC3Dint dst_y1, + WebKit::WGC3Dbitfield mask, + WebKit::WGC3Denum filter) {} + virtual void renderbufferStorageMultisampleCHROMIUM( + WebKit::WGC3Denum target, + WebKit::WGC3Dsizei samples, + WebKit::WGC3Denum internalformat, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height) {} + virtual void activeTexture(WebKit::WGC3Denum texture) {} + virtual void attachShader(WebKit::WebGLId program, WebKit::WebGLId shader) {} + virtual void bindAttribLocation(WebKit::WebGLId program, + WebKit::WGC3Duint index, + const WebKit::WGC3Dchar* name) {} + virtual void bindBuffer(WebKit::WGC3Denum target, WebKit::WebGLId buffer) {} + virtual void bindFramebuffer(WebKit::WGC3Denum target, + WebKit::WebGLId framebuffer) {} + virtual void bindRenderbuffer(WebKit::WGC3Denum target, + WebKit::WebGLId renderbuffer) {} + virtual void bindTexture(WebKit::WGC3Denum target, WebKit::WebGLId texture) {} + virtual void blendColor(WebKit::WGC3Dclampf red, + WebKit::WGC3Dclampf green, + WebKit::WGC3Dclampf blue, + WebKit::WGC3Dclampf alpha) {} + virtual void blendEquation(WebKit::WGC3Denum mode) {} + virtual void blendEquationSeparate(WebKit::WGC3Denum modeRGB, + WebKit::WGC3Denum modeAlpha) {} + virtual void blendFunc(WebKit::WGC3Denum sfactor, + WebKit::WGC3Denum dfactor) {} + virtual void blendFuncSeparate(WebKit::WGC3Denum src_rgb, + WebKit::WGC3Denum dst_rgb, + WebKit::WGC3Denum src_alpha, + WebKit::WGC3Denum dst_alpha) {} + virtual void bufferData(WebKit::WGC3Denum target, + WebKit::WGC3Dsizeiptr size, + const void* data, + WebKit::WGC3Denum usage) {} + virtual void bufferSubData(WebKit::WGC3Denum target, + WebKit::WGC3Dintptr offset, + WebKit::WGC3Dsizeiptr size, + const void* data) {} + virtual WebKit::WGC3Denum checkFramebufferStatus(WebKit::WGC3Denum target); + virtual void clear(WebKit::WGC3Dbitfield mask) {} + virtual void clearColor(WebKit::WGC3Dclampf red, + WebKit::WGC3Dclampf green, + WebKit::WGC3Dclampf blue, + WebKit::WGC3Dclampf alpha) {} + virtual void clearDepth(WebKit::WGC3Dclampf depth) {} + virtual void clearStencil(WebKit::WGC3Dint s) {} + virtual void colorMask(WebKit::WGC3Dboolean red, + WebKit::WGC3Dboolean green, + WebKit::WGC3Dboolean blue, + WebKit::WGC3Dboolean alpha) {} + virtual void compileShader(WebKit::WebGLId shader) {} + virtual void compressedTexImage2D(WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Denum internalformat, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Dint border, + WebKit::WGC3Dsizei imageSize, + const void* data) {} + virtual void compressedTexSubImage2D(WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Dint xoffset, + WebKit::WGC3Dint yoffset, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Denum format, + WebKit::WGC3Dsizei imageSize, + const void* data) {} + virtual void copyTexImage2D(WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Denum internal_format, + WebKit::WGC3Dint x, + WebKit::WGC3Dint y, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Dint border) {} + virtual void copyTexSubImage2D(WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Dint xoffset, + WebKit::WGC3Dint yoffset, + WebKit::WGC3Dint x, + WebKit::WGC3Dint y, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height) {} + virtual void cullFace(WebKit::WGC3Denum mode) {} + virtual void depthFunc(WebKit::WGC3Denum func) {} + virtual void depthMask(WebKit::WGC3Dboolean flag) {} + virtual void depthRange(WebKit::WGC3Dclampf z_near, + WebKit::WGC3Dclampf z_far) {} + virtual void detachShader(WebKit::WebGLId program, WebKit::WebGLId shader) {} + virtual void disable(WebKit::WGC3Denum cap) {} + virtual void disableVertexAttribArray(WebKit::WGC3Duint index) {} + virtual void drawArrays(WebKit::WGC3Denum mode, WebKit::WGC3Dint first, + WebKit::WGC3Dsizei count) {} + virtual void drawElements(WebKit::WGC3Denum mode, + WebKit::WGC3Dsizei count, + WebKit::WGC3Denum type, + WebKit::WGC3Dintptr offset) {} + virtual void enable(WebKit::WGC3Denum cap) {} + virtual void enableVertexAttribArray(WebKit::WGC3Duint index) {} + virtual void finish() {} + virtual void flush() {} + virtual void framebufferRenderbuffer(WebKit::WGC3Denum target, + WebKit::WGC3Denum attachment, + WebKit::WGC3Denum renderbuffertarget, + WebKit::WebGLId renderbuffer) {} + virtual void framebufferTexture2D(WebKit::WGC3Denum target, + WebKit::WGC3Denum attachment, + WebKit::WGC3Denum textarget, + WebKit::WebGLId texture, + WebKit::WGC3Dint level) {} + virtual void frontFace(WebKit::WGC3Denum mode) {} + virtual void generateMipmap(WebKit::WGC3Denum target) {} + virtual bool getActiveAttrib(WebKit::WebGLId program, + WebKit::WGC3Duint index, + ActiveInfo& info); + virtual bool getActiveUniform(WebKit::WebGLId program, + WebKit::WGC3Duint index, + ActiveInfo& info); + virtual void getAttachedShaders(WebKit::WebGLId program, + WebKit::WGC3Dsizei maxCount, + WebKit::WGC3Dsizei* count, + WebKit::WebGLId* shaders) {} + virtual WebKit::WGC3Dint getAttribLocation(WebKit::WebGLId program, + const WebKit::WGC3Dchar* name); + virtual void getBooleanv(WebKit::WGC3Denum pname, + WebKit::WGC3Dboolean* value) {} + virtual void getBufferParameteriv(WebKit::WGC3Denum target, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) {} + virtual Attributes getContextAttributes(); + virtual WebKit::WGC3Denum getError(); + virtual void getFloatv(WebKit::WGC3Denum pname, WebKit::WGC3Dfloat* value) {} + virtual void getFramebufferAttachmentParameteriv(WebKit::WGC3Denum target, + WebKit::WGC3Denum attachment, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) {} + virtual void getIntegerv(WebKit::WGC3Denum pname, WebKit::WGC3Dint* value); + virtual void getProgramiv(WebKit::WebGLId program, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value); + virtual WebKit::WebString getProgramInfoLog(WebKit::WebGLId program); + virtual void getRenderbufferParameteriv(WebKit::WGC3Denum target, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) {} + virtual void getShaderiv(WebKit::WebGLId shader, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value); + virtual WebKit::WebString getShaderInfoLog(WebKit::WebGLId shader); + virtual void getShaderPrecisionFormat(WebKit::WGC3Denum shaderType, + WebKit::WGC3Denum precisionType, + WebKit::WGC3Dint* range, + WebKit::WGC3Dint* precision) {} + virtual WebKit::WebString getShaderSource(WebKit::WebGLId shader); + virtual WebKit::WebString getString(WebKit::WGC3Denum name); + virtual void getTexParameterfv(WebKit::WGC3Denum target, + WebKit::WGC3Denum pname, + WebKit::WGC3Dfloat* value) {} + virtual void getTexParameteriv(WebKit::WGC3Denum target, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) {} + virtual void getUniformfv(WebKit::WebGLId program, + WebKit::WGC3Dint location, + WebKit::WGC3Dfloat* value) {} + virtual void getUniformiv(WebKit::WebGLId program, + WebKit::WGC3Dint location, + WebKit::WGC3Dint* value) {} + virtual WebKit::WGC3Dint getUniformLocation(WebKit::WebGLId program, + const WebKit::WGC3Dchar* name); + virtual void getVertexAttribfv(WebKit::WGC3Duint index, + WebKit::WGC3Denum pname, + WebKit::WGC3Dfloat* value) {} + virtual void getVertexAttribiv(WebKit::WGC3Duint index, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint* value) {} + virtual WebKit::WGC3Dsizeiptr getVertexAttribOffset(WebKit::WGC3Duint index, + WebKit::WGC3Denum pname); + virtual void hint(WebKit::WGC3Denum target, WebKit::WGC3Denum mode) {} + virtual WebKit::WGC3Dboolean isBuffer(WebKit::WebGLId buffer); + virtual WebKit::WGC3Dboolean isEnabled(WebKit::WGC3Denum cap); + virtual WebKit::WGC3Dboolean isFramebuffer(WebKit::WebGLId framebuffer); + virtual WebKit::WGC3Dboolean isProgram(WebKit::WebGLId program); + virtual WebKit::WGC3Dboolean isRenderbuffer(WebKit::WebGLId renderbuffer); + virtual WebKit::WGC3Dboolean isShader(WebKit::WebGLId shader); + virtual WebKit::WGC3Dboolean isTexture(WebKit::WebGLId texture); + virtual void lineWidth(WebKit::WGC3Dfloat) {} + virtual void linkProgram(WebKit::WebGLId program) {} + virtual void pixelStorei(WebKit::WGC3Denum pname, WebKit::WGC3Dint param) {} + virtual void polygonOffset(WebKit::WGC3Dfloat factor, + WebKit::WGC3Dfloat units) {} + virtual void readPixels(WebKit::WGC3Dint x, + WebKit::WGC3Dint y, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Denum format, + WebKit::WGC3Denum type, + void* pixels) {} + virtual void releaseShaderCompiler() {} + virtual void renderbufferStorage(WebKit::WGC3Denum target, + WebKit::WGC3Denum internalformat, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height) {} + virtual void sampleCoverage(WebKit::WGC3Dclampf value, + WebKit::WGC3Dboolean invert) {} + virtual void scissor(WebKit::WGC3Dint x, + WebKit::WGC3Dint y, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height) {} + virtual void shaderSource(WebKit::WebGLId shader, + const WebKit::WGC3Dchar* string) {} + virtual void stencilFunc(WebKit::WGC3Denum func, + WebKit::WGC3Dint ref, + WebKit::WGC3Duint mask) {} + virtual void stencilFuncSeparate(WebKit::WGC3Denum face, + WebKit::WGC3Denum func, + WebKit::WGC3Dint ref, + WebKit::WGC3Duint mask) {} + virtual void stencilMask(WebKit::WGC3Duint mask) {} + virtual void stencilMaskSeparate(WebKit::WGC3Denum face, + WebKit::WGC3Duint mask) {} + virtual void stencilOp(WebKit::WGC3Denum fail, + WebKit::WGC3Denum zfail, + WebKit::WGC3Denum zpass) {} + virtual void stencilOpSeparate(WebKit::WGC3Denum face, + WebKit::WGC3Denum fail, + WebKit::WGC3Denum zfail, + WebKit::WGC3Denum zpass) {} + virtual void texImage2D(WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Denum internal_format, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Dint border, + WebKit::WGC3Denum format, + WebKit::WGC3Denum type, + const void* pixels) {} + virtual void texParameterf(WebKit::WGC3Denum target, + WebKit::WGC3Denum pname, + WebKit::WGC3Dfloat param) {} + virtual void texParameteri(WebKit::WGC3Denum target, + WebKit::WGC3Denum pname, + WebKit::WGC3Dint param) {} + virtual void texSubImage2D(WebKit::WGC3Denum target, + WebKit::WGC3Dint level, + WebKit::WGC3Dint xoffset, + WebKit::WGC3Dint yoffset, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height, + WebKit::WGC3Denum format, + WebKit::WGC3Denum type, + const void* pixels) {} + virtual void uniform1f(WebKit::WGC3Dint location, WebKit::WGC3Dfloat x) {} + virtual void uniform1fv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dfloat* v) {} + virtual void uniform1i(WebKit::WGC3Dint location, WebKit::WGC3Dint x) {} + virtual void uniform1iv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dint* v) {} + virtual void uniform2f(WebKit::WGC3Dint location, + WebKit::WGC3Dfloat x, + WebKit::WGC3Dfloat y) {} + virtual void uniform2fv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dfloat* v) {} + virtual void uniform2i(WebKit::WGC3Dint location, + WebKit::WGC3Dint x, + WebKit::WGC3Dint y) {} + virtual void uniform2iv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dint* v) {} + virtual void uniform3f(WebKit::WGC3Dint location, + WebKit::WGC3Dfloat x, + WebKit::WGC3Dfloat y, + WebKit::WGC3Dfloat z) {} + virtual void uniform3fv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dfloat* v) {} + virtual void uniform3i(WebKit::WGC3Dint location, + WebKit::WGC3Dint x, + WebKit::WGC3Dint y, + WebKit::WGC3Dint z) {} + virtual void uniform3iv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dint* v) {} + virtual void uniform4f(WebKit::WGC3Dint location, + WebKit::WGC3Dfloat x, + WebKit::WGC3Dfloat y, + WebKit::WGC3Dfloat z, + WebKit::WGC3Dfloat w) {} + virtual void uniform4fv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dfloat* v) {} + virtual void uniform4i(WebKit::WGC3Dint location, + WebKit::WGC3Dint x, + WebKit::WGC3Dint y, + WebKit::WGC3Dint z, + WebKit::WGC3Dint w) {} + virtual void uniform4iv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + const WebKit::WGC3Dint* v) {} + virtual void uniformMatrix2fv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + WebKit::WGC3Dboolean transpose, + const WebKit::WGC3Dfloat* value) {} + virtual void uniformMatrix3fv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + WebKit::WGC3Dboolean transpose, + const WebKit::WGC3Dfloat* value) {} + virtual void uniformMatrix4fv(WebKit::WGC3Dint location, + WebKit::WGC3Dsizei count, + WebKit::WGC3Dboolean transpose, + const WebKit::WGC3Dfloat* value) {} + virtual void useProgram(WebKit::WebGLId program) {} + virtual void validateProgram(WebKit::WebGLId program) {} + virtual void vertexAttrib1f(WebKit::WGC3Duint index, WebKit::WGC3Dfloat x) {} + virtual void vertexAttrib1fv(WebKit::WGC3Duint index, + const WebKit::WGC3Dfloat* values) {} + virtual void vertexAttrib2f(WebKit::WGC3Duint index, + WebKit::WGC3Dfloat x, + WebKit::WGC3Dfloat y) {} + virtual void vertexAttrib2fv(WebKit::WGC3Duint index, + const WebKit::WGC3Dfloat* values) {} + virtual void vertexAttrib3f(WebKit::WGC3Duint index, + WebKit::WGC3Dfloat x, + WebKit::WGC3Dfloat y, + WebKit::WGC3Dfloat z) {} + virtual void vertexAttrib3fv(WebKit::WGC3Duint index, + const WebKit::WGC3Dfloat* values) {} + virtual void vertexAttrib4f(WebKit::WGC3Duint index, + WebKit::WGC3Dfloat x, + WebKit::WGC3Dfloat y, + WebKit::WGC3Dfloat z, + WebKit::WGC3Dfloat w) {} + virtual void vertexAttrib4fv(WebKit::WGC3Duint index, + const WebKit::WGC3Dfloat* values) {} + virtual void vertexAttribPointer(WebKit::WGC3Duint index, + WebKit::WGC3Dint size, + WebKit::WGC3Denum type, + WebKit::WGC3Dboolean normalized, + WebKit::WGC3Dsizei stride, + WebKit::WGC3Dintptr offset) {} + virtual void viewport(WebKit::WGC3Dint x, + WebKit::WGC3Dint y, + WebKit::WGC3Dsizei width, + WebKit::WGC3Dsizei height) {} + virtual WebKit::WebGLId createBuffer(); + virtual WebKit::WebGLId createFramebuffer(); + virtual WebKit::WebGLId createProgram(); + virtual WebKit::WebGLId createRenderbuffer(); + virtual WebKit::WebGLId createShader(WebKit::WGC3Denum value); + virtual WebKit::WebGLId createTexture(); + virtual void deleteBuffer(WebKit::WebGLId) {} + virtual void deleteFramebuffer(WebKit::WebGLId) {} + virtual void deleteProgram(WebKit::WebGLId) {} + virtual void deleteRenderbuffer(WebKit::WebGLId) {} + virtual void deleteShader(WebKit::WebGLId) {} + virtual void deleteTexture(WebKit::WebGLId) {} + virtual WebKit::WebGLId createQueryEXT(); + virtual void deleteQueryEXT(WebKit::WebGLId) {}; + virtual WebKit::WGC3Dboolean isQueryEXT(WebKit::WebGLId query); + virtual void beginQueryEXT(WebKit::WGC3Denum, WebKit::WebGLId) {} + virtual void endQueryEXT(WebKit::WGC3Denum) {} + virtual void getQueryivEXT(WebKit::WGC3Denum, + WebKit::WGC3Denum, + WebKit::WGC3Dint*) {} + virtual void getQueryObjectuivEXT(WebKit::WebGLId, + WebKit::WGC3Denum, + WebKit::WGC3Duint*) {} + + private: + scoped_refptr<gfx::GLContext> gl_context_; + scoped_refptr<gfx::GLSurface> gl_surface_; + unsigned next_texture_id_; + + DISALLOW_COPY_AND_ASSIGN(TestWebGraphicsContext3D); +}; + +} // namespace ui + +#endif // UI_COMPOSITOR_TEST_WEB_GRAPHICS_CONTEXT_3D_H_ |