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 #include "gpu/command_buffer/service/gpu_scheduler.h" | 5 #include "gpu/command_buffer/service/gpu_scheduler.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 if (!scheduling_changed_callback_.is_null()) | 154 if (!scheduling_changed_callback_.is_null()) |
155 scheduling_changed_callback_.Run(false); | 155 scheduling_changed_callback_.Run(false); |
156 } | 156 } |
157 } | 157 } |
158 } | 158 } |
159 | 159 |
160 bool GpuScheduler::IsScheduled() { | 160 bool GpuScheduler::IsScheduled() { |
161 return unscheduled_count_ == 0; | 161 return unscheduled_count_ == 0; |
162 } | 162 } |
163 | 163 |
164 bool GpuScheduler::HasMoreWork() { | 164 bool GpuScheduler::HasPendingQueries() const { |
165 return (decoder_ && decoder_->ProcessPendingQueries(false)) || | 165 return (decoder_ && decoder_->HasPendingQueries()); |
166 HasMoreIdleWork(); | 166 } |
| 167 |
| 168 void GpuScheduler::ProcessPendingQueries() { |
| 169 if (!decoder_) |
| 170 return; |
| 171 decoder_->ProcessPendingQueries(false); |
167 } | 172 } |
168 | 173 |
169 void GpuScheduler::SetSchedulingChangedCallback( | 174 void GpuScheduler::SetSchedulingChangedCallback( |
170 const SchedulingChangedCallback& callback) { | 175 const SchedulingChangedCallback& callback) { |
171 scheduling_changed_callback_ = callback; | 176 scheduling_changed_callback_ = callback; |
172 } | 177 } |
173 | 178 |
174 scoped_refptr<Buffer> GpuScheduler::GetSharedMemoryBuffer(int32 shm_id) { | 179 scoped_refptr<Buffer> GpuScheduler::GetSharedMemoryBuffer(int32 shm_id) { |
175 return command_buffer_->GetTransferBuffer(shm_id); | 180 return command_buffer_->GetTransferBuffer(shm_id); |
176 } | 181 } |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 TRACE_COUNTER_ID1("gpu", "GpuScheduler::Preempted", this, 1); | 227 TRACE_COUNTER_ID1("gpu", "GpuScheduler::Preempted", this, 1); |
223 was_preempted_ = true; | 228 was_preempted_ = true; |
224 } else if (was_preempted_ && !preemption_flag_->IsSet()) { | 229 } else if (was_preempted_ && !preemption_flag_->IsSet()) { |
225 TRACE_COUNTER_ID1("gpu", "GpuScheduler::Preempted", this, 0); | 230 TRACE_COUNTER_ID1("gpu", "GpuScheduler::Preempted", this, 0); |
226 was_preempted_ = false; | 231 was_preempted_ = false; |
227 } | 232 } |
228 | 233 |
229 return preemption_flag_->IsSet(); | 234 return preemption_flag_->IsSet(); |
230 } | 235 } |
231 | 236 |
232 bool GpuScheduler::HasMoreIdleWork() { | 237 bool GpuScheduler::HasMoreIdleWork() const { |
233 return (decoder_ && decoder_->HasMoreIdleWork()); | 238 return (decoder_ && decoder_->HasMoreIdleWork()); |
234 } | 239 } |
235 | 240 |
236 void GpuScheduler::PerformIdleWork() { | 241 void GpuScheduler::PerformIdleWork() { |
237 if (!decoder_) | 242 if (!decoder_) |
238 return; | 243 return; |
239 decoder_->PerformIdleWork(); | 244 decoder_->PerformIdleWork(); |
240 } | 245 } |
241 | 246 |
242 void GpuScheduler::RescheduleTimeOut() { | 247 void GpuScheduler::RescheduleTimeOut() { |
243 int new_count = unscheduled_count_ + rescheduled_count_; | 248 int new_count = unscheduled_count_ + rescheduled_count_; |
244 | 249 |
245 rescheduled_count_ = 0; | 250 rescheduled_count_ = 0; |
246 | 251 |
247 while (unscheduled_count_) | 252 while (unscheduled_count_) |
248 SetScheduled(true); | 253 SetScheduled(true); |
249 | 254 |
250 rescheduled_count_ = new_count; | 255 rescheduled_count_ = new_count; |
251 } | 256 } |
252 | 257 |
253 } // namespace gpu | 258 } // namespace gpu |
OLD | NEW |