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

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

Issue 1348363003: content/gpu: Simplify stub scheduling. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gpu_channel_stream
Patch Set: address comments 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 side-by-side diff with in-line comments
Download patch
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 2a15dc76f9c06d14914f5b2470a5c758f8eeeb4e..3607a77853af2252f8650cd86f4aca01c00becd4 100644
--- a/gpu/command_buffer/service/gpu_scheduler.cc
+++ b/gpu/command_buffer/service/gpu_scheduler.cc
@@ -15,10 +15,6 @@
#include "ui/gl/gl_fence.h"
#include "ui/gl/gl_switches.h"
-#if defined(OS_WIN)
-#include "base/win/windows_version.h"
-#endif
-
using ::base::SharedMemory;
namespace gpu {
@@ -34,12 +30,9 @@ GpuScheduler::GpuScheduler(CommandBufferServiceBase* command_buffer,
handler_(handler),
decoder_(decoder),
unscheduled_count_(0),
piman 2015/09/16 23:48:42 You still need an initializer for scheduled_.
sunnyps 2015/09/17 00:04:53 Done.
- rescheduled_count_(0),
- was_preempted_(false),
- reschedule_task_factory_(this) {}
+ was_preempted_(false) {}
-GpuScheduler::~GpuScheduler() {
-}
+GpuScheduler::~GpuScheduler() {}
void GpuScheduler::PutChanged() {
TRACE_EVENT1(
@@ -112,49 +105,15 @@ void GpuScheduler::SetScheduled(bool scheduled) {
"new unscheduled_count_",
unscheduled_count_ + (scheduled? -1 : 1));
if (scheduled) {
- // If the scheduler was rescheduled after a timeout, ignore the subsequent
- // calls to SetScheduled when they eventually arrive until they are all
- // accounted for.
- if (rescheduled_count_ > 0) {
- --rescheduled_count_;
- return;
- } else {
- --unscheduled_count_;
- }
-
- DCHECK_GE(unscheduled_count_, 0);
-
- if (unscheduled_count_ == 0) {
- TRACE_EVENT_ASYNC_END1("gpu", "ProcessingSwap", this,
- "GpuScheduler", this);
- // When the scheduler transitions from the unscheduled to the scheduled
- // state, cancel the task that would reschedule it after a timeout.
- reschedule_task_factory_.InvalidateWeakPtrs();
-
- if (!scheduling_changed_callback_.is_null())
+ --unscheduled_count_;
+ if (unscheduled_count_ == 0 && !scheduling_changed_callback_.is_null())
scheduling_changed_callback_.Run(true);
- }
} else {
++unscheduled_count_;
- if (unscheduled_count_ == 1) {
- TRACE_EVENT_ASYNC_BEGIN1("gpu", "ProcessingSwap", this,
- "GpuScheduler", this);
-#if defined(OS_WIN)
- if (base::win::GetVersion() < base::win::VERSION_VISTA) {
- // When the scheduler transitions from scheduled to unscheduled, post a
- // delayed task that it will force it back into a scheduled state after
- // a timeout. This should only be necessary on pre-Vista.
- base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE,
- base::Bind(&GpuScheduler::RescheduleTimeOut,
- reschedule_task_factory_.GetWeakPtr()),
- base::TimeDelta::FromMilliseconds(kRescheduleTimeOutDelay));
- }
-#endif
- if (!scheduling_changed_callback_.is_null())
+ if (unscheduled_count_ == 1 && !scheduling_changed_callback_.is_null())
scheduling_changed_callback_.Run(false);
- }
}
+ DCHECK_GE(unscheduled_count_, 0);
}
bool GpuScheduler::IsScheduled() {
@@ -239,15 +198,4 @@ void GpuScheduler::PerformIdleWork() {
decoder_->PerformIdleWork();
}
-void GpuScheduler::RescheduleTimeOut() {
- int new_count = unscheduled_count_ + rescheduled_count_;
-
- rescheduled_count_ = 0;
-
- while (unscheduled_count_)
- SetScheduled(true);
-
- rescheduled_count_ = new_count;
-}
-
} // namespace gpu
« content/common/gpu/gpu_command_buffer_stub.cc ('K') | « 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