diff options
author | jbauman <jbauman@chromium.org> | 2015-08-06 19:10:34 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-07 02:11:18 +0000 |
commit | 95f74135de282631e09bc3c535fccd14189027b5 (patch) | |
tree | 7d42771f3d6eaebbe0a697541415485809edecc5 | |
parent | e143dde024d13c5548c3f323519cebfe7ab4f51e (diff) | |
download | chromium_src-95f74135de282631e09bc3c535fccd14189027b5.zip chromium_src-95f74135de282631e09bc3c535fccd14189027b5.tar.gz chromium_src-95f74135de282631e09bc3c535fccd14189027b5.tar.bz2 |
Remove SoftwareFrameData
We never transmit software frames over IPC anymore, so this is unnecessary.
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1265243004
Cr-Commit-Position: refs/heads/master@{#342265}
35 files changed, 51 insertions, 279 deletions
diff --git a/android_webview/browser/hardware_renderer.cc b/android_webview/browser/hardware_renderer.cc index 8323ca4..36a4f1f 100644 --- a/android_webview/browser/hardware_renderer.cc +++ b/android_webview/browser/hardware_renderer.cc @@ -84,7 +84,6 @@ void HardwareRenderer::CommitFrame() { scoped_ptr<cc::CompositorFrame> frame = child_frame_->frame.Pass(); DCHECK(frame.get()); DCHECK(!frame->gl_frame_data); - DCHECK(!frame->software_frame_data); // On Android we put our browser layers in physical pixels and set our // browser CC device_scale_factor to 1, so suppress the transform between diff --git a/cc/BUILD.gn b/cc/BUILD.gn index 3b40959..1f3e4ee 100644 --- a/cc/BUILD.gn +++ b/cc/BUILD.gn @@ -271,8 +271,6 @@ component("cc") { "output/renderer_settings.h", "output/shader.cc", "output/shader.h", - "output/software_frame_data.cc", - "output/software_frame_data.h", "output/software_output_device.cc", "output/software_output_device.h", "output/software_renderer.cc", @@ -328,8 +328,6 @@ 'output/renderer_settings.h', 'output/shader.cc', 'output/shader.h', - 'output/software_frame_data.cc', - 'output/software_frame_data.h', 'output/software_output_device.cc', 'output/software_output_device.h', 'output/software_renderer.cc', diff --git a/cc/output/compositor_frame.cc b/cc/output/compositor_frame.cc index e6d713d..e612b28 100644 --- a/cc/output/compositor_frame.cc +++ b/cc/output/compositor_frame.cc @@ -13,7 +13,6 @@ CompositorFrame::~CompositorFrame() {} void CompositorFrame::AssignTo(CompositorFrame* target) { target->delegated_frame_data = delegated_frame_data.Pass(); target->gl_frame_data = gl_frame_data.Pass(); - target->software_frame_data = software_frame_data.Pass(); target->metadata = metadata; } diff --git a/cc/output/compositor_frame.h b/cc/output/compositor_frame.h index e5c8a33..1cdd230 100644 --- a/cc/output/compositor_frame.h +++ b/cc/output/compositor_frame.h @@ -10,7 +10,6 @@ #include "cc/output/compositor_frame_metadata.h" #include "cc/output/delegated_frame_data.h" #include "cc/output/gl_frame_data.h" -#include "cc/output/software_frame_data.h" namespace cc { @@ -22,7 +21,6 @@ class CC_EXPORT CompositorFrame { CompositorFrameMetadata metadata; scoped_ptr<DelegatedFrameData> delegated_frame_data; scoped_ptr<GLFrameData> gl_frame_data; - scoped_ptr<SoftwareFrameData> software_frame_data; void AssignTo(CompositorFrame* target); diff --git a/cc/output/compositor_frame_ack.cc b/cc/output/compositor_frame_ack.cc index feb0bac..a411b42 100644 --- a/cc/output/compositor_frame_ack.cc +++ b/cc/output/compositor_frame_ack.cc @@ -6,8 +6,7 @@ namespace cc { -CompositorFrameAck::CompositorFrameAck() - : last_software_frame_id(0) {} +CompositorFrameAck::CompositorFrameAck() {} CompositorFrameAck::~CompositorFrameAck() {} diff --git a/cc/output/compositor_frame_ack.h b/cc/output/compositor_frame_ack.h index 943a206..aa48fa1 100644 --- a/cc/output/compositor_frame_ack.h +++ b/cc/output/compositor_frame_ack.h @@ -19,7 +19,6 @@ class CC_EXPORT CompositorFrameAck { ReturnedResourceArray resources; scoped_ptr<GLFrameData> gl_frame_data; - unsigned last_software_frame_id; private: DISALLOW_COPY_AND_ASSIGN(CompositorFrameAck); diff --git a/cc/output/software_frame_data.cc b/cc/output/software_frame_data.cc deleted file mode 100644 index 7fc380e..0000000 --- a/cc/output/software_frame_data.cc +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 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 "cc/output/software_frame_data.h" - -namespace cc { - -SoftwareFrameData::SoftwareFrameData() : id(0) {} - -SoftwareFrameData::~SoftwareFrameData() {} - -} // namespace cc diff --git a/cc/output/software_frame_data.h b/cc/output/software_frame_data.h deleted file mode 100644 index 9cb74ef..0000000 --- a/cc/output/software_frame_data.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 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 CC_OUTPUT_SOFTWARE_FRAME_DATA_H_ -#define CC_OUTPUT_SOFTWARE_FRAME_DATA_H_ - -#include "cc/base/cc_export.h" -#include "cc/resources/shared_bitmap.h" -#include "ui/gfx/geometry/rect.h" -#include "ui/gfx/geometry/size.h" - -namespace cc { - -class CC_EXPORT SoftwareFrameData { - public: - SoftwareFrameData(); - ~SoftwareFrameData(); - - unsigned id; - gfx::Size size; - gfx::Rect damage_rect; - SharedBitmapId bitmap_id; -}; - -} // namespace cc - -#endif // CC_OUTPUT_SOFTWARE_FRAME_DATA_H_ diff --git a/cc/output/software_output_device.cc b/cc/output/software_output_device.cc index 954c7b9..0712938 100644 --- a/cc/output/software_output_device.cc +++ b/cc/output/software_output_device.cc @@ -5,7 +5,6 @@ #include "cc/output/software_output_device.h" #include "base/logging.h" -#include "cc/output/software_frame_data.h" #include "third_party/skia/include/core/SkCanvas.h" #include "ui/gfx/vsync_provider.h" @@ -35,16 +34,7 @@ SkCanvas* SoftwareOutputDevice::BeginPaint(const gfx::Rect& damage_rect) { return surface_ ? surface_->getCanvas() : nullptr; } -void SoftwareOutputDevice::EndPaint(SoftwareFrameData* frame_data) { - DCHECK(frame_data); - frame_data->id = 0; - frame_data->size = viewport_pixel_size_; - frame_data->damage_rect = damage_rect_; -} - -void SoftwareOutputDevice::ReclaimSoftwareFrame(unsigned id) { - NOTIMPLEMENTED(); -} +void SoftwareOutputDevice::EndPaint() {} gfx::VSyncProvider* SoftwareOutputDevice::GetVSyncProvider() { return vsync_provider_.get(); diff --git a/cc/output/software_output_device.h b/cc/output/software_output_device.h index 45ce831..127c70a 100644 --- a/cc/output/software_output_device.h +++ b/cc/output/software_output_device.h @@ -23,8 +23,6 @@ class VSyncProvider; namespace cc { -class SoftwareFrameData; - // This is a "tear-off" class providing software drawing support to // OutputSurface, such as to a platform-provided window framebuffer. class CC_EXPORT SoftwareOutputDevice { @@ -46,7 +44,7 @@ class CC_EXPORT SoftwareOutputDevice { // Called on FinishDrawingFrame. The compositor will no longer mutate the the // SkCanvas instance returned by |BeginPaint| and should discard any reference // that it holds to it. - virtual void EndPaint(SoftwareFrameData* frame_data); + virtual void EndPaint(); // Discard the backing buffer in the surface provided by this instance. virtual void DiscardBackbuffer() {} @@ -54,12 +52,6 @@ class CC_EXPORT SoftwareOutputDevice { // Ensures that there is a backing buffer available on this instance. virtual void EnsureBackbuffer() {} - // TODO(skaslev) Remove this after UberCompositor lands. - // Called in response to receiving a SwapBuffersAck. At this point, software - // frame identified by id can be reused or discarded as it is no longer being - // displayed. - virtual void ReclaimSoftwareFrame(unsigned id); - // VSyncProvider used to update the timer used to schedule draws with the // hardware vsync. Return NULL if a provider doesn't exist. virtual gfx::VSyncProvider* GetVSyncProvider(); diff --git a/cc/output/software_renderer.cc b/cc/output/software_renderer.cc index 69f0986..000d83a7 100644 --- a/cc/output/software_renderer.cc +++ b/cc/output/software_renderer.cc @@ -113,22 +113,16 @@ void SoftwareRenderer::FinishDrawingFrame(DrawingFrame* frame) { current_canvas_ = NULL; root_canvas_ = NULL; - current_frame_data_.reset(new SoftwareFrameData); - output_device_->EndPaint(current_frame_data_.get()); + output_device_->EndPaint(); } void SoftwareRenderer::SwapBuffers(const CompositorFrameMetadata& metadata) { TRACE_EVENT0("cc,benchmark", "SoftwareRenderer::SwapBuffers"); CompositorFrame compositor_frame; compositor_frame.metadata = metadata; - compositor_frame.software_frame_data = current_frame_data_.Pass(); output_surface_->SwapBuffers(&compositor_frame); } -void SoftwareRenderer::ReceiveSwapBuffersAck(const CompositorFrameAck& ack) { - output_device_->ReclaimSoftwareFrame(ack.last_software_frame_id); -} - bool SoftwareRenderer::FlippedFramebuffer(const DrawingFrame* frame) const { return false; } diff --git a/cc/output/software_renderer.h b/cc/output/software_renderer.h index c309042..3fc163d 100644 --- a/cc/output/software_renderer.h +++ b/cc/output/software_renderer.h @@ -37,7 +37,6 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer { const RendererCapabilitiesImpl& Capabilities() const override; void Finish() override; void SwapBuffers(const CompositorFrameMetadata& metadata) override; - void ReceiveSwapBuffersAck(const CompositorFrameAck& ack) override; void DiscardBackbuffer() override; void EnsureBackbuffer() override; @@ -105,7 +104,6 @@ class CC_EXPORT SoftwareRenderer : public DirectRenderer { scoped_ptr<ResourceProvider::ScopedWriteLockSoftware> current_framebuffer_lock_; skia::RefPtr<SkCanvas> current_framebuffer_canvas_; - scoped_ptr<SoftwareFrameData> current_frame_data_; DISALLOW_COPY_AND_ASSIGN(SoftwareRenderer); }; diff --git a/cc/surfaces/display_unittest.cc b/cc/surfaces/display_unittest.cc index 74dfa93..b7b50c3 100644 --- a/cc/surfaces/display_unittest.cc +++ b/cc/surfaces/display_unittest.cc @@ -31,10 +31,19 @@ class EmptySurfaceFactoryClient : public SurfaceFactoryClient { void ReturnResources(const ReturnedResourceArray& resources) override {} }; +class TestSoftwareOutputDevice : public SoftwareOutputDevice { + public: + TestSoftwareOutputDevice() {} + + gfx::Rect damage_rect() const { return damage_rect_; } + gfx::Size viewport_pixel_size() const { return viewport_pixel_size_; } +}; + class DisplayTest : public testing::Test { public: DisplayTest() : factory_(&manager_, &empty_client_), + software_output_device_(nullptr), task_runner_(new base::NullTaskRunner) {} protected: @@ -43,8 +52,10 @@ class DisplayTest : public testing::Test { output_surface_ = FakeOutputSurface::Create3d( TestContextProvider::Create(context.Pass())); } else { - output_surface_ = FakeOutputSurface::CreateSoftware( - make_scoped_ptr(new SoftwareOutputDevice)); + scoped_ptr<TestSoftwareOutputDevice> output_device( + new TestSoftwareOutputDevice); + software_output_device_ = output_device.get(); + output_surface_ = FakeOutputSurface::CreateSoftware(output_device.Pass()); } shared_bitmap_manager_.reset(new TestSharedBitmapManager); output_surface_ptr_ = output_surface_.get(); @@ -64,6 +75,7 @@ class DisplayTest : public testing::Test { SurfaceManager manager_; EmptySurfaceFactoryClient empty_client_; SurfaceFactory factory_; + TestSoftwareOutputDevice* software_output_device_; scoped_ptr<FakeOutputSurface> output_surface_; FakeOutputSurface* output_surface_ptr_; FakeBeginFrameSource fake_begin_frame_source_; @@ -173,12 +185,9 @@ TEST_F(DisplayTest, DisplayDamaged) { display.DrawAndSwap(); EXPECT_TRUE(scheduler.swapped); EXPECT_EQ(1u, output_surface_ptr_->num_sent_frames()); - SoftwareFrameData* software_data = - output_surface_ptr_->last_sent_frame().software_frame_data.get(); - ASSERT_NE(nullptr, software_data); - EXPECT_EQ(gfx::Size(100, 100).ToString(), software_data->size.ToString()); - EXPECT_EQ(gfx::Rect(0, 0, 100, 100).ToString(), - software_data->damage_rect.ToString()); + EXPECT_EQ(gfx::Size(100, 100), + software_output_device_->viewport_pixel_size()); + EXPECT_EQ(gfx::Rect(0, 0, 100, 100), software_output_device_->damage_rect()); { // Only damaged portion should be swapped. @@ -198,12 +207,9 @@ TEST_F(DisplayTest, DisplayDamaged) { display.DrawAndSwap(); EXPECT_TRUE(scheduler.swapped); EXPECT_EQ(2u, output_surface_ptr_->num_sent_frames()); - software_data = - output_surface_ptr_->last_sent_frame().software_frame_data.get(); - ASSERT_NE(nullptr, software_data); - EXPECT_EQ(gfx::Size(100, 100).ToString(), software_data->size.ToString()); - EXPECT_EQ(gfx::Rect(10, 10, 1, 1).ToString(), - software_data->damage_rect.ToString()); + EXPECT_EQ(gfx::Size(100, 100), + software_output_device_->viewport_pixel_size()); + EXPECT_EQ(gfx::Rect(10, 10, 1, 1), software_output_device_->damage_rect()); } { diff --git a/cc/test/fake_output_surface.cc b/cc/test/fake_output_surface.cc index 0279421..dbb1d9d 100644 --- a/cc/test/fake_output_surface.cc +++ b/cc/test/fake_output_surface.cc @@ -75,8 +75,7 @@ FakeOutputSurface::FakeOutputSurface( FakeOutputSurface::~FakeOutputSurface() {} void FakeOutputSurface::SwapBuffers(CompositorFrame* frame) { - if (frame->software_frame_data || frame->delegated_frame_data || - !context_provider()) { + if (frame->delegated_frame_data || !context_provider()) { frame->AssignTo(&last_sent_frame_); if (last_sent_frame_.delegated_frame_data) { diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc index 3c39a2a..b8dbc1e 100644 --- a/cc/trees/layer_tree_host_impl_unittest.cc +++ b/cc/trees/layer_tree_host_impl_unittest.cc @@ -6035,9 +6035,9 @@ class CountingSoftwareDevice : public SoftwareOutputDevice { ++frames_began_; return SoftwareOutputDevice::BeginPaint(damage_rect); } - void EndPaint(SoftwareFrameData* frame_data) override { + void EndPaint() override { + SoftwareOutputDevice::EndPaint(); ++frames_ended_; - SoftwareOutputDevice::EndPaint(frame_data); } int frames_began_, frames_ended_; 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 23de34a..85c7bcb 100644 --- a/content/browser/android/in_process/synchronous_compositor_output_surface.cc +++ b/content/browser/android/in_process/synchronous_compositor_output_surface.cc @@ -51,7 +51,7 @@ class SynchronousCompositorOutputSurface::SoftwareDevice << "Mutliple calls to BeginPaint per frame"; return surface_->current_sw_canvas_; } - void EndPaint(cc::SoftwareFrameData* frame_data) override {} + void EndPaint() override {} private: SynchronousCompositorOutputSurface* surface_; diff --git a/content/browser/compositor/software_output_device_mac.h b/content/browser/compositor/software_output_device_mac.h index 4721c61..5b6ac86 100644 --- a/content/browser/compositor/software_output_device_mac.h +++ b/content/browser/compositor/software_output_device_mac.h @@ -22,7 +22,7 @@ class SoftwareOutputDeviceMac : public cc::SoftwareOutputDevice { explicit SoftwareOutputDeviceMac(ui::Compositor* compositor); ~SoftwareOutputDeviceMac() override; - void EndPaint(cc::SoftwareFrameData* frame_data) override; + void EndPaint() override; private: ui::Compositor* compositor_; diff --git a/content/browser/compositor/software_output_device_mac.mm b/content/browser/compositor/software_output_device_mac.mm index 70ca4b4..5dacbae 100644 --- a/content/browser/compositor/software_output_device_mac.mm +++ b/content/browser/compositor/software_output_device_mac.mm @@ -18,8 +18,8 @@ SoftwareOutputDeviceMac::SoftwareOutputDeviceMac(ui::Compositor* compositor) SoftwareOutputDeviceMac::~SoftwareOutputDeviceMac() { } -void SoftwareOutputDeviceMac::EndPaint(cc::SoftwareFrameData* frame_data) { - SoftwareOutputDevice::EndPaint(frame_data); +void SoftwareOutputDeviceMac::EndPaint() { + SoftwareOutputDevice::EndPaint(); ui::AcceleratedWidgetMacGotSoftwareFrame( compositor_->widget(), scale_factor_, surface_->getCanvas()); } diff --git a/content/browser/compositor/software_output_device_ozone.cc b/content/browser/compositor/software_output_device_ozone.cc index 0d1edd0..0476ccb 100644 --- a/content/browser/compositor/software_output_device_ozone.cc +++ b/content/browser/compositor/software_output_device_ozone.cc @@ -50,8 +50,8 @@ SkCanvas* SoftwareOutputDeviceOzone::BeginPaint(const gfx::Rect& damage_rect) { return SoftwareOutputDevice::BeginPaint(damage_rect); } -void SoftwareOutputDeviceOzone::EndPaint(cc::SoftwareFrameData* frame_data) { - SoftwareOutputDevice::EndPaint(frame_data); +void SoftwareOutputDeviceOzone::EndPaint() { + SoftwareOutputDevice::EndPaint(); surface_ozone_->PresentCanvas(damage_rect_); } diff --git a/content/browser/compositor/software_output_device_ozone.h b/content/browser/compositor/software_output_device_ozone.h index ed0120d..3a7684d 100644 --- a/content/browser/compositor/software_output_device_ozone.h +++ b/content/browser/compositor/software_output_device_ozone.h @@ -28,7 +28,7 @@ class CONTENT_EXPORT SoftwareOutputDeviceOzone void Resize(const gfx::Size& viewport_pixel_size, float scale_factor) override; SkCanvas* BeginPaint(const gfx::Rect& damage_rect) override; - void EndPaint(cc::SoftwareFrameData* frame_data) override; + void EndPaint() override; private: ui::Compositor* compositor_; diff --git a/content/browser/compositor/software_output_device_ozone_unittest.cc b/content/browser/compositor/software_output_device_ozone_unittest.cc index 19d5c56..935fafa 100644 --- a/content/browser/compositor/software_output_device_ozone_unittest.cc +++ b/content/browser/compositor/software_output_device_ozone_unittest.cc @@ -5,7 +5,6 @@ #include "base/memory/scoped_ptr.h" #include "base/message_loop/message_loop.h" #include "base/thread_task_runner_handle.h" -#include "cc/output/software_frame_data.h" #include "content/browser/compositor/software_output_device_ozone.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkDevice.h" diff --git a/content/browser/compositor/software_output_device_win.cc b/content/browser/compositor/software_output_device_win.cc index 35d14b1..098da82 100644 --- a/content/browser/compositor/software_output_device_win.cc +++ b/content/browser/compositor/software_output_device_win.cc @@ -125,14 +125,13 @@ SkCanvas* SoftwareOutputDeviceWin::BeginPaint(const gfx::Rect& damage_rect) { return contents_.get(); } -void SoftwareOutputDeviceWin::EndPaint(cc::SoftwareFrameData* frame_data) { +void SoftwareOutputDeviceWin::EndPaint() { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(contents_); - DCHECK(frame_data); DCHECK(in_paint_); in_paint_ = false; - SoftwareOutputDevice::EndPaint(frame_data); + SoftwareOutputDevice::EndPaint(); gfx::Rect rect = damage_rect_; rect.Intersect(gfx::Rect(viewport_pixel_size_)); diff --git a/content/browser/compositor/software_output_device_win.h b/content/browser/compositor/software_output_device_win.h index 8b7fc16..3f444ae 100644 --- a/content/browser/compositor/software_output_device_win.h +++ b/content/browser/compositor/software_output_device_win.h @@ -52,7 +52,7 @@ class SoftwareOutputDeviceWin : public cc::SoftwareOutputDevice { void Resize(const gfx::Size& viewport_pixel_size, float scale_factor) override; SkCanvas* BeginPaint(const gfx::Rect& damage_rect) override; - void EndPaint(cc::SoftwareFrameData* frame_data) override; + void EndPaint() override; gfx::Size viewport_pixel_size() const { return viewport_pixel_size_; } void ReleaseContents(); diff --git a/content/browser/compositor/software_output_device_x11.cc b/content/browser/compositor/software_output_device_x11.cc index fe7eb90..f071978 100644 --- a/content/browser/compositor/software_output_device_x11.cc +++ b/content/browser/compositor/software_output_device_x11.cc @@ -36,11 +36,10 @@ SoftwareOutputDeviceX11::~SoftwareOutputDeviceX11() { XFreeGC(display_, gc_); } -void SoftwareOutputDeviceX11::EndPaint(cc::SoftwareFrameData* frame_data) { +void SoftwareOutputDeviceX11::EndPaint() { DCHECK_CURRENTLY_ON(BrowserThread::UI); - DCHECK(frame_data); - SoftwareOutputDevice::EndPaint(frame_data); + SoftwareOutputDevice::EndPaint(); if (!surface_) return; diff --git a/content/browser/compositor/software_output_device_x11.h b/content/browser/compositor/software_output_device_x11.h index 88c80a3..c6d87a3 100644 --- a/content/browser/compositor/software_output_device_x11.h +++ b/content/browser/compositor/software_output_device_x11.h @@ -22,7 +22,7 @@ class SoftwareOutputDeviceX11 : public cc::SoftwareOutputDevice { ~SoftwareOutputDeviceX11() override; - void EndPaint(cc::SoftwareFrameData* frame_data) override; + void EndPaint() override; private: ui::Compositor* compositor_; diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc index 3307857..6755601 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc @@ -1453,8 +1453,6 @@ bool RenderWidgetHostImpl::OnSwapCompositorFrame( cc::TransferableResource::ReturnResources( frame->delegated_frame_data->resource_list, &ack.resources); - } else if (frame->software_frame_data) { - ack.last_software_frame_id = frame->software_frame_data->id; } SendSwapCompositorFrameAck(routing_id_, output_surface_id, process_->GetID(), ack); diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index 5a880b6..36cb81c 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -1158,22 +1158,12 @@ void RenderWidgetHostViewAura::OnSwapCompositorFrame( TRACE_EVENT0("content", "RenderWidgetHostViewAura::OnSwapCompositorFrame"); last_scroll_offset_ = frame->metadata.root_scroll_offset; - if (frame->delegated_frame_data) { - delegated_frame_host_->SwapDelegatedFrame( - output_surface_id, - frame->delegated_frame_data.Pass(), - frame->metadata.device_scale_factor, - frame->metadata.latency_info, - &frame->metadata.satisfies_sequences); + if (!frame->delegated_frame_data) return; - } - - if (frame->software_frame_data) { - DLOG(ERROR) << "Unable to use software frame in aura"; - bad_message::ReceivedBadMessage(host_->GetProcess(), - bad_message::RWHVA_SHARED_MEMORY); - return; - } + delegated_frame_host_->SwapDelegatedFrame( + output_surface_id, frame->delegated_frame_data.Pass(), + frame->metadata.device_scale_factor, frame->metadata.latency_info, + &frame->metadata.satisfies_sequences); } void RenderWidgetHostViewAura::DidStopFlinging() { diff --git a/content/common/cc_messages.cc b/content/common/cc_messages.cc index 1c1b5e0..f05a253 100644 --- a/content/common/cc_messages.cc +++ b/content/common/cc_messages.cc @@ -569,7 +569,6 @@ namespace { NO_FRAME, DELEGATED_FRAME, GL_FRAME, - SOFTWARE_FRAME, }; } @@ -578,16 +577,11 @@ void ParamTraits<cc::CompositorFrame>::Write(Message* m, WriteParam(m, p.metadata); if (p.delegated_frame_data) { DCHECK(!p.gl_frame_data); - DCHECK(!p.software_frame_data); WriteParam(m, static_cast<int>(DELEGATED_FRAME)); WriteParam(m, *p.delegated_frame_data); } else if (p.gl_frame_data) { - DCHECK(!p.software_frame_data); WriteParam(m, static_cast<int>(GL_FRAME)); WriteParam(m, *p.gl_frame_data); - } else if (p.software_frame_data) { - WriteParam(m, static_cast<int>(SOFTWARE_FRAME)); - WriteParam(m, *p.software_frame_data); } else { WriteParam(m, static_cast<int>(NO_FRAME)); } @@ -614,11 +608,6 @@ bool ParamTraits<cc::CompositorFrame>::Read(const Message* m, if (!ReadParam(m, iter, p->gl_frame_data.get())) return false; break; - case SOFTWARE_FRAME: - p->software_frame_data.reset(new cc::SoftwareFrameData()); - if (!ReadParam(m, iter, p->software_frame_data.get())) - return false; - break; case NO_FRAME: break; default: @@ -636,15 +625,12 @@ void ParamTraits<cc::CompositorFrame>::Log(const param_type& p, LogParam(*p.delegated_frame_data, l); else if (p.gl_frame_data) LogParam(*p.gl_frame_data, l); - else if (p.software_frame_data) - LogParam(*p.software_frame_data, l); l->append(")"); } void ParamTraits<cc::CompositorFrameAck>::Write(Message* m, const param_type& p) { WriteParam(m, p.resources); - WriteParam(m, p.last_software_frame_id); if (p.gl_frame_data) { WriteParam(m, static_cast<int>(GL_FRAME)); WriteParam(m, *p.gl_frame_data); @@ -659,9 +645,6 @@ bool ParamTraits<cc::CompositorFrameAck>::Read(const Message* m, if (!ReadParam(m, iter, &p->resources)) return false; - if (!ReadParam(m, iter, &p->last_software_frame_id)) - return false; - int compositor_frame_type; if (!ReadParam(m, iter, &compositor_frame_type)) return false; @@ -685,8 +668,6 @@ void ParamTraits<cc::CompositorFrameAck>::Log(const param_type& p, l->append("CompositorFrameAck("); LogParam(p.resources, l); l->append(", "); - LogParam(p.last_software_frame_id, l); - l->append(", "); if (p.gl_frame_data) LogParam(*p.gl_frame_data, l); l->append(")"); @@ -774,45 +755,6 @@ void ParamTraits<cc::DelegatedFrameData>::Log(const param_type& p, l->append("])"); } -void ParamTraits<cc::SoftwareFrameData>::Write(Message* m, - const param_type& p) { - DCHECK(cc::SharedBitmap::VerifySizeInBytes(p.size)); - - m->Reserve(sizeof(cc::SoftwareFrameData)); - WriteParam(m, p.id); - WriteParam(m, p.size); - WriteParam(m, p.damage_rect); - WriteParam(m, p.bitmap_id); -} - -bool ParamTraits<cc::SoftwareFrameData>::Read(const Message* m, - base::PickleIterator* iter, - param_type* p) { - if (!ReadParam(m, iter, &p->id)) - return false; - if (!ReadParam(m, iter, &p->size) || - !cc::SharedBitmap::VerifySizeInBytes(p->size)) - return false; - if (!ReadParam(m, iter, &p->damage_rect)) - return false; - if (!ReadParam(m, iter, &p->bitmap_id)) - return false; - return true; -} - -void ParamTraits<cc::SoftwareFrameData>::Log(const param_type& p, - std::string* l) { - l->append("SoftwareFrameData("); - LogParam(p.id, l); - l->append(", "); - LogParam(p.size, l); - l->append(", "); - LogParam(p.damage_rect, l); - l->append(", "); - LogParam(p.bitmap_id, l); - l->append(")"); -} - void ParamTraits<cc::DrawQuad::Resources>::Write(Message* m, const param_type& p) { DCHECK_LE(p.count, cc::DrawQuad::Resources::kMaxResourceIdCount); diff --git a/content/common/cc_messages.h b/content/common/cc_messages.h index fcf72fe..1692311 100644 --- a/content/common/cc_messages.h +++ b/content/common/cc_messages.h @@ -110,14 +110,6 @@ struct CONTENT_EXPORT ParamTraits<cc::DelegatedFrameData> { }; template <> -struct CONTENT_EXPORT ParamTraits<cc::SoftwareFrameData> { - typedef cc::SoftwareFrameData param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, base::PickleIterator* iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> struct CONTENT_EXPORT ParamTraits<cc::DrawQuad::Resources> { typedef cc::DrawQuad::Resources param_type; static void Write(Message* m, const param_type& p); diff --git a/content/common/cc_messages_unittest.cc b/content/common/cc_messages_unittest.cc index ffe737f..5d4ccab 100644 --- a/content/common/cc_messages_unittest.cc +++ b/content/common/cc_messages_unittest.cc @@ -32,7 +32,6 @@ using cc::RenderPassDrawQuad; using cc::ResourceId; using cc::ResourceProvider; using cc::SharedQuadState; -using cc::SoftwareFrameData; using cc::SolidColorDrawQuad; using cc::SurfaceDrawQuad; using cc::TextureDrawQuad; @@ -676,70 +675,5 @@ TEST_F(CCMessagesTest, Resources) { Compare(arbitrary_resource2, frame_out.resource_list[1]); } -TEST_F(CCMessagesTest, SoftwareFrameData) { - cc::SoftwareFrameData frame_in; - frame_in.id = 3; - frame_in.size = gfx::Size(40, 20); - frame_in.damage_rect = gfx::Rect(5, 18, 31, 44); - frame_in.bitmap_id = cc::SharedBitmap::GenerateId(); - - // Write the frame. - IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); - IPC::ParamTraits<cc::SoftwareFrameData>::Write(&msg, frame_in); - - // Read the frame. - cc::SoftwareFrameData frame_out; - base::PickleIterator iter(msg); - EXPECT_TRUE( - IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); - EXPECT_EQ(frame_in.id, frame_out.id); - EXPECT_EQ(frame_in.size.ToString(), frame_out.size.ToString()); - EXPECT_EQ(frame_in.damage_rect.ToString(), frame_out.damage_rect.ToString()); - EXPECT_EQ(frame_in.bitmap_id, frame_out.bitmap_id); -} - -TEST_F(CCMessagesTest, SoftwareFrameDataMaxInt) { - SoftwareFrameData frame_in; - frame_in.id = 3; - frame_in.size = gfx::Size(40, 20); - frame_in.damage_rect = gfx::Rect(5, 18, 31, 44); - frame_in.bitmap_id = cc::SharedBitmap::GenerateId(); - - // Write the SoftwareFrameData by hand, make sure it works. - { - IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); - IPC::WriteParam(&msg, frame_in.id); - IPC::WriteParam(&msg, frame_in.size); - IPC::WriteParam(&msg, frame_in.damage_rect); - IPC::WriteParam(&msg, frame_in.bitmap_id); - SoftwareFrameData frame_out; - base::PickleIterator iter(msg); - EXPECT_TRUE( - IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); - } - - // The size of the frame may overflow when multiplied together. - int max = std::numeric_limits<int>::max(); - frame_in.size = gfx::Size(max, max); - - // If size_t is larger than int, then int*int*4 can always fit in size_t. - bool expect_read = sizeof(size_t) >= sizeof(int) * 2; - - // Write the SoftwareFrameData with the MaxInt size, if it causes overflow it - // should fail. - { - IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); - IPC::WriteParam(&msg, frame_in.id); - IPC::WriteParam(&msg, frame_in.size); - IPC::WriteParam(&msg, frame_in.damage_rect); - IPC::WriteParam(&msg, frame_in.bitmap_id); - SoftwareFrameData frame_out; - base::PickleIterator iter(msg); - EXPECT_EQ( - expect_read, - IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); - } -} - } // namespace } // namespace content diff --git a/content/common/view_messages.h b/content/common/view_messages.h index 0982bf2..3cfb1f2 100644 --- a/content/common/view_messages.h +++ b/content/common/view_messages.h @@ -11,6 +11,7 @@ #include "cc/output/begin_frame_args.h" #include "cc/output/compositor_frame.h" #include "cc/output/compositor_frame_ack.h" +#include "cc/resources/shared_bitmap.h" #include "content/common/content_export.h" #include "content/common/content_param_traits.h" #include "content/common/date_time_suggestion.h" diff --git a/content/renderer/gpu/compositor_output_surface.cc b/content/renderer/gpu/compositor_output_surface.cc index d1ad1cc2..c3298d0 100644 --- a/content/renderer/gpu/compositor_output_surface.cc +++ b/content/renderer/gpu/compositor_output_surface.cc @@ -96,8 +96,7 @@ bool CompositorOutputSurface::BindToClient( void CompositorOutputSurface::ShortcutSwapAck( uint32 output_surface_id, - scoped_ptr<cc::GLFrameData> gl_frame_data, - scoped_ptr<cc::SoftwareFrameData> software_frame_data) { + scoped_ptr<cc::GLFrameData> gl_frame_data) { if (!layout_test_previous_frame_ack_) { layout_test_previous_frame_ack_.reset(new cc::CompositorFrameAck); layout_test_previous_frame_ack_->gl_frame_data.reset(new cc::GLFrameData); @@ -106,8 +105,6 @@ void CompositorOutputSurface::ShortcutSwapAck( OnSwapAck(output_surface_id, *layout_test_previous_frame_ack_); layout_test_previous_frame_ack_->gl_frame_data = gl_frame_data.Pass(); - layout_test_previous_frame_ack_->last_software_frame_id = - software_frame_data ? software_frame_data->id : 0; } void CompositorOutputSurface::SwapBuffers(cc::CompositorFrame* frame) { @@ -124,12 +121,9 @@ void CompositorOutputSurface::SwapBuffers(cc::CompositorFrame* frame) { // block needs to be removed. DCHECK(!frame->delegated_frame_data); - base::Closure closure = - base::Bind(&CompositorOutputSurface::ShortcutSwapAck, - weak_ptrs_.GetWeakPtr(), - output_surface_id_, - base::Passed(&frame->gl_frame_data), - base::Passed(&frame->software_frame_data)); + base::Closure closure = base::Bind( + &CompositorOutputSurface::ShortcutSwapAck, weak_ptrs_.GetWeakPtr(), + output_surface_id_, base::Passed(&frame->gl_frame_data)); if (context_provider()) { gpu::gles2::GLES2Interface* context = context_provider()->ContextGL(); diff --git a/content/renderer/gpu/compositor_output_surface.h b/content/renderer/gpu/compositor_output_surface.h index f3b05b6..fa91b75 100644 --- a/content/renderer/gpu/compositor_output_surface.h +++ b/content/renderer/gpu/compositor_output_surface.h @@ -26,7 +26,6 @@ namespace cc { class CompositorFrame; class CompositorFrameAck; class GLFrameData; -class SoftwareFrameData; } namespace content { @@ -60,8 +59,7 @@ class CompositorOutputSurface protected: void ShortcutSwapAck(uint32 output_surface_id, - scoped_ptr<cc::GLFrameData> gl_frame_data, - scoped_ptr<cc::SoftwareFrameData> software_frame_data); + scoped_ptr<cc::GLFrameData> gl_frame_data); virtual void OnSwapAck(uint32 output_surface_id, const cc::CompositorFrameAck& ack); virtual void OnReclaimResources(uint32 output_surface_id, diff --git a/tools/ipc_fuzzer/fuzzer/fuzzer.cc b/tools/ipc_fuzzer/fuzzer/fuzzer.cc index 2802dd6..0ff09ef 100644 --- a/tools/ipc_fuzzer/fuzzer/fuzzer.cc +++ b/tools/ipc_fuzzer/fuzzer/fuzzer.cc @@ -703,8 +703,6 @@ struct FuzzTraits<cc::CompositorFrameAck> { static bool Fuzz(cc::CompositorFrameAck* p, Fuzzer* fuzzer) { if (!FuzzParam(&p->resources, fuzzer)) return false; - if (!FuzzParam(&p->last_software_frame_id, fuzzer)) - return false; if (!p->gl_frame_data) p->gl_frame_data.reset(new cc::GLFrameData); |