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

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

Issue 1331843005: Implemented new fence syncs which replaces the old sync points. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Some fixes 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 "content/common/gpu/gpu_channel.h" 5 #include "content/common/gpu/gpu_channel.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #endif 9 #endif
10 10
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 } 586 }
587 587
588 bool GpuChannel::StreamState::HasRoute(int32 route_id) const { 588 bool GpuChannel::StreamState::HasRoute(int32 route_id) const {
589 return routes_.find(route_id) != routes_.end(); 589 return routes_.find(route_id) != routes_.end();
590 } 590 }
591 591
592 bool GpuChannel::StreamState::HasRoutes() const { 592 bool GpuChannel::StreamState::HasRoutes() const {
593 return !routes_.empty(); 593 return !routes_.empty();
594 } 594 }
595 595
596 GpuChannel::OrderCallback::OrderCallback(uint32_t order_num,
597 const base::Closure& callback)
598 : order_number(order_num), callback_closure(callback) {}
599
600 GpuChannel::OrderCallback::~OrderCallback() {}
601
596 GpuChannel::GpuChannel(GpuChannelManager* gpu_channel_manager, 602 GpuChannel::GpuChannel(GpuChannelManager* gpu_channel_manager,
597 GpuWatchdog* watchdog, 603 GpuWatchdog* watchdog,
598 gfx::GLShareGroup* share_group, 604 gfx::GLShareGroup* share_group,
599 gpu::gles2::MailboxManager* mailbox, 605 gpu::gles2::MailboxManager* mailbox,
600 base::SingleThreadTaskRunner* task_runner, 606 base::SingleThreadTaskRunner* task_runner,
601 base::SingleThreadTaskRunner* io_task_runner, 607 base::SingleThreadTaskRunner* io_task_runner,
602 int client_id, 608 int client_id,
603 uint64_t client_tracing_id, 609 uint64_t client_tracing_id,
604 bool software, 610 bool software,
605 bool allow_future_sync_points, 611 bool allow_future_sync_points,
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 void GpuChannel::OnAddSubscription(unsigned int target) { 711 void GpuChannel::OnAddSubscription(unsigned int target) {
706 gpu_channel_manager()->Send( 712 gpu_channel_manager()->Send(
707 new GpuHostMsg_AddSubscription(client_id_, target)); 713 new GpuHostMsg_AddSubscription(client_id_, target));
708 } 714 }
709 715
710 void GpuChannel::OnRemoveSubscription(unsigned int target) { 716 void GpuChannel::OnRemoveSubscription(unsigned int target) {
711 gpu_channel_manager()->Send( 717 gpu_channel_manager()->Send(
712 new GpuHostMsg_RemoveSubscription(client_id_, target)); 718 new GpuHostMsg_RemoveSubscription(client_id_, target));
713 } 719 }
714 720
721 void GpuChannel::AddProcessedOrderNumberCallback(
722 uint32_t order_number,
723 const base::Closure& callback) {
724 processed_order_callbacks_.push(OrderCallback(order_number, callback));
725 }
726
715 void GpuChannel::StubSchedulingChanged(bool scheduled) { 727 void GpuChannel::StubSchedulingChanged(bool scheduled) {
716 bool a_stub_was_descheduled = num_stubs_descheduled_ > 0; 728 bool a_stub_was_descheduled = num_stubs_descheduled_ > 0;
717 if (scheduled) { 729 if (scheduled) {
718 num_stubs_descheduled_--; 730 num_stubs_descheduled_--;
719 message_queue_->ScheduleHandleMessage(); 731 message_queue_->ScheduleHandleMessage();
720 } else { 732 } else {
721 num_stubs_descheduled_++; 733 num_stubs_descheduled_++;
722 } 734 }
723 DCHECK_LE(num_stubs_descheduled_, stubs_.size()); 735 DCHECK_LE(num_stubs_descheduled_, stubs_.size());
724 bool a_stub_is_descheduled = num_stubs_descheduled_ > 0; 736 bool a_stub_is_descheduled = num_stubs_descheduled_ > 0;
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
1076 jpeg_decoder_.reset(new GpuJpegDecodeAccelerator(this, io_task_runner_)); 1088 jpeg_decoder_.reset(new GpuJpegDecodeAccelerator(this, io_task_runner_));
1077 } 1089 }
1078 jpeg_decoder_->AddClient(route_id, reply_msg); 1090 jpeg_decoder_->AddClient(route_id, reply_msg);
1079 } 1091 }
1080 1092
1081 void GpuChannel::MessageProcessed(uint32_t order_number) { 1093 void GpuChannel::MessageProcessed(uint32_t order_number) {
1082 if (order_number != kOutOfOrderNumber) { 1094 if (order_number != kOutOfOrderNumber) {
1083 DCHECK(current_order_num_ == order_number); 1095 DCHECK(current_order_num_ == order_number);
1084 DCHECK(processed_order_num_ < order_number); 1096 DCHECK(processed_order_num_ < order_number);
1085 processed_order_num_ = order_number; 1097 processed_order_num_ = order_number;
1098
1099 while (!processed_order_callbacks_.empty() &&
1100 processed_order_callbacks_.top().order_number <= order_number) {
1101 processed_order_callbacks_.top().callback_closure.Run();
1102 processed_order_callbacks_.pop();
1103 }
1086 } 1104 }
1087 if (preempting_flag_.get()) { 1105 if (preempting_flag_.get()) {
1088 io_task_runner_->PostTask( 1106 io_task_runner_->PostTask(
1089 FROM_HERE, 1107 FROM_HERE,
1090 base::Bind(&GpuChannelMessageFilter::OnMessageProcessed, filter_)); 1108 base::Bind(&GpuChannelMessageFilter::OnMessageProcessed, filter_));
1091 } 1109 }
1092 } 1110 }
1093 1111
1094 void GpuChannel::CacheShader(const std::string& key, 1112 void GpuChannel::CacheShader(const std::string& key,
1095 const std::string& shader) { 1113 const std::string& shader) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1158 void GpuChannel::HandleUpdateValueState( 1176 void GpuChannel::HandleUpdateValueState(
1159 unsigned int target, const gpu::ValueState& state) { 1177 unsigned int target, const gpu::ValueState& state) {
1160 pending_valuebuffer_state_->UpdateState(target, state); 1178 pending_valuebuffer_state_->UpdateState(target, state);
1161 } 1179 }
1162 1180
1163 uint32_t GpuChannel::GetUnprocessedOrderNum() const { 1181 uint32_t GpuChannel::GetUnprocessedOrderNum() const {
1164 return message_queue_->GetUnprocessedOrderNum(); 1182 return message_queue_->GetUnprocessedOrderNum();
1165 } 1183 }
1166 1184
1167 } // namespace content 1185 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698