The May 2015 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 May 2015 Xbox One XDK contains the latest tools and libraries for Xbox One.
The Xbox One Developer Roadmap on XGD has been updated with projections of developer-facing feature work from the May 2015 XDK through Q3 of 2015. 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.
Hardware-offloaded game chat is now enabled by default
The hardware-offloaded GameChat feature that was previewed in the April 2015 Xbox One XDK is now available to all developers and is enabled by default. When resources are available, game chat now uses the same hardware decoder that is used by Skype and Party Chat. Your title can encode up to two concurrent streams and decode up to seven concurrent streams utilizing the hardware.
Note The GameChat API has changed for this release. To use the hardware-offloaded game chat feature, please use the updated API instead of recompiling old code on the May 2015 Xbox One XDK.
Xbox One Manager
The following new features and improvements have been made to Xbox One Manager:
Option to install only the launch chunk
Xbox One Manager now offers the option to install only the launch chunk when performing streaming installations.
Keyboard shortcuts for sending gamepad input to a console
The Remote Control tab now allows you to send gamepad input to a development console by using keyboard shortcuts on the computer. For example, typing A on the keyboard will send an A gamepad button press to the console.
Console information added to the Group Details tab
Each console in the Group Details tab now displays the device ID, console ID, and a friendly name for the console OS version. Each console also provides a button that copies the console information to the clipboard. You can also view the information in the About section of the Settings tab for each console.
Developer console support for multiple Game OS versions
You can now deploy the Game OS with your title as part of loose file deployments, in the same way that it is included in a packaged title. This makes it easier to run titles built with different versions of the Xbox One XDK on your console. You no longer need to run Provision (xbprovision.exe) to switch between different versions of Game OS. Titles built with the Xbox One XDK Microsoft Visual Studio build targets will deploy the Game OS automatically. For older titles, place the Game OS file (%DurangoXDK%\sideload\era.xvd) that your title requires into the loose deployment folder; the deployment infrastructure will automatically copy it to the console and boot it to run your title.
Direct3D 12.x CPU overhead minimized
Draws, dispatches, and most render APIs now use minimal CPU overhead in retail builds. The implementation is now inlined in the public D3D12_X.H header file and leverages all-new GPU microcode. D3D12.x now takes approximately 10 nanoseconds to complete calls to SetPipelineState and DrawIndexedInstanced with any permutation of shaders, blend state, depth-stencil state, rasterizer state, and input layout.
Note Because PIX does not yet support the new microcode packets, the D3D runtime reverts to slow emulation when D3D12.x is invoked using the D3D12XBOX_PROCESS_DEBUG_FLAG_INSTRUMENTED flag. Use retail flavors of D3D12.x when using PIX to measure performance.
Additional Direct3D 12.x preview updates
The following updates have been made to Direct3D 12.x in the Xbox One XDK:
Important The updates to the D3D12.x header are breaking changes that will require changes in your title.
Updated graphics samples
The following updates have been made to the graphics samples on the Samples page of the Xbox Game Developer (XGD) site:
Direct3D 11.x performance improved by new default MaxWavesWithLateAllocParameterCache value
Prior to this release, the graphics driver set the value of MaxWavesWithLateAllocParameterCache to zero by default. Starting with the May 2015 Xbox One XDK, MaxWavesWithLateAllocParameterCache is set to 22 by default. This improves overall GPU frame time across a vast majority of titles, but there is a possibility of slowdown—particularly during some rendering passes (usually when PS+VS together cannot achieve occupancy higher than about 3). To change the value of MaxWavesWithLateAllocParameterCache, pass the new value as part of the pShaderLimits parameter of the ID3D11DeviceContextX::SetGraphicsShaderLimits method. The May 2015 version of Dr. PIX can automatically determine the optimal late-alloc setting for the different parts of your scene by leveraging your PIXBeginEvent and PIXEndEvent hierarchies.
Removed Direct3D 11.x support for Descriptor Tables
Direct3D 11.x support for Descriptor Tables has been removed. Descriptor Table support is still available in Direct3D 12.x. The following D3D11.x Descriptor Table samples have also been removed:
Additional Direct3D 11.x updates
The following updates have been made to Direct3D 11.x in the Xbox One XDK:
Precompilation of shaders that use streamout
The new __XBOX_RAW_STREAMOUT define in the d3dcompiler permits precompilation of shaders that use streamout. The following example shows the low-level syntax to the shader compiler.
C++
"{ <"RasterizationDisable"> |
<"RasterizationSingle" : rasterstreamid<uint>> |
<"RasterStreamMulti" : rasterStreamMask<uint>> ,
{uint, uint, uint, uint}, // Streamout buffer strides (limited to range 0 - 2048)
numSemantics<uint> : // Must be 0 to 512
{
{ // Semantic definition.
index, // Semantic index from d3dcompiler's output
memOffset, // Memory offset in DWORDS for writing into I/O stream
outputSlot, // Specifies which streamout buffer (0-3) is being written to
writeMask, // Lower 4 bits specify number of channels written
stream, // Specifies which stream (0-3) is being written to
}
, // Repeat one entry for each semantic.
}
}"
The following example shows a use of the new define from the skinning sample:
C++
#define __XBOX_STREAMOUT_RAW "{ RasterizationSingle:0, {12,0,0,0}, 4:{ {0,0,0,15,0}, {1,4,0,7,0}, {2,7,0,3,0}, {3,9,0,7,0} } }"
A debug message will print the first runtime and shader value that differs if the runtime streamout signature does not match the shader’s streamout signature.
Only one streamout signature is permitted for each compile. If the same shader needs to be used with multiple signatures, then it must be compiled for each streamout signature.
Breaking change in Direct3D 12.x PIX captures
Because of changes to PIX in this release, D3D12 captures from previous releases of the Xbox One XDK are incompatible with this release. To mitigate this issue, please replace your older D3D12 PIX captures after you upgrade to the May 2015 Xbox One XDK.
Async compute in GPU capture timeline
The Timeline view for GPU captures now shows Async Compute work that was captured as a part of the frame. To help clarify how compute and graphics work flow through the GPU, we have modified the timelines that are displayed in the Deep Analysis Timeline view. The timeline previously named the GPU timeline was a representation of the work on the GPU draw pipe, with stalls introduced by analysis hidden for display purposes. In this release, the GPU timeline has been replaced by timelines for the Draw and Async Compute queues.
For captures which have work only on the Draw queue, the Draw timeline will function exactly as the previous GPU timeline: any stalls caused by PIX analysis will be hidden from the timeline.
For captures which have work on more than one queue, the Draw timeline and any Async Compute timelines that contain captured work will be displayed. In this case, stalls caused by analysis will not only cause a gap between draws, they can also cause pipelined work between queues to be serialized, leading to an unexpectedly long frame time. In order to avoid this misleading result when analyzing multiple queues, stalls are not hidden during display. In addition, to further highlight where PIX analysis is causing a stall to occur, a new PIX Memory Updates timeline has been added, which shows where memory is updated during analysis, causing a GPU stall.
The ESRAM Utilization and Shader Trace will line up with the new lanes, so they will properly show the pipelining between draws which can cause ESRAM aliasing to occur when not expected.
D3D12 descriptor heap viewer
D3D12 descriptors are now displayed in the GPU D3D State view. These descriptors link directly to the corresponding resources for easier navigation.
Geometry shader pipeline added to Microsoft Visual Studio output
The geometry shader stage has been added to the pipeline view in the Resources tab of the Microsoft Visual Studio Output pane. This allows you to view the output data specific to the geometry shader in the pipeline.
Improved ESRAM utilization navigation
The shortcuts listed in the following table have been added for zooming the ESRAM utilization map in the Deep Analysis view.
| Action | Shortcut |
|---|---|
| Zoom the timeline (horizontal axis) | Hold down CTRL while scrolling with the mouse wheel button |
| Zoom memory (vertical axis) | Hold down SHIFT while scrolling with the mouse wheel button |
| Zoom both timeline and memory | Hold down CTRL+SHIFT while scrolling with the mouse wheel button |
The Basic Information experiment in Dr. PIX now tracks LateVsAlloc
The Basic Information experiment in Dr. PIX has been updated to provide guidance on the optimal LateVsAlloc setting for each PIX bracket. LateVsAlloc is a GPU setting that specifies how many outstanding vertex shaders waves are allowed in flight; increasing this number typically results in a reduced render time. If the name of a bracket is not listed in the Dr. PIX results, the effect of LateVsAlloc on that bracket is negligible.
Console counters improvements
The counters legend in the Console view now displays the average value for the listed counters when it is not wrapping legend items. A new context menu item allows you to reset the minimum, maximum, and average counter values.
File IO, Memory, and ETL captures can now be started immediately when your title launches
PIX can now start a File IO, Memory, or ETL capture immediately when your title starts, allowing you to capture your title’s entire startup sequence. In previous releases, you had to wait for PIX to attach to your title before clicking a button in the UI to start the capture. By the time that the capture started, you could miss a large portion of what you intended to profile.
New instruction trace analysis: reads of write-combined memory
Instruction trace captures now include an analysis of which functions are reading from write-combined memory. PIX displays the functions that read the most from write-combined memory and the specific instructions that are causing the reads.
The memory profiler now tracks heap allocations
You can now track calls to heap management routines to gain insight into more of your title’s memory management system. The memory profiler now tracks calls to the HeapAlloc, HeapReAlloc, and HeapFree functions. In previous releases, the memory profiler tracked only calls to the VirtualAlloc and VirtualFree functions.