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

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

Issue 1711533002: Decouple browser-specific GPU IPC messages from GPU service IPCs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Restored if guards on GpuChannelManager 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
« no previous file with comments | « content/common/gpu/gpu_channel.cc ('k') | content/common/gpu/gpu_channel_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/gpu/gpu_channel_manager.h
diff --git a/content/common/gpu/gpu_channel_manager.h b/content/common/gpu/gpu_channel_manager.h
index befc5998f0e6c1be35e9ef1693d7c599219ab85f..e76b373bb3c981965d65885c61d9dbf592772f8d 100644
--- a/content/common/gpu/gpu_channel_manager.h
+++ b/content/common/gpu/gpu_channel_manager.h
@@ -12,6 +12,7 @@
#include <vector>
#include "base/containers/scoped_ptr_hash_map.h"
+#include "base/id_map.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
@@ -20,12 +21,11 @@
#include "content/common/content_export.h"
#include "content/common/content_param_traits.h"
#include "content/common/gpu/gpu_memory_manager.h"
-#include "ipc/ipc_listener.h"
-#include "ipc/ipc_sender.h"
-#include "ipc/message_router.h"
+#include "gpu/command_buffer/common/constants.h"
#include "ui/gfx/gpu_memory_buffer.h"
#include "ui/gfx/native_widget_types.h"
#include "ui/gl/gl_surface.h"
+#include "url/gurl.h"
namespace base {
class WaitableEvent;
@@ -51,46 +51,60 @@ class ShaderTranslatorCache;
namespace IPC {
struct ChannelHandle;
-class SyncChannel;
}
-struct GPUCreateCommandBufferConfig;
-struct GpuMsg_EstablishChannel_Params;
-
namespace content {
class GpuChannel;
+class GpuChannelManagerDelegate;
class GpuMemoryBufferFactory;
class GpuWatchdog;
+class ImageTransportHelper;
+struct EstablishChannelParams;
+#if defined(OS_MACOSX)
+struct BufferPresentedParams;
+#endif
// A GpuChannelManager is a thread responsible for issuing rendering commands
// managing the lifetimes of GPU channels and forwarding IPC requests from the
// browser process to them based on the corresponding renderer ID.
-class CONTENT_EXPORT GpuChannelManager : public IPC::Listener,
- public IPC::Sender {
+class CONTENT_EXPORT GpuChannelManager {
public:
- GpuChannelManager(IPC::SyncChannel* channel,
+ GpuChannelManager(GpuChannelManagerDelegate* delegate,
GpuWatchdog* watchdog,
base::SingleThreadTaskRunner* task_runner,
base::SingleThreadTaskRunner* io_task_runner,
base::WaitableEvent* shutdown_event,
gpu::SyncPointManager* sync_point_manager,
GpuMemoryBufferFactory* gpu_memory_buffer_factory);
- ~GpuChannelManager() override;
+ virtual ~GpuChannelManager();
+
+ GpuChannelManagerDelegate* delegate() const { return delegate_; }
+
+ void EstablishChannel(const EstablishChannelParams& params);
+ void CloseChannel(const IPC::ChannelHandle& channel_handle);
+ void PopulateShaderCache(const std::string& shader);
+ void DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id,
+ int client_id,
+ const gpu::SyncToken& sync_token);
+ void UpdateValueState(int client_id,
+ unsigned int target,
+ const gpu::ValueState& state);
+#if defined(OS_ANDROID)
+ void WakeUpGpu();
+#endif
+ void DestroyAllChannels();
// Remove the channel for a particular renderer.
void RemoveChannel(int client_id);
- // Listener overrides.
- bool OnMessageReceived(const IPC::Message& msg) override;
-
- // Sender overrides.
- bool Send(IPC::Message* msg) override;
-
void LoseAllContexts();
- int GenerateRouteID();
- void AddRoute(int32_t routing_id, IPC::Listener* listener);
- void RemoveRoute(int32_t routing_id);
+#if defined(OS_MACOSX)
+ void AddImageTransportSurface(int32_t routing_id,
+ ImageTransportHelper* image_transport_helper);
+ void RemoveImageTransportSurface(int32_t routing_id);
+ void BufferPresented(const BufferPresentedParams& params);
+#endif
gpu::gles2::ProgramCache* program_cache();
gpu::gles2::ShaderTranslatorCache* shader_translator_cache();
@@ -147,33 +161,18 @@ class CONTENT_EXPORT GpuChannelManager : public IPC::Listener,
base::ScopedPtrHashMap<int32_t, scoped_ptr<GpuChannel>> gpu_channels_;
private:
- // Message handlers.
- bool OnControlMessageReceived(const IPC::Message& msg);
- void OnEstablishChannel(const GpuMsg_EstablishChannel_Params& params);
- void OnCloseChannel(const IPC::ChannelHandle& channel_handle);
- void OnVisibilityChanged(int32_t render_view_id,
- int32_t client_id,
- bool visible);
- void OnLoadedShader(const std::string& shader);
- void DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id, int client_id);
- void DestroyGpuMemoryBufferOnIO(gfx::GpuMemoryBufferId id, int client_id);
- void OnDestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id,
- int client_id,
- const gpu::SyncToken& sync_token);
-
- void OnUpdateValueState(int client_id,
- unsigned int target,
- const gpu::ValueState& state);
+ void InternalDestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id, int client_id);
+ void InternalDestroyGpuMemoryBufferOnIO(gfx::GpuMemoryBufferId id,
+ int client_id);
#if defined(OS_ANDROID)
- void OnWakeUpGpu();
void ScheduleWakeUpGpu();
void DoWakeUpGpu();
#endif
- void OnLoseAllContexts();
- // Used to send and receive IPC messages from the browser process.
- IPC::SyncChannel* const channel_;
- IPC::MessageRouter router_;
+ GpuChannelManagerDelegate* const delegate_;
+#if defined(OS_MACOSX)
+ IDMap<ImageTransportHelper> image_transport_map_;
+#endif
GpuWatchdog* watchdog_;
« no previous file with comments | « content/common/gpu/gpu_channel.cc ('k') | content/common/gpu/gpu_channel_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698