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

Unified Diff: content/common/gpu/gpu_channel_manager.cc

Issue 1050923003: zero-copy: Clarify to allocate/destroy GpuMemoryBuffer on any thread and use it on the main thread o (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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/common/gpu/gpu_channel_manager.cc
diff --git a/content/common/gpu/gpu_channel_manager.cc b/content/common/gpu/gpu_channel_manager.cc
index 3d98e58e7292bc3f3cd18a0253dabe647897ca68..2ef78883337dacb6342c03dc3e4e3a0fa02f7b1a 100644
--- a/content/common/gpu/gpu_channel_manager.cc
+++ b/content/common/gpu/gpu_channel_manager.cc
@@ -18,7 +18,6 @@
#include "gpu/command_buffer/service/memory_program_cache.h"
#include "gpu/command_buffer/service/shader_translator_cache.h"
#include "gpu/command_buffer/service/sync_point_manager.h"
-#include "ipc/message_filter.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_share_group.h"
#if defined(USE_OZONE)
@@ -30,50 +29,6 @@ namespace content {
namespace {
-class GpuChannelManagerMessageFilter : public IPC::MessageFilter {
- public:
- GpuChannelManagerMessageFilter(
- GpuMemoryBufferFactory* gpu_memory_buffer_factory)
- : sender_(NULL), gpu_memory_buffer_factory_(gpu_memory_buffer_factory) {}
-
- void OnFilterAdded(IPC::Sender* sender) override {
- DCHECK(!sender_);
- sender_ = sender;
- }
-
- void OnFilterRemoved() override {
- DCHECK(sender_);
- sender_ = NULL;
- }
-
- bool OnMessageReceived(const IPC::Message& message) override {
- DCHECK(sender_);
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(GpuChannelManagerMessageFilter, message)
- IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBuffer, OnCreateGpuMemoryBuffer)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
- }
-
- protected:
- ~GpuChannelManagerMessageFilter() override {}
-
- void OnCreateGpuMemoryBuffer(
- const GpuMsg_CreateGpuMemoryBuffer_Params& params) {
- TRACE_EVENT2("gpu",
- "GpuChannelManagerMessageFilter::OnCreateGpuMemoryBuffer",
- "id", params.id, "client_id", params.client_id);
- sender_->Send(new GpuHostMsg_GpuMemoryBufferCreated(
- gpu_memory_buffer_factory_->CreateGpuMemoryBuffer(
- params.id, params.size, params.format, params.usage,
- params.client_id, params.surface_handle)));
- }
-
- IPC::Sender* sender_;
- GpuMemoryBufferFactory* gpu_memory_buffer_factory_;
-};
-
gfx::GpuMemoryBufferType GetGpuMemoryBufferFactoryType() {
std::vector<gfx::GpuMemoryBufferType> supported_types;
GpuMemoryBufferFactory::GetSupportedTypes(&supported_types);
@@ -99,14 +54,11 @@ GpuChannelManager::GpuChannelManager(MessageRouter* router,
gpu_memory_buffer_factory_(
GpuMemoryBufferFactory::Create(GetGpuMemoryBufferFactoryType())),
channel_(channel),
- filter_(
- new GpuChannelManagerMessageFilter(gpu_memory_buffer_factory_.get())),
relinquish_resources_pending_(false),
weak_factory_(this) {
DCHECK(router_);
DCHECK(io_message_loop);
DCHECK(shutdown_event);
- channel_->AddFilter(filter_.get());
}
GpuChannelManager::~GpuChannelManager() {
@@ -169,6 +121,7 @@ bool GpuChannelManager::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(GpuMsg_CloseChannel, OnCloseChannel)
IPC_MESSAGE_HANDLER(GpuMsg_CreateViewCommandBuffer,
OnCreateViewCommandBuffer)
+ IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBuffer, OnCreateGpuMemoryBuffer)
IPC_MESSAGE_HANDLER(GpuMsg_DestroyGpuMemoryBuffer, OnDestroyGpuMemoryBuffer)
IPC_MESSAGE_HANDLER(GpuMsg_LoadedShader, OnLoadedShader)
IPC_MESSAGE_HANDLER(GpuMsg_RelinquishResources, OnRelinquishResources)
@@ -250,18 +203,18 @@ void GpuChannelManager::OnCreateViewCommandBuffer(
Send(new GpuHostMsg_CommandBufferCreated(result));
}
-void GpuChannelManager::DestroyGpuMemoryBuffer(
- gfx::GpuMemoryBufferId id,
- int client_id) {
- io_message_loop_->PostTask(
- FROM_HERE,
- base::Bind(&GpuChannelManager::DestroyGpuMemoryBufferOnIO,
- base::Unretained(this),
- id,
- client_id));
+void GpuChannelManager::OnCreateGpuMemoryBuffer(
+ const GpuMsg_CreateGpuMemoryBuffer_Params& params) {
+ TRACE_EVENT2("gpu",
+ "GpuChannelManager::OnCreateGpuMemoryBuffer",
+ "id", params.id, "client_id", params.client_id);
+ Send(new GpuHostMsg_GpuMemoryBufferCreated(
+ gpu_memory_buffer_factory_->CreateGpuMemoryBuffer(
+ params.id, params.size, params.format, params.usage,
+ params.client_id, params.surface_handle)));
}
-void GpuChannelManager::DestroyGpuMemoryBufferOnIO(
+void GpuChannelManager::DestroyGpuMemoryBuffer(
gfx::GpuMemoryBufferId id,
int client_id) {
gpu_memory_buffer_factory_->DestroyGpuMemoryBuffer(id, client_id);

Powered by Google App Engine
This is Rietveld 408576698