diff options
Diffstat (limited to 'patches/chromium/0024-cc-Add-RendererCapabilitiesImpl.patch')
-rw-r--r-- | patches/chromium/0024-cc-Add-RendererCapabilitiesImpl.patch | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/patches/chromium/0024-cc-Add-RendererCapabilitiesImpl.patch b/patches/chromium/0024-cc-Add-RendererCapabilitiesImpl.patch new file mode 100644 index 000000000..0a2661b69 --- /dev/null +++ b/patches/chromium/0024-cc-Add-RendererCapabilitiesImpl.patch @@ -0,0 +1,378 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "boliu@chromium.org" <boliu@chromium.org> +Date: Wed, 15 Jan 2014 12:54:58 +0000 +Subject: cc: Add RendererCapabilitiesImpl + +Separate RendererCapabilities and RendererCapabilitiesImpl classes to +separate out capabilities that are not needed on main thread to be +not copied to main thread. This is to prepare for the future when main +and impl RendererCapabilities copies can temporarily get out of sync, +and there are less values to worry about. + +BUG=332616 + +Review URL: https://codereview.chromium.org/133063003 + +git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244870 0039d316-1c4b-4281-b951-d872f2087c98 + +Conflicts: + cc/trees/layer_tree_impl.h +--- + cc/output/delegating_renderer.cc | 2 +- + cc/output/delegating_renderer.h | 4 ++-- + cc/output/gl_renderer.cc | 2 +- + cc/output/gl_renderer.h | 4 ++-- + cc/output/renderer.cc | 22 ++++++++++++++++++++++ + cc/output/renderer.h | 23 ++++++++++++++++++++++- + cc/output/software_renderer.cc | 2 +- + cc/output/software_renderer.h | 4 ++-- + cc/trees/layer_tree_host.cc | 18 ++++++++++++------ + cc/trees/layer_tree_host.h | 12 +++++++----- + cc/trees/layer_tree_host_impl.cc | 3 ++- + cc/trees/layer_tree_host_impl.h | 4 ++-- + cc/trees/layer_tree_impl.cc | 2 +- + cc/trees/layer_tree_impl.h | 3 ++- + cc/trees/single_thread_proxy.cc | 3 ++- + cc/trees/thread_proxy.cc | 3 ++- + 16 files changed, 83 insertions(+), 28 deletions(-) + +diff --git a/cc/output/delegating_renderer.cc b/cc/output/delegating_renderer.cc +index 1b57161..e3a725d 100644 +--- a/cc/output/delegating_renderer.cc ++++ b/cc/output/delegating_renderer.cc +@@ -81,7 +81,7 @@ bool DelegatingRenderer::Initialize() { + + DelegatingRenderer::~DelegatingRenderer() {} + +-const RendererCapabilities& DelegatingRenderer::Capabilities() const { ++const RendererCapabilitiesImpl& DelegatingRenderer::Capabilities() const { + return capabilities_; + } + +diff --git a/cc/output/delegating_renderer.h b/cc/output/delegating_renderer.h +index c18bfa7..beed12f 100644 +--- a/cc/output/delegating_renderer.h ++++ b/cc/output/delegating_renderer.h +@@ -24,7 +24,7 @@ class CC_EXPORT DelegatingRenderer : public Renderer { + ResourceProvider* resource_provider); + virtual ~DelegatingRenderer(); + +- virtual const RendererCapabilities& Capabilities() const OVERRIDE; ++ virtual const RendererCapabilitiesImpl& Capabilities() const OVERRIDE; + + virtual bool CanReadPixels() const OVERRIDE; + +@@ -60,7 +60,7 @@ class CC_EXPORT DelegatingRenderer : public Renderer { + + OutputSurface* output_surface_; + ResourceProvider* resource_provider_; +- RendererCapabilities capabilities_; ++ RendererCapabilitiesImpl capabilities_; + scoped_ptr<DelegatedFrameData> delegated_frame_data_; + bool visible_; + +diff --git a/cc/output/gl_renderer.cc b/cc/output/gl_renderer.cc +index f0e32f4..51ba996 100644 +--- a/cc/output/gl_renderer.cc ++++ b/cc/output/gl_renderer.cc +@@ -223,7 +223,7 @@ GLRenderer::~GLRenderer() { + CleanupSharedObjects(); + } + +-const RendererCapabilities& GLRenderer::Capabilities() const { ++const RendererCapabilitiesImpl& GLRenderer::Capabilities() const { + return capabilities_; + } + +diff --git a/cc/output/gl_renderer.h b/cc/output/gl_renderer.h +index cf672f0..ab95931 100644 +--- a/cc/output/gl_renderer.h ++++ b/cc/output/gl_renderer.h +@@ -56,7 +56,7 @@ class CC_EXPORT GLRenderer : public DirectRenderer { + + virtual ~GLRenderer(); + +- virtual const RendererCapabilities& Capabilities() const OVERRIDE; ++ virtual const RendererCapabilitiesImpl& Capabilities() const OVERRIDE; + + blink::WebGraphicsContext3D* Context(); + +@@ -223,7 +223,7 @@ class CC_EXPORT GLRenderer : public DirectRenderer { + virtual void EnsureBackbuffer() OVERRIDE; + void EnforceMemoryPolicy(); + +- RendererCapabilities capabilities_; ++ RendererCapabilitiesImpl capabilities_; + + unsigned offscreen_framebuffer_id_; + +diff --git a/cc/output/renderer.cc b/cc/output/renderer.cc +index 2fe0ef7..488039a 100644 +--- a/cc/output/renderer.cc ++++ b/cc/output/renderer.cc +@@ -14,4 +14,26 @@ bool Renderer::IsContextLost() { + return false; + } + ++RendererCapabilitiesImpl::RendererCapabilitiesImpl() ++ : best_texture_format(RGBA_8888), ++ allow_partial_texture_updates(false), ++ using_offscreen_context3d(false), ++ max_texture_size(0), ++ using_shared_memory_resources(false), ++ using_partial_swap(false), ++ using_egl_image(false), ++ avoid_pow2_textures(false), ++ using_map_image(false), ++ using_discard_framebuffer(false) {} ++ ++RendererCapabilitiesImpl::~RendererCapabilitiesImpl() {} ++ ++RendererCapabilities RendererCapabilitiesImpl::MainThreadCapabilities() const { ++ return RendererCapabilities(best_texture_format, ++ allow_partial_texture_updates, ++ using_offscreen_context3d, ++ max_texture_size, ++ using_shared_memory_resources); ++} ++ + } // namespace cc +diff --git a/cc/output/renderer.h b/cc/output/renderer.h +index 147b535..a907cee 100644 +--- a/cc/output/renderer.h ++++ b/cc/output/renderer.h +@@ -16,6 +16,27 @@ class CompositorFrameAck; + class CompositorFrameMetadata; + class ScopedResource; + ++struct RendererCapabilitiesImpl { ++ RendererCapabilitiesImpl(); ++ ~RendererCapabilitiesImpl(); ++ ++ // Capabilities copied to main thread. ++ ResourceFormat best_texture_format; ++ bool allow_partial_texture_updates; ++ bool using_offscreen_context3d; ++ int max_texture_size; ++ bool using_shared_memory_resources; ++ ++ // Capabilities used on compositor thread only. ++ bool using_partial_swap; ++ bool using_egl_image; ++ bool avoid_pow2_textures; ++ bool using_map_image; ++ bool using_discard_framebuffer; ++ ++ RendererCapabilities MainThreadCapabilities() const; ++}; ++ + class CC_EXPORT RendererClient { + public: + virtual void SetFullRootLayerDamage() = 0; +@@ -25,7 +46,7 @@ class CC_EXPORT Renderer { + public: + virtual ~Renderer() {} + +- virtual const RendererCapabilities& Capabilities() const = 0; ++ virtual const RendererCapabilitiesImpl& Capabilities() const = 0; + + virtual bool CanReadPixels() const = 0; + +diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc +index 421e541..596f513 100644 +--- a/cc/output/software_renderer.cc ++++ b/cc/output/software_renderer.cc +@@ -96,7 +96,7 @@ SoftwareRenderer::SoftwareRenderer(RendererClient* client, + + SoftwareRenderer::~SoftwareRenderer() {} + +-const RendererCapabilities& SoftwareRenderer::Capabilities() const { ++const RendererCapabilitiesImpl& SoftwareRenderer::Capabilities() const { + return capabilities_; + } + +diff --git a/cc/output/software_renderer.h b/cc/output/software_renderer.h +index 18fb2a3f..aa29274 100644 +--- a/cc/output/software_renderer.h ++++ b/cc/output/software_renderer.h +@@ -34,7 +34,7 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer { + ResourceProvider* resource_provider); + + virtual ~SoftwareRenderer(); +- virtual const RendererCapabilities& Capabilities() const OVERRIDE; ++ virtual const RendererCapabilitiesImpl& Capabilities() const OVERRIDE; + virtual void Finish() OVERRIDE; + virtual void SwapBuffers(const CompositorFrameMetadata& metadata) OVERRIDE; + virtual void GetFramebufferPixels(void* pixels, gfx::Rect rect) OVERRIDE; +@@ -97,7 +97,7 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer { + void DrawUnsupportedQuad(const DrawingFrame* frame, + const DrawQuad* quad); + +- RendererCapabilities capabilities_; ++ RendererCapabilitiesImpl capabilities_; + bool visible_; + bool is_scissor_enabled_; + bool is_backbuffer_discarded_; +diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc +index 7432197..bc0029d 100644 +--- a/cc/trees/layer_tree_host.cc ++++ b/cc/trees/layer_tree_host.cc +@@ -47,17 +47,23 @@ static base::StaticAtomicSequenceNumber s_layer_tree_host_sequence_number; + + namespace cc { + ++RendererCapabilities::RendererCapabilities(ResourceFormat best_texture_format, ++ bool allow_partial_texture_updates, ++ bool using_offscreen_context3d, ++ int max_texture_size, ++ bool using_shared_memory_resources) ++ : best_texture_format(best_texture_format), ++ allow_partial_texture_updates(allow_partial_texture_updates), ++ using_offscreen_context3d(using_offscreen_context3d), ++ max_texture_size(max_texture_size), ++ using_shared_memory_resources(using_shared_memory_resources) {} ++ + RendererCapabilities::RendererCapabilities() + : best_texture_format(RGBA_8888), +- using_partial_swap(false), +- using_egl_image(false), + allow_partial_texture_updates(false), + using_offscreen_context3d(false), + max_texture_size(0), +- avoid_pow2_textures(false), +- using_map_image(false), +- using_shared_memory_resources(false), +- using_discard_framebuffer(false) {} ++ using_shared_memory_resources(false) {} + + RendererCapabilities::~RendererCapabilities() {} + +diff --git a/cc/trees/layer_tree_host.h b/cc/trees/layer_tree_host.h +index 8b9c1cf..3f9e345 100644 +--- a/cc/trees/layer_tree_host.h ++++ b/cc/trees/layer_tree_host.h +@@ -64,19 +64,21 @@ struct ScrollAndScaleSet; + // Provides information on an Impl's rendering capabilities back to the + // LayerTreeHost. + struct CC_EXPORT RendererCapabilities { ++ RendererCapabilities(ResourceFormat best_texture_format, ++ bool allow_partial_texture_updates, ++ bool using_offscreen_context3d, ++ int max_texture_size, ++ bool using_shared_memory_resources); ++ + RendererCapabilities(); + ~RendererCapabilities(); + ++ // Duplicate any modification to this list to RendererCapabilitiesImpl. + ResourceFormat best_texture_format; +- bool using_partial_swap; +- bool using_egl_image; + bool allow_partial_texture_updates; + bool using_offscreen_context3d; + int max_texture_size; +- bool avoid_pow2_textures; +- bool using_map_image; + bool using_shared_memory_resources; +- bool using_discard_framebuffer; + }; + + class CC_EXPORT LayerTreeHost { +diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc +index e4d1b73..7fbb247 100644 +--- a/cc/trees/layer_tree_host_impl.cc ++++ b/cc/trees/layer_tree_host_impl.cc +@@ -1448,7 +1448,8 @@ bool LayerTreeHostImpl::IsContextLost() { + return renderer_ && renderer_->IsContextLost(); + } + +-const RendererCapabilities& LayerTreeHostImpl::GetRendererCapabilities() const { ++const RendererCapabilitiesImpl& ++LayerTreeHostImpl::GetRendererCapabilities() const { + return renderer_->Capabilities(); + } + +diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h +index 531384f..f705a66 100644 +--- a/cc/trees/layer_tree_host_impl.h ++++ b/cc/trees/layer_tree_host_impl.h +@@ -53,7 +53,7 @@ class TextureMailboxDeleter; + class TopControlsManager; + class UIResourceBitmap; + class UIResourceRequest; +-struct RendererCapabilities; ++struct RendererCapabilitiesImpl; + + // LayerTreeHost->Proxy callback interface. + class LayerTreeHostImplClient { +@@ -257,7 +257,7 @@ class CC_EXPORT LayerTreeHostImpl + bool IsContextLost(); + TileManager* tile_manager() { return tile_manager_.get(); } + Renderer* renderer() { return renderer_.get(); } +- const RendererCapabilities& GetRendererCapabilities() const; ++ const RendererCapabilitiesImpl& GetRendererCapabilities() const; + + virtual bool SwapBuffers(const FrameData& frame); + void SetNeedsBeginImplFrame(bool enable); +diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc +index 9f181cd..3f7b4c6 100644 +--- a/cc/trees/layer_tree_impl.cc ++++ b/cc/trees/layer_tree_impl.cc +@@ -517,7 +517,7 @@ const LayerTreeSettings& LayerTreeImpl::settings() const { + return layer_tree_host_impl_->settings(); + } + +-const RendererCapabilities& LayerTreeImpl::GetRendererCapabilities() const { ++const RendererCapabilitiesImpl& LayerTreeImpl::GetRendererCapabilities() const { + return layer_tree_host_impl_->GetRendererCapabilities(); + } + +diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h +index 85a71f5c..19c53cd 100644 +--- a/cc/trees/layer_tree_impl.h ++++ b/cc/trees/layer_tree_impl.h +@@ -14,6 +14,7 @@ + #include "cc/base/scoped_ptr_vector.h" + #include "cc/base/swap_promise.h" + #include "cc/layers/layer_impl.h" ++#include "cc/output/renderer.h" + #include "cc/trees/layer_tree_host.h" + #include "cc/resources/ui_resource_client.h" + +@@ -60,7 +61,7 @@ class CC_EXPORT LayerTreeImpl { + // Methods called by the layer tree that pass-through or access LTHI. + // --------------------------------------------------------------------------- + const LayerTreeSettings& settings() const; +- const RendererCapabilities& GetRendererCapabilities() const; ++ const RendererCapabilitiesImpl& GetRendererCapabilities() const; + ContextProvider* context_provider() const; + OutputSurface* output_surface() const; + ResourceProvider* resource_provider() const; +diff --git a/cc/trees/single_thread_proxy.cc b/cc/trees/single_thread_proxy.cc +index f1f8a4f..a313588 100644 +--- a/cc/trees/single_thread_proxy.cc ++++ b/cc/trees/single_thread_proxy.cc +@@ -148,7 +148,8 @@ void SingleThreadProxy::CreateAndInitializeOutputSurface() { + output_surface.Pass()); + if (initialized) { + renderer_capabilities_for_main_thread_ = +- layer_tree_host_impl_->GetRendererCapabilities(); ++ layer_tree_host_impl_->GetRendererCapabilities() ++ .MainThreadCapabilities(); + } else if (offscreen_context_provider.get()) { + offscreen_context_provider->VerifyContexts(); + offscreen_context_provider = NULL; +diff --git a/cc/trees/thread_proxy.cc b/cc/trees/thread_proxy.cc +index 2823182..62e0ca2 100644 +--- a/cc/trees/thread_proxy.cc ++++ b/cc/trees/thread_proxy.cc +@@ -1427,7 +1427,8 @@ void ThreadProxy::InitializeOutputSurfaceOnImplThread( + *success = layer_tree_host_impl_->InitializeRenderer(output_surface.Pass()); + + if (*success) { +- *capabilities = layer_tree_host_impl_->GetRendererCapabilities(); ++ *capabilities = layer_tree_host_impl_->GetRendererCapabilities() ++ .MainThreadCapabilities(); + scheduler_on_impl_thread_->DidCreateAndInitializeOutputSurface(); + } else if (offscreen_context_provider.get()) { + if (offscreen_context_provider->BindToCurrentThread()) |