The August 2013 release of the Xbox One XDK from Microsoft contains the following new features, tools, and documentation. For features that shipped in a previous release of the Xbox One XDK, see the What’s New document for that release, available from Features Introduced in Previous Releases.
Sections:
The most recent release notes for and updates to the Xbox One XDK can always be found on Xbox One XDK Software Downloads on the Xbox Game Developer site. For access, log in with your ID and password on https://developer.microsoft.com/en-us/games/xbox/partner/index; at the top of the page, point to Development and click Downloads.
You can check with your account manager for the latest information about upcoming Xbox One XDK releases.
The August 2013 Xbox One XDK contains the latest tools and libraries for Xbox One.
First Approved Libraries
The August 2013 XDK QFE 3 release includes the first approved libraries for Xbox One launch titles! Titles intending to enter final certification must link against August 2013 XDK QFE 3 or a later release.
We are committed to supporting you throughout the final phases of shipping your title. We are prepared to issue quick fix engineering (QFE) releases based on your needs. Please engage with your developer account manager should you require urgent bug fixes.
We may require launch titles to pick up additional QFE releases that address critical security, performance or functionality issues prior to entry into final certification. We strive to minimize the number and impact of any required QFEs, but please plan on QFE integrations leading up to your final certification dates.
Xbconfig support for unhandled exceptions in kernel-mode code
By default, if an unhandled kernel exception is encountered in the exclusive OS, the exclusive partition attempts to shut down. If the partition does not safely shut down in 10 seconds, the partition is terminated. This is the same as retail console behavior.
In this release, xbconfig supports the EnableKernelDebugging flag for your use in controlling this behavior.
xbconfig.exe EnableKernelDebugging=1, your dev kit is configured to wait indefinitely for you to connect a kernel debugger (KD or WinDBG) after the exlusive OS encounters an unhandled kernel exception.xbconfig.exe EnableKernelDebugging=0 configures your dev kit to follow the default behavior and terminate the exclusive partition if it has not shut down within ten seconds after encountering an unhandled kernel exception.__XBOX_WAVESIM_ITERATION and __XBOX_ATTEMPT_WAVE_WIDENING
The flags __XBOX_WAVESIM_ITERATION and __XBOX_ATTEMPT_WAVE_WIDENING can be used to selectively improve shader compiler code generation. See the section under Graphics/Tools/Shaders and Shader Tools”.
SetPredication and ExecuteCommandList of Draw Bundles are now supported in Command Lists
The methods SetPredication and ExecuteCommandList for Draw Bundles may now be recorded into Command Lists.
PresentThreshold is now respected for DXGIXPresentArray
In the DXGIXPresentArray function, the parameter PresentImmediateThreshold is now respected. This parameter allows immediate-mode tearing when a frame runs over its budget and Vsync-locked swaps when hitting its frame-rate. This is similar to PRESENT_ONE/TWO_OR_IMMEDIATE on Xbox 360.
1x EQAA is now supported
Antialiasing with an extremely small footprint (1x EQAA) is now supported. For information about EQAA, see the Multisampling sample.
SetPredicationBuffer
On the interface ID3D11DeviceContextX, SetPredicationBuffer is a new D3D context method for setting GPU predication control via Compute shader and UAV writes. SetPredicationBuffer is analogous to SetPredication, but with SetPredicationBuffer, the predication is determined by a 32-bit value in the buffer rather than on visibility counts generated by the Render Backend.
Write Combining can be enabled for D3D contexts and dynamic resources
D3D11_CREATE_DEVICE_WRITE_COMBINED_COMMAND_BUFFERS and D3D11_CREATE_DEVICE_WRITE_COMBINED_DYNAMIC_BUFFERS can enable write-combined memory usage by the driver. Without these flags, D3D will create the resources in cacheable memory. The use of write-combined memory can cut down on cache pollution while rendering the frame. If dynamic resources are created in write-combined memory, callers of Map must be careful to abide by write-combined access rules (such as no reads by the CPU), otherwise poor CPU performance will result.
SetGraphicsShaderLimits and SetComputeShaderLimits
On the interface ID3D11DeviceContextX, the methods SetGraphicsShaderLimits and SetComputeShaderLimits provide GPU control over parameters such as the maximum number of GPU waves executed, CU masks, and the maximum number of simultaneous threadgroups.
CreateSamplerStateX, to access GPU sampler capabilities
On the interface ID3D11DeviceX, the method CreateSamplerStateX provides complete access to all GPU sampler capabilities.
AlphaToCoverageEnable now supports “enable but don’t dither”
In the D3D11_BLEND_DESC1 structure, the member AlphaToCoverageEnable now supports “enable but don’t dither”. A value of 2 now enables alpha-to-coverage without the default dither.
Flag for CreateDeferredContext to reduce CPU overhead and improve performance of Command Lists
A flag, D3D11_CREATE_DEFERRED_CONTEXT_TITLE_MANAGED_COMMAND_LIST_OBJECT_LIFETIMES, has been added to the options for the CreateDeferredContext method, to reduce CPU overhead and improve performance of Command Lists.
DXGIX_SWAP_CHAIN_FLAG flags for [16-235] color calibration and conversion from sRGB to REC709
The August 2013 XDK QFE3 adds the following new DXGIX_SWAP_CHAIN_FLAG flags.
DXGIX_SWAP_CHAIN_FLAG_QUANTIZATION_RGB_FULL supports color calibration from Full (black = 0, white = 255 for 8-bit) to Limited (black = 16, white = 235 for 8-bit).
DXGIX_SWAP_CHAIN_FLAG_COLORIMERTY_sRGB_TO_REC709 supports conversion from sRGB to REC709.
See the documentation for DXGI_SWAP_CHAIN_FLAG.
16-bit depth buffers with 8-bit stencil in Monolithic version of DXGI_FORMAT enumeration
The hardware supports 16-bit depth buffers with 8-bit stencil. The Stock DXGI_FORMAT enumeration does not support these formats; however, these formats are now available in Monolithic D3D. Refer to the following new enumeration constants in the DXGI_FORMAT enumeration:
These are natural extensions of the current mechanisms. For example, D16_UNORM_S8 is like the D24_UNORM_S8 variant, except D16_UNORM_S8 uses 16 bits for depth.
These formats offer higher performance when stencil is required but depth precision does not need to be very high for the scene being rendered - for example with certain shadow maps.
xbstorage utility for Connected Storage
There is a new command-line utility for Connected Storage: xbstorage.exe. This utility replaces the multi-step instructions for clearing local storage in previous XDK releases. Calling ‘xbstorage.exe reset /f’ will delete local Connected Storage data (but will not affect the state of saved data in the cloud).
CPU clock rate in August XDK QFE 2
In QFE 2 for the August 2013 XDK, the clock speed of the Xbox One CPU has been set to 1.75 GHz (up from 1.6 GHz). The GPU clock speed, which was set to 853 MHz in the Xbox One Beta Kit refresh, remains unchanged. To take advantage of the change in your title, simply install August 2013 XDK QFE 2, update your dev kit to the latest system recovery (flash), and deploy your title.
API and manifest changes supporting traffic selectors
There are two changes to the tags in the manifest, to support traffic selectors:
Below are details about the changes to the Windows::Xbox::Networking interface and the network manifest to support configuring port ranges and traffic selectors.
Changes to the XboxNetworkingManifest Node in the Appxmanifest are shown in the following example manifest:
<XboxNetworkingManifest>
<SocketDescriptions>
<SocketDescription Name="ConsoleSocket" SecureIpProtocol="Tcp" BoundPort="6001-6100">
<AllowedUsages>
<SecureDeviceSocketUsage Type="Initiate" />
<SecureDeviceSocketUsage Type="SendGameData" />
<SecureDeviceSocketUsage Type="ReceiveGameData" />
</AllowedUsages>
</SocketDescription>
<SocketDescription Name="DedicatedServerSocket" SecureIpProtocol="Tcp" BoundPort="7001-7032">
<AllowedUsages>
<SecureDeviceSocketUsage Type="Accept" />
<SecureDeviceSocketUsage Type="SendGameData" />
<SecureDeviceSocketUsage Type="ReceiveGameData" />
</AllowedUsages>
</SocketDescription>
</SocketDescriptions>
<SecureDeviceAssociationTemplates>
<SecureDeviceAssociationTemplate Name="TrafficSelectorAndDynamicServerPortSelectionExample" InitiatorSocketDescription="ConsoleSocket" AcceptorSocketDescription="DedicatedServerSocket" MultiplayerSessionRequirement="None">
<AllowedUsages>
<SecureDeviceAssociationUsage Type="InitiateFromMicrosoftConsole" />
<SecureDeviceAssociationUsage Type="AcceptOnOtherDevice" />
</AllowedUsages>
</SecureDeviceAssociationTemplate>
</SecureDeviceAssociationTemplates>
</XboxNetworkingManifest>
Applications are now able to declare inclusive port ranges for BoundPort attributes in their network manifests (e.g., “5000-5005” is now accepted in addition to the existing “12345”). There currently is no enforcement on the maximum number of ports that can be in the range, but this is expected to be “small” when referring to sockets that can be bound on the console (see SecureDeviceAssociationUsage), since no other application will be allowed to use any of the declared ports at the same time (this exclusivity is also not yet enforced). Port ranges relevant on the console cannot include reserved ports. Final limitations are still TBD, but let us know if you think a range of a couple hundred is not big enough. Titles should continue to use the special port 0 to represent sockets where they do not pick a specific port but have one assigned by the system in the ephemeral/dynamic range.
SecureDeviceAssociationUsage Type now includes options to specify initiator and acceptor usage. See below for details on valid values. Use the InitiateFromMicrosoftConsole value to indicate the console as the initiator. Use the AcceptOnOtherDevice value for specifying that the acceptor role on a particular template is for a dedicated server.
Changes to the Xbox Secure Sockets APIs:
[FlagsAttribute]
public enum class SecureDeviceAssociationUsage
{
Default = 0x00000000,
InitiateFromMicrosoftConsole = 0x00000001,
InitiateFromXboxLiveCompute = 0x00000002,
InitiateFromOtherDevice = 0x00000004,
AcceptOnMicrosoftConsole = 0x00000100,
AcceptOnXboxLiveCompute = 0x00000200,
AcceptOnOtherDevice = 0x00000400,
};
Note: Default implies InitiateFromMicrosoftConsole / XboxLiveCompute / OtherDevice and AcceptOnMicrosoftConsole / XboxLiveCompute / OtherDevice
New SecureDeviceAssociationUsage flags allow applications to describe the platform applicability of the respective initiator and acceptor SecureDeviceSocketDescription. The previous “Default” value continues to exist and generally mean all initiate/accept usages. However titles are strongly encouraged to make use of the appropriate non-default flags, particularly AcceptOnMicrosoftConsole vs. AcceptOnXboxLiveCompute and/or AcceptOn/FromOtherDevice for increased security and to avoid unnecessarily claiming ports on the console for traffic that will never actually occur.
public ref class SecureDeviceSocketDescription sealed
{
...
UINT16 BoundPortRangeLower;
UINT16 BoundPortRangeUpper;
...
}
To accommodate SecureDeviceSocketDescriptions having ranges and not just a single port, the BoundPort property was replaced by BoundPortRangeLower and BoundPortRangeUpper. When a single port is used, the two properties will both report that value. Titles that had been leveraging BoundPort to determine the port to bind will be broken at compile time, but can simply switch to BoundPortRangeLower to address this.
public ref class SecureDeviceAssociationTemplate sealed
{
...
Windows::Foundation::IAsyncOperation<SecureDeviceAssociation^>^CreateAssociationAsync(
[in] SecureDeviceAddress^ secureDeviceAddress,
[in] CreateSecureDeviceAssociationBehavior behavior
);
Windows::Foundation::IAsyncOperation<SecureDeviceAssociation^>^CreateAssociationForPortsAsync(
[in] SecureDeviceAddress^ secureDeviceAddress,
[in] CreateSecureDeviceAssociationBehavior behavior,
[in] HSTRING localPort,
[in] HSTRING remotePort
);
...
}
Aside from the special port 0, Xbox Secure Sockets still intends to operate on single ports when creating SecureDeviceAssociations. Titles must use SecureDeviceAssociationTemplate::CreateAssociationForPortsAsync to instantiate templates that involve port ranges with specific ports at runtime (via initiator and acceptor port number parameters). Attempting to use plain CreateAssociationAsync for templates referencing port ranges will be rejected.
The initiator and acceptor port numbers are passed as HSTRINGS. Titles will have to use their preferred sprintf variant and then ref new Platform::String(buffer).
CreateAssociationForPortsAsync assumes, individual child/”quick mode” SAs will be created with traffic selectors indicating the specific ports for both sides for each call, whereas CreateAssociationAsync continues to behave as before, creating a port-less traffic selector.
Guidance on a good hash algorithm to maximize success in choosing unique ports will be forthcoming.
NSAL Required
The Network Security Authorization List (NSAL) contained in the NSAL.json file specifies which network endpoints your title is able to access through sockets or with HTTP and HTTPS requests. In earlier releases, use of NSAL was optional unless your title was accessing its own web service. When is released, use of NSAL will be mandatory for all endpoints except for those on.
In this release (QFE2), the final enforcement code is available, but it is not yet mandatory. We are making this functionality available so that you can start working on your title’s NSAL, testing and refining it without interfering with other title work that might be blocked due to an incorrect NSAL when NSAL enforcement is enabled next week. Your Developer Account Manager (DAM) has resources that can help you get the right NSAL contents for your title.
In the QFE 3 release, NSAL will be mandatory for all network endpoints that do not involve. If an NSAL is not provided, then operations that would require an NSAL entry will fail silently.
Note that you can only provide a local NSAL file on a dev kit. On retail consoles, the NSAL is retrieved from and cannot be specified or modified locally.
Enabling and disabling optional enforcement:
Updating from XML to JSON: If your title has been using an NSAL, there are some changes that you must make to that file.
JSON format for NSAL: The NSAL consists of four arrays: EndPoints, SignaturePolicies, Certs, and RootCerts. In this release, EndPoints are supported and documented below. Expect documentation for the other elements in a future release. Endpoint: The following table describes the JSON elements that describe an endpoint.
| Property | Required | Description |
|---|---|---|
| Protocol | Yes | Can be “http” or “https”. |
| Port | No | Specifies the port number. If not specified and the protocol is http or https, then the default port for the protocol must be used. If the protocol is tcp or udp the port must be specified. |
| Host | Yes | Specifies the host identifier. |
| HostType | Yes | Specifies the type of identifier for the Host property. Can be one of: “fqdn”, “wildcard”, “ip”, or “cidr”. |
| Path | No | Specifies the resource path for the end point. This should match according to longest prefix rules. If not specified, then all paths are matched. Not specifying a path, setting Path to an empty string, and setting Path to “/” are all equivalent. |
| RelyingParty | No | Indicates that a token for the specified relying party must be used to authenticate. If not specified then a token is not needed. |
| SubRelyingParty | No | Reserved for future use. Not supported in this release. |
| TokenType | No | Can be “JWT” or “Default”. |
| ServerCertIndex | No | This is an array that contains one or two indices into the Cert array. Either should be treated as a valid. Indices are zero-based. This value is not used in this release. |
| ClientCertIndex | No | This is an array that contains one or two indices into the Cert array. Either should be treated a valid. Indices are zero-based. This value is not used in this release. |
| SignaturePolicyIndex | No | Indicates that requests must be signed according to the policy. The policy is obtained by using the integer value to index (zero-based indexing) into the SignaturePolicies array. If not specified then the request does not have to be signed. This value is not used in this release. |
Certificates and Root Certificates:
While this release does not support specifying the loading of certificates or root certificates in nsal.json, you can still provide certs for your use in accessing web services other than . Simply copy the .cer file(s) for the relevant certificates to the xs:\microsoft\certs directory on your dev kit, and the certificates will be found and used at runtime.
Example: The following is an example of an old nsal.xml file, and then the corresponding new nsal.json file.
<?xml version="1.0" encoding="utf-8"?>
<mappings>
<mapping
pattern="user.contoso.com"
target="http://user.contoso.com"
subtarget="http://user-msa.contoso.com"
tokenformat="deljwt"/>
<mapping
pattern="*.microsoft.com"
target="http://microsoft.com"
tokenformat="saml"/>
<mapping
pattern="microsoft.com/"
target="http://microsoft.com"
tokenformat="jwt"/>
</mappings>
The corresponding nsal.json file:
{
"EndPoints": [
{
"Protocol": "https",
"Host": "user.contoso.com",
"RelyingParty": "http://user.contoso.com",
"SubRelyingParty": "http://user-msa.contoso.com",
"TokenType": "DELJWT",
"HostType": "fqdn"
},
{
"Protocol": "https",
"Host": "*.microsoft.com",
"RelyingParty": "http://microsoft.com",
"TokenType": "SAML",
"HostType": "wildcard"
},
{
"Protocol": "https",
"Host": "microsoft.com",
"RelyingParty": "http://microsoft.com",
"TokenType": "JWT",
"HostType": "fqdn"
}]
}
What’s New: Stock Grammar Updates
Stock Grammars have been updated for August XDK. Stock Grammars in Speech Lab have been updated to include now 84 phrases for title usage (game and app titles). Stock Grammars wave collections are updated to include 20 males and 20 female speakers for each locale. The new wave collections enable developers better test and tune their title grammars. Please use SpeechLab’s new “Manage Repository” functionality to import the new wave collections into your SpeechLab audio repository.
Titles using stock grammars can refer to the documentation for guidance on stock grammar usage.
New BodyController.AssociatedControllerIds property
The BodyController class now contains an AssociatedControllerIds property that indicates which controllers are physically associated with that body. The association behavior is identical with that of current Automatic Controller Pairing, but it functions regardless of the body’s pairing to a signed in user. This API is most useful for titles that wish to know which body is holding a gamepad even if the body isn’t paired to a signed in user.
GetConsoleId API Added
QFE 2 for the August 2013 XDK includes new API, GetConsoleId. The API is only available when the console is configured as an XDK dev kit, and is only available to exclusive applications. The purpose of the API is to provide a way for a studio to watermark a build by displaying the console ID while the title is running. The console ID should not be transmitted off of the console.
WCHAR sz[CONSOLE_ID_CCH];
hr = GetConsoleId(sz, ARRAYSIZE(sz));
Direct3D Suspend and Resume APIs implemented and sample added
Performance improvements in the graphics driver require titles to explicitly notify Direct3D when suspending or resuming the title as part of PLM (Process Lifecycle Management). The API signatures were provided in the August XDK, but the functionality was stubbed out. Full functionality of the APIs is now provided in QFE 2 for the August 2013 XDK. A sample of the calling pattern, called “GPUSuspendAndResume”, is also provided with QFE 2.
Determining Networking Connectivity
The console needs network connectivity to be able to use a secure socket. Titles can check connectivity using the Windows::Networking::Connectivity::NetworkInformation::GetInternetConnectionProfile() API through the GetNetworkConnectivityLevel() method. Notifications about changes in connectivity level fire through the NetworkInformation::NetworkStatusChanged event. Note that because determining that connectivity has been lost or regained may take seconds, other APIs may appear to temporarily succeed as the state transitions. The recommendation is to not initiate network activity when the NetworkConnectivity API indicates connectivity isn’t available.
GetTemplateByName returns error for invalid usage combinations
Calling SecureDeviceAssociationTemplate::GetTemplateByName now returns ERROR_INVALID_FLAGS for invalid combinations of the SecureDeviceSocketUsage. Specifically combining Debug with either GameData or Chat usages will result in this error.
Chat and game data usages (ReceiveChat and SendChat, ReceiveGameData and SendGameData) indicate the intention to use secure communications, while the debug usages (ReceiveDebug and SendDebug) indicate the intention to send traffic in the clear. Traffic will be silently blocked for templates specifying chat or game data usages when no SecureDeviceAssociation is created for usages describing secure communications.
This error is to provide early warning of a misconfigured SecureDeviceAssociationTemplate.
Skeletal Tracking Reliability Improvements
Stock grammars have been updated in the August XDK! Stock grammars in Speech Lab have been updated to include now 84 phrases for title usage (game and app titles). Stock grammars wave collections are now updated to include 20 males and 20 female speakers for each locale. The new wave collections will enable developers better test and tune their title grammars. Please use SpeechLab’s new “Manage Repository” functionality to import the new wave collections into your SpeechLab audio repository. Titles using stock grammars should refer to SpeechLab Stock Grammars for guidance on stock grammar usage.
Skeletal Tracking Reliability Improvements
Seated tracking is improved for environments with couches and coffee tables, especially while leaning forward and back. In these conditions, the neck is more stable, the hips are more accurately placed, the segmentation mask is more reliable, and arms are less likely to lose tracking. These improvements also apply to cases where the user is standing and leaning forward. Lastly, the system scales more quickly and accurately to player size, resulting in increased tracking quality for kids.
GPU Clock Speed is Now 853MHz on Some GPUs
The GPU clockspeed increase introduced in July 2013 XDK QFE 1 has been brought over to the August 2013 XDK. The GPU clockspeed for beta refresh (black) consoles has been increased to 853MHz from 800MHz. In previous XDK releases, the GPU had been downclocked as a rough approximation for the GPU system reservation. That reservation has now been implemented and thus we have removed any downclocking. Note that the GPU clockspeed on older (“zebra”) devkits remains unchanged at 800MHz.
PIX API Capture Support for Monolithic D3D
In the August 2013 XDK, PIX enables API Captures of titles using the Monolithic D3D Runtime. The “Capture API Calls” option in PIX when capturing a GPU frame is respected and API calls will appear in the Events view.
PIX Programmatic Access to CPU Performance Counters
In the August 2013 XDK, titles can read a subset of the Performance Monitor Counters (PMC) of the Xbox One CPU directly from title code. Titles must use the new ConfigurePMCs function and there are a number of expectations about this functionality, including impact to the monitoring of these counters in PIX. Please read Processor Core Allocation and Performance Monitoring for detailed information.
PIX XMemAlloc Counters in System Monitor
PIX in the August 2013 XDK adds a set of new Title Memory counters to System Monitor to support tuning the hysteresis values of the default XMemAlloc implementation for the D3D and graphics driver heaps. Refer to the XMem API Reference and the forthcoming “Tracking and Controlling Memory Allocations with XMemAlloc” whitepaper on XGD for more information.
Content Restriction Checks Enabled
You can now perform content restriction checks against users and guests. This allows you to determine whether or not content should be filtered from view based on the current active content restrictions. For more details, see Content Restriction.
Format of AppXManifest.xml Changed
In the August 2013 XDK, the format of the AppXManifest.xml file has changed.
The <Package> element has two new attributes, xmlns:mx=”http://schemas.microsoft.com/appx/2013/xbox/manifest” and IgnorableNamespaces=”mx” <ApplicationEnvironment></ApplicationEnvironment> becomes <mx:ApplicationEnvironment></mx:ApplicationEnvironment>. <OSName>, <ViewStates>, <ViewState>, any Xbox specific <Capability>, <Rating>, must all be in the mx namespace.
Xbox specific application <Extension> fields, like <XboxLive> become:
<mx:Extension>
<mx:XboxLive />
</mx:Extension>
Xbox specific package <Extension> fields like <Kinect> become:
<mx:PackageExtension>
<mx:Kinect>
<mx:AudioPipeline />
Multiplane Presentation APIs
The August 2013 XDK introduces multiplane presentation APIs. See the “Hardware Overlays and Swap Chains” section of DirectX for details.
Activation Timeout Changes
In the August 2013 XDK, the following changes to process lifetime management timing have changed.
New Features in Game DVR
The August 2013 Xbox One XDK introduces the following changes for Game DVR.
Enhanced Debugging Capabilities
You can now debug packages that are installed on the console without needing a project or modifying the AUMID override option in Visual Studio. You can also debug apps that are started via protocol activation.
Requirements: Windows 8 (in order for Visual Studio to show the menu item)
Limitations:
Custom Lexicon File Now Supported in SpeechLab
SpeechLab now allows you to use custom lexicon files (.pls). If authoring directly in SpeechLab, you can select the lexicon file you want to use per locale. If importing a CFG file, SpeechLab will automatically use the lexicon file contained in the CFG.
External Rule-refs Now Supported in SpeechLab
Importing GRXML or CFG files that contain references to other GRXML/CFG files is now supported. All files being imported must be in the same directory.
Xbox Cloud Compute Quarantine Implemented
The implementation of the ServerStateLifetimeManagement::Quarantine method (signature already relased with a previous XDK) is completed. When called this method will now change the state of the server.
Speech Recognizers for Non-supported Locales
Beginning with the August 2013 XDK, developers can create a recognizer in a specific language in locales which are not supported by speech by default. Use CreateSpeechRecognizerForLocale() to pass in a LANGID that matches a locale supported by the title.
In other words, in a scenario where the console language/locale is set to locale without speech support and, by default speech is not enabled, the title can present a menu option to the user to select a language that is supported by the title. This API provides support for the Speech Language Support Xbox Requirement.
XAudio2 Performance Improvements
In the August 2013 XDK, several of the commonly used XAudio2 methods have been code optimized to improve the CPU performance of XAudio2.
Multichannel XMA Streaming
In the August 2013 XDK, multichannel XMA can now be streamed in XAudio2. We have added a new API (ApuHeapGetState) that reports physical memory usage in the audio hardware processor.
Game Chat Bug Fixes
In the August 2013 XDK, various bugs have been fixed so that game chat is now more robust and usable. Additionally, headsets (in addition to Kinect) can now be used for game chat.
HD Audio Enhancements
The August 2013 XDK includes proper handling of audio when apps shutdown so that there is no stuttering. The release also includes general audio playback robustness improvements. 5.1 (in addition to 7.1 and Stereo) is now available for TVs and AVRs to request via their EDIDs. Finally, exclusive apps can determine via a new API how many channels are being rendered to.