| Index: gpu/command_buffer/service/gpu_scheduler.cc
|
| diff --git a/gpu/command_buffer/service/gpu_scheduler.cc b/gpu/command_buffer/service/gpu_scheduler.cc
|
| index 9702945b7f8d679195d23b5b9e4ca6f352a493b5..dbfb7be272dae9a17ab9ae4178bfa8bcbece2fef 100644
|
| --- a/gpu/command_buffer/service/gpu_scheduler.cc
|
| +++ b/gpu/command_buffer/service/gpu_scheduler.cc
|
| @@ -65,16 +65,8 @@ void GpuScheduler::PutChanged() {
|
| base::TimeTicks begin_time(base::TimeTicks::HighResNow());
|
| error::Error error = error::kNoError;
|
| while (!parser_->IsEmpty()) {
|
| - if (preempt_by_counter_.get() &&
|
| - !was_preempted_ &&
|
| - !preempt_by_counter_->IsZero()) {
|
| - TRACE_COUNTER_ID1("gpu","GpuScheduler::Preempted", this, 1);
|
| - was_preempted_ = true;
|
| + if (IsPreempted())
|
| break;
|
| - } else if (was_preempted_) {
|
| - TRACE_COUNTER_ID1("gpu","GpuScheduler::Preempted", this, 0);
|
| - was_preempted_ = false;
|
| - }
|
|
|
| DCHECK(IsScheduled());
|
| DCHECK(unschedule_fences_.empty());
|
| @@ -255,6 +247,21 @@ bool GpuScheduler::PollUnscheduleFences() {
|
| return true;
|
| }
|
|
|
| +bool GpuScheduler::IsPreempted() {
|
| + if (!preemption_flag_.get())
|
| + return false;
|
| +
|
| + if (!was_preempted_ && !preemption_flag_->IsSet()) {
|
| + TRACE_COUNTER_ID1("gpu", "GpuScheduler::Preempted", this, 1);
|
| + was_preempted_ = true;
|
| + } else if (was_preempted_) {
|
| + TRACE_COUNTER_ID1("gpu", "GpuScheduler::Preempted", this, 0);
|
| + was_preempted_ = false;
|
| + }
|
| +
|
| + return !preemption_flag_->IsSet();
|
| +}
|
| +
|
| void GpuScheduler::RescheduleTimeOut() {
|
| int new_count = unscheduled_count_ + rescheduled_count_;
|
|
|
|
|