aboutsummaryrefslogtreecommitdiff
path: root/PxShared/include/task/PxTaskManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'PxShared/include/task/PxTaskManager.h')
-rw-r--r--PxShared/include/task/PxTaskManager.h231
1 files changed, 0 insertions, 231 deletions
diff --git a/PxShared/include/task/PxTaskManager.h b/PxShared/include/task/PxTaskManager.h
deleted file mode 100644
index f40f7b1..0000000
--- a/PxShared/include/task/PxTaskManager.h
+++ /dev/null
@@ -1,231 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and related documentation and
-// any modifications thereto. Any use, reproduction, disclosure, or
-// distribution of this software and related documentation without an express
-// license agreement from NVIDIA Corporation is strictly prohibited.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXTASK_PXTASKMANAGER_H
-#define PXTASK_PXTASKMANAGER_H
-
-#include "task/PxTaskDefine.h"
-#include "foundation/PxSimpleTypes.h"
-#include "foundation/PxErrorCallback.h"
-
-namespace physx
-{
-
-PX_PUSH_PACK_DEFAULT
-
-class PxBaseTask;
-class PxTask;
-class PxLightCpuTask;
-typedef unsigned int PxTaskID;
-
-/**
-\brief Identifies the type of each heavyweight PxTask object
-
-\note This enum type is only used by PxTask and GpuTask objects, LightCpuTasks do not use this enum.
-
-@see PxTask
-@see PxLightCpuTask
-*/
-struct PxTaskType
-{
- /**
- * \brief Identifies the type of each heavyweight PxTask object
- */
- enum Enum
- {
- TT_CPU, //!< PxTask will be run on the CPU
- TT_GPU, //!< PxTask will be run on the GPU
- TT_NOT_PRESENT, //!< Return code when attempting to find a task that does not exist
- TT_COMPLETED //!< PxTask execution has been completed
- };
-};
-
-class PxCpuDispatcher;
-class PxGpuDispatcher;
-
-/**
- \brief The PxTaskManager interface
-
- A PxTaskManager instance holds references to user-provided dispatcher objects, when tasks are
- submitted the PxTaskManager routes them to the appropriate dispatcher and handles task profiling if enabled.
- Users should not implement the PxTaskManager interface, the SDK creates it's own concrete PxTaskManager object
- per-scene which users can configure by passing dispatcher objects into the PxSceneDesc.
-
-
- @see CpuDispatcher
- @see PxGpuDispatcher
-
-*/
-class PxTaskManager
-{
-public:
-
- /**
- \brief Set the user-provided dispatcher object for CPU tasks
-
- \param[in] ref The dispatcher object.
-
- @see CpuDispatcher
- */
- virtual void setCpuDispatcher(PxCpuDispatcher& ref) = 0;
-
- /**
- \brief Set the user-provided dispatcher object for GPU tasks
-
- \param[in] ref The dispatcher object.
-
- @see PxGpuDispatcher
- */
- virtual void setGpuDispatcher(PxGpuDispatcher& ref) = 0;
-
- /**
- \brief Get the user-provided dispatcher object for CPU tasks
-
- \return The CPU dispatcher object.
-
- @see CpuDispatcher
- */
- virtual PxCpuDispatcher* getCpuDispatcher() const = 0;
-
- /**
- \brief Get the user-provided dispatcher object for GPU tasks
-
- \return The GPU dispatcher object.
-
- @see PxGpuDispatcher
- */
- virtual PxGpuDispatcher* getGpuDispatcher() const = 0;
-
- /**
- \brief Reset any dependencies between Tasks
-
- \note Will be called at the start of every frame before tasks are submitted.
-
- @see PxTask
- */
- virtual void resetDependencies() = 0;
-
- /**
- \brief Called by the owning scene to start the task graph.
-
- \note All tasks with with ref count of 1 will be dispatched.
-
- @see PxTask
- */
- virtual void startSimulation() = 0;
-
- /**
- \brief Called by the owning scene at the end of a simulation step to synchronize the PxGpuDispatcher
-
- @see PxGpuDispatcher
- */
- virtual void stopSimulation() = 0;
-
- /**
- \brief Called by the worker threads to inform the PxTaskManager that a task has completed processing
-
- \param[in] task The task which has been completed
- */
- virtual void taskCompleted(PxTask& task) = 0;
-
- /**
- \brief Retrieve a task by name
-
- \param[in] name The unique name of a task
- \return The ID of the task with that name, or TT_NOT_PRESENT if not found
- */
- virtual PxTaskID getNamedTask(const char* name) = 0;
-
- /**
- \brief Submit a task with a unique name.
-
- \param[in] task The task to be executed
- \param[in] name The unique name of a task
- \param[in] type The type of the task (default TT_CPU)
- \return The ID of the task with that name, or TT_NOT_PRESENT if not found
-
- */
- virtual PxTaskID submitNamedTask(PxTask* task, const char* name, PxTaskType::Enum type = PxTaskType::TT_CPU) = 0;
-
- /**
- \brief Submit an unnamed task.
-
- \param[in] task The task to be executed
- \param[in] type The type of the task (default TT_CPU)
-
- \return The ID of the task with that name, or TT_NOT_PRESENT if not found
- */
- virtual PxTaskID submitUnnamedTask(PxTask& task, PxTaskType::Enum type = PxTaskType::TT_CPU) = 0;
-
- /**
- \brief Retrieve a task given a task ID
-
- \param[in] id The ID of the task to return, a valid ID must be passed or results are undefined
-
- \return The task associated with the ID
- */
- virtual PxTask* getTaskFromID(PxTaskID id) = 0;
-
- /**
- \brief Release the PxTaskManager object, referenced dispatchers will not be released
- */
- virtual void release() = 0;
-
- /**
- \brief Construct a new PxTaskManager instance with the given [optional] dispatchers
- */
- static PxTaskManager* createTaskManager(PxErrorCallback& errorCallback, PxCpuDispatcher* = 0, PxGpuDispatcher* = 0);
-
-protected:
- virtual ~PxTaskManager() {}
-
- /*! \cond PRIVATE */
-
- virtual void finishBefore(PxTask& task, PxTaskID taskID) = 0;
- virtual void startAfter(PxTask& task, PxTaskID taskID) = 0;
-
- virtual void addReference(PxTaskID taskID) = 0;
- virtual void decrReference(PxTaskID taskID) = 0;
- virtual int32_t getReference(PxTaskID taskID) const = 0;
-
- virtual void decrReference(PxLightCpuTask&) = 0;
- virtual void addReference(PxLightCpuTask&) = 0;
-
- /*! \endcond */
-
- friend class PxBaseTask;
- friend class PxTask;
- friend class PxLightCpuTask;
- friend class PxGpuWorkerThread;
-};
-
-PX_POP_PACK
-
-} // end physx namespace
-
-
-#endif // PXTASK_PXTASKMANAGER_H