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

Unified Diff: content/gpu/gpu_child_thread.cc

Issue 1656433002: Sample code: IPC Transport object for GPU Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: GpuMemoryBufferService + Transport object. TODO: Eliminate ChildThreadImpl dependency Created 4 years, 10 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/gpu/gpu_child_thread.cc
diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc
index b9f7bc5442aabdda8398c56817ef52b8cde3f822..bcf5c03874a8c120a650f6cd54355ee0cf385cae 100644
--- a/content/gpu/gpu_child_thread.cc
+++ b/content/gpu/gpu_child_thread.cc
@@ -15,6 +15,8 @@
#include "content/child/thread_safe_sender.h"
#include "content/common/gpu/gpu_memory_buffer_factory.h"
#include "content/common/gpu/gpu_messages.h"
+#include "content/gpu/chrome_gpu_memory_buffer_service_ipc_transport.h"
+#include "content/gpu/gpu_memory_buffer_service.h"
#include "content/gpu/gpu_process_control_impl.h"
#include "content/gpu/gpu_watchdog_thread.h"
#include "content/public/common/content_client.h"
@@ -49,74 +51,14 @@ bool GpuProcessLogMessageHandler(int severity,
return false;
}
-// Message filter used to to handle GpuMsg_CreateGpuMemoryBuffer messages on
-// the IO thread. This allows the UI thread in the browser process to remain
-// fast at all times.
-class GpuMemoryBufferMessageFilter : public IPC::MessageFilter {
- public:
- explicit GpuMemoryBufferMessageFilter(
- GpuMemoryBufferFactory* gpu_memory_buffer_factory)
- : gpu_memory_buffer_factory_(gpu_memory_buffer_factory),
- sender_(nullptr) {}
-
- // Overridden from IPC::MessageFilter:
- void OnFilterAdded(IPC::Sender* sender) override {
- DCHECK(!sender_);
- sender_ = sender;
- }
- void OnFilterRemoved() override {
- DCHECK(sender_);
- sender_ = nullptr;
- }
- bool OnMessageReceived(const IPC::Message& message) override {
- DCHECK(sender_);
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(GpuMemoryBufferMessageFilter, message)
- IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBuffer, OnCreateGpuMemoryBuffer)
- IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBufferFromHandle,
- OnCreateGpuMemoryBufferFromHandle)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
- }
-
- protected:
- ~GpuMemoryBufferMessageFilter() override {}
-
- void OnCreateGpuMemoryBuffer(
- const GpuMsg_CreateGpuMemoryBuffer_Params& params) {
- TRACE_EVENT2("gpu", "GpuMemoryBufferMessageFilter::OnCreateGpuMemoryBuffer",
- "id", params.id.id, "client_id", params.client_id);
-
- DCHECK(gpu_memory_buffer_factory_);
- sender_->Send(new GpuHostMsg_GpuMemoryBufferCreated(
- gpu_memory_buffer_factory_->CreateGpuMemoryBuffer(
- params.id, params.size, params.format, params.usage,
- params.client_id, params.surface_handle)));
- }
-
- void OnCreateGpuMemoryBufferFromHandle(
- const GpuMsg_CreateGpuMemoryBufferFromHandle_Params& params) {
- TRACE_EVENT2(
- "gpu",
- "GpuMemoryBufferMessageFilter::OnCreateGpuMemoryBufferFromHandle", "id",
- params.id.id, "client_id", params.client_id);
- sender_->Send(new GpuHostMsg_GpuMemoryBufferCreated(
- gpu_memory_buffer_factory_->CreateGpuMemoryBufferFromHandle(
- params.handle, params.id, params.size, params.format,
- params.client_id)));
- }
-
- GpuMemoryBufferFactory* const gpu_memory_buffer_factory_;
- IPC::Sender* sender_;
-};
-
ChildThreadImpl::Options GetOptions(
GpuMemoryBufferFactory* gpu_memory_buffer_factory) {
ChildThreadImpl::Options::Builder builder;
builder.AddStartupFilter(
- new GpuMemoryBufferMessageFilter(gpu_memory_buffer_factory));
+ static_cast<ChromeGpuMemoryBufferServiceIPCTransport*>(
+ (new GpuMemoryBufferService(gpu_memory_buffer_factory))->transport())
+ ->filter());
#if defined(USE_OZONE)
IPC::MessageFilter* message_filter = ui::OzonePlatform::GetInstance()
@@ -156,11 +98,15 @@ GpuChildThread::GpuChildThread(
const InProcessChildThreadParams& params,
GpuMemoryBufferFactory* gpu_memory_buffer_factory,
gpu::SyncPointManager* sync_point_manager)
- : ChildThreadImpl(ChildThreadImpl::Options::Builder()
- .InBrowserProcess(params)
- .AddStartupFilter(new GpuMemoryBufferMessageFilter(
- gpu_memory_buffer_factory))
- .Build()),
+ : ChildThreadImpl(
+ ChildThreadImpl::Options::Builder()
+ .InBrowserProcess(params)
+ .AddStartupFilter(
+ static_cast<ChromeGpuMemoryBufferServiceIPCTransport*>(
+ (new GpuMemoryBufferService(gpu_memory_buffer_factory))
+ ->transport())
+ ->filter())
+ .Build()),
dead_on_arrival_(false),
sync_point_manager_(sync_point_manager),
in_browser_process_(true),
« no previous file with comments | « content/gpu/chrome_gpu_memory_buffer_service_ipc_transport.cc ('k') | content/gpu/gpu_memory_buffer_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698