blob: db25fec26c4f3f3d46e71acf2a856c0a151c3080 [file] [log] [blame]
// Copyright 2017 The Fuchsia 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 SCHEDULER_H
#define SCHEDULER_H
#include <memory>
class MsdIntelContext;
class CommandBuffer;
class Scheduler {
public:
virtual ~Scheduler() = default;
// Notifies the scheduler that a command buffer has been scheduled on the given context.
virtual void CommandBufferQueued(std::weak_ptr<MsdIntelContext> context) = 0;
// Notifies the scheduler that a command buffer has been completed on the given context.
virtual void CommandBufferCompleted(std::shared_ptr<MsdIntelContext> context) = 0;
// Selects the context whose command buffer will be executed next.
virtual std::shared_ptr<MsdIntelContext> ScheduleContext() = 0;
static std::unique_ptr<Scheduler> CreateFifoScheduler();
};
#endif // SCHEDULER_H