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

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

Issue 1686543004: mus: Modify mojo command buffer to match current chrome gpu ipc. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review issues 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 unified diff | Download patch
« no previous file with comments | « components/mus/gles2/BUILD.gn ('k') | components/mus/gles2/command_buffer_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_ 5 #ifndef COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_
6 #define COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_ 6 #define COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/weak_ptr.h" 12 #include "base/memory/weak_ptr.h"
13 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
14 #include "components/mus/public/interfaces/command_buffer.mojom.h" 14 #include "components/mus/public/interfaces/command_buffer.mojom.h"
15 #include "gpu/command_buffer/common/command_buffer.h" 15 #include "gpu/command_buffer/common/command_buffer.h"
16 #include "mojo/public/cpp/bindings/binding.h" 16 #include "mojo/public/cpp/bindings/binding.h"
17 17
18 namespace mus { 18 namespace mus {
19 19
20 class CommandBufferDriver; 20 class CommandBufferDriver;
21 class CommandBufferImplObserver;
22 class GpuState; 21 class GpuState;
23 22
24 // This class listens to the CommandBuffer message pipe on a low-latency thread 23 // This class listens to the CommandBuffer message pipe on a low-latency thread
25 // so that we can insert sync points without blocking on the GL driver. It 24 // so that we can insert sync points without blocking on the GL driver. It
26 // forwards most method calls to the CommandBufferDriver, which runs on the 25 // forwards most method calls to the CommandBufferDriver, which runs on the
27 // same thread as the native viewport. 26 // same thread as the native viewport.
28 class CommandBufferImpl : public mojom::CommandBuffer { 27 class CommandBufferImpl : public mojom::CommandBuffer {
29 public: 28 public:
30 CommandBufferImpl(mojo::InterfaceRequest<CommandBuffer> request, 29 CommandBufferImpl(mojo::InterfaceRequest<CommandBuffer> request,
31 scoped_refptr<GpuState> gpu_state); 30 scoped_refptr<GpuState> gpu_state);
32 void DidLoseContext(uint32_t reason); 31 void DidLoseContext(uint32_t reason);
33 32
34 void set_observer(CommandBufferImplObserver* observer) {
35 observer_ = observer;
36 }
37
38 private: 33 private:
39 class CommandBufferDriverClientImpl; 34 class CommandBufferDriverClientImpl;
40 ~CommandBufferImpl() override; 35 ~CommandBufferImpl() override;
41 36
42 // mojom::CommandBuffer: 37 // mojom::CommandBuffer:
43 void Initialize( 38 void Initialize(
44 mojom::CommandBufferLostContextObserverPtr loss_observer, 39 mojom::CommandBufferClientPtr client,
45 mojo::ScopedSharedBufferHandle shared_state, 40 mojo::ScopedSharedBufferHandle shared_state,
46 mojo::Array<int32_t> attribs, 41 mojo::Array<int32_t> attribs,
47 const mojom::CommandBuffer::InitializeCallback& callback) override; 42 const mojom::CommandBuffer::InitializeCallback& callback) override;
48 void SetGetBuffer(int32_t buffer) override; 43 void SetGetBuffer(int32_t buffer) override;
49 void Flush(int32_t put_offset) override; 44 void Flush(int32_t put_offset) override;
50 void MakeProgress( 45 void MakeProgress(
51 int32_t last_get_offset, 46 int32_t last_get_offset,
52 const mojom::CommandBuffer::MakeProgressCallback& callback) override; 47 const mojom::CommandBuffer::MakeProgressCallback& callback) override;
53 void RegisterTransferBuffer(int32_t id, 48 void RegisterTransferBuffer(int32_t id,
54 mojo::ScopedSharedBufferHandle transfer_buffer, 49 mojo::ScopedSharedBufferHandle transfer_buffer,
55 uint32_t size) override; 50 uint32_t size) override;
56 void DestroyTransferBuffer(int32_t id) override; 51 void DestroyTransferBuffer(int32_t id) override;
57 void CreateImage(int32_t id, 52 void CreateImage(int32_t id,
58 mojo::ScopedHandle memory_handle, 53 mojo::ScopedHandle memory_handle,
59 int32_t type, 54 int32_t type,
60 mojo::SizePtr size, 55 mojo::SizePtr size,
61 int32_t format, 56 int32_t format,
62 int32_t internal_format) override; 57 int32_t internal_format) override;
63 void DestroyImage(int32_t id) override; 58 void DestroyImage(int32_t id) override;
59 void CreateStreamTexture(
60 uint32_t client_texture_id,
61 const mojom::CommandBuffer::CreateStreamTextureCallback& callback
62 ) override;
63 void ProduceFrontBuffer(const gpu::Mailbox& mailbox) override;
64 void SignalQuery(uint32_t query, uint32_t signal_id) override;
65 void SignalSyncToken(const gpu::SyncToken& sync_token,
66 uint32_t signal_id) override;
67 void WaitForGetOffsetInRange(
68 int32_t start, int32_t end,
69 const mojom::CommandBuffer::WaitForGetOffsetInRangeCallback& callback
70 ) override;
71 void WaitForTokenInRange(
72 int32_t start, int32_t end,
73 const mojom::CommandBuffer::WaitForGetOffsetInRangeCallback& callback
74 ) override;
64 75
65 // All helper functions are called in the GPU therad. 76 // All helper functions are called in the GPU therad.
66 void InitializeOnGpuThread( 77 void InitializeOnGpuThread(
67 mojom::CommandBufferLostContextObserverPtr loss_observer, 78 mojom::CommandBufferClientPtr client,
68 mojo::ScopedSharedBufferHandle shared_state, 79 mojo::ScopedSharedBufferHandle shared_state,
69 mojo::Array<int32_t> attribs, 80 mojo::Array<int32_t> attribs,
70 const base::Callback< 81 const base::Callback<
71 void(mojom::CommandBufferInitializeResultPtr)>& callback); 82 void(mojom::CommandBufferInitializeResultPtr)>& callback);
72 bool SetGetBufferOnGpuThread(int32_t buffer); 83 bool SetGetBufferOnGpuThread(int32_t buffer);
73 bool FlushOnGpuThread(int32_t put_offset, uint32_t order_num); 84 bool FlushOnGpuThread(int32_t put_offset, uint32_t order_num);
74 bool MakeProgressOnGpuThread( 85 bool MakeProgressOnGpuThread(
75 int32_t last_get_offset, 86 int32_t last_get_offset,
76 const base::Callback<void(const gpu::CommandBuffer::State&)>& callback); 87 const base::Callback<void(const gpu::CommandBuffer::State&)>& callback);
77 bool RegisterTransferBufferOnGpuThread( 88 bool RegisterTransferBufferOnGpuThread(
(...skipping 10 matching lines...) Expand all
88 bool DestroyImageOnGpuThread(int32_t id); 99 bool DestroyImageOnGpuThread(int32_t id);
89 100
90 void BindToRequest(mojo::InterfaceRequest<CommandBuffer> request); 101 void BindToRequest(mojo::InterfaceRequest<CommandBuffer> request);
91 102
92 void OnConnectionError(); 103 void OnConnectionError();
93 bool DeleteOnGpuThread(); 104 bool DeleteOnGpuThread();
94 105
95 scoped_refptr<GpuState> gpu_state_; 106 scoped_refptr<GpuState> gpu_state_;
96 scoped_ptr<CommandBufferDriver> driver_; 107 scoped_ptr<CommandBufferDriver> driver_;
97 scoped_ptr<mojo::Binding<CommandBuffer>> binding_; 108 scoped_ptr<mojo::Binding<CommandBuffer>> binding_;
98 CommandBufferImplObserver* observer_; 109 mojom::CommandBufferClientPtr client_;
99 mojom::CommandBufferLostContextObserverPtr loss_observer_;
100 110
101 DISALLOW_COPY_AND_ASSIGN(CommandBufferImpl); 111 DISALLOW_COPY_AND_ASSIGN(CommandBufferImpl);
102 }; 112 };
103 113
104 } // namespace mus 114 } // namespace mus
105 115
106 #endif // COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_ 116 #endif // COMPONENTS_MUS_GLES2_COMMAND_BUFFER_IMPL_H_
OLDNEW
« no previous file with comments | « components/mus/gles2/BUILD.gn ('k') | components/mus/gles2/command_buffer_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698