Index: gpu/command_buffer/service/scheduler.h |
diff --git a/gpu/command_buffer/service/scheduler.h b/gpu/command_buffer/service/scheduler.h |
deleted file mode 100644 |
index c6dab1cf58ece563d0f5eb501144ea17b07ae700..0000000000000000000000000000000000000000 |
--- a/gpu/command_buffer/service/scheduler.h |
+++ /dev/null |
@@ -1,138 +0,0 @@ |
-// Copyright (c) 2017 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef GPU_COMMAND_BUFFER_SERVICE_SCHEDULER_H_ |
-#define GPU_COMMAND_BUFFER_SERVICE_SCHEDULER_H_ |
- |
-#include <queue> |
-#include <vector> |
- |
-#include "base/callback.h" |
-#include "base/containers/flat_map.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/synchronization/lock.h" |
-#include "base/threading/thread_checker.h" |
-#include "gpu/command_buffer/common/scheduling_priority.h" |
-#include "gpu/command_buffer/common/sync_token.h" |
-#include "gpu/command_buffer/service/sequence_id.h" |
-#include "gpu/gpu_export.h" |
- |
-namespace base { |
-class SingleThreadTaskRunner; |
-namespace trace_event { |
-class ConvertableToTraceFormat; |
-} |
-} |
- |
-namespace gpu { |
-class SyncPointManager; |
- |
-class GPU_EXPORT Scheduler { |
- public: |
- Scheduler(scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
- SyncPointManager* sync_point_manager); |
- |
- virtual ~Scheduler(); |
- |
- // Create a sequence with given priority. Returns an identifier for the |
- // sequence that can be used with SyncPonintManager for creating sync point |
- // release clients. Sequences start off as enabled (see |EnableSequence|). |
- SequenceId CreateSequence(SchedulingPriority priority); |
- |
- // Destroy the sequence and run any scheduled tasks immediately. |
- void DestroySequence(SequenceId sequence_id); |
- |
- // Enables the sequence so that its tasks may be scheduled. |
- void EnableSequence(SequenceId sequence_id); |
- |
- // Disables the sequence. |
- void DisableSequence(SequenceId sequence_id); |
- |
- // Schedules task (closure) to run on the sequence. The task is blocked until |
- // the sync token fences are released or determined to be invalid. Tasks are |
- // run in the order in which they are submitted. |
- void ScheduleTask(SequenceId sequence_id, |
- base::OnceClosure closure, |
- const std::vector<SyncToken>& sync_token_fences); |
- |
- // Continue running task on the sequence with the closure. This must be called |
- // while running a previously scheduled task. |
- void ContinueTask(SequenceId sequence_id, base::OnceClosure closure); |
- |
- // If the sequence should yield so that a higher priority sequence may run. |
- bool ShouldYield(SequenceId sequence_id); |
- |
- private: |
- class Sequence; |
- |
- struct SchedulingState { |
- static bool Comparator(const SchedulingState& lhs, |
- const SchedulingState& rhs) { |
- return rhs.RunsBefore(lhs); |
- } |
- |
- SchedulingState(); |
- SchedulingState(const SchedulingState& other); |
- ~SchedulingState(); |
- |
- bool RunsBefore(const SchedulingState& other) const { |
- return std::tie(priority, order_num) < |
- std::tie(other.priority, other.order_num); |
- } |
- |
- std::unique_ptr<base::trace_event::ConvertableToTraceFormat> AsValue() |
- const; |
- |
- SequenceId sequence_id; |
- SchedulingPriority priority = SchedulingPriority::kLowest; |
- uint32_t order_num = 0; |
- }; |
- |
- void SyncTokenFenceReleased(const SyncToken& sync_token, |
- uint32_t order_num, |
- SequenceId release_sequence_id, |
- SequenceId waiting_sequence_id); |
- |
- void TryScheduleSequence(Sequence* sequence); |
- |
- void RebuildSchedulingQueue(); |
- |
- Sequence* GetSequence(SequenceId sequence_id); |
- |
- void RunNextTask(); |
- |
- scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
- |
- SyncPointManager* const sync_point_manager_; |
- |
- mutable base::Lock lock_; |
- |
- // The following are protected by |lock_|. |
- bool running_ = false; |
- |
- base::flat_map<SequenceId, std::unique_ptr<Sequence>> sequences_; |
- |
- // Used as a priority queue for scheduling sequences. Min heap of |
- // SchedulingState with highest priority (lowest order) in front. |
- std::vector<SchedulingState> scheduling_queue_; |
- |
- // If the running sequence should yield so that a higher priority sequence can |
- // run. |
- bool should_yield_ = false; |
- |
- // If the scheduling queue needs to be rebuild because a sequence changed |
- // priority. |
- bool rebuild_scheduling_queue_ = false; |
- |
- base::ThreadChecker thread_checker_; |
- |
- base::WeakPtrFactory<Scheduler> weak_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(Scheduler); |
-}; |
- |
-} // namespace gpu |
- |
-#endif // GPU_COMMAND_BUFFER_SERVICE_SCHEDULER_H_ |