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

Side by Side Diff: content/common/gpu/gpu_command_buffer_stub.cc

Issue 1339203002: Added global order numbers to in process command buffers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: reverted unnecessary changes Created 5 years, 3 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 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/bind_helpers.h" 6 #include "base/bind_helpers.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/hash.h" 8 #include "base/hash.h"
9 #include "base/json/json_writer.h" 9 #include "base/json/json_writer.h"
10 #include "base/memory/shared_memory.h" 10 #include "base/memory/shared_memory.h"
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 while (!sync_points_.empty()) 471 while (!sync_points_.empty())
472 OnRetireSyncPoint(sync_points_.front()); 472 OnRetireSyncPoint(sync_points_.front());
473 473
474 if (decoder_) 474 if (decoder_)
475 decoder_->set_engine(NULL); 475 decoder_->set_engine(NULL);
476 476
477 // The scheduler has raw references to the decoder and the command buffer so 477 // The scheduler has raw references to the decoder and the command buffer so
478 // destroy it before those. 478 // destroy it before those.
479 scheduler_.reset(); 479 scheduler_.reset();
480 480
481 sync_point_client_.reset();
482
481 bool have_context = false; 483 bool have_context = false;
482 if (decoder_ && decoder_->GetGLContext()) { 484 if (decoder_ && decoder_->GetGLContext()) {
483 // Try to make the context current regardless of whether it was lost, so we 485 // Try to make the context current regardless of whether it was lost, so we
484 // don't leak resources. 486 // don't leak resources.
485 have_context = decoder_->GetGLContext()->MakeCurrent(surface_.get()); 487 have_context = decoder_->GetGLContext()->MakeCurrent(surface_.get());
486 } 488 }
487 FOR_EACH_OBSERVER(DestructionObserver, 489 FOR_EACH_OBSERVER(DestructionObserver,
488 destruction_observers_, 490 destruction_observers_,
489 OnWillDestroyStub()); 491 OnWillDestroyStub());
490 492
(...skipping 23 matching lines...) Expand all
514 516
515 scoped_ptr<base::SharedMemory> shared_state_shm( 517 scoped_ptr<base::SharedMemory> shared_state_shm(
516 new base::SharedMemory(shared_state_handle, false)); 518 new base::SharedMemory(shared_state_handle, false));
517 519
518 command_buffer_.reset(new gpu::CommandBufferService( 520 command_buffer_.reset(new gpu::CommandBufferService(
519 context_group_->transfer_buffer_manager())); 521 context_group_->transfer_buffer_manager()));
520 522
521 bool result = command_buffer_->Initialize(); 523 bool result = command_buffer_->Initialize();
522 DCHECK(result); 524 DCHECK(result);
523 525
526 GpuChannelManager* manager = channel_->gpu_channel_manager();
527 DCHECK(manager);
528
529 gpu::SyncPointManager* sync_point_manager = manager->sync_point_manager();
530 DCHECK(sync_point_manager);
531
524 decoder_.reset(::gpu::gles2::GLES2Decoder::Create(context_group_.get())); 532 decoder_.reset(::gpu::gles2::GLES2Decoder::Create(context_group_.get()));
525 scheduler_.reset(new gpu::GpuScheduler(command_buffer_.get(), 533 scheduler_.reset(new gpu::GpuScheduler(command_buffer_.get(),
526 decoder_.get(), 534 decoder_.get(),
527 decoder_.get())); 535 decoder_.get()));
536 sync_point_client_ =
537 sync_point_manager->CreateSyncPointClient(
538 channel_->GetSyncPointClientState(),
539 gpu::CommandBufferNamespace::GPU_IO,
540 command_buffer_id_);
541
528 if (preemption_flag_.get()) 542 if (preemption_flag_.get())
529 scheduler_->SetPreemptByFlag(preemption_flag_); 543 scheduler_->SetPreemptByFlag(preemption_flag_);
530 544
531 decoder_->set_engine(scheduler_.get()); 545 decoder_->set_engine(scheduler_.get());
532 546
533 if (!handle_.is_null()) { 547 if (!handle_.is_null()) {
534 #if defined(OS_MACOSX) || defined(UI_COMPOSITOR_IMAGE_TRANSPORT) 548 #if defined(OS_MACOSX) || defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
535 if (software_) { 549 if (software_) {
536 LOG(ERROR) << "No software support."; 550 LOG(ERROR) << "No software support.";
537 OnInitializeFailed(reply_message); 551 OnInitializeFailed(reply_message);
538 return; 552 return;
539 } 553 }
540 #endif 554 #endif
541 555
542 surface_ = ImageTransportSurface::CreateSurface( 556 surface_ = ImageTransportSurface::CreateSurface(
543 channel_->gpu_channel_manager(), 557 channel_->gpu_channel_manager(),
544 this, 558 this,
545 handle_); 559 handle_);
546 } else { 560 } else {
547 GpuChannelManager* manager = channel_->gpu_channel_manager();
548 surface_ = manager->GetDefaultOffscreenSurface(); 561 surface_ = manager->GetDefaultOffscreenSurface();
549 } 562 }
550 563
551 if (!surface_.get()) { 564 if (!surface_.get()) {
552 DLOG(ERROR) << "Failed to create surface."; 565 DLOG(ERROR) << "Failed to create surface.";
553 OnInitializeFailed(reply_message); 566 OnInitializeFailed(reply_message);
554 return; 567 return;
555 } 568 }
556 569
557 scoped_refptr<gfx::GLContext> context; 570 scoped_refptr<gfx::GLContext> context;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 shared_state_shm.Pass(), kSharedStateSize)); 681 shared_state_shm.Pass(), kSharedStateSize));
669 682
670 gpu::Capabilities capabilities = decoder_->GetCapabilities(); 683 gpu::Capabilities capabilities = decoder_->GetCapabilities();
671 capabilities.future_sync_points = channel_->allow_future_sync_points(); 684 capabilities.future_sync_points = channel_->allow_future_sync_points();
672 685
673 GpuCommandBufferMsg_Initialize::WriteReplyParams( 686 GpuCommandBufferMsg_Initialize::WriteReplyParams(
674 reply_message, true, capabilities); 687 reply_message, true, capabilities);
675 Send(reply_message); 688 Send(reply_message);
676 689
677 if (handle_.is_null() && !active_url_.is_empty()) { 690 if (handle_.is_null() && !active_url_.is_empty()) {
678 GpuChannelManager* gpu_channel_manager = channel_->gpu_channel_manager(); 691 manager->Send(new GpuHostMsg_DidCreateOffscreenContext(
679 gpu_channel_manager->Send(new GpuHostMsg_DidCreateOffscreenContext(
680 active_url_)); 692 active_url_));
681 } 693 }
682 694
683 initialized_ = true; 695 initialized_ = true;
684 } 696 }
685 697
686 void GpuCommandBufferStub::OnCreateStreamTexture( 698 void GpuCommandBufferStub::OnCreateStreamTexture(
687 uint32 texture_id, int32 stream_id, bool* succeeded) { 699 uint32 texture_id, int32 stream_id, bool* succeeded) {
688 #if defined(OS_ANDROID) 700 #if defined(OS_ANDROID)
689 *succeeded = StreamTexture::Create(this, texture_id, stream_id); 701 *succeeded = StreamTexture::Create(this, texture_id, stream_id);
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
1209 result)); 1221 result));
1210 } 1222 }
1211 1223
1212 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase, 1224 void GpuCommandBufferStub::SendUpdateVSyncParameters(base::TimeTicks timebase,
1213 base::TimeDelta interval) { 1225 base::TimeDelta interval) {
1214 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase, 1226 Send(new GpuCommandBufferMsg_UpdateVSyncParameters(route_id_, timebase,
1215 interval)); 1227 interval));
1216 } 1228 }
1217 1229
1218 } // namespace content 1230 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698