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

Side by Side Diff: content/common/gpu/client/command_buffer_proxy_impl.h

Issue 654223006: Cleanup GpuMemoryBuffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 CONTENT_COMMON_GPU_CLIENT_COMMAND_BUFFER_PROXY_IMPL_H_ 5 #ifndef CONTENT_COMMON_GPU_CLIENT_COMMAND_BUFFER_PROXY_IMPL_H_
6 #define CONTENT_COMMON_GPU_CLIENT_COMMAND_BUFFER_PROXY_IMPL_H_ 6 #define CONTENT_COMMON_GPU_CLIENT_COMMAND_BUFFER_PROXY_IMPL_H_
7 7
8 #include <map> 8 #include <map>
9 #include <queue> 9 #include <queue>
10 #include <string> 10 #include <string>
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 // ints redundantly when only the error is needed for the 143 // ints redundantly when only the error is needed for the
144 // CommandBufferProxyImpl implementation. 144 // CommandBufferProxyImpl implementation.
145 gpu::error::Error GetLastError() override; 145 gpu::error::Error GetLastError() override;
146 146
147 GpuChannelHost* channel() const { return channel_; } 147 GpuChannelHost* channel() const { return channel_; }
148 148
149 base::SharedMemoryHandle GetSharedStateHandle() const { 149 base::SharedMemoryHandle GetSharedStateHandle() const {
150 return shared_state_shm_->handle(); 150 return shared_state_shm_->handle();
151 } 151 }
152 152
153 void WaitForPendingGpuMemoryBufferUsageToComplete(
154 const base::Closure& callback);
155
153 private: 156 private:
154 typedef std::map<int32, scoped_refptr<gpu::Buffer> > TransferBufferMap; 157 typedef std::map<int32, scoped_refptr<gpu::Buffer> > TransferBufferMap;
155 typedef base::hash_map<uint32, base::Closure> SignalTaskMap; 158 typedef base::hash_map<uint32, base::Closure> SignalTaskMap;
156 typedef base::ScopedPtrHashMap<int32, gfx::GpuMemoryBuffer> 159 typedef base::ScopedPtrHashMap<int32, gfx::GpuMemoryBuffer>
157 GpuMemoryBufferMap; 160 GpuMemoryBufferMap;
158 161
159 // Send an IPC message over the GPU channel. This is private to fully 162 // Send an IPC message over the GPU channel. This is private to fully
160 // encapsulate the channel; all callers of this function must explicitly 163 // encapsulate the channel; all callers of this function must explicitly
161 // verify that the context has not been lost. 164 // verify that the context has not been lost.
162 bool Send(IPC::Message* msg); 165 bool Send(IPC::Message* msg);
163 166
164 // Message handlers: 167 // Message handlers:
165 void OnUpdateState(const gpu::CommandBuffer::State& state); 168 void OnUpdateState(const gpu::CommandBuffer::State& state);
166 void OnDestroyed(gpu::error::ContextLostReason reason); 169 void OnDestroyed(gpu::error::ContextLostReason reason);
167 void OnConsoleMessage(const GPUCommandBufferConsoleMessage& message); 170 void OnConsoleMessage(const GPUCommandBufferConsoleMessage& message);
168 void OnSetMemoryAllocation(const gpu::MemoryAllocation& allocation); 171 void OnSetMemoryAllocation(const gpu::MemoryAllocation& allocation);
169 void OnSignalSyncPointAck(uint32 id); 172 void OnSignalSyncPointAck(uint32 id);
170 void OnSwapBuffersCompleted(const std::vector<ui::LatencyInfo>& latency_info); 173 void OnSwapBuffersCompleted(const std::vector<ui::LatencyInfo>& latency_info);
171 174
172 // Try to read an updated copy of the state from shared memory. 175 // Try to read an updated copy of the state from shared memory.
173 void TryUpdateState(); 176 void TryUpdateState();
174 177
175 // The shared memory area used to update state. 178 // The shared memory area used to update state.
176 gpu::CommandBufferSharedState* shared_state() const; 179 gpu::CommandBufferSharedState* shared_state() const;
177 180
181 void GpuMemoryBufferSyncPointSignalled(uint32 sync_point);
reveman 2014/10/22 22:42:47 GpuMemoryBufferUsageCompleted?
182 uint32 GetNextSignalId();
183
178 // Unowned list of DeletionObservers. 184 // Unowned list of DeletionObservers.
179 ObserverList<DeletionObserver> deletion_observers_; 185 ObserverList<DeletionObserver> deletion_observers_;
180 186
181 // The last cached state received from the service. 187 // The last cached state received from the service.
182 State last_state_; 188 State last_state_;
183 189
184 // The shared memory area used to update state. 190 // The shared memory area used to update state.
185 scoped_ptr<base::SharedMemory> shared_state_shm_; 191 scoped_ptr<base::SharedMemory> shared_state_shm_;
186 192
187 // |*this| is owned by |*channel_| and so is always outlived by it, so using a 193 // |*this| is owned by |*channel_| and so is always outlived by it, so using a
188 // raw pointer is ok. 194 // raw pointer is ok.
189 GpuChannelHost* channel_; 195 GpuChannelHost* channel_;
190 int route_id_; 196 int route_id_;
191 unsigned int flush_count_; 197 unsigned int flush_count_;
192 int32 last_put_offset_; 198 int32 last_put_offset_;
193 199
194 base::Closure channel_error_callback_; 200 base::Closure channel_error_callback_;
195 201
196 MemoryAllocationChangedCallback memory_allocation_changed_callback_; 202 MemoryAllocationChangedCallback memory_allocation_changed_callback_;
197 203
198 GpuConsoleMessageCallback console_message_callback_; 204 GpuConsoleMessageCallback console_message_callback_;
199 205
200 // Tasks to be invoked in SignalSyncPoint responses. 206 // Tasks to be invoked in SignalSyncPoint responses.
201 uint32 next_signal_id_; 207 uint32 next_signal_id_;
202 SignalTaskMap signal_tasks_; 208 SignalTaskMap signal_tasks_;
209 // Protects signal_tasks_.
210 mutable base::Lock signal_lock_;
203 211
204 // Local cache of id to gpu memory buffer mapping. 212 // Local cache of id to gpu memory buffer mapping.
205 GpuMemoryBufferMap gpu_memory_buffers_; 213 GpuMemoryBufferMap gpu_memory_buffers_;
206 214
207 gpu::Capabilities capabilities_; 215 gpu::Capabilities capabilities_;
208 216
209 std::vector<ui::LatencyInfo> latency_info_; 217 std::vector<ui::LatencyInfo> latency_info_;
210 218
211 SwapBuffersCompletionCallback swap_buffers_completion_callback_; 219 SwapBuffersCompletionCallback swap_buffers_completion_callback_;
212 220
221 SignalTaskMap gpu_memory_buffer_tasks_;
reveman 2014/10/22 22:42:47 I think we should use a different id namespace and
222 mutable base::Lock gpu_memory_buffer_task_lock_;
223
213 DISALLOW_COPY_AND_ASSIGN(CommandBufferProxyImpl); 224 DISALLOW_COPY_AND_ASSIGN(CommandBufferProxyImpl);
214 }; 225 };
215 226
216 } // namespace content 227 } // namespace content
217 228
218 #endif // CONTENT_COMMON_GPU_CLIENT_COMMAND_BUFFER_PROXY_IMPL_H_ 229 #endif // CONTENT_COMMON_GPU_CLIENT_COMMAND_BUFFER_PROXY_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698