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_; |