summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
authorapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-31 22:57:49 +0000
committerapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-01-31 22:57:49 +0000
commit33e9cda3cdc7dfa6c0787814512fb6b42b0ff408 (patch)
tree428a14ec79e3024cf852690f4d3a31b8b655a573 /content/browser
parent5eab39e3f747dbb4caa4dfff6029ec00572e6d89 (diff)
downloadchromium_src-33e9cda3cdc7dfa6c0787814512fb6b42b0ff408.zip
chromium_src-33e9cda3cdc7dfa6c0787814512fb6b42b0ff408.tar.gz
chromium_src-33e9cda3cdc7dfa6c0787814512fb6b42b0ff408.tar.bz2
Add IPC allowing GPU process to tell browser process to temporarily drop a front buffer.
This is to conserve video memory for hidden tabs that are not expected to be needed in the near term. Review URL: https://chromiumcodereview.appspot.com/9303009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@119979 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/gpu/gpu_process_host_ui_shim.cc13
-rw-r--r--content/browser/gpu/gpu_process_host_ui_shim.h1
-rw-r--r--content/browser/renderer_host/render_widget_host_view.h4
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.cc3
-rw-r--r--content/browser/renderer_host/render_widget_host_view_aura.h1
-rw-r--r--content/browser/renderer_host/render_widget_host_view_gtk.cc4
-rw-r--r--content/browser/renderer_host/render_widget_host_view_gtk.h1
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac.h1
-rw-r--r--content/browser/renderer_host/render_widget_host_view_mac.mm3
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.cc7
-rw-r--r--content/browser/renderer_host/render_widget_host_view_win.h1
-rw-r--r--content/browser/renderer_host/test_render_view_host.cc3
-rw-r--r--content/browser/renderer_host/test_render_view_host.h1
13 files changed, 43 insertions, 0 deletions
diff --git a/content/browser/gpu/gpu_process_host_ui_shim.cc b/content/browser/gpu/gpu_process_host_ui_shim.cc
index 7d26d66..4f32e79 100644
--- a/content/browser/gpu/gpu_process_host_ui_shim.cc
+++ b/content/browser/gpu/gpu_process_host_ui_shim.cc
@@ -187,6 +187,8 @@ bool GpuProcessHostUIShim::OnControlMessageReceived(
OnAcceleratedSurfaceBuffersSwapped)
IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfacePostSubBuffer,
OnAcceleratedSurfacePostSubBuffer)
+ IPC_MESSAGE_HANDLER(GpuHostMsg_AcceleratedSurfaceSuspend,
+ OnAcceleratedSurfaceSuspend)
IPC_MESSAGE_HANDLER(GpuHostMsg_GraphicsInfoCollected,
OnGraphicsInfoCollected)
@@ -371,6 +373,17 @@ void GpuProcessHostUIShim::OnAcceleratedSurfacePostSubBuffer(
view->AcceleratedSurfacePostSubBuffer(params, host_id_);
}
+void GpuProcessHostUIShim::OnAcceleratedSurfaceSuspend(int32 surface_id) {
+ TRACE_EVENT0("renderer",
+ "GpuProcessHostUIShim::OnAcceleratedSurfaceSuspend");
+
+ RenderWidgetHostView* view = GetRenderWidgetHostViewFromSurfaceID(surface_id);
+ if (!view)
+ return;
+
+ view->AcceleratedSurfaceSuspend();
+}
+
#if defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
void GpuProcessHostUIShim::OnAcceleratedSurfaceRelease(
diff --git a/content/browser/gpu/gpu_process_host_ui_shim.h b/content/browser/gpu/gpu_process_host_ui_shim.h
index 8b5a5f8..2ce9866 100644
--- a/content/browser/gpu/gpu_process_host_ui_shim.h
+++ b/content/browser/gpu/gpu_process_host_ui_shim.h
@@ -94,6 +94,7 @@ class GpuProcessHostUIShim
const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params);
void OnAcceleratedSurfacePostSubBuffer(
const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params);
+ void OnAcceleratedSurfaceSuspend(int32 surface_id);
#if defined(OS_MACOSX) || defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
void OnAcceleratedSurfaceNew(
diff --git a/content/browser/renderer_host/render_widget_host_view.h b/content/browser/renderer_host/render_widget_host_view.h
index e73dfcb..f3e9b8b 100644
--- a/content/browser/renderer_host/render_widget_host_view.h
+++ b/content/browser/renderer_host/render_widget_host_view.h
@@ -224,6 +224,10 @@ class RenderWidgetHostView {
const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
int gpu_host_id) = 0;
+ // Release the accelerated surface temporarily. It will be recreated on the
+ // next swap buffers or post sub buffer.
+ virtual void AcceleratedSurfaceSuspend() = 0;
+
#if defined(OS_MACOSX)
// Tells the view whether or not to accept first responder status. If |flag|
// is true, the view does not accept first responder status and instead
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 b77fefa..a3ea5a2 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -429,6 +429,9 @@ void RenderWidgetHostViewAura::AcceleratedSurfacePostSubBuffer(
#endif
}
+void RenderWidgetHostViewAura::AcceleratedSurfaceSuspend() {
+}
+
#if defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
void RenderWidgetHostViewAura::AcceleratedSurfaceNew(
int32 width,
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h
index 58d9e1c..f4d9f51 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.h
+++ b/content/browser/renderer_host/render_widget_host_view_aura.h
@@ -94,6 +94,7 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
virtual void AcceleratedSurfacePostSubBuffer(
const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
int gpu_host_id) OVERRIDE;
+ virtual void AcceleratedSurfaceSuspend() OVERRIDE;
#if defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
virtual void AcceleratedSurfaceNew(
int32 width,
diff --git a/content/browser/renderer_host/render_widget_host_view_gtk.cc b/content/browser/renderer_host/render_widget_host_view_gtk.cc
index b77b51a..863dc3e 100644
--- a/content/browser/renderer_host/render_widget_host_view_gtk.cc
+++ b/content/browser/renderer_host/render_widget_host_view_gtk.cc
@@ -1023,6 +1023,10 @@ void RenderWidgetHostViewGtk::AcceleratedSurfacePostSubBuffer(
RenderWidgetHost::AcknowledgePostSubBuffer(params.route_id, gpu_host_id);
}
+void RenderWidgetHostViewGtk::AcceleratedSurfaceSuspend() {
+}
+
+
void RenderWidgetHostViewGtk::SetBackground(const SkBitmap& background) {
RenderWidgetHostView::SetBackground(background);
host_->Send(new ViewMsg_SetBackground(host_->routing_id(), background));
diff --git a/content/browser/renderer_host/render_widget_host_view_gtk.h b/content/browser/renderer_host/render_widget_host_view_gtk.h
index 1b14a23c..3601164 100644
--- a/content/browser/renderer_host/render_widget_host_view_gtk.h
+++ b/content/browser/renderer_host/render_widget_host_view_gtk.h
@@ -98,6 +98,7 @@ class CONTENT_EXPORT RenderWidgetHostViewGtk : public RenderWidgetHostView {
virtual void AcceleratedSurfacePostSubBuffer(
const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
int gpu_host_id) OVERRIDE;
+ virtual void AcceleratedSurfaceSuspend() OVERRIDE;
virtual void SetBackground(const SkBitmap& background) OVERRIDE;
virtual void CreatePluginContainer(gfx::PluginWindowHandle id) OVERRIDE;
virtual void DestroyPluginContainer(gfx::PluginWindowHandle id) OVERRIDE;
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h
index 028ef37..1c39904 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.h
+++ b/content/browser/renderer_host/render_widget_host_view_mac.h
@@ -264,6 +264,7 @@ class RenderWidgetHostViewMac : public RenderWidgetHostView {
virtual void AcceleratedSurfacePostSubBuffer(
const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
int gpu_host_id) OVERRIDE;
+ virtual void AcceleratedSurfaceSuspend() OVERRIDE;
virtual void GetScreenInfo(WebKit::WebScreenInfo* results) OVERRIDE;
virtual gfx::Rect GetRootWindowBounds() OVERRIDE;
virtual gfx::PluginWindowHandle GetCompositingSurface() OVERRIDE;
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index 4a88a6b..9fc8dec 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -934,6 +934,9 @@ void RenderWidgetHostViewMac::AcceleratedSurfacePostSubBuffer(
}
}
+void RenderWidgetHostViewMac::AcceleratedSurfaceSuspend() {
+}
+
void RenderWidgetHostViewMac::UpdateRootGpuViewVisibility(
bool show_gpu_widget) {
TRACE_EVENT1("renderer_host",
diff --git a/content/browser/renderer_host/render_widget_host_view_win.cc b/content/browser/renderer_host/render_widget_host_view_win.cc
index b6b7477..a8ab373 100644
--- a/content/browser/renderer_host/render_widget_host_view_win.cc
+++ b/content/browser/renderer_host/render_widget_host_view_win.cc
@@ -2140,6 +2140,13 @@ void RenderWidgetHostViewWin::AcceleratedSurfacePostSubBuffer(
RenderWidgetHost::AcknowledgePostSubBuffer(params.route_id, gpu_host_id);
}
+void RenderWidgetHostViewWin::AcceleratedSurfaceSuspend() {
+ if (!accelerated_surface_.get())
+ return;
+
+ accelerated_surface_->Suspend();
+}
+
void RenderWidgetHostViewWin::SetAccessibilityFocus(int acc_obj_id) {
if (!render_widget_host_)
return;
diff --git a/content/browser/renderer_host/render_widget_host_view_win.h b/content/browser/renderer_host/render_widget_host_view_win.h
index a48f8a9..a4a6a05 100644
--- a/content/browser/renderer_host/render_widget_host_view_win.h
+++ b/content/browser/renderer_host/render_widget_host_view_win.h
@@ -205,6 +205,7 @@ class RenderWidgetHostViewWin
virtual void AcceleratedSurfacePostSubBuffer(
const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
int gpu_host_id) OVERRIDE;
+ virtual void AcceleratedSurfaceSuspend() OVERRIDE;
virtual void OnAccessibilityNotifications(
const std::vector<ViewHostMsg_AccessibilityNotification_Params>& params
) OVERRIDE;
diff --git a/content/browser/renderer_host/test_render_view_host.cc b/content/browser/renderer_host/test_render_view_host.cc
index 764ee86..6e372fb 100644
--- a/content/browser/renderer_host/test_render_view_host.cc
+++ b/content/browser/renderer_host/test_render_view_host.cc
@@ -222,6 +222,9 @@ void TestRenderWidgetHostView::AcceleratedSurfacePostSubBuffer(
int gpu_host_id) {
}
+void TestRenderWidgetHostView::AcceleratedSurfaceSuspend() {
+}
+
#if defined(OS_MACOSX)
gfx::Rect TestRenderWidgetHostView::GetViewCocoaBounds() const {
diff --git a/content/browser/renderer_host/test_render_view_host.h b/content/browser/renderer_host/test_render_view_host.h
index 4af8386..f770893 100644
--- a/content/browser/renderer_host/test_render_view_host.h
+++ b/content/browser/renderer_host/test_render_view_host.h
@@ -102,6 +102,7 @@ class TestRenderWidgetHostView : public RenderWidgetHostView {
virtual void AcceleratedSurfacePostSubBuffer(
const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
int gpu_host_id) OVERRIDE;
+ virtual void AcceleratedSurfaceSuspend() OVERRIDE;
#if defined(OS_MACOSX)
virtual void SetTakesFocusOnlyOnMouseDown(bool flag) OVERRIDE {}
virtual gfx::Rect GetViewCocoaBounds() const OVERRIDE;