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

Side by Side Diff: content/browser/gpu/browser_gpu_memory_buffer_manager.cc

Issue 2800693002: {Browser}GpuMemoryBufferManager: add supported native attrib queries
Patch Set: {Browser}GpuMemoryBufferManager: add supported native attrib queries Created 3 years, 8 months 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
OLDNEW
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 "content/browser/gpu/browser_gpu_memory_buffer_manager.h" 5 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 ~CreateGpuMemoryBufferRequest() {} 58 ~CreateGpuMemoryBufferRequest() {}
59 base::WaitableEvent event; 59 base::WaitableEvent event;
60 gfx::Size size; 60 gfx::Size size;
61 gfx::BufferFormat format; 61 gfx::BufferFormat format;
62 gfx::BufferUsage usage; 62 gfx::BufferUsage usage;
63 int client_id; 63 int client_id;
64 gpu::SurfaceHandle surface_handle; 64 gpu::SurfaceHandle surface_handle;
65 std::unique_ptr<gfx::GpuMemoryBuffer> result; 65 std::unique_ptr<gfx::GpuMemoryBuffer> result;
66 }; 66 };
67 67
68 struct BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsRequest {
69 GetGpuMemoryBufferAttribsRequest(int client_id)
70 : event(base::WaitableEvent::ResetPolicy::MANUAL,
71 base::WaitableEvent::InitialState::NOT_SIGNALED),
72 client_id(client_id){};
73 ~GetGpuMemoryBufferAttribsRequest(){};
74 base::WaitableEvent event;
75 int client_id;
76 gfx::GpuMemoryBufferAttribVector result;
77 };
78
68 BrowserGpuMemoryBufferManager::BrowserGpuMemoryBufferManager( 79 BrowserGpuMemoryBufferManager::BrowserGpuMemoryBufferManager(
69 int gpu_client_id, 80 int gpu_client_id,
70 uint64_t gpu_client_tracing_id) 81 uint64_t gpu_client_tracing_id)
71 : native_configurations_(gpu::GetNativeGpuMemoryBufferConfigurations()), 82 : native_configurations_(gpu::GetNativeGpuMemoryBufferConfigurations()),
72 gpu_client_id_(gpu_client_id), 83 gpu_client_id_(gpu_client_id),
73 gpu_client_tracing_id_(gpu_client_tracing_id) { 84 gpu_client_tracing_id_(gpu_client_tracing_id) {
74 DCHECK(!g_gpu_memory_buffer_manager); 85 DCHECK(!g_gpu_memory_buffer_manager);
75 g_gpu_memory_buffer_manager = this; 86 g_gpu_memory_buffer_manager = this;
76 } 87 }
77 88
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 id, size, format)); 144 id, size, format));
134 } 145 }
135 146
136 void BrowserGpuMemoryBufferManager::SetDestructionSyncToken( 147 void BrowserGpuMemoryBufferManager::SetDestructionSyncToken(
137 gfx::GpuMemoryBuffer* buffer, 148 gfx::GpuMemoryBuffer* buffer,
138 const gpu::SyncToken& sync_token) { 149 const gpu::SyncToken& sync_token) {
139 static_cast<gpu::GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token( 150 static_cast<gpu::GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token(
140 sync_token); 151 sync_token);
141 } 152 }
142 153
154 void BrowserGpuMemoryBufferManager::HandleGpuMemoryBufferAttribsReceivedOnIO(
155 GetGpuMemoryBufferAttribsRequest* request,
156 const gfx::GpuMemoryBufferAttribVector& supported_attribs) {
157 request->result = supported_attribs;
158 request->event.Signal();
159 }
160
161 void HostGetGpuMemoryBufferAttribs(
162 GpuProcessHost* host,
163 int client_id,
164 const BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsCallback&
165 callback) {
166 host->GetGpuMemoryBufferAttribs(callback);
167 }
168
169 void BrowserGpuMemoryBufferManager::HandleGetGpuMemoryBufferAttribsOnIO(
170 GetGpuMemoryBufferAttribsRequest* request) {
171 GetGpuMemoryBufferAttribsOnIO(
172 base::Bind(&HostGetGpuMemoryBufferAttribs), request->client_id,
173 base::Bind(&BrowserGpuMemoryBufferManager::
174 HandleGpuMemoryBufferAttribsReceivedOnIO,
175 base::Unretained(this), base::Unretained(request)));
176 }
177
178 void BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsOnIO(
179 const GetGpuMemoryBufferAttribsDelegate& delegate,
180 int client_id,
181 const BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsCallback&
182 callback) {
183 GpuProcessHost* host = GpuProcessHost::Get();
184 if (!host) {
185 callback.Run(gfx::GpuMemoryBufferAttribVector());
186 }
187 delegate.Run(host, client_id, callback);
188 }
189
190 gfx::GpuMemoryBufferAttribVector
191 BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribs() {
192 GetGpuMemoryBufferAttribsRequest request(gpu_client_id_);
193
194 BrowserThread::PostTask(
195 BrowserThread::IO, FROM_HERE,
196 base::Bind(
197 &BrowserGpuMemoryBufferManager::HandleGetGpuMemoryBufferAttribsOnIO,
198 base::Unretained(this), base::Unretained(&request)));
199
200 TRACE_EVENT0("browser",
201 "BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribs");
202 base::ThreadRestrictions::ScopedAllowWait allow_wait;
203 request.event.Wait();
204 return request.result;
205 }
206
143 bool BrowserGpuMemoryBufferManager::OnMemoryDump( 207 bool BrowserGpuMemoryBufferManager::OnMemoryDump(
144 const base::trace_event::MemoryDumpArgs& args, 208 const base::trace_event::MemoryDumpArgs& args,
145 base::trace_event::ProcessMemoryDump* pmd) { 209 base::trace_event::ProcessMemoryDump* pmd) {
146 DCHECK_CURRENTLY_ON(BrowserThread::IO); 210 DCHECK_CURRENTLY_ON(BrowserThread::IO);
147 211
148 for (const auto& client : clients_) { 212 for (const auto& client : clients_) {
149 int client_id = client.first; 213 int client_id = client.first;
150 214
151 for (const auto& buffer : client.second) { 215 for (const auto& buffer : client.second) {
152 if (buffer.second.type == gfx::EMPTY_BUFFER) 216 if (buffer.second.type == gfx::EMPTY_BUFFER)
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 format(format), 528 format(format),
465 usage(usage), 529 usage(usage),
466 gpu_host_id(gpu_host_id) {} 530 gpu_host_id(gpu_host_id) {}
467 531
468 BrowserGpuMemoryBufferManager::BufferInfo::BufferInfo(const BufferInfo& other) = 532 BrowserGpuMemoryBufferManager::BufferInfo::BufferInfo(const BufferInfo& other) =
469 default; 533 default;
470 534
471 BrowserGpuMemoryBufferManager::BufferInfo::~BufferInfo() {} 535 BrowserGpuMemoryBufferManager::BufferInfo::~BufferInfo() {}
472 536
473 } // namespace content 537 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/gpu/browser_gpu_memory_buffer_manager.h ('k') | gpu/command_buffer/client/gpu_memory_buffer_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698