The October 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:
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 October 2014 Xbox One XDK contains the latest tools and libraries for Xbox One.
The Xbox One Developer Roadmap on the XGD site has been updated with projections of developer-facing feature work from the August 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.
Titles shipping on the October XDK can use a 7th CPU core
When we shipped the October XDK, we announced a preview feature that allowed titles to choose to disable speech recognition and gain access to between 50% and 80% of the processing power of a seventh CPU core. As of October 22nd 2014, we are pleased to announce that we are removing the “preview” qualifier from this feature and any title planning to ship on the October XDK or later can take advantage of this additional processing power.
Note
There are some performance issues when using this feature with the October recovery, specifically with snapped apps, multiplayer and parties but we have already addressed and validated these issues in the November recovery. We plan to release a preview version of the November recovery in the next few days so that partners can test their games in the target production environment.
For more information, see Accessing a 7th Processing Core.
Hardware gain control for USB microphones
Title developers utilizing USB Audio Microphones can now leverage the IAudioEndpointVolume interface to control the hardware master volume level of an audio endpoint device.
Bitstream Bypass support
Titles can now leverage MMDevAPI to disable bitstream output in order to reduce audio pipeline latency. For more information see DisableBitstreamOut and RestoreBitstreamOut.
Xbox One Manager
The following new features and improvements have been made to Xbox One Manager:
Media capture
You can now record game video clips, and the new media capture tab can be used to view screenshots and game video clips.
Gamepad input
The gamepad input tab can now be used to record gamepad input macros by using the on-screen controller or by plugging an Xbox 360 or Xbox One controller into your Development PC. Macros can be saved, loaded, and played back from this tab as well.
Drag and drop deployment
You can now drag and drop an application’s Loose folder to initiate push deployment or drag and drop an .xvc file to initiate streaming installation.
Improved display of WinRT types in the Visual Studio Debugger
Additional symbols have been shipped that will allow you to see members for core AppModel, Input, and GameChat types in the Visual Studio debugger.
PGOLite is now available for Xbox One
PGOLite is a lightweight alternative to the full PGO (Profile-Guided Optimizations) process on Xbox One. It is similar in concept to PGOLite for Xbox 360. Given a set of PIX capture files, PGOLite generates a set of link order files which are used to relink the title such that commonly called functions are placed in close proximity in memory. Grouping functions in this way reduces the number of instruction cache misses, thereby improving performance. For more information, see PGOLite for Xbox One Titles.
Enhancements to the network simulation feature in xbStress
Two key improvements have been made to the network simulation command in xbStress. Specific values can now be supplied for bandwidth, latency, and packet loss. Previously, only preconfigured profiles could be used. The ability to provide granular values for these settings gives you more flexibility to simulate various conditions, such as simulating the typical network characteristics of different geographies. xbStress can now also be used to simulate a broken network connection making it much easier to test how your title behaves when network connectivity is lost.
Loose file deployment of multiple versions of a game to a single development kit
Xbox One titles can now be deployed to a folder on the Title Scratch drive, allowing multiple versions of a game to co-exist on a single console. Deploying a title using this method can be as simple as:
robocopy c:\mygame\layout \\myconsole\titlescratch\mygame\version1 /MIR
xbapp register \mygame\version1\
This feature allows the developer to determine which version of their game should be visible to the system, and to quickly switch between versions. It is intended to speed up several different scenarios for developers, including easier comparison of different versions of a game and working in multiple enlistments. In the October XDK we support using this feature from the command line, from Visual Studio, and we added support for registering a game to the Devkit Console Extensions library. In a future XDK we will add support to Xbox One Manager. For more information, see Folder Based Deployment.
New topic that discusses analyzing memory allocations
We have added a new topic on analyzing and tracking memory allocations that will help developers better understand how to track the memory their game is using. For more information, see Analyzing Memory Allocations.
New XTF Package Registration APIs
This release includes the following new package registration XTF APIS:
New GameDVR APIs
This release introduces two new GameDVR APIs:
Reduced Runtime Memory Usage
The graphics driver has been optimized to reduce runtime memory overhead of vertex and pixel shader objects by freeing unnecessary data used only at shader creation time. In testing with a mixture of pixel and vertex shaders, we observed a 45% decrease in memory usage for these shader objects. As the memory savings comes from auxiliary data associated with each shader program, the percentage savings will differ based on the shader program size.
The graphics driver has been optimized to reduce runtime memory overhead of most buffer and texture resource objects by approximately 144 bytes each. The only resources excluded from this optimization are textures created with render target or depth stencil binding, as well as textures with multi-plane formats (i.e. NV12).
Performance Improvements: Texture Address Library Optimizations
The graphics driver has been optimized to reduce runtime calls to the texture address library, which is used for computing texture subresource addresses and dimensions. These operations are commonly run as part of CopyResource and CopySubresourceRegion APIs and view creation on textures. The driver now caches texture address library information at resource creation time, using 192 bytes for each texture resource and 384 bytes for each multi-plane texture. The CPU overhead of CopyResource has been dramatically reduced on all contexts (graphics, compute, and DMA), often seeing 12-15x reductions or more, depending on the number of subresources in the copy operation.
Descriptor Tables are now supported
DirectX 11.x and PIX now supports descriptor tables. The shaders can optionally load resource descriptors from user registers or memory tables. This functionality can be used alongside setting resources through APIs. Storing resources in descriptor tables can help reduce the CPU cost of rendering. It also can help prepare for DirectX 12 descriptor tables. For more information, see Descriptor Tables.
Xbox Hang Investigation Tool (XHIT) packet disassembly
The Xbox Hang Investigation Tool (XHIT), an offline analysis tool, can now perform full command buffer disassembly with the new –fulldisasm option, including disassembly of all fields within packets and registers.
New typed buffer HLSL instructions
New load/store intrinsics allow type to be manually specified. These intrinsics can be used to ignore buffer type and permit use of hardware type conversion for load and store.
type Buffer.XB_TypedLoad (in int<1> x, in int<1> typemask);
type RWBuffer.XB_TypedLoad(in int<1> x, in int<1> typemask);
uint ByteAddressBuffer.XB_TypedLoad (in uint<1> byteOffset, in uint<1> typemask);
uint<2> ByteAddressBuffer.XB_TypedLoad2 (in uint<1> byteOffset, in uint<1> typemask);
uint<3> ByteAddressBuffer.XB_TypedLoad3 (in uint<1> byteOffset, in uint<1> typemask);
uint<4> ByteAddressBuffer.XB_TypedLoad4 (in uint<1> byteOffset, in uint<1> typemask);
uint RWByteAddressBuffer.XB_TypedLoad (in uint<1> byteOffset, in uint<1> typemask);
uint<2> RWByteAddressBuffer.XB_TypedLoad2 (in uint<1> byteOffset, in uint<1> typemask);
uint<3> RWByteAddressBuffer.XB_TypedLoad3 (in uint<1> byteOffset, in uint<1> typemask);
uint<4> RWByteAddressBuffer.XB_TypedLoad4 (in uint<1> byteOffset, in uint<1> typemask);
void RWByteAddressBuffer.XB_TypedStore (in uint<1> byteOffset, in uint<1> value, in uint<1> typemask);
void RWByteAddressBuffer.XB_TypedStore2(in uint<1> byteOffset, in uint<2> value, in uint<1> typemask);
void RWByteAddressBuffer.XB_TypedStore3(in uint<1> byteOffset, in uint<3> value, in uint<1> typemask);
void RWByteAddressBuffer.XB_TypedStore4(in uint<1> byteOffset, in uint<4> value, in uint<1> typemask);
For more information, see D3Dcompiler Intrinsics.
New ID3D11ComputeContextX::DispatchIndirect() API
The DispatchIndirect API is now implemented on the compute context.
New ID3D11ComputeContextX::CSSetShaderUserData() API
The ID3D11ComputeContextX::CSSetShaderUserData() API has been added to complement the existing ID3D11DeviceContextX::CSSetShaderUserData() API. This new API allows you to set compute shader user data registers on the async compute context.
New ID3D11DeviceContextX::SetBorderColorPalette() API
ID3D11DeviceContextX::SetBorderColorPalette() allows to specify texture border colors for border-enabled texture samplers. Xbox One GPU texture samplers support four settings for the border color:
In case of the last setting the border color index is set in the BorderColorIndex field of the D3D11X_SAMPLER_STATE_DESC structure. That index maps into the table of colors set by the SetBorderColorPalette API call. Each color in the palette is in F32x4 format. The memory for the border color palette must be GPU-accessible (allocated with MEM_GRAPHICS attribute).
Preview removed from Tiled Resources
Tiled Resources is no longer a Preview feature and is supported for release.
New Shader Semantic Hash
A new hash is available in shader disassembly dump.
//Shader Semantic Hash : 0x876270321e3f3f8f
The 64-bit hash of shader behavior ignores data that cannot affect the shader’s behavior such as, but not limited to: PDB path, emplaced shader name, and build time. This hash is intended to be used for de-duplication of shaders.
Shader compiler optimizations
A few optimizations were added to the shader compiler’s codegen, including automatic conversion of certain patterns to min3/max3 operations.
Added functionality for 2015 Xbox One Multiplayer design and APIs
This release includes added production functionality to the 2015 Xbox One Multiplayer design and APIs. We’ve added the support to maintain a connection to MPSD through the RealTimeActivity service, allowing clients to subscribe to MPSD session changes and receive shoulder taps when a change occurs. This connection to MPSD also allows detection of client disconnects, allowing MPSD to more quickly inactivate or remove session members.
Improved Seated Skeletal Tracking
Skeletal tracking lock-on and tracking accuracy has been improved for seated users, particularly in cases where the user is leaning back into a couch, shifting around on a couch, or sitting near another user. This enables more reliable gesture interaction in seated scenarios.
Context switch call stacks in Timing Captures
Call stacks for context switches can now be collected when using Timing Captures. This is an invaluable feature for diagnosing threading issues as well as tracking down mysterious consumers of precious CPU time. The new Callstacks view will display To and From call stacks when you click on context switch markers in the timeline. In this release, this feature is disabled by default; you can enable it in the Settings page, or on the configuration panel of the capture button.
Custom Visualizations
You can now add your own custom visualizations into the Resources view. This enables you to convert arbitrary buffer data for resources into meaningful values, to offer new views onto your data, or to expose new debugging facilities for resource data. Custom visualizations run on the PC side using user-specified shaders. In this release, two new visualizations have been provided as examples: “NANandINF” highlights areas on float textures which are NAN and +/-INF values (grey scaling the rest), and “ToneMap” provides adjustment controls for better HDR examination.
New Non-determinism View
The new Non-determinism View helps you analyze non-determinism caused by synchronization issues in a captured frame. An invaluable tool in tracking down incorrect rendering, the Non-determinism view will tell you where the issues are, as well as how to fix them. This view has been added to the default Deep Analysis layout.
Reduced variability in Analysis of GPU Captures
This release includes some changes to the analysis process that reduce the amount of memory bandwidth consumed by other system components executing on the console. The result of these changes are that you will see much more consistent analysis results.
Usability Improvements to the Function Butterfly view
Double clicking on a function in the butterfly view now selects the corresponding function in the function summary or callgraph capture. More than one instance of the function may be selected if that function runs on multiple threads. The data displayed in the butterfly view can now also be sorted by clicking on the column headers.
Callgraph and function Butterfly view have been added to CPU Instruction Trace captures
CPU instruction trace captures now have an additional tab that shows the calltree for the trace and the callers and callees of all traced functions. The calltree includes columns for several CPU counters including call counts, instructions executed, loads, stores, branches and cache misses.
Performance Monitoring Counters displayed in CPU captures can now be customized
You can now choose which performance monitoring counters (PMCs) to display in CPU Function Summary and Callgraph captures. This flexibility makes it possible for you to understand many more aspects of how your title is performing on the CPU.
CPU Instruction traces now contain source file mappings
Source file mappings are now provided for all instructions in CPU instruction traces. This mapping makes it easier to determine which lines of source code are causing top performance penalties. For example, this information can be used to identify the source lines that are causing the most CPU data cache misses.
Resource Browser Enhancements
A number of enhancements to the resource browser have been made, including:
Real-time Bandwidth Counters
PIX now supports real-time bandwidth counters in the system monitor graph of the Console view. This includes CPU, IO, Garlic, Onion, and ESRAM traffic. Use these counters to ensure that you are using console memory bandwidth effectively, and most importantly, using ESRAM to the fullest extent.
Exclusive titles can now get hostname
Starting with this release, developers can get the Game OS’s hostname. To get the hostname, one can call Winsock’s gethostname function or Windows.Networking.Connectivity’s NetworkInformation::GetHostNames function.