summaryrefslogtreecommitdiffstats
path: root/content/gpu/in_process_gpu_thread.h
diff options
context:
space:
mode:
authorboliu <boliu@chromium.org>2015-07-21 12:08:56 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-21 19:09:26 +0000
commitc5befe7d0b86bb4996017605f1edc4bfa1c327f8 (patch)
tree50228f7d3c5c05a5d9a1ebe56285e101f3708044 /content/gpu/in_process_gpu_thread.h
parenta4971c13e156194f1b51d3b019806bbf64cfa8f6 (diff)
downloadchromium_src-c5befe7d0b86bb4996017605f1edc4bfa1c327f8.zip
chromium_src-c5befe7d0b86bb4996017605f1edc4bfa1c327f8.tar.gz
chromium_src-c5befe7d0b86bb4996017605f1edc4bfa1c327f8.tar.bz2
Share SyncPointManager between ipc and in-process
Allow SyncPointManager instance to be set, and set the same instance in Android WebView. Also remove ref-counting and just guarantee SyncPointManager outlives running message loop. Also make SyncPointManager thread safe, and callbacks are no longer guaranteed to happen on the same thread. Make sure command buffer implementations handle it correctly. BUG=509702 Review URL: https://codereview.chromium.org/1231263003 Cr-Commit-Position: refs/heads/master@{#339712}
Diffstat (limited to 'content/gpu/in_process_gpu_thread.h')
-rw-r--r--content/gpu/in_process_gpu_thread.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/content/gpu/in_process_gpu_thread.h b/content/gpu/in_process_gpu_thread.h
index 3716730..6516ba6 100644
--- a/content/gpu/in_process_gpu_thread.h
+++ b/content/gpu/in_process_gpu_thread.h
@@ -9,6 +9,10 @@
#include "content/common/content_export.h"
#include "content/common/in_process_child_thread_params.h"
+namespace gpu {
+class SyncPointManager;
+}
+
namespace content {
class GpuMemoryBufferFactory;
@@ -18,7 +22,8 @@ class GpuProcess;
// with --in-process-gpu or --single-process.
class InProcessGpuThread : public base::Thread {
public:
- InProcessGpuThread(const InProcessChildThreadParams& params);
+ InProcessGpuThread(const InProcessChildThreadParams& params,
+ gpu::SyncPointManager* sync_point_manager_override);
~InProcessGpuThread() override;
protected:
@@ -31,6 +36,12 @@ class InProcessGpuThread : public base::Thread {
// Deleted in CleanUp() on the gpu thread, so don't use smart pointers.
GpuProcess* gpu_process_;
+ // Can be null if overridden.
+ scoped_ptr<gpu::SyncPointManager> sync_point_manager_;
+
+ // Non-owning.
+ gpu::SyncPointManager* sync_point_manager_override_;
+
scoped_ptr<GpuMemoryBufferFactory> gpu_memory_buffer_factory_;
DISALLOW_COPY_AND_ASSIGN(InProcessGpuThread);