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 "gpu/command_buffer/client/gl_in_process_context.h" | 5 #include "gpu/command_buffer/client/gl_in_process_context.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "base/memory/weak_ptr.h" | 23 #include "base/memory/weak_ptr.h" |
24 #include "base/message_loop/message_loop.h" | 24 #include "base/message_loop/message_loop.h" |
25 #include "gpu/command_buffer/client/gles2_implementation.h" | 25 #include "gpu/command_buffer/client/gles2_implementation.h" |
26 #include "gpu/command_buffer/client/transfer_buffer.h" | 26 #include "gpu/command_buffer/client/transfer_buffer.h" |
27 #include "gpu/command_buffer/common/command_buffer.h" | 27 #include "gpu/command_buffer/common/command_buffer.h" |
28 #include "gpu/command_buffer/common/constants.h" | 28 #include "gpu/command_buffer/common/constants.h" |
29 #include "gpu/command_buffer/service/in_process_command_buffer.h" | 29 #include "gpu/command_buffer/service/in_process_command_buffer.h" |
30 #include "ui/gfx/size.h" | 30 #include "ui/gfx/size.h" |
31 #include "ui/gl/gl_image.h" | 31 #include "ui/gl/gl_image.h" |
32 | 32 |
| 33 #if defined(OS_ANDROID) |
| 34 #include "ui/gl/android/surface_texture_bridge.h" |
| 35 #endif |
| 36 |
33 namespace gpu { | 37 namespace gpu { |
34 | 38 |
35 namespace { | 39 namespace { |
36 | 40 |
37 const int32 kCommandBufferSize = 1024 * 1024; | 41 const int32 kCommandBufferSize = 1024 * 1024; |
38 // TODO(kbr): make the transfer buffer size configurable via context | 42 // TODO(kbr): make the transfer buffer size configurable via context |
39 // creation attributes. | 43 // creation attributes. |
40 const size_t kStartTransferBufferSize = 4 * 1024 * 1024; | 44 const size_t kStartTransferBufferSize = 4 * 1024 * 1024; |
41 const size_t kMinTransferBufferSize = 1 * 256 * 1024; | 45 const size_t kMinTransferBufferSize = 1 * 256 * 1024; |
42 const size_t kMaxTransferBufferSize = 16 * 1024 * 1024; | 46 const size_t kMaxTransferBufferSize = 16 * 1024 * 1024; |
(...skipping 15 matching lines...) Expand all Loading... |
58 gfx::GpuPreference gpu_preference); | 62 gfx::GpuPreference gpu_preference); |
59 | 63 |
60 // GLInProcessContext implementation: | 64 // GLInProcessContext implementation: |
61 virtual void SetContextLostCallback(const base::Closure& callback) OVERRIDE; | 65 virtual void SetContextLostCallback(const base::Closure& callback) OVERRIDE; |
62 virtual void SignalSyncPoint(unsigned sync_point, | 66 virtual void SignalSyncPoint(unsigned sync_point, |
63 const base::Closure& callback) OVERRIDE; | 67 const base::Closure& callback) OVERRIDE; |
64 virtual void SignalQuery(unsigned query, const base::Closure& callback) | 68 virtual void SignalQuery(unsigned query, const base::Closure& callback) |
65 OVERRIDE; | 69 OVERRIDE; |
66 virtual gles2::GLES2Implementation* GetImplementation() OVERRIDE; | 70 virtual gles2::GLES2Implementation* GetImplementation() OVERRIDE; |
67 | 71 |
| 72 #if defined(OS_ANDROID) |
| 73 virtual scoped_refptr<gfx::SurfaceTextureBridge> GetSurfaceTexture( |
| 74 uint32 stream_id) OVERRIDE; |
| 75 #endif |
| 76 |
68 private: | 77 private: |
69 void Destroy(); | 78 void Destroy(); |
70 void PollQueryCallbacks(); | 79 void PollQueryCallbacks(); |
71 void CallQueryCallback(size_t index); | 80 void CallQueryCallback(size_t index); |
72 void OnContextLost(); | 81 void OnContextLost(); |
73 void OnSignalSyncPoint(const base::Closure& callback); | 82 void OnSignalSyncPoint(const base::Closure& callback); |
74 | 83 |
75 scoped_ptr<gles2::GLES2CmdHelper> gles2_helper_; | 84 scoped_ptr<gles2::GLES2CmdHelper> gles2_helper_; |
76 scoped_ptr<TransferBuffer> transfer_buffer_; | 85 scoped_ptr<TransferBuffer> transfer_buffer_; |
77 scoped_ptr<gles2::GLES2Implementation> gles2_implementation_; | 86 scoped_ptr<gles2::GLES2Implementation> gles2_implementation_; |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 void GLInProcessContextImpl::SignalQuery( | 335 void GLInProcessContextImpl::SignalQuery( |
327 unsigned query, | 336 unsigned query, |
328 const base::Closure& callback) { | 337 const base::Closure& callback) { |
329 query_callbacks_.push_back(std::make_pair(query, callback)); | 338 query_callbacks_.push_back(std::make_pair(query, callback)); |
330 // If size > 1, there is already a poll callback pending. | 339 // If size > 1, there is already a poll callback pending. |
331 if (query_callbacks_.size() == 1) { | 340 if (query_callbacks_.size() == 1) { |
332 PollQueryCallbacks(); | 341 PollQueryCallbacks(); |
333 } | 342 } |
334 } | 343 } |
335 | 344 |
| 345 #if defined(OS_ANDROID) |
| 346 scoped_refptr<gfx::SurfaceTextureBridge> |
| 347 GLInProcessContextImpl::GetSurfaceTexture(uint32 stream_id) { |
| 348 return command_buffer_->GetSurfaceTexture(stream_id); |
| 349 } |
| 350 #endif |
| 351 |
336 } // anonymous namespace | 352 } // anonymous namespace |
337 | 353 |
338 GLInProcessContextAttribs::GLInProcessContextAttribs() | 354 GLInProcessContextAttribs::GLInProcessContextAttribs() |
339 : alpha_size(-1), | 355 : alpha_size(-1), |
340 blue_size(-1), | 356 blue_size(-1), |
341 green_size(-1), | 357 green_size(-1), |
342 red_size(-1), | 358 red_size(-1), |
343 depth_size(-1), | 359 depth_size(-1), |
344 stencil_size(-1), | 360 stencil_size(-1), |
345 samples(-1), | 361 samples(-1), |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 surface->GetSize(), | 403 surface->GetSize(), |
388 allowed_extensions, | 404 allowed_extensions, |
389 attribs, | 405 attribs, |
390 gpu_preference)) | 406 gpu_preference)) |
391 return NULL; | 407 return NULL; |
392 | 408 |
393 return context.release(); | 409 return context.release(); |
394 } | 410 } |
395 | 411 |
396 } // namespace gpu | 412 } // namespace gpu |
OLD | NEW |