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

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

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/scheduler.cc ('k') | gpu/ipc/client/command_buffer_proxy_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/scheduler_unittest.cc
diff --git a/gpu/command_buffer/service/scheduler_unittest.cc b/gpu/command_buffer/service/scheduler_unittest.cc
deleted file mode 100644
index 43328b33577c1600cf9870720f9671b4a6b6d08d..0000000000000000000000000000000000000000
--- a/gpu/command_buffer/service/scheduler_unittest.cc
+++ /dev/null
@@ -1,335 +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.
-
-#include "gpu/command_buffer/service/scheduler.h"
-
-#include <algorithm>
-
-#include "base/bind.h"
-#include "base/memory/ptr_util.h"
-#include "base/test/test_simple_task_runner.h"
-#include "gpu/command_buffer/service/sync_point_manager.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace gpu {
-namespace {
-
-template <typename T>
-void RunFunctor(T functor) {
- functor();
-}
-
-template <typename T>
-base::OnceClosure GetClosure(T functor) {
- return base::BindOnce(&RunFunctor<T>, functor);
-}
-
-class SchedulerTest : public testing::Test {
- public:
- SchedulerTest()
- : task_runner_(new base::TestSimpleTaskRunner()),
- sync_point_manager_(new SyncPointManager),
- scheduler_(new Scheduler(task_runner_, sync_point_manager_.get())) {}
-
- protected:
- base::TestSimpleTaskRunner* task_runner() const { return task_runner_.get(); }
-
- SyncPointManager* sync_point_manager() const {
- return sync_point_manager_.get();
- }
-
- Scheduler* scheduler() const { return scheduler_.get(); }
-
- private:
- scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
- std::unique_ptr<SyncPointManager> sync_point_manager_;
- std::unique_ptr<Scheduler> scheduler_;
-};
-
-TEST_F(SchedulerTest, ScheduledTasksRunInOrder) {
- SequenceId sequence_id =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
-
- bool ran1 = false;
- scheduler()->ScheduleTask(sequence_id, GetClosure([&] { ran1 = true; }),
- std::vector<SyncToken>());
-
- bool ran2 = false;
- scheduler()->ScheduleTask(sequence_id, GetClosure([&] { ran2 = true; }),
- std::vector<SyncToken>());
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran2);
-}
-
-TEST_F(SchedulerTest, ContinuedTasksRunFirst) {
- SequenceId sequence_id =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
-
- bool ran1 = false;
- bool continued1 = false;
- scheduler()->ScheduleTask(sequence_id, GetClosure([&] {
- scheduler()->ContinueTask(
- sequence_id,
- GetClosure([&] { continued1 = true; }));
- ran1 = true;
- }),
- std::vector<SyncToken>());
-
- bool ran2 = false;
- scheduler()->ScheduleTask(sequence_id, GetClosure([&] { ran2 = true; }),
- std::vector<SyncToken>());
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
- EXPECT_FALSE(continued1);
- EXPECT_FALSE(ran2);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(continued1);
- EXPECT_FALSE(ran2);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran2);
-}
-
-TEST_F(SchedulerTest, SequencesRunInPriorityOrder) {
- SequenceId sequence_id1 =
- scheduler()->CreateSequence(SchedulingPriority::kLowest);
- bool ran1 = false;
- scheduler()->ScheduleTask(sequence_id1, GetClosure([&] { ran1 = true; }),
- std::vector<SyncToken>());
-
- SequenceId sequence_id2 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
- bool ran2 = false;
- scheduler()->ScheduleTask(sequence_id2, GetClosure([&] { ran2 = true; }),
- std::vector<SyncToken>());
-
- SequenceId sequence_id3 =
- scheduler()->CreateSequence(SchedulingPriority::kHighest);
- bool ran3 = false;
- scheduler()->ScheduleTask(sequence_id3, GetClosure([&] { ran3 = true; }),
- std::vector<SyncToken>());
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran3);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran2);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
-}
-
-TEST_F(SchedulerTest, SequencesOfSamePriorityRunInOrder) {
- SequenceId sequence_id1 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
- bool ran1 = false;
- scheduler()->ScheduleTask(sequence_id1, GetClosure([&] { ran1 = true; }),
- std::vector<SyncToken>());
-
- SequenceId sequence_id2 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
- bool ran2 = false;
- scheduler()->ScheduleTask(sequence_id2, GetClosure([&] { ran2 = true; }),
- std::vector<SyncToken>());
-
- SequenceId sequence_id3 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
- bool ran3 = false;
- scheduler()->ScheduleTask(sequence_id3, GetClosure([&] { ran3 = true; }),
- std::vector<SyncToken>());
-
- SequenceId sequence_id4 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
- bool ran4 = false;
- scheduler()->ScheduleTask(sequence_id4, GetClosure([&] { ran4 = true; }),
- std::vector<SyncToken>());
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran2);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran3);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran4);
-}
-
-TEST_F(SchedulerTest, SequenceWaitsForFence) {
- SequenceId sequence_id1 =
- scheduler()->CreateSequence(SchedulingPriority::kHighest);
- SequenceId sequence_id2 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
-
- CommandBufferNamespace namespace_id = CommandBufferNamespace::GPU_IO;
- CommandBufferId command_buffer_id = CommandBufferId::FromUnsafeValue(1);
-
- scoped_refptr<SyncPointClientState> release_state =
- sync_point_manager()->CreateSyncPointClientState(
- namespace_id, command_buffer_id, sequence_id2);
-
- uint64_t release = 1;
- bool ran2 = false;
- scheduler()->ScheduleTask(sequence_id2, GetClosure([&] {
- release_state->ReleaseFenceSync(release);
- ran2 = true;
- }),
- std::vector<SyncToken>());
-
- SyncToken sync_token(namespace_id, 0 /* extra_data_field */,
- command_buffer_id, release);
-
- bool ran1 = false;
- scheduler()->ScheduleTask(sequence_id1, GetClosure([&] { ran1 = true; }),
- {sync_token});
-
- task_runner()->RunPendingTasks();
- EXPECT_FALSE(ran1);
- EXPECT_TRUE(ran2);
- EXPECT_TRUE(sync_point_manager()->IsSyncTokenReleased(sync_token));
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
-
- release_state->Destroy();
-}
-
-TEST_F(SchedulerTest, SequenceDoesNotWaitForInvalidFence) {
- SequenceId sequence_id1 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
-
- SequenceId sequence_id2 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
- CommandBufferNamespace namespace_id = CommandBufferNamespace::GPU_IO;
- CommandBufferId command_buffer_id = CommandBufferId::FromUnsafeValue(1);
- scoped_refptr<SyncPointClientState> release_state =
- sync_point_manager()->CreateSyncPointClientState(
- namespace_id, command_buffer_id, sequence_id2);
-
- uint64_t release = 1;
- SyncToken sync_token(namespace_id, 0 /* extra_data_field */,
- command_buffer_id, release);
-
- bool ran1 = false;
- scheduler()->ScheduleTask(sequence_id1, GetClosure([&] { ran1 = true; }),
- {sync_token});
-
- // Release task is scheduled after wait task so release is treated as non-
- // existent.
- bool ran2 = false;
- scheduler()->ScheduleTask(sequence_id2, GetClosure([&] {
- release_state->ReleaseFenceSync(release);
- ran2 = true;
- }),
- std::vector<SyncToken>());
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
- EXPECT_FALSE(ran2);
- EXPECT_FALSE(sync_point_manager()->IsSyncTokenReleased(sync_token));
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran2);
- EXPECT_TRUE(sync_point_manager()->IsSyncTokenReleased(sync_token));
-
- release_state->Destroy();
-}
-
-TEST_F(SchedulerTest, ReleaseSequenceIsPrioritized) {
- SequenceId sequence_id1 =
- scheduler()->CreateSequence(SchedulingPriority::kNormal);
-
- bool ran1 = false;
- scheduler()->ScheduleTask(sequence_id1, GetClosure([&] { ran1 = true; }),
- std::vector<SyncToken>());
-
- SequenceId sequence_id2 =
- scheduler()->CreateSequence(SchedulingPriority::kLowest);
- CommandBufferNamespace namespace_id = CommandBufferNamespace::GPU_IO;
- CommandBufferId command_buffer_id = CommandBufferId::FromUnsafeValue(1);
- scoped_refptr<SyncPointClientState> release_state =
- sync_point_manager()->CreateSyncPointClientState(
- namespace_id, command_buffer_id, sequence_id2);
-
- uint64_t release = 1;
- bool ran2 = false;
- scheduler()->ScheduleTask(sequence_id2, GetClosure([&] {
- release_state->ReleaseFenceSync(release);
- ran2 = true;
- }),
- std::vector<SyncToken>());
-
- bool ran3 = false;
- SyncToken sync_token(namespace_id, 0 /* extra_data_field */,
- command_buffer_id, release);
- SequenceId sequence_id3 =
- scheduler()->CreateSequence(SchedulingPriority::kHighest);
- scheduler()->ScheduleTask(sequence_id3, GetClosure([&] { ran3 = true; }),
- {sync_token});
-
- task_runner()->RunPendingTasks();
- EXPECT_FALSE(ran1);
- EXPECT_TRUE(ran2);
- EXPECT_FALSE(ran3);
- EXPECT_TRUE(sync_point_manager()->IsSyncTokenReleased(sync_token));
-
- task_runner()->RunPendingTasks();
- EXPECT_FALSE(ran1);
- EXPECT_TRUE(ran3);
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
-
- release_state->Destroy();
-}
-
-TEST_F(SchedulerTest, ReleaseSequenceShouldYield) {
- SequenceId sequence_id1 =
- scheduler()->CreateSequence(SchedulingPriority::kLowest);
- CommandBufferNamespace namespace_id = CommandBufferNamespace::GPU_IO;
- CommandBufferId command_buffer_id = CommandBufferId::FromUnsafeValue(1);
- scoped_refptr<SyncPointClientState> release_state =
- sync_point_manager()->CreateSyncPointClientState(
- namespace_id, command_buffer_id, sequence_id1);
-
- uint64_t release = 1;
- bool ran1 = false;
- scheduler()->ScheduleTask(
- sequence_id1, GetClosure([&] {
- EXPECT_FALSE(scheduler()->ShouldYield(sequence_id1));
- release_state->ReleaseFenceSync(release);
- EXPECT_TRUE(scheduler()->ShouldYield(sequence_id1));
- ran1 = true;
- }),
- std::vector<SyncToken>());
-
- bool ran2 = false;
- SyncToken sync_token(namespace_id, 0 /* extra_data_field */,
- command_buffer_id, release);
- SequenceId sequence_id2 =
- scheduler()->CreateSequence(SchedulingPriority::kHighest);
- scheduler()->ScheduleTask(sequence_id2, GetClosure([&] { ran2 = true; }),
- {sync_token});
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran1);
- EXPECT_FALSE(ran2);
- EXPECT_TRUE(sync_point_manager()->IsSyncTokenReleased(sync_token));
-
- task_runner()->RunPendingTasks();
- EXPECT_TRUE(ran2);
-
- release_state->Destroy();
-}
-
-} // namespace
-} // namespace gpu
« no previous file with comments | « gpu/command_buffer/service/scheduler.cc ('k') | gpu/ipc/client/command_buffer_proxy_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698