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

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: Fixed another Windows Build issue 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/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 dbda9b4f5ac762d1df8c2b743075f16d6e742d0a..ce360893f1eda77a0842710ac83ab573d0cad5ca 100644
--- a/content/common/gpu/gpu_channel_manager.h
+++ b/content/common/gpu/gpu_channel_manager.h
@@ -20,12 +20,14 @@
#include "content/common/content_export.h"
#include "content/common/content_param_traits.h"
#include "content/common/gpu/gpu_memory_manager.h"
+#include "gpu/command_buffer/common/constants.h"
#include "ipc/ipc_listener.h"
#include "ipc/ipc_sender.h"
no sievers 2016/02/22 21:57:42 unused ipc/ includes, yay... you need to fwd decla
Fady Samuel 2016/02/23 04:45:27 Done.
#include "ipc/message_router.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 +53,62 @@ 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() { return delegate_; }
+ const GpuChannelManagerDelegate* delegate() const { return delegate_; }
no sievers 2016/02/22 21:57:42 nit: why two getters? you just need one getter tha
Fady Samuel 2016/02/23 04:45:27 This is a pattern we've been using in Mus, but it'
+
+ 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);
+ void AddImageTransportSurface(int32_t routing_id,
+ ImageTransportHelper* image_transport_helper);
+ void RemoveImageTransportSurface(int32_t routing_id);
+#if defined(OS_MACOSX)
+ void BufferPresented(int32_t routing_id, const BufferPresentedParams& params);
+#endif
gpu::gles2::ProgramCache* program_cache();
gpu::gles2::ShaderTranslatorCache* shader_translator_cache();
@@ -147,33 +165,16 @@ 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_;
+ IDMap<ImageTransportHelper> image_transport_map_;
GpuWatchdog* watchdog_;

Powered by Google App Engine
This is Rietveld 408576698