Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(131)

Side by Side Diff: gpu/ipc/client/gpu_host_memory_buffer_manager.h

Issue 2448983003: gpu: Refactor memory buffer handling code out of content.
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gpu/ipc/client/BUILD.gn ('k') | gpu/ipc/client/gpu_host_memory_buffer_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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 GPU_IPC_CLIENT_GPU_HOST_MEMORY_BUFFER_MANAGER_H_
6 #define GPU_IPC_CLIENT_GPU_HOST_MEMORY_BUFFER_MANAGER_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "base/single_thread_task_runner.h"
10 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
11 #include "gpu/gpu_export.h"
12
13 namespace gpu {
14
15 class GPU_EXPORT GpuHostMemoryBufferManager : public GpuMemoryBufferManager {
16 public:
17 using AllocationCallback =
18 base::Callback<void(const gfx::GpuMemoryBufferHandle& handle)>;
19
20 GpuHostMemoryBufferManager();
21 ~GpuHostMemoryBufferManager() override;
22
23 void AllocateGpuMemoryBufferForClient(gfx::GpuMemoryBufferId id,
24 const gfx::Size& size,
25 gfx::BufferFormat format,
26 gfx::BufferUsage usage,
27 int child_client_id,
28 const AllocationCallback& callback);
29
30 void SetIO(scoped_refptr<base::SingleThreadTaskRunner> r) {
31 io_task_runner_ = std::move(r);
32 }
33
34 // GpuMemoryBufferManager:
35 std::unique_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBuffer(
36 const gfx::Size& size,
37 gfx::BufferFormat format,
38 gfx::BufferUsage usage,
39 SurfaceHandle surface_handle) override;
40 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBufferFromHandle(
41 const gfx::GpuMemoryBufferHandle& handle,
42 const gfx::Size& size,
43 gfx::BufferFormat format) override;
44 gfx::GpuMemoryBuffer* GpuMemoryBufferFromClientBuffer(
45 ClientBuffer buffer) override;
46 void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer,
47 const SyncToken& sync_token) override;
48
49 private:
50 struct BufferInfo {
51 BufferInfo();
52 BufferInfo(const gfx::Size& size,
53 gfx::GpuMemoryBufferType type,
54 gfx::BufferFormat format,
55 gfx::BufferUsage usage,
56 int gpu_host_id);
57 BufferInfo(const BufferInfo& other);
58 ~BufferInfo();
59
60 gfx::Size size;
61 gfx::GpuMemoryBufferType type = gfx::EMPTY_BUFFER;
62 gfx::BufferFormat format = gfx::BufferFormat::RGBA_8888;
63 gfx::BufferUsage usage = gfx::BufferUsage::GPU_READ;
64 int gpu_host_id = 0;
65 };
66 struct CreateGpuMemoryBufferRequest;
67 struct CreateGpuMemoryBufferFromHandleRequest;
68
69 void HandleCreateGpuMemoryBufferOnIO(CreateGpuMemoryBufferRequest* request);
70 void HandleCreateGpuMemoryBufferFromHandleOnIO(
71 CreateGpuMemoryBufferFromHandleRequest* request);
72
73 void DestroyGpuMemoryBufferOnIO(gfx::GpuMemoryBufferId id,
74 int client_id,
75 const gpu::SyncToken& sync_token);
76
77
78 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; // XXX
79 const int gpu_client_id_; // XXX
80
81 // Stores info about buffers for all clients. This should only be accessed
82 // on the IO thread.
83 using BufferMap = base::hash_map<gfx::GpuMemoryBufferId, BufferInfo>;
84 using ClientMap = base::hash_map<int, BufferMap>;
85 ClientMap clients_;
86
87 DISALLOW_COPY_AND_ASSIGN(GpuHostMemoryBufferManager);
88 };
89
90 } // namespace gpu
91
92 #endif // GPU_IPC_CLIENT_GPU_HOST_MEMORY_BUFFER_MANAGER_H_
OLDNEW
« no previous file with comments | « gpu/ipc/client/BUILD.gn ('k') | gpu/ipc/client/gpu_host_memory_buffer_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698