diff options
| author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-12 01:00:41 +0000 |
|---|---|---|
| committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-12 01:00:41 +0000 |
| commit | 623c0bd198a26b6609c7545a0cce0578dbad5316 (patch) | |
| tree | e5cfac9d974797d95a8b4ee0aa0e4204826f089c /content/gpu/gpu_thread.h | |
| parent | 23716fb643383cb737e564d55234a7c2d58eba00 (diff) | |
| download | chromium_src-623c0bd198a26b6609c7545a0cce0578dbad5316.zip chromium_src-623c0bd198a26b6609c7545a0cce0578dbad5316.tar.gz chromium_src-623c0bd198a26b6609c7545a0cce0578dbad5316.tar.bz2 | |
Move chrome\gpu to content\gpu.
TBR=avi
Review URL: http://codereview.chromium.org/6684015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77903 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/gpu/gpu_thread.h')
| -rw-r--r-- | content/gpu/gpu_thread.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/content/gpu/gpu_thread.h b/content/gpu/gpu_thread.h new file mode 100644 index 0000000..21ad923 --- /dev/null +++ b/content/gpu/gpu_thread.h @@ -0,0 +1,97 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_GPU_GPU_THREAD_H_ +#define CONTENT_GPU_GPU_THREAD_H_ +#pragma once + +#include <string> + +#include "base/basictypes.h" +#include "base/command_line.h" +#include "base/scoped_ptr.h" +#include "base/time.h" +#include "build/build_config.h" +#include "content/common/child_thread.h" +#include "content/common/gpu_info.h" +#include "content/gpu/gpu_channel.h" +#include "content/gpu/gpu_config.h" +#include "content/gpu/x_util.h" +#include "ui/gfx/native_widget_types.h" + +namespace IPC { +struct ChannelHandle; +} + +namespace sandbox { +class TargetServices; +} + +class GpuWatchdogThread; + +class GpuThread : public ChildThread { + public: +#if defined(OS_WIN) + explicit GpuThread(sandbox::TargetServices* target_services); +#else + GpuThread(); +#endif + + // For single-process mode. + explicit GpuThread(const std::string& channel_id); + + ~GpuThread(); + + void Init(const base::Time& process_start_time); + void StopWatchdog(); + + // Remove the channel for a particular renderer. + void RemoveChannel(int renderer_id); + + private: + // ChildThread overrides. + virtual bool OnControlMessageReceived(const IPC::Message& msg); + + // Message handlers. + void OnInitialize(); + void OnEstablishChannel(int renderer_id); + void OnCloseChannel(const IPC::ChannelHandle& channel_handle); + void OnSynchronize(); + void OnCollectGraphicsInfo(GPUInfo::Level level); + void OnCreateViewCommandBuffer( + gfx::PluginWindowHandle window, + int32 render_view_id, + int32 renderer_id, + const GPUCreateCommandBufferConfig& init_params); +#if defined(OS_MACOSX) + void OnAcceleratedSurfaceBuffersSwappedACK( + int renderer_id, int32 route_id, uint64 swap_buffers_count); + void OnDidDestroyAcceleratedSurface(int renderer_id, int32 renderer_route_id); +#endif + void OnCrash(); + void OnHang(); + +#if defined(OS_WIN) + static void CollectDxDiagnostics(GpuThread* thread); + static void SetDxDiagnostics(GpuThread* thread, const DxDiagNode& node); +#endif + + base::Time process_start_time_; + scoped_refptr<GpuWatchdogThread> watchdog_thread_; + + typedef base::hash_map<int, scoped_refptr<GpuChannel> > GpuChannelMap; + GpuChannelMap gpu_channels_; + + // Information about the GPU, such as device and vendor ID. + GPUInfo gpu_info_; + +#if defined(OS_WIN) + // Windows specific client sandbox interface. + sandbox::TargetServices* target_services_; +#endif + + DISALLOW_COPY_AND_ASSIGN(GpuThread); +}; + +#endif // CONTENT_GPU_GPU_THREAD_H_ |
