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

Unified Diff: gpu/command_buffer/service/scheduler.h

Issue 2881813002: Revert of gpu: GPU service scheduler. (Closed)
Patch Set: Created 3 years, 7 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_preferences.h ('k') | gpu/command_buffer/service/scheduler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « gpu/command_buffer/service/gpu_preferences.h ('k') | gpu/command_buffer/service/scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698