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

Side by Side Diff: gpu/ipc/client/client_gpu_memory_buffer_manager.cc

Issue 2490503002: gpu: A common GpuMemoryBufferManager implemenetation for clients. (Closed)
Patch Set: tot merge 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/client_gpu_memory_buffer_manager.h ('k') | services/ui/public/cpp/gpu_service.h » ('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 #include "gpu/ipc/client/client_gpu_memory_buffer_manager.h"
6
7 #include "base/bind.h"
8 #include "base/trace_event/trace_event.h"
9 #include "gpu/command_buffer/common/sync_token.h"
10 #include "gpu/ipc/client/gpu_memory_buffer_impl.h"
11
12 namespace gpu {
13
14 ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager(Delegate* delegate)
15 : delegate_(delegate) {
16 DCHECK(delegate_);
17 }
18
19 ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() {}
20
21 std::unique_ptr<gfx::GpuMemoryBuffer>
22 ClientGpuMemoryBufferManager::AllocateGpuMemoryBuffer(
23 const gfx::Size& size,
24 gfx::BufferFormat format,
25 gfx::BufferUsage usage,
26 SurfaceHandle surface_handle) {
27 DCHECK(delegate_);
28 DCHECK_EQ(kNullSurfaceHandle, surface_handle);
29 TRACE_EVENT2("renderer",
30 "ClientGpuMemoryBufferManager::AllocateGpuMemoryBuffer", "width",
31 size.width(), "height", size.height());
32
33 gfx::GpuMemoryBufferHandle handle =
34 delegate_->GetSharedMemoryHandle(size, format, usage);
35 if (handle.is_null())
36 return nullptr;
37
38 std::unique_ptr<GpuMemoryBufferImpl> buffer =
39 GpuMemoryBufferImpl::CreateFromHandle(
40 handle, size, format, usage,
41 base::Bind(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
42 this, handle.id));
43 if (!buffer) {
44 DeletedGpuMemoryBuffer(handle.id, SyncToken());
45 return nullptr;
46 }
47
48 return std::move(buffer);
49 }
50
51 std::unique_ptr<gfx::GpuMemoryBuffer>
52 ClientGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle(
53 const gfx::GpuMemoryBufferHandle& handle,
54 const gfx::Size& size,
55 gfx::BufferFormat format) {
56 NOTIMPLEMENTED();
57 return nullptr;
58 }
59
60 gfx::GpuMemoryBuffer*
61 ClientGpuMemoryBufferManager::GpuMemoryBufferFromClientBuffer(
62 ClientBuffer buffer) {
63 return GpuMemoryBufferImpl::FromClientBuffer(buffer);
64 }
65
66 void ClientGpuMemoryBufferManager::SetDestructionSyncToken(
67 gfx::GpuMemoryBuffer* buffer,
68 const SyncToken& sync_token) {
69 static_cast<GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token(
70 sync_token);
71 }
72
73 void ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer(
74 gfx::GpuMemoryBufferId id,
75 const SyncToken& token) {
76 DCHECK(delegate_);
77 delegate_->DeletedGpuMemoryBuffer(id, token);
78 }
79
80 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/ipc/client/client_gpu_memory_buffer_manager.h ('k') | services/ui/public/cpp/gpu_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698