diff options
Diffstat (limited to 'chromium/content/browser/gpu/browser_gpu_channel_host_factory.h')
-rw-r--r-- | chromium/content/browser/gpu/browser_gpu_channel_host_factory.h | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/chromium/content/browser/gpu/browser_gpu_channel_host_factory.h b/chromium/content/browser/gpu/browser_gpu_channel_host_factory.h index 4bc0b413153..b4df563fc02 100644 --- a/chromium/content/browser/gpu/browser_gpu_channel_host_factory.h +++ b/chromium/content/browser/gpu/browser_gpu_channel_host_factory.h @@ -5,45 +5,62 @@ #ifndef CONTENT_BROWSER_GPU_BROWSER_GPU_CHANNEL_HOST_FACTORY_H_ #define CONTENT_BROWSER_GPU_BROWSER_GPU_CHANNEL_HOST_FACTORY_H_ +#include <map> #include <vector> #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "content/common/gpu/client/gpu_channel_host.h" +#include "content/common/gpu/client/gpu_memory_buffer_factory_host.h" #include "ipc/message_filter.h" namespace content { class BrowserGpuMemoryBufferManager; -class GpuMemoryBufferFactoryHostImpl; class CONTENT_EXPORT BrowserGpuChannelHostFactory - : public GpuChannelHostFactory { + : public GpuChannelHostFactory, + public GpuMemoryBufferFactoryHost { public: static void Initialize(bool establish_gpu_channel); static void Terminate(); static BrowserGpuChannelHostFactory* instance() { return instance_; } - // GpuChannelHostFactory implementation. + static void EnableGpuMemoryBufferFactoryUsage( + gfx::GpuMemoryBuffer::Usage usage); + static bool IsGpuMemoryBufferFactoryUsageEnabled( + gfx::GpuMemoryBuffer::Usage usage); + static uint32 GetImageTextureTarget(); + + // Overridden from GpuChannelHostFactory: bool IsMainThread() override; - base::MessageLoop* GetMainLoop() override; - scoped_refptr<base::MessageLoopProxy> GetIOLoopProxy() override; + scoped_refptr<base::SingleThreadTaskRunner> GetIOThreadTaskRunner() override; scoped_ptr<base::SharedMemory> AllocateSharedMemory(size_t size) override; CreateCommandBufferResult CreateViewCommandBuffer( int32 surface_id, const GPUCreateCommandBufferConfig& init_params, int32 route_id) override; - // Specify a task runner and callback to be used for a set of messages. The - // callback will be set up on the current GpuProcessHost, identified by - // GpuProcessHostId(). - virtual void SetHandlerForControlMessages( - const uint32* message_ids, - size_t num_messages, - const base::Callback<void(const IPC::Message&)>& handler, - base::TaskRunner* target_task_runner); + // Overridden from GpuMemoryBufferFactoryHost: + bool IsGpuMemoryBufferConfigurationSupported( + gfx::GpuMemoryBuffer::Format format, + gfx::GpuMemoryBuffer::Usage usage) override; + void CreateGpuMemoryBuffer( + gfx::GpuMemoryBufferId id, + const gfx::Size& size, + gfx::GpuMemoryBuffer::Format format, + gfx::GpuMemoryBuffer::Usage usage, + int client_id, + int32 surface_id, + const CreateGpuMemoryBufferCallback& callback) override; + void DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id, + int client_id, + int32 sync_point) override; + int GpuProcessHostId() { return gpu_host_id_; } +#if !defined(OS_ANDROID) GpuChannelHost* EstablishGpuChannelSync( CauseForGpuLaunch cause_for_gpu_launch); +#endif void EstablishGpuChannel(CauseForGpuLaunch cause_for_gpu_launch, const base::Closure& callback); GpuChannelHost* GetGpuChannel(); @@ -68,15 +85,23 @@ class CONTENT_EXPORT BrowserGpuChannelHostFactory CreateCommandBufferResult result); static void AddFilterOnIO(int gpu_host_id, scoped_refptr<IPC::MessageFilter> filter); + void DestroyGpuMemoryBufferOnIO(gfx::GpuMemoryBufferId id, + int client_id, + int32 sync_point); + void OnGpuMemoryBufferCreated(uint32 request_id, + const gfx::GpuMemoryBufferHandle& handle); const int gpu_client_id_; scoped_ptr<base::WaitableEvent> shutdown_event_; scoped_refptr<GpuChannelHost> gpu_channel_; - scoped_ptr<GpuMemoryBufferFactoryHostImpl> gpu_memory_buffer_factory_host_; scoped_ptr<BrowserGpuMemoryBufferManager> gpu_memory_buffer_manager_; int gpu_host_id_; scoped_refptr<EstablishRequest> pending_request_; std::vector<base::Closure> established_callbacks_; + uint32 next_create_gpu_memory_buffer_request_id_; + typedef std::map<uint32, CreateGpuMemoryBufferCallback> + CreateGpuMemoryBufferCallbackMap; + CreateGpuMemoryBufferCallbackMap create_gpu_memory_buffer_requests_; static BrowserGpuChannelHostFactory* instance_; |