Skip to main content
本主題提供 XDSP API 的概觀。XDSP 可讓遊戲運用 XBOX Series X|S 世代主機上的硬體加速迴旋積混響 (Hardware Accelerated Convolution Reverb) 功能。目前的實作能夠即時處理 80 秒的脈衝響應。例如,同時即時處理 40 個串流,每個串流各有 2 秒的脈衝響應。

2022 年 10 月版本的新功能

版本功能

  • 對於迴旋積,支援的區塊大小為 512 和 1024 個框架。使用 1024 個框架的區塊大小時效能會較佳。
  • 對於 FFT/IFFT,支援的區塊大小為 512、1024 和 2048 個框架。
  • 迴旋積支援單聲道、立體聲及立體聲非交錯模式,並可搭配單聲道與立體聲脈衝響應。
  • 呼叫 XDspConnect 或 XDspConnectWithMaximumStreamLimit 會建立與硬體的連線並傳回 XDspClientHandle。在任何時間點最多只能有 8 個連線處於作用中狀態。
  • 呼叫 XDspConnect 時支援的 aggregateImpulseResponseInSeconds 上限為 128。這也是所有 XDspConnect 呼叫的總上限。如果單一 XDspConnect 呼叫的 aggregateImpulseResponseInSeconds 為 128,便無法再以大於 0 的 aggregateImpulseResponseInSeconds 值進行其他 XDspConnect 呼叫。aggregateImpulseResponseInSeconds 必須大於零,才能啟用串流進行迴旋積處理。
  • 對於 XDspConnect 傳回的指定 XDspClientHandle,最多可使用 XDspActivate 啟用 256 個串流。對於 XDspConnectWithMaximumStreamLimit 傳回的指定 XDspClientHandle,最多可使用 XDspActivate 啟用 maximumStreamCount 個串流,其中 maximumStreamCount 是 XDspConnectWithMaximumStreamLimit 呼叫中使用的串流數量。這些串流可以是任何 XDspProcessType。
  • 使用立體聲輸入時,支援的彙總脈衝響應上限會降為 64 秒。
  • 傳遞給 API 的所有緩衝區都必須以 16 位元組對齊。如果緩衝區未以 16 位元組對齊,硬體可能會發生錯誤並重設。當硬體發生當機/停止回應時,XDspStatus.result 會指出 XDSP_E_DEVICE_FATAL_ERROR。
  • 脈衝響應應位於頻域。我們提供了一個工具,可將時域的脈衝響應轉換為頻域。 請從 https://aka.ms/gdkdl 下載。
  • 脈衝響應轉換工具現在包含縮減支援,可讓您以降低品質來換取更高的效能。如需詳細資訊,請參閱 XDSP 脈衝響應縮減概觀。
  • 已改善 XDspConnect 呼叫的延遲。

已知問題

  • 在 FFT/IFFT 處理中,XDspActivationOptions 的 “EnablePolarFormat” 選項相較於效能較佳的預設笛卡兒格式,需要相當長的時間。

最佳做法

  • 即使硬體發生錯誤,提交給硬體的每個命令都會有回應。呼叫端應等候硬體處理完所有命令,再呼叫 XDspDeactivate 停用串流。XDspStatus.lastProcessedCommandSequence 會顯示硬體為此串流最後處理之命令的序號。其他 XDSP 串流不會受到影響,硬體會繼續處理它們的命令。
  • 傳遞給 XDspConnect 呼叫的 “baseBuffer” 不應在所有串流都已使用 XDspDeactivate 停用且 XDspDisconnect 成功之前釋放。
  • 每個串流都有內部佇列限制,達到此限制時,XDspSubmitCommand 會傳回 XDSP_E_QUEUE_FULL。遇到此錯誤時,請先給予硬體足夠的時間處理此串流的命令,再提交更多命令。XDspStatus.lastProcessedCommandSequence 可用來檢查硬體為此串流最後處理的命令。
  • 迴旋積使用 1024 區塊大小時的效能比使用 512 區塊大小時更好。
  • 迴旋積演算法在處理連續命令時並不一致,也就是說,並非所有區塊都需要相同的時間才能完成,有些區塊可能比其他區塊花費更長的時間。

暫停和繼續遊戲

遊戲必須能夠暫停和繼續,例如當使用者將其置於受限模式時。呼叫暫停處理常式時,只需停止向硬體提交 XDSP 命令即可。已提交的命令會正常處理,並據此更新 XDspStatus。

範例

  • 可從 https://aka.ms/gdkdl 及 ATG 範例下載。 範例逐步解說適用於單一串流迴旋積混響和單一串流 FFT IFFT
  • GDK 下載入口網站 https://aka.ms/gdkdl 中的其他範例也包含一個 XDSP 範例,該範例使用硬體加速器將時域的脈衝響應轉換為頻域。此範例產生的輸出與 GDK 安裝中隨附的 Impulse Response Transform 工具完全相同。此範例示範如何使用硬體加速即時轉換脈衝響應,以搭配 XDSP API 使用。

連絡方式

如果您對此功能有任何疑問或顧慮,請傳送電子郵件至 AnaAud@microsoft.com 或使用線上論壇。

參考 API 文件

Last modified on October 6, 2026