133 lines
9.3 KiB
HTML
133 lines
9.3 KiB
HTML
<html>
|
|
<head>
|
|
<title>Platform Details | Linux</title>
|
|
<link rel="stylesheet" href="style/docs.css">
|
|
<link rel="stylesheet" href="style/code_highlight.css">
|
|
<script type="text/javascript" src="scripts/language-selector.js"></script></head>
|
|
<body>
|
|
<div class="docs-body">
|
|
<div class="manual-toc">
|
|
<p>FMOD Engine User Manual 2.03</p>
|
|
<ul>
|
|
<li><a href="welcome.html">Welcome to the FMOD Engine</a></li>
|
|
<li><a href="studio-guide.html">Studio API Guide</a></li>
|
|
<li><a href="core-guide.html">Core API Guide</a></li>
|
|
<li class="manual-current-chapter manual-inactive-chapter"><a href="platforms.html">Platform Details</a><ul class="subchapters"><li><a href="platforms-win.html">Windows</a></li><li><a href="platforms-mac.html">Mac</a></li><li class="manual-current-chapter manual-active-chapter"><a href="platforms-linux.html">Linux</a></li><li><a href="platforms-ios.html">iOS</a></li><li><a href="platforms-android.html">Android</a></li><li><a href="platforms-openharmony.html">Open Harmony</a></li><li><a href="platforms-uwp.html">Universal Windows Platform</a></li><li><a href="platforms-html5.html">HTML5</a></li></ul></li>
|
|
<li><a href="white-papers.html">White Papers</a></li>
|
|
<li><a href="studio-api.html">Studio API Reference</a></li>
|
|
<li><a href="core-api.html">Core API Reference</a></li>
|
|
<li><a href="fsbank-api.html">FSBank API Reference</a></li>
|
|
<li><a href="plugin-api.html">Plug-in API Reference</a></li>
|
|
<li><a href="effects-reference.html">Effects Reference</a></li>
|
|
<li><a href="troubleshooting.html">Troubleshooting</a></li>
|
|
<li><a href="glossary.html">Glossary</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="manual-content api">
|
|
<h1>4. Platform Details | Linux</h1>
|
|
<div class="toc">
|
|
<ul>
|
|
<li><a href="#linux-specific-starter-guide">Linux Specific Starter Guide</a><ul>
|
|
<li><a href="#sdk-version">SDK Version</a></li>
|
|
<li><a href="#compatibility">Compatibility</a></li>
|
|
<li><a href="#libraries">Libraries</a></li>
|
|
<li><a href="#device-selection">Device Selection</a></li>
|
|
<li><a href="#thread-affinity">Thread Affinity</a></li>
|
|
<li><a href="#thread-priority">Thread Priority</a></li>
|
|
<li><a href="#troubleshooting">Troubleshooting</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#performance-reference">Performance Reference</a><ul>
|
|
<li><a href="#format-choice">Format Choice</a></li>
|
|
<li><a href="#channel-count">Channel Count</a><ul>
|
|
<li><a href="#settings">Settings</a></li>
|
|
<li><a href="#test-device">Test Device</a></li>
|
|
<li><a href="#results">Results</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<h2 id="linux-specific-starter-guide"><a href="#linux-specific-starter-guide">Linux Specific Starter Guide</a></h2>
|
|
<h3 id="sdk-version"><a href="#sdk-version">SDK Version</a></h3>
|
|
<p>FMOD is compiled using the following tools.</p>
|
|
<ul>
|
|
<li><strong>LLVM/Clang</strong> - version 10.</li>
|
|
</ul>
|
|
<h3 id="compatibility"><a href="#compatibility">Compatibility</a></h3>
|
|
<p>FMOD supports systems that provide ALSA v0.9.0rc4 or newer for the following architectures:</p>
|
|
<ul>
|
|
<li><strong>x86</strong> - requires SSE2, optimized with SSE3 if detected at runtime, minimum GNU C library GLIBC_2.2, minimum GNU C++ library CXXABI_1_3, GLIBCXX_3.4.</li>
|
|
<li><strong>x86_64</strong> - requires SSE2 (implied by x86_64), optimized with SSE3 or AVX if detected at runtime, minimum GNU C library GLIBC_2.2.5, minimum GNU C++ library CXXABI_1_3, GLIBCXX_3.4.</li>
|
|
<li><strong>arm</strong> - requires armv7 or newer with NEON, hard float ABI (gnueabihf), minimum GCC library GCC_3.5, minimum GNU C library GLIBC_2.4, minimum GNU C++ library CXXABI_1_3, GLIBCXX_3.4.</li>
|
|
<li><strong>arm64</strong> - requires armv8, minimum GCC library GCC_3.5, minimum GNU C library GLIBC_2.17, minimum GNU C++ library CXXABI_1_3, GLIBCXX_3.4.</li>
|
|
</ul>
|
|
<h3 id="libraries"><a href="#libraries">Libraries</a></h3>
|
|
<p><em>Substitute $ARCH with your desired architecture from the 'Compatibility' list above.</em></p>
|
|
<p>Core API library</p>
|
|
<ul>
|
|
<li><strong>/api/core/lib/$ARCH/libfmod.so</strong> - Release binary for production code.</li>
|
|
<li><strong>/api/core/lib/$ARCH/libfmodL.so</strong> - Release binary with logging enabled for development.</li>
|
|
</ul>
|
|
<p>Studio API library (used in conjunction with the Core API library)</p>
|
|
<ul>
|
|
<li><strong>/api/studio/lib/$ARCH/libfmodstudio.so</strong> - Release binary for production code.</li>
|
|
<li><strong>/api/studio/lib/$ARCH/libfmodstudioL.so</strong> - Release binary with logging enabled for development.</li>
|
|
</ul>
|
|
<h3 id="device-selection"><a href="#device-selection">Device Selection</a></h3>
|
|
<p>FMOD defaults to using PulseAudio if available if no device is specified via <a class="apilink" href="core-api-system.html#system_setoutput">System::setOutput</a>. The environment variable <code>FMOD_ALSA_DEVICE</code> can be used to override this behavior, causing FMOD to use ALSA by default. It will also select the device specified by the variable value, if found, by default. Device names are as specified by the output of <code>aplay -L</code>.</p>
|
|
<p>Depending on the configuration of ALSA, a device that otherwise functions correctly may not be listed in the output of <code>aplay -L</code>, and as a result won't be available to FMOD. If this is the case, you may need to either add a namehint to the device's <code>.asoundrc</code> configuration file, or set <code>defaults.namehint.showall</code> to <code>on</code> in your ALSA configuration file <code>/usr/share/alsa/alsa.conf</code>.</p>
|
|
<h3 id="thread-affinity"><a href="#thread-affinity">Thread Affinity</a></h3>
|
|
<p>All threads will default to <a class="apilink" href="core-api-common.html#fmod_thread_affinity_core_all">FMOD_THREAD_AFFINITY_CORE_ALL</a>, it is not currently possible to override this with <a class="apilink" href="core-api-common.html#thread_setattributes">Thread_SetAttributes</a>.</p>
|
|
<h3 id="thread-priority"><a href="#thread-priority">Thread Priority</a></h3>
|
|
<p>The relationship between FMOD platform agnostic thread priority and the platform specific values is as follows:</p>
|
|
<ul>
|
|
<li><a class="apilink" href="core-api-common.html#fmod_thread_priority_low">FMOD_THREAD_PRIORITY_LOW</a> ~ 75</li>
|
|
<li><a class="apilink" href="core-api-common.html#fmod_thread_priority_medium">FMOD_THREAD_PRIORITY_MEDIUM</a> ~ 80</li>
|
|
<li><a class="apilink" href="core-api-common.html#fmod_thread_priority_high">FMOD_THREAD_PRIORITY_HIGH</a> ~ 85</li>
|
|
<li><a class="apilink" href="core-api-common.html#fmod_thread_priority_very_high">FMOD_THREAD_PRIORITY_VERY_HIGH</a> ~ 90</li>
|
|
<li><a class="apilink" href="core-api-common.html#fmod_thread_priority_extreme">FMOD_THREAD_PRIORITY_EXTREME</a> ~ 97</li>
|
|
<li><a class="apilink" href="core-api-common.html#fmod_thread_priority_critical">FMOD_THREAD_PRIORITY_CRITICAL</a> ~ 99</li>
|
|
</ul>
|
|
<h3 id="troubleshooting"><a href="#troubleshooting">Troubleshooting</a></h3>
|
|
<p><a class="apilink" href="core-api-system.html#system_init">System::init</a> returns <a class="apilink" href="core-api-common.html#fmod_err_plugin_missing">FMOD_ERR_PLUGIN_MISSING</a>:<br />
|
|
This can happen if your machine is missing the ALSA library <code>libasound.so.2</code> for the desired architecture, almost any version of it will be sufficient. Please note that if you are on an x86_64 platform running an x86 application using FMOD you will need the x86 version of ALSA installed also.</p>
|
|
<h2 id="performance-reference"><a href="#performance-reference">Performance Reference</a></h2>
|
|
<p>This section is a companion for the <a href="white-papers-cpu-performance.html">CPU Performance</a> white paper and serves as a quick reference of facts targeting this platform.</p>
|
|
<h3 id="format-choice"><a href="#format-choice">Format Choice</a></h3>
|
|
<p>Each compression format provided in FMOD has a reason for being included, the below list will detail our recommendations for this platform. Formats listed as primary are considering the best choice, secondary formats should only be considered if the primary doesn't satisfy your requirements.</p>
|
|
<ul>
|
|
<li><strong>Vorbis</strong>: Primary format for all sounds.</li>
|
|
<li><strong>FADPCM</strong>: Secondary format if Vorbis CPU usage is too high for low spec machines.</li>
|
|
<li><strong>PCM</strong>: Not recommended.</li>
|
|
<li><strong>XMA</strong>: Unavailable.</li>
|
|
<li><strong>AT9</strong>: Unavailable.</li>
|
|
</ul>
|
|
<h3 id="channel-count"><a href="#channel-count">Channel Count</a></h3>
|
|
<p>To give developers an idea about the costs of a particular format we provide synthetic benchmark results. These results are based on simple usage of the Studio API using recommended configuration settings.</p>
|
|
<h4 id="settings"><a href="#settings">Settings</a></h4>
|
|
<ul>
|
|
<li><strong>Real channel count:</strong> 64</li>
|
|
<li><strong>Sample rate:</strong> 48 kHz</li>
|
|
<li><strong>Speaker mode:</strong> Stereo</li>
|
|
<li><strong>DSP block size:</strong> 1024 samples</li>
|
|
</ul>
|
|
<h4 id="test-device"><a href="#test-device">Test Device</a></h4>
|
|
<ul>
|
|
<li><strong>CPU:</strong> Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz</li>
|
|
<li><strong>OS:</strong> Ubuntu 20.10</li>
|
|
</ul>
|
|
<h4 id="results"><a href="#results">Results</a></h4>
|
|
<ul>
|
|
<li><strong>DSP with Vorbis:</strong> 15.41% (+/- 3.01%)</li>
|
|
<li><strong>DSP with FADPCM:</strong> 6.31% (+/- 0.25%)</li>
|
|
<li><strong>DSP with PCM:</strong> 2.65% (+/- 0.17%)</li>
|
|
<li><strong>Update at 60 FPS:</strong> 1.61% (+/- 0.16%)</li>
|
|
</ul></div>
|
|
|
|
<p class="manual-footer">FMOD Engine User Manual 2.03.07 (2025-04-02). © 2025 Firelight Technologies Pty Ltd.</p>
|
|
</body>
|
|
</html>
|
|
|
|
</div>
|