| OLD | NEW |
| 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 #include "mojo/gles2/command_buffer_client_impl.h" | 5 #include "mojo/gles2/command_buffer_client_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <limits> | 10 #include <limits> |
| 11 #include <utility> | 11 #include <utility> |
| 12 | 12 |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/process/process_handle.h" | 14 #include "base/process/process_handle.h" |
| 15 #include "base/threading/thread_restrictions.h" | 15 #include "base/threading/thread_restrictions.h" |
| 16 #include "components/mus/gles2/command_buffer_type_conversions.h" | 16 #include "components/mus/gles2/command_buffer_type_conversions.h" |
| 17 #include "components/mus/gles2/mojo_buffer_backing.h" | 17 #include "components/mus/gles2/mojo_buffer_backing.h" |
| 18 #include "components/mus/gles2/mojo_gpu_memory_buffer.h" | 18 #include "components/mus/gles2/mojo_gpu_memory_buffer.h" |
| 19 #include "gpu/command_buffer/client/gpu_control_client.h" | |
| 20 #include "gpu/command_buffer/common/command_buffer_id.h" | 19 #include "gpu/command_buffer/common/command_buffer_id.h" |
| 21 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h" | 20 #include "gpu/command_buffer/common/gpu_memory_buffer_support.h" |
| 22 #include "gpu/command_buffer/common/sync_token.h" | 21 #include "gpu/command_buffer/common/sync_token.h" |
| 23 #include "mojo/platform_handle/platform_handle_functions.h" | 22 #include "mojo/platform_handle/platform_handle_functions.h" |
| 24 | 23 |
| 25 namespace gles2 { | 24 namespace gles2 { |
| 26 | 25 |
| 27 namespace { | 26 namespace { |
| 28 | 27 |
| 29 bool CreateMapAndDupSharedBuffer(size_t size, | 28 bool CreateMapAndDupSharedBuffer(size_t size, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 55 *output = input; | 54 *output = input; |
| 56 } | 55 } |
| 57 | 56 |
| 58 void InitializeCallback(mus::mojom::CommandBufferInitializeResultPtr* output, | 57 void InitializeCallback(mus::mojom::CommandBufferInitializeResultPtr* output, |
| 59 mus::mojom::CommandBufferInitializeResultPtr input) { | 58 mus::mojom::CommandBufferInitializeResultPtr input) { |
| 60 *output = std::move(input); | 59 *output = std::move(input); |
| 61 } | 60 } |
| 62 | 61 |
| 63 } // namespace | 62 } // namespace |
| 64 | 63 |
| 64 CommandBufferDelegate::~CommandBufferDelegate() {} |
| 65 |
| 66 void CommandBufferDelegate::ContextLost() {} |
| 67 |
| 65 CommandBufferClientImpl::CommandBufferClientImpl( | 68 CommandBufferClientImpl::CommandBufferClientImpl( |
| 69 CommandBufferDelegate* delegate, |
| 66 const std::vector<int32_t>& attribs, | 70 const std::vector<int32_t>& attribs, |
| 67 mojo::ScopedMessagePipeHandle command_buffer_handle) | 71 mojo::ScopedMessagePipeHandle command_buffer_handle) |
| 68 : gpu_control_client_(nullptr), | 72 : delegate_(delegate), |
| 69 destroyed_(false), | |
| 70 attribs_(attribs), | 73 attribs_(attribs), |
| 71 client_binding_(this), | 74 client_binding_(this), |
| 72 command_buffer_id_(), | 75 command_buffer_id_(), |
| 73 shared_state_(NULL), | 76 shared_state_(NULL), |
| 74 last_put_offset_(-1), | 77 last_put_offset_(-1), |
| 75 next_transfer_buffer_id_(0), | 78 next_transfer_buffer_id_(0), |
| 76 next_image_id_(0), | 79 next_image_id_(0), |
| 77 next_fence_sync_release_(1), | 80 next_fence_sync_release_(1), |
| 78 flushed_fence_sync_release_(0) { | 81 flushed_fence_sync_release_(0) { |
| 79 command_buffer_.Bind(mojo::InterfacePtrInfo<mus::mojom::CommandBuffer>( | 82 command_buffer_.Bind(mojo::InterfacePtrInfo<mus::mojom::CommandBuffer>( |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 scoped_ptr<gpu::BufferBacking> backing( | 196 scoped_ptr<gpu::BufferBacking> backing( |
| 194 new mus::MojoBufferBacking(std::move(handle), memory, size)); | 197 new mus::MojoBufferBacking(std::move(handle), memory, size)); |
| 195 scoped_refptr<gpu::Buffer> buffer(new gpu::Buffer(std::move(backing))); | 198 scoped_refptr<gpu::Buffer> buffer(new gpu::Buffer(std::move(backing))); |
| 196 return buffer; | 199 return buffer; |
| 197 } | 200 } |
| 198 | 201 |
| 199 void CommandBufferClientImpl::DestroyTransferBuffer(int32_t id) { | 202 void CommandBufferClientImpl::DestroyTransferBuffer(int32_t id) { |
| 200 command_buffer_->DestroyTransferBuffer(id); | 203 command_buffer_->DestroyTransferBuffer(id); |
| 201 } | 204 } |
| 202 | 205 |
| 203 void CommandBufferClientImpl::SetGpuControlClient(gpu::GpuControlClient* c) { | |
| 204 gpu_control_client_ = c; | |
| 205 } | |
| 206 | |
| 207 gpu::Capabilities CommandBufferClientImpl::GetCapabilities() { | 206 gpu::Capabilities CommandBufferClientImpl::GetCapabilities() { |
| 208 return capabilities_; | 207 return capabilities_; |
| 209 } | 208 } |
| 210 | 209 |
| 211 int32_t CommandBufferClientImpl::CreateImage(ClientBuffer buffer, | 210 int32_t CommandBufferClientImpl::CreateImage(ClientBuffer buffer, |
| 212 size_t width, | 211 size_t width, |
| 213 size_t height, | 212 size_t height, |
| 214 unsigned internalformat) { | 213 unsigned internalformat) { |
| 215 int32_t new_id = ++next_image_id_; | 214 int32_t new_id = ++next_image_id_; |
| 216 | 215 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); | 278 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); |
| 280 } | 279 } |
| 281 | 280 |
| 282 void CommandBufferClientImpl::SignalQuery(uint32_t query, | 281 void CommandBufferClientImpl::SignalQuery(uint32_t query, |
| 283 const base::Closure& callback) { | 282 const base::Closure& callback) { |
| 284 // TODO(piman) | 283 // TODO(piman) |
| 285 NOTIMPLEMENTED(); | 284 NOTIMPLEMENTED(); |
| 286 } | 285 } |
| 287 | 286 |
| 288 void CommandBufferClientImpl::Destroyed(int32_t lost_reason, int32_t error) { | 287 void CommandBufferClientImpl::Destroyed(int32_t lost_reason, int32_t error) { |
| 289 if (destroyed_) | |
| 290 return; | |
| 291 last_state_.context_lost_reason = | 288 last_state_.context_lost_reason = |
| 292 static_cast<gpu::error::ContextLostReason>(lost_reason); | 289 static_cast<gpu::error::ContextLostReason>(lost_reason); |
| 293 last_state_.error = static_cast<gpu::error::Error>(error); | 290 last_state_.error = static_cast<gpu::error::Error>(error); |
| 294 if (gpu_control_client_) | 291 delegate_->ContextLost(); |
| 295 gpu_control_client_->OnGpuControlLostContext(); | |
| 296 destroyed_ = true; | |
| 297 } | 292 } |
| 298 | 293 |
| 299 void CommandBufferClientImpl::SignalAck(uint32_t id) { | 294 void CommandBufferClientImpl::SignalAck(uint32_t id) { |
| 300 } | 295 } |
| 301 | 296 |
| 302 void CommandBufferClientImpl::SwapBuffersCompleted(int32_t result) { | 297 void CommandBufferClientImpl::SwapBuffersCompleted(int32_t result) { |
| 303 } | 298 } |
| 304 | 299 |
| 305 void CommandBufferClientImpl::UpdateState( | 300 void CommandBufferClientImpl::UpdateState( |
| 306 const gpu::CommandBuffer::State& state) { | 301 const gpu::CommandBuffer::State& state) { |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 | 383 |
| 389 // It is also safe to wait on the same context. | 384 // It is also safe to wait on the same context. |
| 390 if (sync_token->namespace_id() == gpu::CommandBufferNamespace::MOJO && | 385 if (sync_token->namespace_id() == gpu::CommandBufferNamespace::MOJO && |
| 391 sync_token->command_buffer_id() == GetCommandBufferID()) | 386 sync_token->command_buffer_id() == GetCommandBufferID()) |
| 392 return true; | 387 return true; |
| 393 | 388 |
| 394 return false; | 389 return false; |
| 395 } | 390 } |
| 396 | 391 |
| 397 } // namespace gles2 | 392 } // namespace gles2 |
| OLD | NEW |