Multithreading
Development Report
To date, DCS has performed most of the computational workload on a single thread (some audio components were moved to a separate thread). This was not a problem in most cases because the Graphics Processor Unit (GPU) did most of the work, and FPS was mostly limited by the performance of the GPU.
As DCS evolved, GPUs have become much more powerful whilst the performance of a single CPU core remained practically unchanged. Instead, CPU manufacturers increased the number of cores rather than the clock speed of individual cores. As a consequence, DCS performance has become CPU-limited. In parallel, DCS World has become much more complex with increased reliance on CPU calculations that has exacerbated the problem.
To improve efficiency of CPU resources usage, we have reworked the core of our engine. First, at the architectural level, it has been divided into two main threads: graphical and logical. This opens up new possibilities for further thread parallelization of calculations in both the logical and graphical parts of the engine independently.
Second, to meet the requirements of scalable multithreading, and the needs of modern graphics APIs, the graphical engine part has been significantly enhanced. In addition, many subsystems have been updated, or written from scratch.
Internal testing has begun, and we plan to release the updated DCS graphic engine (EDGE) next year. The initial release of Multithreading support will contain a fully reworked engine including preparation of the graphical frame and the separation of the graphical and logical parts onto two independent threads.
It should also be noted that the most significant performance improvements will be regarding larger missions. This will be a welcomed change, especially in multiplayer where unit numbers are typically far higher. VR performance will also see a significant performance improvement in large missions.
Stay tuned for upcoming releases.
|