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

Unified Diff: content/browser/gpu/browser_gpu_memory_buffer_manager.cc

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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/gpu/browser_gpu_memory_buffer_manager.h ('k') | gpu/ipc/client/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/gpu/browser_gpu_memory_buffer_manager.cc
diff --git a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
index a63fc08da1a3b8d2bd5c3c53825894e3c978ebd3..fe7bd7e8a5fc5d019799220dbfd758b170e08f5f 100644
--- a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
+++ b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
@@ -154,9 +154,12 @@ BrowserGpuMemoryBufferManager::BrowserGpuMemoryBufferManager(
: native_configurations_(GetNativeGpuMemoryBufferConfigurations()),
gpu_client_id_(gpu_client_id),
gpu_client_tracing_id_(gpu_client_tracing_id),
+ gpu_memory_buffer_manager_(new gpu::GpuHostMemoryBufferManager()),
gpu_host_id_(0) {
DCHECK(!g_gpu_memory_buffer_manager);
g_gpu_memory_buffer_manager = this;
+ gpu_memory_buffer_manager_->SetIO(BrowserThread::GetTaskRunnerForThread(
+ BrowserThread::IO));
}
BrowserGpuMemoryBufferManager::~BrowserGpuMemoryBufferManager() {
@@ -229,6 +232,7 @@ BrowserGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle(
const gfx::GpuMemoryBufferHandle& handle,
const gfx::Size& size,
gfx::BufferFormat format) {
+#if 0
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
CreateGpuMemoryBufferFromHandleRequest request(handle, size, format,
@@ -247,6 +251,11 @@ BrowserGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle(
base::ThreadRestrictions::ScopedAllowWait allow_wait;
request.event.Wait();
return std::move(request.result);
+#else
+ return gpu_memory_buffer_manager_->CreateGpuMemoryBufferFromHandle(handle,
+ size,
+ format);
+#endif
}
void BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForChildProcess(
@@ -267,6 +276,7 @@ void BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForChildProcess(
return;
}
+#if 0
// Early out if we cannot fallback to shared memory buffer.
if (!gpu::GpuMemoryBufferImplSharedMemory::IsUsageSupported(usage) ||
!gpu::GpuMemoryBufferImplSharedMemory::IsSizeValidForFormat(size,
@@ -289,6 +299,12 @@ void BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForChildProcess(
callback.Run(gpu::GpuMemoryBufferImplSharedMemory::AllocateForChildProcess(
id, size, format, child_process_handle));
+#else
+ gpu_memory_buffer_manager_->AllocateGpuMemoryBufferForClient(id, size, format,
+ usage,
+ child_client_id,
+ callback);
+#endif
}
gfx::GpuMemoryBuffer*
@@ -308,7 +324,7 @@ bool BrowserGpuMemoryBufferManager::OnMemoryDump(
const base::trace_event::MemoryDumpArgs& args,
base::trace_event::ProcessMemoryDump* pmd) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
-
+#if 0
for (const auto& client : clients_) {
int client_id = client.first;
@@ -343,7 +359,7 @@ bool BrowserGpuMemoryBufferManager::OnMemoryDump(
pmd->AddOwnershipEdge(dump->guid(), shared_buffer_guid);
}
}
-
+#endif
return true;
}
@@ -362,6 +378,7 @@ void BrowserGpuMemoryBufferManager::ProcessRemoved(
int client_id) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
+#if 0 // XXX
ClientMap::iterator client_it = clients_.find(client_id);
if (client_it == clients_.end())
return;
@@ -379,6 +396,7 @@ void BrowserGpuMemoryBufferManager::ProcessRemoved(
}
clients_.erase(client_it);
+#endif
}
bool BrowserGpuMemoryBufferManager::IsNativeGpuMemoryBufferConfiguration(
@@ -394,6 +412,10 @@ BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForSurface(
gfx::BufferFormat format,
gfx::BufferUsage usage,
gpu::SurfaceHandle surface_handle) {
+ return gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer(size, format,
+ usage,
+ surface_handle);
+#if 0
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
CreateGpuMemoryBufferRequest request(size, format, usage, gpu_client_id_,
@@ -412,10 +434,12 @@ BrowserGpuMemoryBufferManager::AllocateGpuMemoryBufferForSurface(
base::ThreadRestrictions::ScopedAllowWait allow_wait;
request.event.Wait();
return std::move(request.result);
+#endif
}
void BrowserGpuMemoryBufferManager::HandleCreateGpuMemoryBufferOnIO(
CreateGpuMemoryBufferRequest* request) {
+#if 0
DCHECK_CURRENTLY_ON(BrowserThread::IO);
gfx::GpuMemoryBufferId new_id = content::GetNextGenericSharedMemoryId();
@@ -455,10 +479,12 @@ void BrowserGpuMemoryBufferManager::HandleCreateGpuMemoryBufferOnIO(
base::Bind(&BrowserGpuMemoryBufferManager::DestroyGpuMemoryBufferOnIO,
base::Unretained(this), new_id, request->client_id)));
request->event.Signal();
+#endif
}
void BrowserGpuMemoryBufferManager::HandleCreateGpuMemoryBufferFromHandleOnIO(
CreateGpuMemoryBufferFromHandleRequest* request) {
+#if 0
DCHECK_CURRENTLY_ON(BrowserThread::IO);
gfx::GpuMemoryBufferId new_id = content::GetNextGenericSharedMemoryId();
@@ -482,6 +508,7 @@ void BrowserGpuMemoryBufferManager::HandleCreateGpuMemoryBufferFromHandleOnIO(
base::Bind(&BrowserGpuMemoryBufferManager::DestroyGpuMemoryBufferOnIO,
base::Unretained(this), new_id, request->client_id)));
request->event.Signal();
+#endif
}
void BrowserGpuMemoryBufferManager::HandleGpuMemoryBufferCreatedOnIO(
@@ -635,6 +662,9 @@ void BrowserGpuMemoryBufferManager::DestroyGpuMemoryBufferOnIO(
int client_id,
const gpu::SyncToken& sync_token) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ if (clients_.find(client_id) == clients_.end())
+ return;
+
DCHECK(clients_.find(client_id) != clients_.end());
BufferMap& buffers = clients_[client_id];
« no previous file with comments | « content/browser/gpu/browser_gpu_memory_buffer_manager.h ('k') | gpu/ipc/client/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698