| 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/renderer/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 #include "content/renderer/dom_storage/dom_storage_dispatcher.h" | 104 #include "content/renderer/dom_storage/dom_storage_dispatcher.h" |
| 105 #include "content/renderer/dom_storage/webstoragearea_impl.h" | 105 #include "content/renderer/dom_storage/webstoragearea_impl.h" |
| 106 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" | 106 #include "content/renderer/dom_storage/webstoragenamespace_impl.h" |
| 107 #include "content/renderer/effective_connection_type_helper.h" | 107 #include "content/renderer/effective_connection_type_helper.h" |
| 108 #include "content/renderer/gpu/compositor_external_begin_frame_source.h" | 108 #include "content/renderer/gpu/compositor_external_begin_frame_source.h" |
| 109 #include "content/renderer/gpu/compositor_forwarding_message_filter.h" | 109 #include "content/renderer/gpu/compositor_forwarding_message_filter.h" |
| 110 #include "content/renderer/gpu/frame_swap_message_queue.h" | 110 #include "content/renderer/gpu/frame_swap_message_queue.h" |
| 111 #include "content/renderer/input/input_event_filter.h" | 111 #include "content/renderer/input/input_event_filter.h" |
| 112 #include "content/renderer/input/input_handler_manager.h" | 112 #include "content/renderer/input/input_handler_manager.h" |
| 113 #include "content/renderer/input/main_thread_input_event_filter.h" | 113 #include "content/renderer/input/main_thread_input_event_filter.h" |
| 114 #include "content/renderer/input/target_frame_for_input_impl.h" |
| 114 #include "content/renderer/media/audio_input_message_filter.h" | 115 #include "content/renderer/media/audio_input_message_filter.h" |
| 115 #include "content/renderer/media/audio_message_filter.h" | 116 #include "content/renderer/media/audio_message_filter.h" |
| 116 #include "content/renderer/media/audio_renderer_mixer_manager.h" | 117 #include "content/renderer/media/audio_renderer_mixer_manager.h" |
| 117 #include "content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h" | 118 #include "content/renderer/media/gpu/gpu_video_accelerator_factories_impl.h" |
| 118 #include "content/renderer/media/media_stream_center.h" | 119 #include "content/renderer/media/media_stream_center.h" |
| 119 #include "content/renderer/media/midi_message_filter.h" | 120 #include "content/renderer/media/midi_message_filter.h" |
| 120 #include "content/renderer/media/render_media_client.h" | 121 #include "content/renderer/media/render_media_client.h" |
| 121 #include "content/renderer/media/video_capture_impl_manager.h" | 122 #include "content/renderer/media/video_capture_impl_manager.h" |
| 122 #include "content/renderer/net_info_helper.h" | 123 #include "content/renderer/net_info_helper.h" |
| 123 #include "content/renderer/p2p/socket_dispatcher.h" | 124 #include "content/renderer/p2p/socket_dispatcher.h" |
| (...skipping 1831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1955 } | 1956 } |
| 1956 #endif | 1957 #endif |
| 1957 | 1958 |
| 1958 viz::mojom::CompositorFrameSinkPtrInfo sink_info; | 1959 viz::mojom::CompositorFrameSinkPtrInfo sink_info; |
| 1959 viz::mojom::CompositorFrameSinkRequest sink_request = | 1960 viz::mojom::CompositorFrameSinkRequest sink_request = |
| 1960 mojo::MakeRequest(&sink_info); | 1961 mojo::MakeRequest(&sink_info); |
| 1961 viz::mojom::CompositorFrameSinkClientPtr client; | 1962 viz::mojom::CompositorFrameSinkClientPtr client; |
| 1962 viz::mojom::CompositorFrameSinkClientRequest client_request = | 1963 viz::mojom::CompositorFrameSinkClientRequest client_request = |
| 1963 mojo::MakeRequest(&client); | 1964 mojo::MakeRequest(&client); |
| 1964 | 1965 |
| 1966 viz::mojom::TargetFrameForInputDelegatePtr hit_test; |
| 1967 viz::mojom::TargetFrameForInputDelegateRequest hit_test_request = |
| 1968 mojo::MakeRequest(&hit_test); |
| 1969 |
| 1965 if (command_line.HasSwitch(switches::kEnableVulkan)) { | 1970 if (command_line.HasSwitch(switches::kEnableVulkan)) { |
| 1966 scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider = | 1971 scoped_refptr<cc::VulkanContextProvider> vulkan_context_provider = |
| 1967 cc::VulkanInProcessContextProvider::Create(); | 1972 cc::VulkanInProcessContextProvider::Create(); |
| 1968 if (vulkan_context_provider) { | 1973 if (vulkan_context_provider) { |
| 1969 DCHECK(!layout_test_mode()); | 1974 DCHECK(!layout_test_mode()); |
| 1970 frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), | 1975 frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), |
| 1971 std::move(client)); | 1976 std::move(client), |
| 1977 std::move(hit_test)); |
| 1972 callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( | 1978 callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( |
| 1973 std::move(vulkan_context_provider), | 1979 std::move(vulkan_context_provider), |
| 1974 std::move(synthetic_begin_frame_source), std::move(sink_info), | 1980 std::move(synthetic_begin_frame_source), std::move(sink_info), |
| 1975 std::move(client_request), | 1981 std::move(client_request), |
| 1976 base::MakeUnique<RendererLocalSurfaceIdProvider>(), | 1982 base::MakeUnique<RendererLocalSurfaceIdProvider>(), |
| 1977 false /* enable_surface_synchroninzation */)); | 1983 false /* enable_surface_synchroninzation */)); |
| 1978 return; | 1984 return; |
| 1979 } | 1985 } |
| 1980 } | 1986 } |
| 1981 | 1987 |
| 1982 // Create a gpu process channel and verify we want to use GPU compositing | 1988 // Create a gpu process channel and verify we want to use GPU compositing |
| 1983 // before creating any context providers. | 1989 // before creating any context providers. |
| 1984 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host; | 1990 scoped_refptr<gpu::GpuChannelHost> gpu_channel_host; |
| 1985 if (!use_software) { | 1991 if (!use_software) { |
| 1986 gpu_channel_host = EstablishGpuChannelSync(); | 1992 gpu_channel_host = EstablishGpuChannelSync(); |
| 1987 if (!gpu_channel_host) { | 1993 if (!gpu_channel_host) { |
| 1988 // Cause the compositor to wait and try again. | 1994 // Cause the compositor to wait and try again. |
| 1989 callback.Run(nullptr); | 1995 callback.Run(nullptr); |
| 1990 return; | 1996 return; |
| 1991 } | 1997 } |
| 1992 // We may get a valid channel, but with a software renderer. In that case, | 1998 // We may get a valid channel, but with a software renderer. In that case, |
| 1993 // disable GPU compositing. | 1999 // disable GPU compositing. |
| 1994 if (gpu_channel_host->gpu_info().software_rendering) | 2000 if (gpu_channel_host->gpu_info().software_rendering) |
| 1995 use_software = true; | 2001 use_software = true; |
| 1996 } | 2002 } |
| 1997 | 2003 |
| 1998 if (use_software) { | 2004 if (use_software) { |
| 1999 DCHECK(!layout_test_mode()); | 2005 DCHECK(!layout_test_mode()); |
| 2000 frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), | 2006 frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), |
| 2001 std::move(client)); | 2007 std::move(client), |
| 2008 std::move(hit_test)); |
| 2002 callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( | 2009 callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( |
| 2003 nullptr, nullptr, nullptr, shared_bitmap_manager(), | 2010 nullptr, nullptr, nullptr, shared_bitmap_manager(), |
| 2004 std::move(synthetic_begin_frame_source), std::move(sink_info), | 2011 std::move(synthetic_begin_frame_source), std::move(sink_info), |
| 2005 std::move(client_request), | 2012 std::move(client_request), |
| 2006 base::MakeUnique<RendererLocalSurfaceIdProvider>(), | 2013 base::MakeUnique<RendererLocalSurfaceIdProvider>(), |
| 2007 false /* enable_surface_synchroninzation */)); | 2014 false /* enable_surface_synchroninzation */)); |
| 2008 return; | 2015 return; |
| 2009 } | 2016 } |
| 2010 | 2017 |
| 2011 scoped_refptr<ui::ContextProviderCommandBuffer> worker_context_provider = | 2018 scoped_refptr<ui::ContextProviderCommandBuffer> worker_context_provider = |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2065 callback.Run(base::MakeUnique<SynchronousLayerTreeFrameSink>( | 2072 callback.Run(base::MakeUnique<SynchronousLayerTreeFrameSink>( |
| 2066 std::move(context_provider), std::move(worker_context_provider), | 2073 std::move(context_provider), std::move(worker_context_provider), |
| 2067 GetGpuMemoryBufferManager(), shared_bitmap_manager(), routing_id, | 2074 GetGpuMemoryBufferManager(), shared_bitmap_manager(), routing_id, |
| 2068 g_next_layer_tree_frame_sink_id++, std::move(begin_frame_source), | 2075 g_next_layer_tree_frame_sink_id++, std::move(begin_frame_source), |
| 2069 sync_compositor_message_filter_.get(), | 2076 sync_compositor_message_filter_.get(), |
| 2070 std::move(frame_swap_message_queue))); | 2077 std::move(frame_swap_message_queue))); |
| 2071 return; | 2078 return; |
| 2072 } | 2079 } |
| 2073 #endif | 2080 #endif |
| 2074 frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), | 2081 frame_sink_provider_->CreateForWidget(routing_id, std::move(sink_request), |
| 2075 std::move(client)); | 2082 std::move(client), std::move(hit_test)); |
| 2076 callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( | 2083 callback.Run(base::MakeUnique<viz::ClientLayerTreeFrameSink>( |
| 2077 std::move(context_provider), std::move(worker_context_provider), | 2084 std::move(context_provider), std::move(worker_context_provider), |
| 2078 GetGpuMemoryBufferManager(), nullptr, | 2085 GetGpuMemoryBufferManager(), nullptr, |
| 2079 std::move(synthetic_begin_frame_source), std::move(sink_info), | 2086 std::move(synthetic_begin_frame_source), std::move(sink_info), |
| 2080 std::move(client_request), | 2087 std::move(client_request), |
| 2081 base::MakeUnique<RendererLocalSurfaceIdProvider>(), | 2088 base::MakeUnique<RendererLocalSurfaceIdProvider>(), |
| 2082 false /* enable_surface_synchroninzation */)); | 2089 false /* enable_surface_synchroninzation */)); |
| 2083 } | 2090 } |
| 2084 | 2091 |
| 2085 AssociatedInterfaceRegistry* | 2092 AssociatedInterfaceRegistry* |
| (...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2523 } | 2530 } |
| 2524 } | 2531 } |
| 2525 | 2532 |
| 2526 void RenderThreadImpl::OnRendererInterfaceRequest( | 2533 void RenderThreadImpl::OnRendererInterfaceRequest( |
| 2527 mojom::RendererAssociatedRequest request) { | 2534 mojom::RendererAssociatedRequest request) { |
| 2528 DCHECK(!renderer_binding_.is_bound()); | 2535 DCHECK(!renderer_binding_.is_bound()); |
| 2529 renderer_binding_.Bind(std::move(request)); | 2536 renderer_binding_.Bind(std::move(request)); |
| 2530 } | 2537 } |
| 2531 | 2538 |
| 2532 } // namespace content | 2539 } // namespace content |
| OLD | NEW |