| 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 #ifndef CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ | 5 #ifndef CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ |
| 6 #define CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ | 6 #define CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <queue> | 10 #include <queue> |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 class GpuProcessHost : public content::BrowserChildProcessHostDelegate, | 32 class GpuProcessHost : public content::BrowserChildProcessHostDelegate, |
| 33 public IPC::Message::Sender, | 33 public IPC::Message::Sender, |
| 34 public base::NonThreadSafe { | 34 public base::NonThreadSafe { |
| 35 public: | 35 public: |
| 36 enum GpuProcessKind { | 36 enum GpuProcessKind { |
| 37 GPU_PROCESS_KIND_UNSANDBOXED, | 37 GPU_PROCESS_KIND_UNSANDBOXED, |
| 38 GPU_PROCESS_KIND_SANDBOXED | 38 GPU_PROCESS_KIND_SANDBOXED |
| 39 }; | 39 }; |
| 40 | 40 |
| 41 typedef base::Callback<void(const IPC::ChannelHandle&, | 41 typedef base::Callback<void(const IPC::ChannelHandle&, |
| 42 base::ProcessHandle, | |
| 43 const content::GPUInfo&)> | 42 const content::GPUInfo&)> |
| 44 EstablishChannelCallback; | 43 EstablishChannelCallback; |
| 45 | 44 |
| 46 typedef base::Callback<void(int32)> CreateCommandBufferCallback; | 45 typedef base::Callback<void(int32)> CreateCommandBufferCallback; |
| 47 | 46 |
| 48 static bool gpu_enabled() { return gpu_enabled_; } | 47 static bool gpu_enabled() { return gpu_enabled_; } |
| 49 | 48 |
| 50 // Creates a new GpuProcessHost or gets an existing one, resulting in the | 49 // Creates a new GpuProcessHost or gets an existing one, resulting in the |
| 51 // launching of a GPU process if required. Returns null on failure. It | 50 // launching of a GPU process if required. Returns null on failure. It |
| 52 // is not safe to store the pointer once control has returned to the message | 51 // is not safe to store the pointer once control has returned to the message |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 virtual ~GpuProcessHost(); | 100 virtual ~GpuProcessHost(); |
| 102 | 101 |
| 103 bool Init(); | 102 bool Init(); |
| 104 | 103 |
| 105 // Post an IPC message to the UI shim's message handler on the UI thread. | 104 // Post an IPC message to the UI shim's message handler on the UI thread. |
| 106 void RouteOnUIThread(const IPC::Message& message); | 105 void RouteOnUIThread(const IPC::Message& message); |
| 107 | 106 |
| 108 // BrowserChildProcessHostDelegate implementation. | 107 // BrowserChildProcessHostDelegate implementation. |
| 109 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; | 108 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
| 110 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; | 109 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE; |
| 111 virtual void OnProcessLaunched() OVERRIDE; | |
| 112 virtual void OnProcessCrashed(int exit_code) OVERRIDE; | 110 virtual void OnProcessCrashed(int exit_code) OVERRIDE; |
| 113 | 111 |
| 114 // Message handlers. | 112 // Message handlers. |
| 115 void OnChannelEstablished(const IPC::ChannelHandle& channel_handle); | 113 void OnChannelEstablished(const IPC::ChannelHandle& channel_handle); |
| 116 void OnCommandBufferCreated(const int32 route_id); | 114 void OnCommandBufferCreated(const int32 route_id); |
| 117 void OnDestroyCommandBuffer(int32 surface_id); | 115 void OnDestroyCommandBuffer(int32 surface_id); |
| 118 | 116 |
| 119 #if defined(OS_WIN) && !defined(USE_AURA) | 117 #if defined(OS_WIN) && !defined(USE_AURA) |
| 120 void OnAcceleratedSurfaceBuffersSwapped( | 118 void OnAcceleratedSurfaceBuffersSwapped( |
| 121 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params); | 119 const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 // Multimap is used to simulate reference counting, see comment in | 154 // Multimap is used to simulate reference counting, see comment in |
| 157 // GpuProcessHostUIShim::CreateViewCommandBuffer. | 155 // GpuProcessHostUIShim::CreateViewCommandBuffer. |
| 158 class SurfaceRef; | 156 class SurfaceRef; |
| 159 typedef std::multimap<int, linked_ptr<SurfaceRef> > SurfaceRefMap; | 157 typedef std::multimap<int, linked_ptr<SurfaceRef> > SurfaceRefMap; |
| 160 SurfaceRefMap surface_refs_; | 158 SurfaceRefMap surface_refs_; |
| 161 #endif | 159 #endif |
| 162 | 160 |
| 163 // Qeueud messages to send when the process launches. | 161 // Qeueud messages to send when the process launches. |
| 164 std::queue<IPC::Message*> queued_messages_; | 162 std::queue<IPC::Message*> queued_messages_; |
| 165 | 163 |
| 166 // The handle for the GPU process or null if it is not known to be launched. | |
| 167 base::ProcessHandle gpu_process_; | |
| 168 | |
| 169 // Whether we are running a GPU thread inside the browser process instead | 164 // Whether we are running a GPU thread inside the browser process instead |
| 170 // of a separate GPU process. | 165 // of a separate GPU process. |
| 171 bool in_process_; | 166 bool in_process_; |
| 172 | 167 |
| 173 bool software_rendering_; | 168 bool software_rendering_; |
| 174 GpuProcessKind kind_; | 169 GpuProcessKind kind_; |
| 175 | 170 |
| 176 scoped_ptr<GpuMainThread> in_process_gpu_thread_; | 171 scoped_ptr<GpuMainThread> in_process_gpu_thread_; |
| 177 | 172 |
| 178 // Whether we actually launched a GPU process. | 173 // Whether we actually launched a GPU process. |
| 179 bool process_launched_; | 174 bool process_launched_; |
| 180 | 175 |
| 181 // Master switch for enabling/disabling GPU acceleration for the current | 176 // Master switch for enabling/disabling GPU acceleration for the current |
| 182 // browser session. It does not change the acceleration settings for | 177 // browser session. It does not change the acceleration settings for |
| 183 // existing tabs, just the future ones. | 178 // existing tabs, just the future ones. |
| 184 static bool gpu_enabled_; | 179 static bool gpu_enabled_; |
| 185 | 180 |
| 186 static bool hardware_gpu_enabled_; | 181 static bool hardware_gpu_enabled_; |
| 187 | 182 |
| 188 scoped_ptr<BrowserChildProcessHostImpl> process_; | 183 scoped_ptr<BrowserChildProcessHostImpl> process_; |
| 189 | 184 |
| 190 DISALLOW_COPY_AND_ASSIGN(GpuProcessHost); | 185 DISALLOW_COPY_AND_ASSIGN(GpuProcessHost); |
| 191 }; | 186 }; |
| 192 | 187 |
| 193 #endif // CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ | 188 #endif // CONTENT_BROWSER_GPU_GPU_PROCESS_HOST_H_ |
| OLD | NEW |