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

Side by Side Diff: components/mus/gles2/command_buffer_impl.h

Issue 2119963002: Move mus to //services/ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 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 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 COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_
6 #define COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_
7
8 #include <stdint.h>
9
10 #include <memory>
11
12 #include "base/macros.h"
13 #include "base/memory/weak_ptr.h"
14 #include "base/single_thread_task_runner.h"
15 #include "components/mus/gles2/command_buffer_driver.h"
16 #include "components/mus/public/interfaces/command_buffer.mojom.h"
17 #include "gpu/command_buffer/common/command_buffer.h"
18 #include "mojo/public/cpp/bindings/binding.h"
19
20 namespace mus {
21
22 class CommandBufferDriver;
23 class GpuState;
24
25 // This class listens to the CommandBuffer message pipe on a low-latency thread
26 // so that we can insert sync points without blocking on the GL driver. It
27 // forwards most method calls to the CommandBufferDriver, which runs on the
28 // same thread as the native viewport.
29 class CommandBufferImpl : public mojom::CommandBuffer,
30 public CommandBufferDriver::Client {
31 public:
32 CommandBufferImpl(mojo::InterfaceRequest<CommandBuffer> request,
33 scoped_refptr<GpuState> gpu_state);
34
35 private:
36 class CommandBufferDriverClientImpl;
37 ~CommandBufferImpl() override;
38
39 // CommandBufferDriver::Client. All called on the GPU thread.
40 void DidLoseContext(uint32_t reason) override;
41 void UpdateVSyncParameters(const base::TimeTicks& timebase,
42 const base::TimeDelta& interval) override;
43 void OnGpuCompletedSwapBuffers(gfx::SwapResult result) override;
44
45 // mojom::CommandBuffer:
46 void Initialize(
47 mojom::CommandBufferClientPtr client,
48 mojo::ScopedSharedBufferHandle shared_state,
49 mojo::Array<int32_t> attribs,
50 const mojom::CommandBuffer::InitializeCallback& callback) override;
51 void SetGetBuffer(int32_t buffer) override;
52 void Flush(int32_t put_offset) override;
53 void MakeProgress(
54 int32_t last_get_offset,
55 const mojom::CommandBuffer::MakeProgressCallback& callback) override;
56 void RegisterTransferBuffer(int32_t id,
57 mojo::ScopedSharedBufferHandle transfer_buffer,
58 uint32_t size) override;
59 void DestroyTransferBuffer(int32_t id) override;
60 void CreateImage(int32_t id,
61 mojo::ScopedHandle memory_handle,
62 int32_t type,
63 const gfx::Size& size,
64 int32_t format,
65 int32_t internal_format) override;
66 void DestroyImage(int32_t id) override;
67 void CreateStreamTexture(
68 uint32_t client_texture_id,
69 const mojom::CommandBuffer::CreateStreamTextureCallback& callback
70 ) override;
71 void TakeFrontBuffer(const gpu::Mailbox& mailbox) override;
72 void ReturnFrontBuffer(const gpu::Mailbox& mailbox, bool is_lost) override;
73 void SignalQuery(uint32_t query, uint32_t signal_id) override;
74 void SignalSyncToken(const gpu::SyncToken& sync_token,
75 uint32_t signal_id) override;
76 void WaitForGetOffsetInRange(
77 int32_t start, int32_t end,
78 const mojom::CommandBuffer::WaitForGetOffsetInRangeCallback& callback
79 ) override;
80 void WaitForTokenInRange(
81 int32_t start, int32_t end,
82 const mojom::CommandBuffer::WaitForGetOffsetInRangeCallback& callback
83 ) override;
84
85 // All helper functions are called in the GPU therad.
86 void InitializeOnGpuThread(
87 mojom::CommandBufferClientPtr client,
88 mojo::ScopedSharedBufferHandle shared_state,
89 mojo::Array<int32_t> attribs,
90 const base::Callback<
91 void(mojom::CommandBufferInitializeResultPtr)>& callback);
92 bool SetGetBufferOnGpuThread(int32_t buffer);
93 bool FlushOnGpuThread(int32_t put_offset, uint32_t order_num);
94 bool MakeProgressOnGpuThread(
95 int32_t last_get_offset,
96 const base::Callback<void(const gpu::CommandBuffer::State&)>& callback);
97 bool RegisterTransferBufferOnGpuThread(
98 int32_t id,
99 mojo::ScopedSharedBufferHandle transfer_buffer,
100 uint32_t size);
101 bool DestroyTransferBufferOnGpuThread(int32_t id);
102 bool CreateImageOnGpuThread(int32_t id,
103 mojo::ScopedHandle memory_handle,
104 int32_t type,
105 const gfx::Size& size,
106 int32_t format,
107 int32_t internal_format);
108 bool DestroyImageOnGpuThread(int32_t id);
109
110 void BindToRequest(mojo::InterfaceRequest<CommandBuffer> request);
111
112 void OnConnectionError();
113 bool DeleteOnGpuThread();
114 void DeleteOnGpuThread2();
115
116 scoped_refptr<GpuState> gpu_state_;
117 std::unique_ptr<CommandBufferDriver> driver_;
118 std::unique_ptr<mojo::Binding<CommandBuffer>> binding_;
119 mojom::CommandBufferClientPtr client_;
120
121 DISALLOW_COPY_AND_ASSIGN(CommandBufferImpl);
122 };
123
124 } // namespace mus
125
126 #endif // COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_
OLDNEW
« no previous file with comments | « components/mus/gles2/command_buffer_driver_manager.cc ('k') | components/mus/gles2/command_buffer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698