What’s New in the May 2014 Xbox One XDK

The May 2014 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:

Release Notes and Xbox One XDK Updates

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.

Xbox One XDK Version Info

The May 2014 Xbox One XDK contains the latest tools and libraries for Xbox One.

What’s new in the May 2014 XDK

Roadmap

The Xbox One Developer Roadmap on the XGD site has been updated with projections of developer-facing feature work from the June XDK through Q4 of this year. The roadmap is intended to help developers plan their implementation schedules around upcoming feature and tooling efforts for the Xbox One console and related services.

Table of Contents

PIX

Other Profiling Tools

Developer Tools

Audio

Graphics

Multiplayer

System

NUI

PIX

Function Summary and Callgraph Captures: Significant improved performance
The performance of analyzing the running title modules has been improved. This is particularly noticeable in repeated captures in the same session when the title has a large PDB because the PDB will likely be resident in the OS in-memory disk cache.

Dynamic CPU Profiling: Performance Monitoring Counters are now displayed in Function Summary and Callgraph captures
Performance Monitoring Counters are now displayed in Function Summary and Callgraph captures Function Summary and Callgraph captures in PIX now include PMC data for branch mispredictions, retired instructions, L1 data misses, and data TLB misses. These counters can help you determine which functions are the source of CPU performance issues.

CPU Instruction Tracing: Captures can now be taken for a specific function and UI navigation is improved
CPU Instruction Trace captures in PIX can now be gathered for a specific function using the context menu on Function Summary and Callgraph captures. The ability to limit a trace to only a function you suspect is causing a performance issue dramatically reduces the number of instructions you need to examine to determine the cause of the problem. Navigating through a trace is improved by making is much easier to filter the data by module and thread and by presenting the instruction summary and instruction tables on separate tabs.

Mesh view improvements
The Meshes view in PIX has been improved as follows:

New title memory counters in console view
The Title Memory counters in the PIX Console view have been updated to match the new TitleMemoryStatus function. These counters return more accurate information about the availability of memory in the Exclusive partition by adding specific counters for the Legacy Working Set and the Title Working Set.

Updates to Dr. PIX
Experiments within Dr. PIX have been reorganized to improve performance of individual categories. Additionally, a new experiment has been added to force [earthdepthstencil] and evaluate the benefits of Re-Z.

Resources view: Highlight of current draw and before draw
There are two new improvements to the Resources view for render targets:

Other Profiling Tools

Profile Guided Optimization (PGO) is now available to help improve your title’s performance
Profile Guided Optimization (PGO) is a common technique that has been used on Windows for years to generate more optimal CPU code based on profiling data. This technique is now available for Xbox One. Contact your account manager for more information.

Development Tools

Xbox One Manager
A GUI tool that eases the task of managing one or more consoles. This initial release supports installing a recovery and console setup, deploying a game, running and stopping a game, taking a screenshot and rebooting the console. For more information, see Xbox One Manager.

Linker speed improvements:
If you have code that makes extensive use of templates, you should see link times reduced by up to 15%.

Load Simulation (xbStress)
xbStress is a tool that simulate loads on the shared resource partition to test whether your title behaves correctly in stressful situations. For more information, see Stress (xbstress.exe).

Storage Management (xbCleanup)
xbCleanup is tool that helps you manage and cleanup the hard disk storage on your console. This is particularly useful for putting a console into a “known good state” before deploying an application. For more information, see Clean (xbcleanup.exe).

Improved performance for Push Deployment and File copy operations
Push deployment performance has been improved for both initial and subsequent incremental deployments. The improvements are as follows:

  1. Initial deployment (copying a complete game layout to the console): You should see around a 10% performance improvement compared with the April XDK.
  2. Incremental deployment: (for example updating the main exe of a game after a build) you should see somewhere between a 30% and 60% performance improvement depending on the size and layout of your game.

We’ve seen the largest improvements for games with large numbers of files. For example:

Example Game Number of Folders Number of Files Size (GB) Initial deployment Improvement Incremental Deployment Improvement (1 file updated)
Typical Game 1 3,000 150,000 60GB 13% 65%
Typical Game 2 200 4,000 55GB 6% 40%

Improved flexibility of the Pull Deployment mapping file
The pull deployment mapping file syntax now supports using wildcards to filter out files from mapped source folders. This gives you the ability to reduce the number of files that are included in your pull deployment without having to change your build process or layout on disk. For example:

<?xml version="1.0"?>  
<mappings>  
  <path source="f:\dev\sound\*.snd" target="\" />  
</mappings>  

For more information, see Pull Deployment.

Audio

Sound Mixer for Apps with snap and Volume Controls
The new sound mixer settings in the Xbox One Settings app allow consumers to control the volume levels of the running title and any app snapped alongside it. Consumers can also control the volume levels when they are using Kinect for chat.

Improved audio exclusion API for GameDVR
Previously, if a title wanted to exclude audio from being recorded in Game DVR clips, the developer had to use the “Communications” category on an IAudioClient instance. XAudio2-using middleware and titles can now pass the XAUDIO2_EXCLUDE_FROM_GAME_DVR_CAPTURE flag into CreateMasteringVoice to specify exclusion. WASAPI-using middleware and titles can utilize the IAudioClient2::ExcludeFromGameDVRCapture API.

Support for background music from a snapped app
Consumers can use a snapped app to provide background music for a game (the app must remain snapped for music playback to continue). The title music track (using an audio endpoint specifying the AudioCategory_GameMedia AUDIO_STREAM_CATEGORY in WASAPI or XAudio2 instance creation) will be muted while this app is playing music.

Graphics

Stock Direct3D support has been removed in the May 2014 XDK, in favor of Monolithic Direct3D
Beginning with the May 2014 XDK release, only the Monolithic Direct3D runtime will be available for XDK development. The Monolithic Direct3D runtime has been the focus of the XDK to deliver the best console specific performance improvements and Direct3D feature extensions for developers. With the addition of hardware accelerated video encoding/decoding support for Monolithic Direct3D in the March 2014 XDK release, it is time to retire the Stock Direct3D runtime. Titles should begin to take advantage of the Monolithic Direct3D runtime, if they have not done so previously.

DirectX Tiled Resources now available as preview on Xbox One
A preview of DirectX Tiled Resources functionality is now available. This is hardware supported tiling, also known as “virtual textures” or “mega textures”. Please see D3D11_RESOURCE_MISC_FLAG flags D3D11_RESOURCE_MISC_TILE_POOL and D3D11_RESOURCE_MISC_TILED. Also, see ID3D11DeviceContext2 Interface methods: UpdateTileMappings, CopyTileMappings, CopyTiles, UpdateTiles, ResizeTilePool, and TiledResourceBarrier.

New MultiDraw APIs
There are new APIs for dispatching multiple draws with a single call are now available in the ID3D11DeviceContextX Interface. The new methods are ID3D11DeviceContextX::MultiDrawIndexedInstancedIndirect, ID3D11DeviceContextX::MultiDrawInstancedIndirect, ID3D11DeviceContextX::MultiDrawIndexedInstancedIndirectAuto, and ID3D11DeviceContextX::MultiDrawInstancedIndirectAuto. The new API’s functionality is similar to OpenGL’s multi_draw_indirect.

For more information, see Multi-Draw calls.

Additional support for DecompressResource
The May 2014 Xbox One XDK release adds ID3D11DeviceContextX.DecompressResource and ID3D11DeviceContextX::DecompressResourceX support for sub-regions (destination point, source sub-rect), resources formatted with D3D11X_FORMAT extensions, and copy-based decompression (decompressing to destination resource while leaving source resource in a compressed state).

Async Compute support out of preview mode
Async Compute is now supported and is no longer in preview mode. For more information, see Optimizing Monolithic Driver Performance.

Fast Semantics has been improved and is no longer preview
SetFastResources and SetFastResourcesIntoBatch now support unordered access view objects and descriptors as input. They also now support shader resource views and unordered access views that have been created/composed on buffer resources. Buffer views must be explicitly identified by including the new D3D11X_SET_FAST_TYPE_BUFFER_VIEW flag in the D3D11X_SET_FAST type. When setting multiple contiguous views using multiple type arguments per D3D11X_SET_FAST parameter, all views in the series must be of texture resources, or all must be of buffer resources.

Additionally, SetFastResources and SetFastResourcesIntoBatchadded are now supported for ID3D11ComputeContextX. Fast Semantics is no longer a preview feature.

Multiplayer

Enumerating and Joining Game Parties
New APIs that enable titles to present joinable game parties to the end-user’s UI. To query for a list of users in parties for your title, call Windows.Xbox.Multiplayer.Party.GetUserPartyAssociationsAsync. To allow end-users to join those parties, call Windows.Xbox.Multiplayer.Party.JoinPartyByIdAsync. Party details can be retrieved using Windows.Xbox.Multiplayer.Party.GetPartyViewByPartyIdAsync so that you may render useful information to the end-user prior to selecting which party to join.

View members of an Xbox Live Chat Party
Titles can query the new Windows.Xbox.Multiplayer.PartyChatView APIs in order to view the members currently participating in the Xbox Live Chat Party, as well as listen for when the member list has changed.

People Picker
The new SystemUI.ShowPeoplePickerAsync Method allows a title to prompt the user with a system overlay menu to select a set of users. The caller can customize the instructions, the set of users to be displayed, the number of users that must be selected, and which users should already be selected when the UI is shown. The result is the list of the selected users.

Xbox Party Automation Support
The Xbuser command-line tool has been improved upon to support party automation scenarios. Below is a list of the new commands available:

Command Description
xbuser addlocaluserstoparty Create a party and add the local user to it
xbuser removelocalusersfromparty Removes a list of local users from the party
xbuser getpartyid Returns the party ID belonging to the title
xbuser invitetoparty Invite a list of users to the party
xbuser declineinvitetoparty Decline a party invite
xbuser acceptinvitetoparty Accept a party invite
xbuser getpartymembers List the members and the reserved members of the party

Synchronized Match and Game Registration
There are new APIs for registering game and match sessions, both of which now take a Windows.Xbox.Multiplayer.MultiplayerSessionReference as a comparator. This allows for cases where multiple party members attempt to match make at the same time but only one should succeed.

System

CancelIOEx for Exclusive Titles
Developers working on exclusive applications can now use CancelIoEx to provide finer control over their asynchronous IO operations.

Better support for snapping apps
Developers can us the SystemUI.TrySnapSelf Method API to launch their own app into snap and the SystemUI.TrySnapOther Method API to launch another app such as a companion app in snap.

NUI

The Pay to Play FaceFrame API has been improved
The Pay to Play FaceFrame API now includes the following new features:

Gesture engagement has been improved
Improved developer experience for gesture engagement: