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

Side by Side Diff: mojo/gles2/command_buffer_client_impl.cc

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 | « mojo/gles2/command_buffer_client_impl.h ('k') | no next file » | 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 #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>
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 void CommandBufferDelegate::ContextLost() {} 65 void CommandBufferDelegate::ContextLost() {}
66 66
67 CommandBufferClientImpl::CommandBufferClientImpl( 67 CommandBufferClientImpl::CommandBufferClientImpl(
68 CommandBufferDelegate* delegate, 68 CommandBufferDelegate* delegate,
69 const std::vector<int32_t>& attribs, 69 const std::vector<int32_t>& attribs,
70 const MojoAsyncWaiter* async_waiter, 70 const MojoAsyncWaiter* async_waiter,
71 mojo::ScopedMessagePipeHandle command_buffer_handle) 71 mojo::ScopedMessagePipeHandle command_buffer_handle)
72 : delegate_(delegate), 72 : delegate_(delegate),
73 attribs_(attribs), 73 attribs_(attribs),
74 observer_binding_(this), 74 client_binding_(this),
75 command_buffer_id_(0), 75 command_buffer_id_(0),
76 shared_state_(NULL), 76 shared_state_(NULL),
77 last_put_offset_(-1), 77 last_put_offset_(-1),
78 next_transfer_buffer_id_(0), 78 next_transfer_buffer_id_(0),
79 next_image_id_(0), 79 next_image_id_(0),
80 next_fence_sync_release_(1), 80 next_fence_sync_release_(1),
81 flushed_fence_sync_release_(0), 81 flushed_fence_sync_release_(0),
82 async_waiter_(async_waiter) { 82 async_waiter_(async_waiter) {
83 command_buffer_.Bind(mojo::InterfacePtrInfo<mus::mojom::CommandBuffer>( 83 command_buffer_.Bind(mojo::InterfacePtrInfo<mus::mojom::CommandBuffer>(
84 std::move(command_buffer_handle), 0u), 84 std::move(command_buffer_handle), 0u),
85 async_waiter); 85 async_waiter);
86 command_buffer_.set_connection_error_handler( 86 command_buffer_.set_connection_error_handler(
87 [this]() { DidLoseContext(gpu::error::kUnknown); }); 87 [this]() { Destroyed(gpu::error::kUnknown, gpu::error::kLostContext); });
88 } 88 }
89 89
90 CommandBufferClientImpl::~CommandBufferClientImpl() {} 90 CommandBufferClientImpl::~CommandBufferClientImpl() {}
91 91
92 bool CommandBufferClientImpl::Initialize() { 92 bool CommandBufferClientImpl::Initialize() {
93 const size_t kSharedStateSize = sizeof(gpu::CommandBufferSharedState); 93 const size_t kSharedStateSize = sizeof(gpu::CommandBufferSharedState);
94 void* memory = NULL; 94 void* memory = NULL;
95 mojo::ScopedSharedBufferHandle duped; 95 mojo::ScopedSharedBufferHandle duped;
96 bool result = CreateMapAndDupSharedBuffer( 96 bool result = CreateMapAndDupSharedBuffer(
97 kSharedStateSize, &memory, &shared_state_handle_, &duped); 97 kSharedStateSize, &memory, &shared_state_handle_, &duped);
98 if (!result) 98 if (!result)
99 return false; 99 return false;
100 100
101 shared_state_ = static_cast<gpu::CommandBufferSharedState*>(memory); 101 shared_state_ = static_cast<gpu::CommandBufferSharedState*>(memory);
102 102
103 shared_state()->Initialize(); 103 shared_state()->Initialize();
104 104
105 mus::mojom::CommandBufferLostContextObserverPtr observer_ptr; 105 mus::mojom::CommandBufferClientPtr client_ptr;
106 observer_binding_.Bind(GetProxy(&observer_ptr), async_waiter_); 106 client_binding_.Bind(GetProxy(&client_ptr), async_waiter_);
107 107
108 mus::mojom::CommandBufferInitializeResultPtr initialize_result; 108 mus::mojom::CommandBufferInitializeResultPtr initialize_result;
109 command_buffer_->Initialize( 109 command_buffer_->Initialize(
110 std::move(observer_ptr), std::move(duped), 110 std::move(client_ptr), std::move(duped),
111 mojo::Array<int32_t>::From(attribs_), 111 mojo::Array<int32_t>::From(attribs_),
112 base::Bind(&InitializeCallback, &initialize_result)); 112 base::Bind(&InitializeCallback, &initialize_result));
113 113
114 base::ThreadRestrictions::ScopedAllowWait wait; 114 base::ThreadRestrictions::ScopedAllowWait wait;
115 if (!command_buffer_.WaitForIncomingResponse()) { 115 if (!command_buffer_.WaitForIncomingResponse()) {
116 VLOG(1) << "Channel encountered error while creating command buffer."; 116 VLOG(1) << "Channel encountered error while creating command buffer.";
117 return false; 117 return false;
118 } 118 }
119 119
120 if (!initialize_result) { 120 if (!initialize_result) {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 278
279 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat); 279 return CreateImage(buffer->AsClientBuffer(), width, height, internalformat);
280 } 280 }
281 281
282 void CommandBufferClientImpl::SignalQuery(uint32_t query, 282 void CommandBufferClientImpl::SignalQuery(uint32_t query,
283 const base::Closure& callback) { 283 const base::Closure& callback) {
284 // TODO(piman) 284 // TODO(piman)
285 NOTIMPLEMENTED(); 285 NOTIMPLEMENTED();
286 } 286 }
287 287
288 void CommandBufferClientImpl::DidLoseContext(int32_t lost_reason) { 288 void CommandBufferClientImpl::Destroyed(int32_t lost_reason, int32_t error) {
289 last_state_.error = gpu::error::kLostContext;
290 last_state_.context_lost_reason = 289 last_state_.context_lost_reason =
291 static_cast<gpu::error::ContextLostReason>(lost_reason); 290 static_cast<gpu::error::ContextLostReason>(lost_reason);
291 last_state_.error = static_cast<gpu::error::Error>(error);
292 delegate_->ContextLost(); 292 delegate_->ContextLost();
293 } 293 }
294 294
295 void CommandBufferClientImpl::SignalAck(uint32_t id) {
296 }
297
298 void CommandBufferClientImpl::SwapBuffersCompleted(int32_t result) {
299 }
300
301 void CommandBufferClientImpl::UpdateState(
302 const gpu::CommandBuffer::State& state) {
303 }
304
305 void CommandBufferClientImpl::UpdateVSyncParameters(int64_t timebase,
306 int64_t interval) {
307 }
308
295 void CommandBufferClientImpl::TryUpdateState() { 309 void CommandBufferClientImpl::TryUpdateState() {
296 if (last_state_.error == gpu::error::kNoError) 310 if (last_state_.error == gpu::error::kNoError)
297 shared_state()->Read(&last_state_); 311 shared_state()->Read(&last_state_);
298 } 312 }
299 313
300 void CommandBufferClientImpl::MakeProgressAndUpdateState() { 314 void CommandBufferClientImpl::MakeProgressAndUpdateState() {
301 gpu::CommandBuffer::State state; 315 gpu::CommandBuffer::State state;
302 command_buffer_->MakeProgress( 316 command_buffer_->MakeProgress(
303 last_state_.get_offset, 317 last_state_.get_offset,
304 base::Bind(&MakeProgressCallback, &state)); 318 base::Bind(&MakeProgressCallback, &state));
305 319
306 base::ThreadRestrictions::ScopedAllowWait wait; 320 base::ThreadRestrictions::ScopedAllowWait wait;
307 if (!command_buffer_.WaitForIncomingResponse()) { 321 if (!command_buffer_.WaitForIncomingResponse()) {
308 VLOG(1) << "Channel encountered error while waiting for command buffer."; 322 VLOG(1) << "Channel encountered error while waiting for command buffer.";
309 // TODO(piman): is it ok for this to re-enter? 323 // TODO(piman): is it ok for this to re-enter?
310 DidLoseContext(gpu::error::kUnknown); 324 Destroyed(gpu::error::kUnknown, gpu::error::kLostContext);
311 return; 325 return;
312 } 326 }
313 327
314 if (state.generation - last_state_.generation < 0x80000000U) 328 if (state.generation - last_state_.generation < 0x80000000U)
315 last_state_ = state; 329 last_state_ = state;
316 } 330 }
317 331
318 void CommandBufferClientImpl::SetLock(base::Lock* lock) { 332 void CommandBufferClientImpl::SetLock(base::Lock* lock) {
319 } 333 }
320 334
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 384
371 // It is also safe to wait on the same context. 385 // It is also safe to wait on the same context.
372 if (sync_token->namespace_id() == gpu::CommandBufferNamespace::MOJO && 386 if (sync_token->namespace_id() == gpu::CommandBufferNamespace::MOJO &&
373 sync_token->command_buffer_id() == GetCommandBufferID()) 387 sync_token->command_buffer_id() == GetCommandBufferID())
374 return true; 388 return true;
375 389
376 return false; 390 return false;
377 } 391 }
378 392
379 } // namespace gles2 393 } // namespace gles2
OLDNEW
« no previous file with comments | « mojo/gles2/command_buffer_client_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698