diff options
author | boliu@chromium.org <boliu@chromium.org> | 2014-01-15 12:54:58 +0000 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2014-06-13 17:09:24 +0200 |
commit | a95f019bf395b7fbd21299652d4aaf2f4d233dec (patch) | |
tree | fe1962b8e42623d99872ffa2d5ea2727a5394eb9 /chromium/cc/output | |
parent | a6dd70e0328d155d5df8d6df48afbab690b08fb6 (diff) | |
download | qtwebengine-chromium-a95f019bf395b7fbd21299652d4aaf2f4d233dec.tar.gz |
[Backport] 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
Change-Id: I0580b6268d414e9ec46c7a154a4a3f659015dce7
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'chromium/cc/output')
-rw-r--r-- | chromium/cc/output/delegating_renderer.cc | 2 | ||||
-rw-r--r-- | chromium/cc/output/delegating_renderer.h | 4 | ||||
-rw-r--r-- | chromium/cc/output/gl_renderer.cc | 2 | ||||
-rw-r--r-- | chromium/cc/output/gl_renderer.h | 4 | ||||
-rw-r--r-- | chromium/cc/output/renderer.cc | 22 | ||||
-rw-r--r-- | chromium/cc/output/renderer.h | 23 | ||||
-rw-r--r-- | chromium/cc/output/software_renderer.cc | 2 | ||||
-rw-r--r-- | chromium/cc/output/software_renderer.h | 4 |
8 files changed, 53 insertions, 10 deletions
diff --git a/chromium/cc/output/delegating_renderer.cc b/chromium/cc/output/delegating_renderer.cc index 1b5716160fa..e3a725d3d7f 100644 --- a/chromium/cc/output/delegating_renderer.cc +++ b/chromium/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/chromium/cc/output/delegating_renderer.h b/chromium/cc/output/delegating_renderer.h index c18bfa7d7ac..beed12f1303 100644 --- a/chromium/cc/output/delegating_renderer.h +++ b/chromium/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/chromium/cc/output/gl_renderer.cc b/chromium/cc/output/gl_renderer.cc index f0e32f43083..51ba9968b78 100644 --- a/chromium/cc/output/gl_renderer.cc +++ b/chromium/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/chromium/cc/output/gl_renderer.h b/chromium/cc/output/gl_renderer.h index cf672f0afa4..ab95931a1f5 100644 --- a/chromium/cc/output/gl_renderer.h +++ b/chromium/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/chromium/cc/output/renderer.cc b/chromium/cc/output/renderer.cc index 2fe0ef75b5f..488039acd9e 100644 --- a/chromium/cc/output/renderer.cc +++ b/chromium/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/chromium/cc/output/renderer.h b/chromium/cc/output/renderer.h index 147b535fd72..a907cee0f65 100644 --- a/chromium/cc/output/renderer.h +++ b/chromium/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/chromium/cc/output/software_renderer.cc b/chromium/cc/output/software_renderer.cc index 421e541da7d..596f513e154 100644 --- a/chromium/cc/output/software_renderer.cc +++ b/chromium/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/chromium/cc/output/software_renderer.h b/chromium/cc/output/software_renderer.h index 18fb2a3fc33..aa29274153f 100644 --- a/chromium/cc/output/software_renderer.h +++ b/chromium/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_; |