1// Copyright (c) 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_BROWSER_GPU_GPU_MEMORY_BUFFER_FACTORY_HOST_IMPL_H_
6#define CONTENT_BROWSER_GPU_GPU_MEMORY_BUFFER_FACTORY_HOST_IMPL_H_
7
8#include <map>
9
10#include "content/common/gpu/client/gpu_memory_buffer_factory_host.h"
11
12namespace content {
13class GpuMemoryBufferImpl;
14
15class CONTENT_EXPORT GpuMemoryBufferFactoryHostImpl
16    : public GpuMemoryBufferFactoryHost {
17 public:
18  GpuMemoryBufferFactoryHostImpl();
19  virtual ~GpuMemoryBufferFactoryHostImpl();
20
21  // Overridden from GpuMemoryBufferFactoryHost:
22  virtual void CreateGpuMemoryBuffer(
23      const gfx::GpuMemoryBufferHandle& handle,
24      const gfx::Size& size,
25      unsigned internalformat,
26      unsigned usage,
27      const CreateGpuMemoryBufferCallback& callback) OVERRIDE;
28  virtual void DestroyGpuMemoryBuffer(const gfx::GpuMemoryBufferHandle& handle,
29                                      int32 sync_point) OVERRIDE;
30
31  void set_gpu_host_id(int gpu_host_id) { gpu_host_id_ = gpu_host_id; }
32
33 private:
34  void OnGpuMemoryBufferCreated(uint32 request_id,
35                                const gfx::GpuMemoryBufferHandle& handle);
36
37  int gpu_host_id_;
38  uint32 next_create_gpu_memory_buffer_request_id_;
39  typedef std::map<uint32, CreateGpuMemoryBufferCallback>
40      CreateGpuMemoryBufferCallbackMap;
41  CreateGpuMemoryBufferCallbackMap create_gpu_memory_buffer_requests_;
42
43  DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferFactoryHostImpl);
44};
45
46}  // namespace content
47
48#endif  // CONTENT_BROWSER_GPU_GPU_MEMORY_BUFFER_FACTORY_HOST_IMPL_H_
49