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

Side by Side Diff: services/ui/surfaces/surfaces_context_provider.h

Issue 2481263002: Introduce Display Compositor mojo interface. Use InProcessContextProvider. (Closed)
Patch Set: Speculative fix for android build issue Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef SERVICES_UI_SURFACES_SURFACES_CONTEXT_PROVIDER_H_
6 #define SERVICES_UI_SURFACES_SURFACES_CONTEXT_PROVIDER_H_
7
8 #include <stdint.h>
9
10 #include <memory>
11
12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h"
14 #include "base/threading/non_thread_safe.h"
15 #include "cc/output/context_provider.h"
16 #include "ui/gfx/native_widget_types.h"
17 #include "ui/gl/gl_surface.h"
18
19 namespace base {
20 class SingleThreadTaskRunner;
21 }
22
23 namespace gpu {
24
25 class CommandBufferProxyImpl;
26 class GpuChannelHost;
27 struct GpuProcessHostedCALayerTreeParamsMac;
28 class TransferBuffer;
29
30 namespace gles2 {
31 class GLES2CmdHelper;
32 class GLES2Implementation;
33 }
34
35 } // namespace gpu
36
37 namespace ui {
38 class LatencyInfo;
39 }
40
41 namespace ui {
42
43 class CommandBufferDriver;
44 class CommandBufferImpl;
45 class SurfacesContextProviderDelegate;
46
47 // TODO(fsamuel): This can probably be merged with ContextProviderCommandBuffer.
48 class SurfacesContextProvider : public cc::ContextProvider,
49 public base::NonThreadSafe {
50 public:
51 SurfacesContextProvider(gfx::AcceleratedWidget widget,
52 scoped_refptr<gpu::GpuChannelHost> gpu_channel);
53
54 void SetDelegate(SurfacesContextProviderDelegate* delegate);
55
56 // cc::ContextProvider implementation.
57 bool BindToCurrentThread() override;
58 gpu::gles2::GLES2Interface* ContextGL() override;
59 gpu::ContextSupport* ContextSupport() override;
60 class GrContext* GrContext() override;
61 cc::ContextCacheController* CacheController() override;
62 void InvalidateGrContext(uint32_t state) override;
63 gpu::Capabilities ContextCapabilities() override;
64 void SetLostContextCallback(
65 const LostContextCallback& lost_context_callback) override;
66 base::Lock* GetLock() override;
67
68 // SurfacesContextProvider API.
69 void SetSwapBuffersCompletionCallback(
70 gl::GLSurface::SwapCompletionCallback callback);
71
72 protected:
73 friend class base::RefCountedThreadSafe<SurfacesContextProvider>;
74 ~SurfacesContextProvider() override;
75
76 private:
77 // Callbacks for CommandBufferProxyImpl:
78 void OnGpuSwapBuffersCompleted(
79 const std::vector<ui::LatencyInfo>& latency_info,
80 gfx::SwapResult result,
81 const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac);
82 void OnUpdateVSyncParameters(base::TimeTicks timebase,
83 base::TimeDelta interval);
84
85 // From GLES2Context:
86 // Initialized in BindToCurrentThread.
87 std::unique_ptr<gpu::gles2::GLES2CmdHelper> gles2_helper_;
88 std::unique_ptr<gpu::TransferBuffer> transfer_buffer_;
89 std::unique_ptr<gpu::gles2::GLES2Implementation> implementation_;
90 std::unique_ptr<cc::ContextCacheController> cache_controller_;
91
92 gpu::Capabilities capabilities_;
93 LostContextCallback lost_context_callback_;
94
95 SurfacesContextProviderDelegate* delegate_;
96 gfx::AcceleratedWidget widget_;
97 std::unique_ptr<gpu::CommandBufferProxyImpl> command_buffer_proxy_impl_;
98 gl::GLSurface::SwapCompletionCallback swap_buffers_completion_callback_;
99 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
100
101 DISALLOW_COPY_AND_ASSIGN(SurfacesContextProvider);
102 };
103
104 } // namespace ui
105
106 #endif // SERVICES_UI_SURFACES_SURFACES_CONTEXT_PROVIDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698