Wwise SDK 2022.1.18
|
以下各节列举并阐述了 2022.1.6 和 2022.1.7 版本之间针对 Wwise 所作的改进。
此处提供了有关平台的特定信息:
有关早期版本的信息,请参阅 过往版本的发行说明 章节。
WG-65225 在使用 Wwise 的默认内存分配器时,现在所有分配都会转到单个全局内存堆而非依赖于线程本地内存堆。这样应可显著降低 Wwise 在进程当中预留的内存量,确保整个过程中预留的内存更加稳定且可预测。
若发现由于 Wwise 中存在大量多线程活动而导致全局内存堆出现严重的 CPU 争用情况,现在可以使用为 Wwise 默认内存分配器新增的配置设置 AkMemSettings::uMaxThreadLocalHeapAllocSize
。您可以利用该设置来配置在怎样的阈值下由线程本地内存堆而非全局内存堆承担内存分配。该值默认设为 0。
注意,即便 AkMemSettings::uMaxThreadLocalHeapAllocSize
被设为非零值,未执行 AK::MemoryMgr::InitForThread
的线程上出现的内存分配也会使用全局内存堆。这样是为了避免在未执行 AK::MemoryMgr::InitForThread
或 AK::MemoryMgr::TermForThread
的非 Wwise 线程上与有些声音引擎 API 交互时意外创建线程本地内存堆。
另外,现在所有平台上通过调用 AkMemSettings::pfAllocVM
来预留新内存块的默认大小均为 2MiB。这样可以更好地利用 2MiB 页映射。藉此,可减少声音引擎执行期间的转译后备缓冲区 (TLB) 缺失,进而略微提升性能。另外,现在的 rpmalloc 经过配置可缓存更少的未用内存,确保在内存用量较低的时候更加及时地释放内存。
AkDataCreatorBase::Grow()
可能会发生崩溃。AkInitSettings::uNumSamplesPerFrame
设置非二次方值的情况下运行声音引擎时,AK Convolution 挂起。UnregisterGameObj
会导致 AkGameSyncValueTreeItem::Term
触发断言。