Index: content/common/gpu/gpu_channel_manager_delegate.h |
diff --git a/content/common/gpu/gpu_channel_manager_delegate.h b/content/common/gpu/gpu_channel_manager_delegate.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..00b3fe6a4606f0a5c4ee29650cf43a137b89ba56 |
--- /dev/null |
+++ b/content/common/gpu/gpu_channel_manager_delegate.h |
@@ -0,0 +1,91 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CONTENT_COMMON_GPU_GPU_CHANNEL_MANAGER_DELEGATE_H_ |
+#define CONTENT_COMMON_GPU_GPU_CHANNEL_MANAGER_DELEGATE_H_ |
+ |
+#include "gpu/command_buffer/common/constants.h" |
+#include "gpu/ipc/common/surface_handle.h" |
+ |
+#if defined(OS_MACOSX) |
+#include "ui/base/cocoa/remote_layer_api.h" |
+#include "ui/events/latency_info.h" |
+#include "ui/gfx/mac/io_surface.h" |
+#endif |
+ |
+class GURL; |
+ |
+namespace IPC { |
+struct ChannelHandle; |
+} |
+ |
+namespace gpu { |
+struct GPUMemoryUmaStats; |
+} |
+ |
+namespace content { |
+ |
+class GpuChannelManagerDelegate { |
+ public: |
+ // Tells the delegate that a context has subscribed to a new target and |
+ // the browser should start sending the corresponding information |
+ virtual void AddSubscription(int32_t client_id, unsigned int target) = 0; |
+ |
+ // Tells the delegate that an offscreen context was created for the provided |
+ // |active_url|. |
+ virtual void DidCreateOffscreenContext(const GURL& active_url) = 0; |
+ |
+ // Notification from GPU that the channel is destroyed. |
+ virtual void DidDestroyChannel(int client_id) = 0; |
+ |
+ // Tells the delegate that an offscreen context was destroyed for the provided |
+ // |active_url|. |
+ virtual void DidDestroyOffscreenContext(const GURL& active_url) = 0; |
+ |
+ // Tells the delegate that a context was lost. |
+ virtual void DidLoseContext(bool offscreen, |
+ gpu::error::ContextLostReason reason, |
+ const GURL& active_url) = 0; |
+ |
+ // Tells the delegate about GPU memory usage statistics for UMA logging. |
+ virtual void GpuMemoryUmaStats(const gpu::GPUMemoryUmaStats& params) = 0; |
+ |
+ // Tells the delegate that no contexts are subscribed to the target anymore |
+ // so the delegate should stop sending the corresponding information. |
+ virtual void RemoveSubscription(int32_t client_id, unsigned int target) = 0; |
+ |
+ // Tells the delegate to cache the given shader information in persistent |
+ // storage. The embedder is expected to repopulate the in-memory cache through |
+ // the respective GpuChannelManager API. |
+ virtual void StoreShaderToDisk(int32_t client_id, |
+ const std::string& key, |
+ const std::string& shader) = 0; |
+ |
+#if defined(OS_MACOSX) |
+ // Tells the delegate that an accelerated surface has swapped. |
+ virtual void SendAcceleratedSurfaceBuffersSwapped( |
+ int32_t surface_id, |
+ CAContextID ca_context_id, |
+ const gfx::ScopedRefCountedIOSurfaceMachPort& io_surface, |
+ const gfx::Size& size, |
+ float scale_factor, |
+ std::vector<ui::LatencyInfo> latency_info) = 0; |
+#endif |
+ |
+#if defined(OS_WIN) |
+ virtual void SendAcceleratedSurfaceCreatedChildWindow( |
+ gpu::SurfaceHandle parent_window, |
+ gpu::SurfaceHandle child_window) = 0; |
+#endif |
+ |
+ // Sets the currently active URL. Use GURL() to clear the URL. |
+ virtual void SetActiveURL(const GURL& url) = 0; |
+ |
+ protected: |
+ virtual ~GpuChannelManagerDelegate() {} |
+}; |
+ |
+} // namespace content |
+ |
+#endif // CONTENT_COMMON_GPU_GPU_CHANNEL_MANAGER_DELEGATE_H_ |