What’s New in the November 2017 Xbox One XDK

The November 2017 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 November 2017 Xbox One XDK contains the latest tools and libraries for Xbox One.

What’s new in the November 2017 XDK

Roadmap

The Xbox One Developer Roadmap on XGD has been updated with the latest projections of developer-facing feature work. 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

Xbox Live

Developer Tools

Graphics

PIX

System

Xbox Live

To learn about new updates to Xbox Live, see the What’s New topic in the documentation for the Xbox Live SDK. You can find this documentation under your XDK install location at %XboxOneXDKLatest%\Documentation\XboxLiveSDK.chm. You can also download the Xbox Live help file from the Xbox One XDK Documentation page.

Developer Tools

Visual Studio 2012 is no longer a supported development environment
Starting with the November 2017 release, the XDK no longer supports developing titles in Visual Studio 2012. Titles that target a previous release of the XDK can continue to use Visual Studio 2012 to deploy and debug on consoles that are running newer recovery builds.

You can now capture HDR screenshots from the console
The Screen Capture (xbcapture.exe) command-line tool can now capture high dynamic range (HDR) screenshots from a console that supports HDR. Use the optional /h switch to capture an HDR screenshot. HDR screenshots are captured in the JXR file format.

Xbox One Manager
The following new features and improvements have been made to Xbox One Manager:

You can now use Run from PC deployment over XBTP (Preview)

Note This feature is currently in preview. Further integration of data transfer over XBTP will occur in a future release. Please submit feedback for this feature on the Entertainment Developer Forum or at Xbox One Developer Feedback.

This release of the Xbox One XDK includes a preview of a new version of Run from PC Deployment that transfers data over the Xbox Transfer Protocol (XBTP). This deployment method does not require an SMB network share or credentials on the dev kit. Transferring data over XBTP can reduce TCP/IP network bandwidth usage and increases transfer speed by using the Xbox Transfer Device (XTD).

To deploy your title over XBTP, use the registernetworkshare command of the Application Management (xbapp.exe) command-line tool. For more information, see the setup instructions at Run from PC Deployment.

You can now disable guest access to SMB shares
The new DisableForceGuest setting allows developers to turn off guest access to SMB shares from Xbox One Manager, Configuration (xbconfig.exe), or Xbox Device Portal (Windows Device Portal on Xbox). If your development PC is running an Enterprise SKU of the Windows 10 Fall Creators Update, you must disable guest access before you can connect to SMB shares on the console.

New connected standby switch for xbreboot.exe
The new /P for the Reboot (xbreboot.exe) command-line tool reboots the console into connected standby mode. For the dev kit to be placed into connected standby its power mode must be set to Instant On.

New setting to mark UWP apps as games by default
Xbox Device Portal (Windows Device Portal on Xbox) has a new setting named Treat UWP apps as games by default that allocates more system resources to Universal Windows Platform (UWP) apps.

Graphics

New HLSL front end (Preview)

Note This feature is currently in preview. Please submit feedback for this feature on the Entertainment Developer Forum or at Xbox One Developer Feedback. This feature is currently available only on PCs that are running Windows 10.

The November 2017 XDK includes experimental support for a new HLSL front end compiler based on the DirectXShaderCompiler project and clang. This new front end provides improved compile times, better compiler error messages, and better control over high-level optimization.

The new front end produces a new intermediate representation (IR) called DXIL that is based on llvm IR and replaces DXBC. Although the HLSL back end has not been changed, you will see differences in the generated code because of the new IR produced by the front end.

To use the new HLSL front end compiler, do one of the following:

Variable refresh rate
Xbox One dev kits now support variable refresh rate when connected to a FreeSync-compatible display over HDMI. Variable refresh rate prevents tearing and stuttering if your title misses its framerate budget. This feature is available only on dev kits in this release, which gives you an opportunity to experiment with it and test your title’s compatibility before variable refresh rate is released to retail consoles in a later release.

Variable refresh rate is disabled by default. You can enable this feature for all titles on a dev kit by doing one of the following:

 

Few code changes are needed to take advantage of this feature. If your title is targeting a consistent 30 FPS, pass 2 to the SyncInterval parameter of the IDXGISwapChain::Present or DXGIXPresentArray method. If your title is targeting a consistent 60 FPS, pass 1 to the SyncInterval parameter.

If your title needs to explicitly opt-out of this feature, pass the DXGIX_PRESENT_DISABLE_VARIABLE_REFRESH_RATE flag to the Present method. This disables variable refresh rate for the duration of the flag’s usage, regardless of the system settings. This can be useful for cutscenes or other situations in which there is no variability in the framerate.

PIX

HDR/SDR picture-in-picture
PIX can now display a picture-in-picture view of your high dynamic range (HDR) and standard dynamic range (SDR) display planes. This allows you to verify that your intended HDR and SDR content is passed to the system. You can choose which display plane is in focus.

Improved Memory Map UI in instruction traces
The memory map has been improved to make it easy for you to identify portions of your title that are accessing memory inefficiently. PIX analyzes your title’s data access patterns and identifies regions of memory that are accessed sparsely. You can then drill into these regions and see which data types reside in each region and which functions accessed the types in that region. If PIX can access your source code, it will show you the specific source lines associated with each memory access.

The File IO profiler now identifies individual assets within archive files
File IO captures now let you specify a mapping file that describes the location and size of individual assets within archive files (such as ZIP or PAK files). PIX uses your mapping data to identify the individual asset for all reads within archives.

New timeline rendering options in Timing and GPU captures
Timing captures and GPU captures now include an option to draw all child nodes in the timeline on top of the parent node rather than in a hierarchy underneath the parent.

Shader GPU instruction resource linking
Shader GPU instructions in the pipeline view now contain links to the referenced resources. For example, an image_sample will contain a link to both the sampler and the texture. Hover over a link to display a tooltip that indicates the resource slot. Click a link to go to that resource on the pipeline.

Improved Pixel History view
The Pixel History view is now easier to use and interpret. The user interface now shows information about the texture resource for which the pixel history was requested. In Xbox One captures, all GPU events in the history that are not related to the texture (for example, done to a texture of a different DXGI_FORMAT or different pixel coordinates) are marked as “Aliased”. This makes it easier to parse the Pixel History list because memory ranges on the console might be utilized for other purposes (not just for the texture).

The Pixel History view now contains entries for when pixels are unchanged due to the depth test, stencil test, predication, or disabled through a RenderTargetWriteMask. If a pixel failed one of these scenarios, the reason is shown in the New Value column of the Pixel History view.

Pipeline view improvements
Bank rotation and pipe rotation are now shown in the Pipeline view for resources (when specified in their address).

Version clarity
The version name and number of all relevant components is now prominently displayed in Sysmon and the File Details view of GPU captures. PIX will display an error message when connecting to an unsupported recovery or a title built with an unsupported version of the Xbox One XDK (recovery versions released before the August 2016 XDK and any production-only recovery versions are unsupported). In addition, PIX will now warn you when the current PIX version is older than the recovery or the XDK that was used to build the title; it will also provide the release name of the matching XDK Tools.

System

Changes to available title memory on Xbox One X
Starting with the November 2017 XDK, the default memory available to your title on Xbox One X is five gigabytes. You can use the mx:TitleMemory element in your title’s app manifest to choose a different value between 5–9 GB. For more granular control, the <TitleMemory> element now allows you to specify title memory in megabytes through the new SizeInMegabytes attribute.

New Game DVR metadata API available to exclusive apps
Exclusive apps can now use the AppCaptureMetadataWriter Class class to store metadata in Game DVR recordings. The metadata is uploaded along with the Game DVR recording, which allows users to search for your recording by keyword. This feature is also useful for storing game diagnostic info or screenshots.