Games Task Scheduler (GTS)
A multi-processor scheduling framework for games engines
gts::DagUtils Struct Reference

Public Types

enum  NodePropertyFlags : uint32_t {
  NAME = 0x01 , COST = 0x02 , UPRANK = 0x04 , DOWNRANK = 0x08 ,
  ALL = uint32_t(-1)
}
 

Static Public Member Functions

static void printToDot (const char *filename, Node *pDagRoot, NodePropertyFlags propertiesToPrint=NAME)
 
static void totalWork (uint64_t &outTotalWork, size_t &outNodeCountNode, Node *pDagRoot)
 
static void getCriticalPath (Vector< Node * > &out, Vector< Node * > &dag)
 
static void workOnCriticalPath (uint64_t &outWork, Vector< Node * > const &criticalPath)
 
static bool isAcyclic (Node *pDagRoot)
 
static void generateRandomDag (MacroScheduler *pMacroScheduler, uint32_t randSeed, uint32_t rank, uint32_t minNodesPerRank, uint32_t maxNodesPerRank, uint32_t precentChanceOfEdge, Vector< Node * > &dag)
 
static bool isATopologicalOrdering (Vector< Node * > &dag, Vector< uint32_t > const &executionOrderToCheck)