2011-05-23 04:43:56 +02:00
|
|
|
/*
|
2011-05-23 05:46:40 +02:00
|
|
|
SCHEDULER-FRONTEND.hpp - access point to the scheduler within the renderengine
|
2011-05-23 04:43:56 +02:00
|
|
|
|
|
|
|
|
Copyright (C) Lumiera.org
|
2011-05-23 05:46:40 +02:00
|
|
|
2011, Hermann Vosseler <Ichthyostega@web.de>
|
2011-05-23 04:43:56 +02:00
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
|
modify it under the terms of the GNU General Public License as
|
|
|
|
|
published by the Free Software Foundation; either version 2 of
|
|
|
|
|
the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
2011-05-23 05:46:40 +02:00
|
|
|
#ifndef BACKEND_ENGINE_SCHEDULER_FRONTEND_H
|
|
|
|
|
#define BACKEND_ENGINE_SCHEDULER_FRONTEND_H
|
2011-05-23 04:43:56 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-05-23 05:46:40 +02:00
|
|
|
//using std::list;
|
2013-09-01 19:48:17 +02:00
|
|
|
#include "lib/singleton.hpp"
|
2011-05-23 04:43:56 +02:00
|
|
|
|
|
|
|
|
|
2011-05-23 05:46:40 +02:00
|
|
|
namespace backend{
|
2011-05-23 04:43:56 +02:00
|
|
|
namespace engine {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2013-09-01 19:48:17 +02:00
|
|
|
* Access point to the scheduler service provided by the back-end.
|
|
|
|
|
* Proc-Layer uses this service as the primary means of instructing
|
|
|
|
|
* the backend; suitably prepared and wired frame render jobs are
|
|
|
|
|
* handed over to the scheduler for time-bound or bandwidth-controlled
|
|
|
|
|
* execution
|
|
|
|
|
*
|
2011-05-23 04:43:56 +02:00
|
|
|
* @todo this is planned to become the frontend
|
|
|
|
|
* to the render node network, which can be considered
|
|
|
|
|
* at the lower end of the middle layer; the actual
|
|
|
|
|
* render operations are mostly implemented by the backend
|
2013-09-01 19:48:17 +02:00
|
|
|
* @todo define the low-level scheduler interface and hook in
|
|
|
|
|
* the necessary calls to implement this frontend.
|
|
|
|
|
* ////////TODO WIP as of 9/2013
|
2011-05-23 04:43:56 +02:00
|
|
|
*/
|
2011-05-23 05:46:40 +02:00
|
|
|
class SchedulerFrontend
|
2011-05-23 04:43:56 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2013-09-01 19:48:17 +02:00
|
|
|
/** access point to the Engine Interface.
|
|
|
|
|
* @internal this is an facade interface for internal use
|
|
|
|
|
* by the player. Client code should use the Player.
|
|
|
|
|
*/
|
|
|
|
|
static lib::Singleton<SchedulerFrontend> instance;
|
|
|
|
|
|
|
|
|
|
|
2011-05-23 04:43:56 +02:00
|
|
|
///// TODO: find out about the public operations
|
|
|
|
|
// note: the play controller lives in the proc-layer,
|
2013-01-12 11:17:29 +01:00
|
|
|
// but is a subsystem separate of the session.
|
2011-05-23 04:43:56 +02:00
|
|
|
|
2013-09-01 19:48:17 +02:00
|
|
|
protected:
|
|
|
|
|
void activateTracing();
|
|
|
|
|
void disableTracing(); ///< EX_FREE
|
|
|
|
|
|
|
|
|
|
friend class SchedulerDiagnostics;
|
|
|
|
|
|
2011-05-23 04:43:56 +02:00
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
2011-05-23 05:46:40 +02:00
|
|
|
}} // namespace backend::engine
|
2011-05-23 04:43:56 +02:00
|
|
|
#endif
|