|
|
|
@ -389,6 +389,7 @@ enum ViewportDebugFlags {
|
|
|
|
|
VDF_DISABLE_DRAW_SPLIT,
|
|
|
|
|
VDF_SHOW_NO_LANDSCAPE_MAP_DRAW,
|
|
|
|
|
VDF_DISABLE_LANDSCAPE_CACHE,
|
|
|
|
|
VDF_DISABLE_THREAD,
|
|
|
|
|
};
|
|
|
|
|
uint32 _viewport_debug_flags;
|
|
|
|
|
|
|
|
|
@ -3651,9 +3652,13 @@ void ViewportDoDraw(Viewport *vp, int left, int top, int right, int bottom, uint
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_viewport_drawer_jobs++;
|
|
|
|
|
_general_worker_pool.EnqueueJob([](void *data1, void *data2, void *data3) {
|
|
|
|
|
ViewportDoDrawRenderJob(static_cast<Viewport *>(data1), static_cast<ViewportDrawerDynamic *>(data2));
|
|
|
|
|
}, vp, _vdd.release());
|
|
|
|
|
if (unlikely(HasBit(_viewport_debug_flags, VDF_DISABLE_THREAD))) {
|
|
|
|
|
ViewportDoDrawRenderJob(vp, _vdd.release());
|
|
|
|
|
} else {
|
|
|
|
|
_general_worker_pool.EnqueueJob([](void *data1, void *data2, void *data3) {
|
|
|
|
|
ViewportDoDrawRenderJob(static_cast<Viewport *>(data1), static_cast<ViewportDrawerDynamic *>(data2));
|
|
|
|
|
}, vp, _vdd.release());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_cur_dpi = old_dpi;
|
|
|
|
@ -3699,9 +3704,13 @@ static void ViewportDoDrawRenderJob(Viewport *vp, ViewportDrawerDynamic *vdd)
|
|
|
|
|
vdd->draw_jobs_active.store((uint)vdd->parent_sprite_sets.size(), std::memory_order_relaxed);
|
|
|
|
|
|
|
|
|
|
for (uint i = 1; i < (uint)vdd->parent_sprite_sets.size(); i++) {
|
|
|
|
|
_general_worker_pool.EnqueueJob([](void *data1, void *data2, void *data3) {
|
|
|
|
|
ViewportDoDrawRenderSubJob(static_cast<Viewport *>(data1), static_cast<ViewportDrawerDynamic *>(data2), static_cast<uint>(reinterpret_cast<uintptr_t>(data3)));
|
|
|
|
|
}, vp, vdd, reinterpret_cast<void *>(static_cast<uintptr_t>(i)));
|
|
|
|
|
if (unlikely(HasBit(_viewport_debug_flags, VDF_DISABLE_THREAD))) {
|
|
|
|
|
ViewportDoDrawRenderSubJob(vp, vdd, i);
|
|
|
|
|
} else {
|
|
|
|
|
_general_worker_pool.EnqueueJob([](void *data1, void *data2, void *data3) {
|
|
|
|
|
ViewportDoDrawRenderSubJob(static_cast<Viewport *>(data1), static_cast<ViewportDrawerDynamic *>(data2), static_cast<uint>(reinterpret_cast<uintptr_t>(data3)));
|
|
|
|
|
}, vp, vdd, reinterpret_cast<void *>(static_cast<uintptr_t>(i)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ViewportDoDrawRenderSubJob(vp, vdd, 0);
|
|
|
|
|