OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/test/test_gpu_memory_buffer_manager.h" | 5 #include "cc/test/test_gpu_memory_buffer_manager.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/memory/ptr_util.h" | 11 #include "base/memory/ptr_util.h" |
12 #include "base/numerics/safe_conversions.h" | 12 #include "base/numerics/safe_conversions.h" |
13 #include "ui/gfx/buffer_format_util.h" | 13 #include "ui/gfx/buffer_format_util.h" |
14 #include "ui/gfx/gpu_memory_buffer.h" | 14 #include "ui/gfx/gpu_memory_buffer.h" |
| 15 #include "ui/gfx/shared_event.h" |
15 | 16 |
16 namespace cc { | 17 namespace cc { |
17 namespace { | 18 namespace { |
18 | 19 |
19 class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { | 20 class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
20 public: | 21 public: |
21 GpuMemoryBufferImpl(TestGpuMemoryBufferManager* manager, | 22 GpuMemoryBufferImpl(TestGpuMemoryBufferManager* manager, |
22 int id, | 23 int id, |
23 const gfx::Size& size, | 24 const gfx::Size& size, |
24 gfx::BufferFormat format, | 25 gfx::BufferFormat format, |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 ClientBuffer AsClientBuffer() override { | 117 ClientBuffer AsClientBuffer() override { |
117 return client_buffer_->AsClientBuffer(); | 118 return client_buffer_->AsClientBuffer(); |
118 } | 119 } |
119 | 120 |
120 private: | 121 private: |
121 TestGpuMemoryBufferManager* manager_; | 122 TestGpuMemoryBufferManager* manager_; |
122 gfx::GpuMemoryBufferId id_; | 123 gfx::GpuMemoryBufferId id_; |
123 gfx::GpuMemoryBuffer* client_buffer_; | 124 gfx::GpuMemoryBuffer* client_buffer_; |
124 }; | 125 }; |
125 | 126 |
| 127 class GpuFenceImpl : public gfx::GpuFence { |
| 128 public: |
| 129 GpuFenceImpl() {} |
| 130 explicit GpuFenceImpl(const gfx::GpuFenceHandle& handle) |
| 131 : shared_event_(handle.shared_event_handle) {} |
| 132 ~GpuFenceImpl() override {} |
| 133 |
| 134 // Overridden from gfx::GpuFence: |
| 135 bool IsSignaled() override { return shared_event_.IsSignaled(); } |
| 136 bool Wait(const base::TimeDelta& max_time) override { |
| 137 return shared_event_.Wait(max_time); |
| 138 } |
| 139 void Reset() override { shared_event_.Reset(); } |
| 140 gfx::GpuFenceHandle GetHandle() const override { |
| 141 gfx::GpuFenceHandle handle; |
| 142 handle.shared_event_handle = shared_event_.GetHandle(); |
| 143 return handle; |
| 144 } |
| 145 ClientFence AsClientFence() override { |
| 146 return reinterpret_cast<ClientFence>(this); |
| 147 } |
| 148 |
| 149 private: |
| 150 gfx::SharedEvent shared_event_; |
| 151 }; |
| 152 |
126 } // namespace | 153 } // namespace |
127 | 154 |
128 TestGpuMemoryBufferManager::TestGpuMemoryBufferManager() { | 155 TestGpuMemoryBufferManager::TestGpuMemoryBufferManager() { |
129 } | 156 } |
130 | 157 |
131 TestGpuMemoryBufferManager::~TestGpuMemoryBufferManager() { | 158 TestGpuMemoryBufferManager::~TestGpuMemoryBufferManager() { |
132 DCHECK(buffers_.empty()); | 159 DCHECK(buffers_.empty()); |
133 DCHECK(clients_.empty()); | 160 DCHECK(clients_.empty()); |
134 if (parent_gpu_memory_buffer_manager_) | 161 if (parent_gpu_memory_buffer_manager_) |
135 parent_gpu_memory_buffer_manager_->clients_.erase(client_id_); | 162 parent_gpu_memory_buffer_manager_->clients_.erase(client_id_); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 base::MakeUnique<base::SharedMemory>(handle.handle, false), handle.offset, | 213 base::MakeUnique<base::SharedMemory>(handle.handle, false), handle.offset, |
187 handle.stride)); | 214 handle.stride)); |
188 buffers_[last_gpu_memory_buffer_id_] = result.get(); | 215 buffers_[last_gpu_memory_buffer_id_] = result.get(); |
189 return result; | 216 return result; |
190 } | 217 } |
191 | 218 |
192 void TestGpuMemoryBufferManager::SetDestructionSyncToken( | 219 void TestGpuMemoryBufferManager::SetDestructionSyncToken( |
193 gfx::GpuMemoryBuffer* buffer, | 220 gfx::GpuMemoryBuffer* buffer, |
194 const gpu::SyncToken& sync_token) {} | 221 const gpu::SyncToken& sync_token) {} |
195 | 222 |
| 223 std::unique_ptr<gfx::GpuFence> TestGpuMemoryBufferManager::CreateGpuFence() { |
| 224 std::unique_ptr<gfx::GpuFence> result(new GpuFenceImpl); |
| 225 return result; |
| 226 } |
| 227 |
| 228 std::unique_ptr<gfx::GpuFence> |
| 229 TestGpuMemoryBufferManager::CreateGpuFenceFromHandle( |
| 230 const gfx::GpuFenceHandle& handle) { |
| 231 std::unique_ptr<gfx::GpuFence> result(new GpuFenceImpl(handle)); |
| 232 return result; |
| 233 } |
| 234 |
| 235 gfx::GpuFence* TestGpuMemoryBufferManager::GpuFenceFromClientFence( |
| 236 ClientFence fence) { |
| 237 return reinterpret_cast<gfx::GpuFence*>(fence); |
| 238 } |
| 239 |
196 } // namespace cc | 240 } // namespace cc |
OLD | NEW |