| OLD | NEW |
| 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 #include "content/common/gpu/image_transport_surface.h" | 5 #include "content/common/gpu/image_transport_surface.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/bind.h" | 10 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
| 11 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 12 #include "base/trace_event/trace_event.h" | 13 #include "base/trace_event/trace_event.h" |
| 13 #include "build/build_config.h" | 14 #include "build/build_config.h" |
| 14 #include "content/common/gpu/gpu_channel.h" | 15 #include "content/common/gpu/gpu_channel.h" |
| 15 #include "content/common/gpu/gpu_channel_manager.h" | 16 #include "content/common/gpu/gpu_channel_manager.h" |
| 16 #include "content/common/gpu/gpu_command_buffer_stub.h" | 17 #include "content/common/gpu/gpu_command_buffer_stub.h" |
| 17 #include "content/common/gpu/gpu_messages.h" | 18 #include "content/common/gpu/gpu_messages.h" |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 | 165 |
| 165 void PassThroughImageTransportSurface::SetLatencyInfo( | 166 void PassThroughImageTransportSurface::SetLatencyInfo( |
| 166 const std::vector<ui::LatencyInfo>& latency_info) { | 167 const std::vector<ui::LatencyInfo>& latency_info) { |
| 167 for (size_t i = 0; i < latency_info.size(); i++) | 168 for (size_t i = 0; i < latency_info.size(); i++) |
| 168 latency_info_.push_back(latency_info[i]); | 169 latency_info_.push_back(latency_info[i]); |
| 169 } | 170 } |
| 170 | 171 |
| 171 gfx::SwapResult PassThroughImageTransportSurface::SwapBuffers() { | 172 gfx::SwapResult PassThroughImageTransportSurface::SwapBuffers() { |
| 172 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); | 173 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); |
| 173 gfx::SwapResult result = gfx::GLSurfaceAdapter::SwapBuffers(); | 174 gfx::SwapResult result = gfx::GLSurfaceAdapter::SwapBuffers(); |
| 174 FinishSwapBuffers(latency_info.Pass(), result); | 175 FinishSwapBuffers(std::move(latency_info), result); |
| 175 return result; | 176 return result; |
| 176 } | 177 } |
| 177 | 178 |
| 178 void PassThroughImageTransportSurface::SwapBuffersAsync( | 179 void PassThroughImageTransportSurface::SwapBuffersAsync( |
| 179 const GLSurface::SwapCompletionCallback& callback) { | 180 const GLSurface::SwapCompletionCallback& callback) { |
| 180 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); | 181 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); |
| 181 | 182 |
| 182 // We use WeakPtr here to avoid manual management of life time of an instance | 183 // We use WeakPtr here to avoid manual management of life time of an instance |
| 183 // of this class. Callback will not be called once the instance of this class | 184 // of this class. Callback will not be called once the instance of this class |
| 184 // is destroyed. However, this also means that the callback can be run on | 185 // is destroyed. However, this also means that the callback can be run on |
| 185 // the calling thread only. | 186 // the calling thread only. |
| 186 gfx::GLSurfaceAdapter::SwapBuffersAsync(base::Bind( | 187 gfx::GLSurfaceAdapter::SwapBuffersAsync(base::Bind( |
| 187 &PassThroughImageTransportSurface::FinishSwapBuffersAsync, | 188 &PassThroughImageTransportSurface::FinishSwapBuffersAsync, |
| 188 weak_ptr_factory_.GetWeakPtr(), base::Passed(&latency_info), callback)); | 189 weak_ptr_factory_.GetWeakPtr(), base::Passed(&latency_info), callback)); |
| 189 } | 190 } |
| 190 | 191 |
| 191 gfx::SwapResult PassThroughImageTransportSurface::PostSubBuffer(int x, | 192 gfx::SwapResult PassThroughImageTransportSurface::PostSubBuffer(int x, |
| 192 int y, | 193 int y, |
| 193 int width, | 194 int width, |
| 194 int height) { | 195 int height) { |
| 195 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); | 196 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); |
| 196 gfx::SwapResult result = | 197 gfx::SwapResult result = |
| 197 gfx::GLSurfaceAdapter::PostSubBuffer(x, y, width, height); | 198 gfx::GLSurfaceAdapter::PostSubBuffer(x, y, width, height); |
| 198 FinishSwapBuffers(latency_info.Pass(), result); | 199 FinishSwapBuffers(std::move(latency_info), result); |
| 199 return result; | 200 return result; |
| 200 } | 201 } |
| 201 | 202 |
| 202 void PassThroughImageTransportSurface::PostSubBufferAsync( | 203 void PassThroughImageTransportSurface::PostSubBufferAsync( |
| 203 int x, | 204 int x, |
| 204 int y, | 205 int y, |
| 205 int width, | 206 int width, |
| 206 int height, | 207 int height, |
| 207 const GLSurface::SwapCompletionCallback& callback) { | 208 const GLSurface::SwapCompletionCallback& callback) { |
| 208 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); | 209 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); |
| 209 gfx::GLSurfaceAdapter::PostSubBufferAsync( | 210 gfx::GLSurfaceAdapter::PostSubBufferAsync( |
| 210 x, y, width, height, | 211 x, y, width, height, |
| 211 base::Bind(&PassThroughImageTransportSurface::FinishSwapBuffersAsync, | 212 base::Bind(&PassThroughImageTransportSurface::FinishSwapBuffersAsync, |
| 212 weak_ptr_factory_.GetWeakPtr(), base::Passed(&latency_info), | 213 weak_ptr_factory_.GetWeakPtr(), base::Passed(&latency_info), |
| 213 callback)); | 214 callback)); |
| 214 } | 215 } |
| 215 | 216 |
| 216 gfx::SwapResult PassThroughImageTransportSurface::CommitOverlayPlanes() { | 217 gfx::SwapResult PassThroughImageTransportSurface::CommitOverlayPlanes() { |
| 217 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); | 218 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); |
| 218 gfx::SwapResult result = gfx::GLSurfaceAdapter::CommitOverlayPlanes(); | 219 gfx::SwapResult result = gfx::GLSurfaceAdapter::CommitOverlayPlanes(); |
| 219 FinishSwapBuffers(latency_info.Pass(), result); | 220 FinishSwapBuffers(std::move(latency_info), result); |
| 220 return result; | 221 return result; |
| 221 } | 222 } |
| 222 | 223 |
| 223 void PassThroughImageTransportSurface::CommitOverlayPlanesAsync( | 224 void PassThroughImageTransportSurface::CommitOverlayPlanesAsync( |
| 224 const GLSurface::SwapCompletionCallback& callback) { | 225 const GLSurface::SwapCompletionCallback& callback) { |
| 225 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); | 226 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info = StartSwapBuffers(); |
| 226 gfx::GLSurfaceAdapter::CommitOverlayPlanesAsync(base::Bind( | 227 gfx::GLSurfaceAdapter::CommitOverlayPlanesAsync(base::Bind( |
| 227 &PassThroughImageTransportSurface::FinishSwapBuffersAsync, | 228 &PassThroughImageTransportSurface::FinishSwapBuffersAsync, |
| 228 weak_ptr_factory_.GetWeakPtr(), base::Passed(&latency_info), callback)); | 229 weak_ptr_factory_.GetWeakPtr(), base::Passed(&latency_info), callback)); |
| 229 } | 230 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 swap_ack_time, 1); | 288 swap_ack_time, 1); |
| 288 } | 289 } |
| 289 | 290 |
| 290 helper_->stub()->SendSwapBuffersCompleted(*latency_info, result); | 291 helper_->stub()->SendSwapBuffersCompleted(*latency_info, result); |
| 291 } | 292 } |
| 292 | 293 |
| 293 void PassThroughImageTransportSurface::FinishSwapBuffersAsync( | 294 void PassThroughImageTransportSurface::FinishSwapBuffersAsync( |
| 294 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info, | 295 scoped_ptr<std::vector<ui::LatencyInfo>> latency_info, |
| 295 GLSurface::SwapCompletionCallback callback, | 296 GLSurface::SwapCompletionCallback callback, |
| 296 gfx::SwapResult result) { | 297 gfx::SwapResult result) { |
| 297 FinishSwapBuffers(latency_info.Pass(), result); | 298 FinishSwapBuffers(std::move(latency_info), result); |
| 298 callback.Run(result); | 299 callback.Run(result); |
| 299 } | 300 } |
| 300 | 301 |
| 301 } // namespace content | 302 } // namespace content |
| OLD | NEW |