OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/gpu/gpu_process_host.h" | 5 #include "content/browser/gpu/gpu_process_host.h" |
6 | 6 |
7 #include "base/base64.h" | 7 #include "base/base64.h" |
8 #include "base/base_switches.h" | 8 #include "base/base_switches.h" |
| 9 #include "base/basictypes.h" |
9 #include "base/bind.h" | 10 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 11 #include "base/callback_helpers.h" |
11 #include "base/command_line.h" | 12 #include "base/command_line.h" |
12 #include "base/debug/trace_event.h" | 13 #include "base/debug/trace_event.h" |
13 #include "base/logging.h" | 14 #include "base/logging.h" |
14 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
15 #include "base/metrics/histogram.h" | 16 #include "base/metrics/histogram.h" |
16 #include "base/sha1.h" | 17 #include "base/sha1.h" |
17 #include "base/threading/thread.h" | 18 #include "base/threading/thread.h" |
18 #include "content/browser/browser_child_process_host_impl.h" | 19 #include "content/browser/browser_child_process_host_impl.h" |
19 #include "content/browser/gpu/gpu_data_manager_impl.h" | 20 #include "content/browser/gpu/gpu_data_manager_impl.h" |
20 #include "content/browser/gpu/gpu_process_host_ui_shim.h" | 21 #include "content/browser/gpu/gpu_process_host_ui_shim.h" |
(...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 } | 894 } |
894 RenderWidgetHelper* helper = | 895 RenderWidgetHelper* helper = |
895 RenderWidgetHelper::FromProcessHostID(render_process_id); | 896 RenderWidgetHelper::FromProcessHostID(render_process_id); |
896 if (!helper) | 897 if (!helper) |
897 return; | 898 return; |
898 | 899 |
899 // Pass the SwapBuffers on to the RenderWidgetHelper to wake up the UI thread | 900 // Pass the SwapBuffers on to the RenderWidgetHelper to wake up the UI thread |
900 // if the browser is waiting for a new frame. Otherwise the RenderWidgetHelper | 901 // if the browser is waiting for a new frame. Otherwise the RenderWidgetHelper |
901 // will forward to the RenderWidgetHostView via RenderProcessHostImpl and | 902 // will forward to the RenderWidgetHostView via RenderProcessHostImpl and |
902 // RenderWidgetHostImpl. | 903 // RenderWidgetHostImpl. |
903 scoped_completion_runner.Release(); | 904 ignore_result(scoped_completion_runner.Release()); |
904 | 905 |
905 ViewHostMsg_CompositorSurfaceBuffersSwapped_Params view_params; | 906 ViewHostMsg_CompositorSurfaceBuffersSwapped_Params view_params; |
906 view_params.surface_id = params.surface_id; | 907 view_params.surface_id = params.surface_id; |
907 view_params.surface_handle = params.surface_handle; | 908 view_params.surface_handle = params.surface_handle; |
908 view_params.route_id = params.route_id; | 909 view_params.route_id = params.route_id; |
909 view_params.size = params.size; | 910 view_params.size = params.size; |
910 view_params.scale_factor = params.scale_factor; | 911 view_params.scale_factor = params.scale_factor; |
911 view_params.gpu_process_host_id = host_id_; | 912 view_params.gpu_process_host_id = host_id_; |
912 view_params.latency_info = params.latency_info; | 913 view_params.latency_info = params.latency_info; |
913 helper->DidReceiveBackingStoreMsg(ViewHostMsg_CompositorSurfaceBuffersSwapped( | 914 helper->DidReceiveBackingStoreMsg(ViewHostMsg_CompositorSurfaceBuffersSwapped( |
(...skipping 15 matching lines...) Expand all Loading... |
929 gfx::GLSurfaceHandle handle = | 930 gfx::GLSurfaceHandle handle = |
930 GpuSurfaceTracker::Get()->GetSurfaceHandle(params.surface_id); | 931 GpuSurfaceTracker::Get()->GetSurfaceHandle(params.surface_id); |
931 | 932 |
932 if (handle.is_null()) | 933 if (handle.is_null()) |
933 return; | 934 return; |
934 | 935 |
935 if (handle.transport_type == gfx::TEXTURE_TRANSPORT) { | 936 if (handle.transport_type == gfx::TEXTURE_TRANSPORT) { |
936 TRACE_EVENT1("gpu", "SurfaceIDNotFound_RoutingToUI", | 937 TRACE_EVENT1("gpu", "SurfaceIDNotFound_RoutingToUI", |
937 "surface_id", params.surface_id); | 938 "surface_id", params.surface_id); |
938 // This is a content area swap, send it on to the UI thread. | 939 // This is a content area swap, send it on to the UI thread. |
939 scoped_completion_runner.Release(); | 940 ignore_result(scoped_completion_runner.Release()); |
940 RouteOnUIThread(GpuHostMsg_AcceleratedSurfaceBuffersSwapped(params)); | 941 RouteOnUIThread(GpuHostMsg_AcceleratedSurfaceBuffersSwapped(params)); |
941 return; | 942 return; |
942 } | 943 } |
943 | 944 |
944 // Otherwise it's the UI swap. | 945 // Otherwise it's the UI swap. |
945 | 946 |
946 scoped_refptr<AcceleratedPresenter> presenter( | 947 scoped_refptr<AcceleratedPresenter> presenter( |
947 AcceleratedPresenter::GetForWindow(handle.handle)); | 948 AcceleratedPresenter::GetForWindow(handle.handle)); |
948 if (!presenter) { | 949 if (!presenter) { |
949 TRACE_EVENT1("gpu", | 950 TRACE_EVENT1("gpu", |
950 "EarlyOut_NativeWindowNotFound", | 951 "EarlyOut_NativeWindowNotFound", |
951 "handle", | 952 "handle", |
952 handle.handle); | 953 handle.handle); |
953 scoped_completion_runner.Release(); | 954 ignore_result(scoped_completion_runner.Release()); |
954 AcceleratedSurfaceBuffersSwappedCompleted(host_id_, | 955 AcceleratedSurfaceBuffersSwappedCompleted(host_id_, |
955 params.route_id, | 956 params.route_id, |
956 params.surface_id, | 957 params.surface_id, |
957 true, | 958 true, |
958 base::TimeTicks(), | 959 base::TimeTicks(), |
959 base::TimeDelta(), | 960 base::TimeDelta(), |
960 params.latency_info); | 961 params.latency_info); |
961 return; | 962 return; |
962 } | 963 } |
963 | 964 |
964 scoped_completion_runner.Release(); | 965 ignore_result(scoped_completion_runner.Release()); |
965 presenter->AsyncPresentAndAcknowledge( | 966 presenter->AsyncPresentAndAcknowledge( |
966 params.size, | 967 params.size, |
967 params.surface_handle, | 968 params.surface_handle, |
968 params.latency_info, | 969 params.latency_info, |
969 base::Bind(&AcceleratedSurfaceBuffersSwappedCompleted, | 970 base::Bind(&AcceleratedSurfaceBuffersSwappedCompleted, |
970 host_id_, | 971 host_id_, |
971 params.route_id, | 972 params.route_id, |
972 params.surface_id)); | 973 params.surface_id)); |
973 | 974 |
974 FrameSubscriberMap::iterator it = frame_subscribers_.find(params.surface_id); | 975 FrameSubscriberMap::iterator it = frame_subscribers_.find(params.surface_id); |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1243 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); | 1244 TRACE_EVENT0("gpu", "GpuProcessHost::OnCacheShader"); |
1244 ClientIdToShaderCacheMap::iterator iter = | 1245 ClientIdToShaderCacheMap::iterator iter = |
1245 client_id_to_shader_cache_.find(client_id); | 1246 client_id_to_shader_cache_.find(client_id); |
1246 // If the cache doesn't exist then this is an off the record profile. | 1247 // If the cache doesn't exist then this is an off the record profile. |
1247 if (iter == client_id_to_shader_cache_.end()) | 1248 if (iter == client_id_to_shader_cache_.end()) |
1248 return; | 1249 return; |
1249 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); | 1250 iter->second->Cache(GetShaderPrefixKey() + ":" + key, shader); |
1250 } | 1251 } |
1251 | 1252 |
1252 } // namespace content | 1253 } // namespace content |
OLD | NEW |