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

Unified Diff: gpu/command_buffer/service/gpu_scheduler.cc

Issue 12226039: Reland 179911 and 179910 (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1364/src
Patch Set: Delta from original landing that's necessary for M25 (not ToT) Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/command_buffer/service/gpu_scheduler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « gpu/command_buffer/service/gpu_scheduler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698