FMOD Engine User Manual 2.03

1. Welcome to the FMOD Engine | New in FMOD Engine 2.01

What's New in 2.01?

This section describes the major features introduced in the 2.01 release. See the Detailed Revision History for information regarding each patch release.

Performance improvements

With every release of FMOD performance is kept in mind, however particularly with this release a strong focus has been made to improve performance across several key areas.

This process involved improving existing and adding new hardware specific optimization for SSE, AVX, AVX2, AVX-512 and Neon instruction sets which cover all platforms FMOD currently targets.

Thread attributes

Prior to this release setting thread related attributes such as priority, stack size and thread affinity was split over several API locations (some platform specific).
Now we have a unified API for controlling all these values in a single place accessed via Thread_SetAttributes.

In 2.0 you could override the stack size for the stream, non-blocking and mixer threads using FMOD_ADVANCEDSETTINGS::stackSizeStream, FMOD_ADVANCEDSETTINGS::stackSizeNonBlocking and FMOD_ADVANCEDSETTINGS::stackSizeMixer respectively. These have all been removed in favor of using the new set attributes function as follows:

FMOD::Thread_SetAttributes(FMOD_THREAD_TYPE_STREAM,      FMOD_THREAD_AFFINITY_GROUP_DEFAULT, FMOD_THREAD_PRIORITY_DEFAULT, stackSizeStream);
FMOD::Thread_SetAttributes(FMOD_THREAD_TYPE_NONBLOCKING, FMOD_THREAD_AFFINITY_GROUP_DEFAULT, FMOD_THREAD_PRIORITY_DEFAULT, stackSizeNonBlocking);
FMOD::Thread_SetAttributes(FMOD_THREAD_TYPE_MIXER,       FMOD_THREAD_AFFINITY_GROUP_DEFAULT, FMOD_THREAD_PRIORITY_DEFAULT, stackSizeMixer);

In 2.0 you could override the affinity for all threads in a platform specific way, e.g. FMOD_UWP_SetThreadAffinity or FMOD_Android_SetThreadAffinity. These have all been removed in favor of using the new set attributes function as follows:

FMOD::Thread_SetAttributes(FMOD_THREAD_TYPE_MIXER, FMOD_THREAD_AFFINITY_CORE_5);
FMOD::Thread_SetAttributes(FMOD_THREAD_TYPE_STREAM, FMOD_THREAD_AFFINITY_CORE_3);

Additionally it's now possible to specify the thread priority for all FMOD threads using the same API.

Minor API differences

What's new since 2.00 initial release?

Improved CPU tracking

It is now possible to track both inclusive and exclusive CPU usage costs for the Studio update thread via Studio::Bus::getCPUUsage and Studio::EventInstance::getCPUUsage.

Improved memory tracking

It is now possible to track the instances and sample data memory usage for each System, Bus and EventInstance via Studio::System::getMemoryUsage, Studio::Bus::getCPUUsage and Studio::EventInstance::getCPUUsage respectively.

Stadia platform

Official support for the Stadia platform has been added.

Minor API differences