FMOD Engine User Manual 2.03
This section describes the major features introduced in the 2.01 release. See the Detailed Revision History for information regarding each patch release.
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.
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.
FMOD_ADVANCEDSETTINGS::commandQueueSize
fieldFMOD_OUTPUT_DESCRIPTION::polling
to FMOD_OUTPUT_DESCRIPTION::methoduserrealloc
callback is now optionalattenuationposition
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.
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.
Official support for the Stadia platform has been added.