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

Unified 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 side-by-side diff with in-line comments
Download patch
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 3cb728df94b7a628b0e390ad7b480b5abee799f2..2273468169ec140529559f06a1b29263ba408335 100644
--- a/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
+++ b/content/browser/gpu/browser_gpu_memory_buffer_manager.cc
@@ -65,6 +65,17 @@ struct BrowserGpuMemoryBufferManager::CreateGpuMemoryBufferRequest {
std::unique_ptr<gfx::GpuMemoryBuffer> result;
};
+struct BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsRequest {
+ GetGpuMemoryBufferAttribsRequest(int client_id)
+ : event(base::WaitableEvent::ResetPolicy::MANUAL,
+ base::WaitableEvent::InitialState::NOT_SIGNALED),
+ client_id(client_id){};
+ ~GetGpuMemoryBufferAttribsRequest(){};
+ base::WaitableEvent event;
+ int client_id;
+ gfx::GpuMemoryBufferAttribVector result;
+};
+
BrowserGpuMemoryBufferManager::BrowserGpuMemoryBufferManager(
int gpu_client_id,
uint64_t gpu_client_tracing_id)
@@ -140,6 +151,59 @@ void BrowserGpuMemoryBufferManager::SetDestructionSyncToken(
sync_token);
}
+void BrowserGpuMemoryBufferManager::HandleGpuMemoryBufferAttribsReceivedOnIO(
+ GetGpuMemoryBufferAttribsRequest* request,
+ const gfx::GpuMemoryBufferAttribVector& supported_attribs) {
+ request->result = supported_attribs;
+ request->event.Signal();
+}
+
+void HostGetGpuMemoryBufferAttribs(
+ GpuProcessHost* host,
+ int client_id,
+ const BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsCallback&
+ callback) {
+ host->GetGpuMemoryBufferAttribs(callback);
+}
+
+void BrowserGpuMemoryBufferManager::HandleGetGpuMemoryBufferAttribsOnIO(
+ GetGpuMemoryBufferAttribsRequest* request) {
+ GetGpuMemoryBufferAttribsOnIO(
+ base::Bind(&HostGetGpuMemoryBufferAttribs), request->client_id,
+ base::Bind(&BrowserGpuMemoryBufferManager::
+ HandleGpuMemoryBufferAttribsReceivedOnIO,
+ base::Unretained(this), base::Unretained(request)));
+}
+
+void BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsOnIO(
+ const GetGpuMemoryBufferAttribsDelegate& delegate,
+ int client_id,
+ const BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribsCallback&
+ callback) {
+ GpuProcessHost* host = GpuProcessHost::Get();
+ if (!host) {
+ callback.Run(gfx::GpuMemoryBufferAttribVector());
+ }
+ delegate.Run(host, client_id, callback);
+}
+
+gfx::GpuMemoryBufferAttribVector
+BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribs() {
+ GetGpuMemoryBufferAttribsRequest request(gpu_client_id_);
+
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(
+ &BrowserGpuMemoryBufferManager::HandleGetGpuMemoryBufferAttribsOnIO,
+ base::Unretained(this), base::Unretained(&request)));
+
+ TRACE_EVENT0("browser",
+ "BrowserGpuMemoryBufferManager::GetGpuMemoryBufferAttribs");
+ base::ThreadRestrictions::ScopedAllowWait allow_wait;
+ request.event.Wait();
+ return request.result;
+}
+
bool BrowserGpuMemoryBufferManager::OnMemoryDump(
const base::trace_event::MemoryDumpArgs& args,
base::trace_event::ProcessMemoryDump* pmd) {
« 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