Skip to content

Commit 94f69c5

Browse files
committed
workaround to respect alignment of tbb:task_group
1 parent 14b7e53 commit 94f69c5

2 files changed

Lines changed: 14 additions & 27 deletions

File tree

kernels/common/scene.cpp

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,6 @@ namespace embree
2727
{
2828
device->refInc();
2929

30-
#if defined(TASKING_INTERNAL)
31-
scheduler = nullptr;
32-
#elif defined(TASKING_TBB) && TASKING_TBB_USE_TASK_ISOLATION
33-
group = new tbb::isolated_task_group;
34-
#elif defined(TASKING_TBB)
35-
group = new tbb::task_group;
36-
#elif defined(TASKING_PPL)
37-
group = new concurrency::task_group;
38-
#endif
39-
4030
intersectors = Accel::Intersectors(missing_rtcCommit);
4131

4232
/* one can overwrite flags through device for debugging */
@@ -46,11 +36,8 @@ namespace embree
4636
scene_flags = (RTCSceneFlags) device->scene_flags;
4737
}
4838

49-
Scene::~Scene ()
39+
Scene::~Scene() noexcept
5040
{
51-
#if defined(TASKING_TBB) || defined(TASKING_PPL)
52-
delete group; group = nullptr;
53-
#endif
5441
device->refDec();
5542
}
5643

@@ -843,12 +830,12 @@ namespace embree
843830

844831
#if USE_TASK_ARENA
845832
if (join) {
846-
device->arena->execute([&]{ group->wait(); });
833+
device->arena->execute([&]{ group.wait(); });
847834
}
848835
else
849836
#endif
850837
{
851-
group->wait();
838+
group.wait();
852839
}
853840

854841
pause_cpu();
@@ -875,19 +862,19 @@ namespace embree
875862
if (join)
876863
{
877864
device->arena->execute([&]{
878-
group->run([&]{
865+
group.run([&]{
879866
tbb::parallel_for (size_t(0), size_t(1), size_t(1), [&] (size_t) { commit_task(); }, ctx);
880867
});
881-
group->wait();
868+
group.wait();
882869
});
883870
}
884871
else
885872
#endif
886873
{
887-
group->run([&]{
874+
group.run([&]{
888875
tbb::parallel_for (size_t(0), size_t(1), size_t(1), [&] (size_t) { commit_task(); }, ctx);
889876
});
890-
group->wait();
877+
group.wait();
891878
}
892879

893880
/* reset MXCSR register again */
@@ -928,10 +915,10 @@ namespace embree
928915

929916
try {
930917

931-
group->run([&]{
918+
group.run([&]{
932919
concurrency::parallel_for(size_t(0), size_t(1), size_t(1), [&](size_t) { commit_task(); });
933920
});
934-
group->wait();
921+
group.wait();
935922

936923
/* reset MXCSR register again */
937924
_mm_setcsr(mxcsr);

kernels/common/scene.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ namespace embree
2626
/*! Base class all scenes are derived from */
2727
class Scene : public AccelN
2828
{
29-
ALIGNED_CLASS_(16);
29+
ALIGNED_CLASS_(std::alignment_of<Scene>::value);
3030

3131
public:
3232
template<typename Ty, bool mblur = false>
@@ -137,7 +137,7 @@ namespace embree
137137
Scene (Device* device);
138138

139139
/*! Scene destruction */
140-
~Scene ();
140+
~Scene () noexcept;
141141

142142
private:
143143
/*! class is non-copyable */
@@ -302,11 +302,11 @@ namespace embree
302302
MutexSys schedulerMutex;
303303
Ref<TaskScheduler> scheduler;
304304
#elif defined(TASKING_TBB) && TASKING_TBB_USE_TASK_ISOLATION
305-
tbb::isolated_task_group* group;
305+
tbb::isolated_task_group group;
306306
#elif defined(TASKING_TBB)
307-
tbb::task_group* group;
307+
tbb::task_group group;
308308
#elif defined(TASKING_PPL)
309-
concurrency::task_group* group;
309+
concurrency::task_group group;
310310
#endif
311311

312312
public:

0 commit comments

Comments
 (0)