| 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 #if defined(OS_WIN) | 5 #if defined(OS_WIN) |
| 6 #include <windows.h> | 6 #include <windows.h> |
| 7 #endif | 7 #endif |
| 8 | 8 |
| 9 #include "content/common/gpu/gpu_channel.h" | 9 #include "content/common/gpu/gpu_channel.h" |
| 10 | 10 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "content/common/gpu/gpu_channel_manager.h" | 22 #include "content/common/gpu/gpu_channel_manager.h" |
| 23 #include "content/common/gpu/gpu_memory_buffer_factory.h" | 23 #include "content/common/gpu/gpu_memory_buffer_factory.h" |
| 24 #include "content/common/gpu/gpu_messages.h" | 24 #include "content/common/gpu/gpu_messages.h" |
| 25 #include "content/public/common/content_switches.h" | 25 #include "content/public/common/content_switches.h" |
| 26 #include "gpu/command_buffer/common/mailbox.h" | 26 #include "gpu/command_buffer/common/mailbox.h" |
| 27 #include "gpu/command_buffer/common/value_state.h" | 27 #include "gpu/command_buffer/common/value_state.h" |
| 28 #include "gpu/command_buffer/service/gpu_scheduler.h" | 28 #include "gpu/command_buffer/service/gpu_scheduler.h" |
| 29 #include "gpu/command_buffer/service/image_factory.h" | 29 #include "gpu/command_buffer/service/image_factory.h" |
| 30 #include "gpu/command_buffer/service/mailbox_manager_impl.h" | 30 #include "gpu/command_buffer/service/mailbox_manager_impl.h" |
| 31 #include "gpu/command_buffer/service/sync_point_manager.h" | 31 #include "gpu/command_buffer/service/sync_point_manager.h" |
| 32 #include "gpu/command_buffer/service/valuebuffer_manager.h" |
| 32 #include "ipc/ipc_channel.h" | 33 #include "ipc/ipc_channel.h" |
| 33 #include "ipc/message_filter.h" | 34 #include "ipc/message_filter.h" |
| 34 #include "ui/gl/gl_context.h" | 35 #include "ui/gl/gl_context.h" |
| 35 #include "ui/gl/gl_image_shared_memory.h" | 36 #include "ui/gl/gl_image_shared_memory.h" |
| 36 #include "ui/gl/gl_surface.h" | 37 #include "ui/gl/gl_surface.h" |
| 37 | 38 |
| 38 #if defined(OS_POSIX) | 39 #if defined(OS_POSIX) |
| 39 #include "ipc/ipc_channel_posix.h" | 40 #include "ipc/ipc_channel_posix.h" |
| 40 #endif | 41 #endif |
| 41 | 42 |
| (...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 num_stubs_descheduled_(0), | 419 num_stubs_descheduled_(0), |
| 419 allow_future_sync_points_(allow_future_sync_points), | 420 allow_future_sync_points_(allow_future_sync_points), |
| 420 weak_factory_(this) { | 421 weak_factory_(this) { |
| 421 DCHECK(gpu_channel_manager); | 422 DCHECK(gpu_channel_manager); |
| 422 DCHECK(client_id); | 423 DCHECK(client_id); |
| 423 | 424 |
| 424 channel_id_ = IPC::Channel::GenerateVerifiedChannelID("gpu"); | 425 channel_id_ = IPC::Channel::GenerateVerifiedChannelID("gpu"); |
| 425 const base::CommandLine* command_line = | 426 const base::CommandLine* command_line = |
| 426 base::CommandLine::ForCurrentProcess(); | 427 base::CommandLine::ForCurrentProcess(); |
| 427 log_messages_ = command_line->HasSwitch(switches::kLogPluginMessages); | 428 log_messages_ = command_line->HasSwitch(switches::kLogPluginMessages); |
| 429 |
| 430 subscription_ref_set_ = new gpu::gles2::SubscriptionRefSet(); |
| 431 subscription_ref_set_->AddObserver(this); |
| 428 } | 432 } |
| 429 | 433 |
| 430 GpuChannel::~GpuChannel() { | 434 GpuChannel::~GpuChannel() { |
| 431 STLDeleteElements(&deferred_messages_); | 435 STLDeleteElements(&deferred_messages_); |
| 436 subscription_ref_set_->RemoveObserver(this); |
| 432 if (preempting_flag_.get()) | 437 if (preempting_flag_.get()) |
| 433 preempting_flag_->Reset(); | 438 preempting_flag_->Reset(); |
| 434 } | 439 } |
| 435 | 440 |
| 436 void GpuChannel::Init(base::MessageLoopProxy* io_message_loop, | 441 void GpuChannel::Init(base::MessageLoopProxy* io_message_loop, |
| 437 base::WaitableEvent* shutdown_event) { | 442 base::WaitableEvent* shutdown_event) { |
| 438 DCHECK(!channel_.get()); | 443 DCHECK(!channel_.get()); |
| 439 | 444 |
| 440 // Map renderer ID to a (single) channel to that process. | 445 // Map renderer ID to a (single) channel to that process. |
| 441 channel_ = IPC::SyncChannel::Create(channel_id_, | 446 channel_ = IPC::SyncChannel::Create(channel_id_, |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 } | 510 } |
| 506 | 511 |
| 507 if (!channel_) { | 512 if (!channel_) { |
| 508 delete message; | 513 delete message; |
| 509 return false; | 514 return false; |
| 510 } | 515 } |
| 511 | 516 |
| 512 return channel_->Send(message); | 517 return channel_->Send(message); |
| 513 } | 518 } |
| 514 | 519 |
| 520 void GpuChannel::OnAddSubscription(unsigned int target) { |
| 521 gpu_channel_manager()->Send( |
| 522 new GpuHostMsg_AddSubscription(client_id_, target)); |
| 523 } |
| 524 |
| 525 void GpuChannel::OnRemoveSubscription(unsigned int target) { |
| 526 gpu_channel_manager()->Send( |
| 527 new GpuHostMsg_RemoveSubscription(client_id_, target)); |
| 528 } |
| 529 |
| 515 void GpuChannel::RequeueMessage() { | 530 void GpuChannel::RequeueMessage() { |
| 516 DCHECK(currently_processing_message_); | 531 DCHECK(currently_processing_message_); |
| 517 deferred_messages_.push_front( | 532 deferred_messages_.push_front( |
| 518 new IPC::Message(*currently_processing_message_)); | 533 new IPC::Message(*currently_processing_message_)); |
| 519 messages_processed_--; | 534 messages_processed_--; |
| 520 currently_processing_message_ = NULL; | 535 currently_processing_message_ = NULL; |
| 521 } | 536 } |
| 522 | 537 |
| 523 void GpuChannel::OnScheduled() { | 538 void GpuChannel::OnScheduled() { |
| 524 if (handle_messages_scheduled_) | 539 if (handle_messages_scheduled_) |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 bool use_virtualized_gl_context = false; | 589 bool use_virtualized_gl_context = false; |
| 575 #if defined(OS_MACOSX) | 590 #if defined(OS_MACOSX) |
| 576 use_virtualized_gl_context = true; | 591 use_virtualized_gl_context = true; |
| 577 #endif | 592 #endif |
| 578 | 593 |
| 579 scoped_ptr<GpuCommandBufferStub> stub( | 594 scoped_ptr<GpuCommandBufferStub> stub( |
| 580 new GpuCommandBufferStub(this, | 595 new GpuCommandBufferStub(this, |
| 581 share_group, | 596 share_group, |
| 582 window, | 597 window, |
| 583 mailbox_manager_.get(), | 598 mailbox_manager_.get(), |
| 599 subscription_ref_set_.get(), |
| 584 pending_valuebuffer_state_.get(), | 600 pending_valuebuffer_state_.get(), |
| 585 gfx::Size(), | 601 gfx::Size(), |
| 586 disallowed_features_, | 602 disallowed_features_, |
| 587 init_params.attribs, | 603 init_params.attribs, |
| 588 init_params.gpu_preference, | 604 init_params.gpu_preference, |
| 589 use_virtualized_gl_context, | 605 use_virtualized_gl_context, |
| 590 route_id, | 606 route_id, |
| 591 surface_id, | 607 surface_id, |
| 592 watchdog_, | 608 watchdog_, |
| 593 software_, | 609 software_, |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 int32 route_id, | 749 int32 route_id, |
| 734 bool* succeeded) { | 750 bool* succeeded) { |
| 735 TRACE_EVENT0("gpu", "GpuChannel::OnCreateOffscreenCommandBuffer"); | 751 TRACE_EVENT0("gpu", "GpuChannel::OnCreateOffscreenCommandBuffer"); |
| 736 GpuCommandBufferStub* share_group = stubs_.Lookup(init_params.share_group_id); | 752 GpuCommandBufferStub* share_group = stubs_.Lookup(init_params.share_group_id); |
| 737 | 753 |
| 738 scoped_ptr<GpuCommandBufferStub> stub(new GpuCommandBufferStub( | 754 scoped_ptr<GpuCommandBufferStub> stub(new GpuCommandBufferStub( |
| 739 this, | 755 this, |
| 740 share_group, | 756 share_group, |
| 741 gfx::GLSurfaceHandle(), | 757 gfx::GLSurfaceHandle(), |
| 742 mailbox_manager_.get(), | 758 mailbox_manager_.get(), |
| 759 subscription_ref_set_.get(), |
| 743 pending_valuebuffer_state_.get(), | 760 pending_valuebuffer_state_.get(), |
| 744 size, | 761 size, |
| 745 disallowed_features_, | 762 disallowed_features_, |
| 746 init_params.attribs, | 763 init_params.attribs, |
| 747 init_params.gpu_preference, | 764 init_params.gpu_preference, |
| 748 false, | 765 false, |
| 749 route_id, | 766 route_id, |
| 750 0, | 767 0, |
| 751 watchdog_, | 768 watchdog_, |
| 752 software_, | 769 software_, |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 } | 872 } |
| 856 } | 873 } |
| 857 } | 874 } |
| 858 | 875 |
| 859 void GpuChannel::HandleUpdateValueState( | 876 void GpuChannel::HandleUpdateValueState( |
| 860 unsigned int target, const gpu::ValueState& state) { | 877 unsigned int target, const gpu::ValueState& state) { |
| 861 pending_valuebuffer_state_->UpdateState(target, state); | 878 pending_valuebuffer_state_->UpdateState(target, state); |
| 862 } | 879 } |
| 863 | 880 |
| 864 } // namespace content | 881 } // namespace content |
| OLD | NEW |