29 #ifndef NVBLASTEXTPXTASKIMPL_H 30 #define NVBLASTEXTPXTASKIMPL_H 38 #include <condition_variable> 61 std::unique_lock<std::mutex> lk(m_mutex);
62 m_cv.wait(lk, [&] {
return m_count == 0; });
71 std::unique_lock<std::mutex> lk(m_mutex);
88 std::unique_lock<std::mutex> lk(m_mutex);
102 std::condition_variable m_cv;
117 return val < m_maxCount;
122 return m_current.fetch_add(1);
127 m_maxCount = maxCount;
131 std::atomic<uint32_t> m_current;
153 virtual void run()
override 156 uint32_t jobID = m_counter->next();
157 while (m_counter->isValid(jobID))
160 jobID = m_counter->next();
162 m_group->returnWorker(worker);
167 PxLightCpuTask::release();
173 virtual const char*
getName()
const override {
return "BlastGroupWorkerTask"; }
189 : m_taskManager(taskManager), m_sync(0), m_group(group) {}
192 virtual void setGroup(
TkGroup*)
override;
193 virtual uint32_t process(uint32_t)
override;
194 virtual void release()
override;
195 virtual bool wait(
bool block)
override;
198 static const uint32_t TASKS_MAX_COUNT = 16;
199 physx::PxTaskManager& m_taskManager;
209 #endif // NVBLASTEXTPXTASKIMPL_H bool isDone()
Definition: NvBlastExtPxTaskImpl.h:86
Definition: NvBlastExtPxTaskImpl.h:185
virtual void process(uint32_t jobId)=0
ExtAtomicCounter()
Definition: NvBlastExtPxTaskImpl.h:113
Definition: NvBlastExtPxTaskImpl.h:48
Definition: NvBlastExtPxTaskImpl.h:110
virtual const char * getName() const override
Definition: NvBlastExtPxTaskImpl.h:173
void reset(uint32_t maxCount)
Definition: NvBlastExtPxTaskImpl.h:125
void wait()
Definition: NvBlastExtPxTaskImpl.h:59
ExtGroupTaskManagerImpl(physx::PxTaskManager &taskManager, TkGroup *group)
Definition: NvBlastExtPxTaskImpl.h:188
uint32_t next()
Definition: NvBlastExtPxTaskImpl.h:120
Definition: NvBlastExtPxTask.h:55
ExtGroupWorkerTask()
Definition: NvBlastExtPxTaskImpl.h:142
ExtTaskSync(uint32_t count)
Definition: NvBlastExtPxTaskImpl.h:54
void notify()
Definition: NvBlastExtPxTaskImpl.h:68
void setCount(uint32_t count)
Definition: NvBlastExtPxTaskImpl.h:95
bool isValid(uint32_t val)
Definition: NvBlastExtPxTaskImpl.h:115
virtual void release() override
Definition: NvBlastExtPxTaskImpl.h:165
void setup(TkGroup *group, ExtAtomicCounter *counter, ExtTaskSync *sync)
Definition: NvBlastExtPxTaskImpl.h:146
virtual void run() override
Definition: NvBlastExtPxTaskImpl.h:153
Definition: NvBlastTkGroup.h:74
Definition: NvBlastTkGroup.h:101
Definition: NvBlastArray.h:37
Definition: NvBlastExtPxTaskImpl.h:139