The June 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:
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 June 2017 Xbox One XDK contains the latest tools and libraries for Xbox One.
Welcome to the First Approved Libraries (FAL) release for Xbox One X (formerly Project Scorpio)! This release includes support for Xbox One X development and Xbox One X devkits. There are many new platform and tools features in this release. We’ve summarized them below, but please check out the new documentation for Xbox One X in the Introducing the Xbox One X Developer Experience section. In particular, make sure you check out Getting the most out of your Xbox One X Dev Kit.
Please let us know what you think of the new tools and platform features by posting on the developer forums or by giving feedback to your Microsoft DAM.
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.
Notable updates from QFE 3 to QFE 4
The QFE 4 release of the June 2017 Xbox One XDK includes documentation and product updates as well as bug fixes. For more information about this QFE, see https://forums.xboxlive.com/articles/68112/release-notes-for-qfe4-of-the-june-2017-xdk.html.
New remote front panel tool in Xbox Device Portal
The new remote front panel tool in Xbox Device Portal (Windows Device Portal on Xbox) allows you to remotely view the current state of the Xbox One X front panel display and send virtual button presses to it. This tool appears in the Media Capture workspace if you are connected to an Xbox One X dev kit.
We’ve recently made the following updates to Xbox Live. These features are documented in 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.
Updates to the Xbox Live APIs
To see all of the recent code changes to the Xbox Live APIs, see the Xbox Live API GitHub commit history.
In-game clubs
You can now create in-game clubs. In-game clubs differ from standard Xbox clubs in that they are fully customizable by a developer and can be used both inside and outside of your game. As a game developer, you can use in-game clubs to quickly build any type of persistent group scenarios (such as teams, clans, squads, guilds, and so on).
Xbox Live members can access in-game clubs from outside of your game on Xbox One, PC, or iOS/Android devices. This allows them to stay connected to each other and to your game by using club features such as chat, feed, LFG, and Mixer.
To create and manage in-game clubs from within your game, use the APIs in the xbox::services::clubs namespace.
Virtual surround sound for all consoles
All existing games (including non-spatially-enabled ones) can now be heard using virtual surround sound (VSS) over headphones, with no title API changes or recompilation. This is a consumer option exposed in the Audio menu of the Settings app. VSS virtualizes the 7.1 mix that all games are already creating, so they can be experienced by users with any connected pair of stereo headphones. If this option is not selected by the consumer, games will continue to use the legacy stereo downmix algorithm described in Xbox One Audio Mixing and Monitoring: Best Practices.
GameDVR and Xbox One Manager media capture now work with Dolby Atmos
Game DVR and Xbox One Manager media capture now work with Dolby Atmos for home theater.
Title detection of the spatial audio format that has been chosen by the user
Xbox One titles can now call the ISpatialAudioClient::IsSpatialAudioStreamAvailable method to detect which spatial audio format is being rendered to the end user. This is useful for titles that want to alter their mix between speakers and headphones, or between Dolby Atmos for Headphones and Windows Sonic for Headphones. Titles are not required to use this API; Windows Sonic format providers are already intended to present balanced mixes that are fairly consistent.
We have made many improvements to the Developer Tools in this release and in the previous release (March 2017 XDK). If you aren’t familiar with the updates we made in the March XDK (such as scripting support and an Xbox One version of the xbwatson.exe tool) check out What’s New in the March 2017 Xbox One XDK.
Important Starting with the June 2017 XDK, Xbox Device Portal (Windows Device Portal on Xbox) is enabled by default and does not require authentication. You can change these defaults to disable Xbox Device Portal or to require a username/password in Developer Home on the Console (Dev Home).
Support for Xbox One X dev kits
This release includes the following improvements for Xbox One X dev kits. For more information, see Getting the most out of your Xbox One X Dev Kit.
Support for the Xbox Dev Mode Companion app
You can use the Xbox Dev Mode Companion app to connect to dev kits in developer sandboxes that are running the recovery that ships with the June 2017 XDK. The Xbox Dev Mode Companion app is a Windows 10 app that allows you to stream from your console to a Windows 10 PC. In addition, the Remote Control tab for each console in Xbox One Manager now includes a link to launch the Xbox Dev Mode Companion app. To download the app from the Store, go to https://www.microsoft.com/store/apps/9nblggh519cp.
Console modes
Xbox One X dev kits can run console modes for testing purposes, which are software approximations of other members of the Xbox One family of devices (Xbox One, Xbox One S). For more information about console modes, see Using Console Modes on Xbox One X Dev Kits to Test Your Game.
New remote front panel tool in Xbox Device Portal
The new remote front panel tool in Xbox Device Portal (Windows Device Portal on Xbox) allows you to remotely view the current state of the Xbox One X front panel display and send virtual button presses to it. This tool appears in the Media Capture workspace if you are connected to an Xbox One X dev kit.
You can now register apps on an external hard drive
The new registerdrive subcommand of Application Management (xbapp.exe) registers all packages on a specified hard drive, including external drives that are attached to the dev kit. For more information, see xbapp registerdrive and the new optional drive parameter for xbapp register.
Support for copying and moving games between drives
Application Management (xbapp.exe) now supports copying and moving games between drives. The xbapp move and xbapp copy commands move or copy a single game. The xbapp movedrive and xbapp copydrive commands move or copy all games from one drive to another. You can use the xbapp registerdrive command to register all games on a given drive. Run the xbapp help command for more information.
New actions for unattended setup scripts
New actions are available for unattended setup scripts. These scripts allow you to automatically configure your Xbox One dev kits.
The following new actions are available. For a full list of unattended setup script actions, see Unattended Setup Script Reference.
WDP crash dump workspace now supports ERA crash dumps
The crash dump workspace in Xbox Device Portal (Windows Device Portal on Xbox) now supports ERA crash dumps. Previous releases supported only UWP crash dumps.
Deployment to a specified drive from Xbox One Manager
Xbox One Manager now allows you to specify a hard drive when using either Push or Streaming install to deploy to a dev kit. This includes the Development (NVME) drive for Xbox One X dev kits as well as Retail and External drives for all dev kits.
You can now browse network consoles to add to Xbox One Manager
You can now browse the local subnet for consoles to add to Xbox One Manager. Each group in the Xbox One Manager UI has an icon next to it that invokes a browse dialog box. This dialog box allows you to select consoles that are found on the local subnet and add them to the selected group.
New XTF APIs for capturing debug output
You can use the new XtfCaptureOutputBegin and XtfCaptureOutputEnd functions to capture debug output.
Improved F5 iteration time for exclusive apps
In Visual Studio, the amount of time required to deploy and launch an exclusive app on a dev kit has been significantly reduced. We achieved this improvement by minimizing re-registration and process activation overhead.
This release includes the following graphics improvements for Xbox One X dev kits. For more detailed information about all the new graphics features in this release, see Xbox One X: Graphics Enhancements in the June 2017 XDK.
Support for Xbox One X hardware features
Automatic HDR tone mapping for GameDVR
Support for automatic tone mapping of the HDR display plane for GameDVR in titles that do not want to do it manually. Automatic tone mapping is enabled by by setting the DXGIX_SWAP_CHAIN_FLAG_AUTOMATIC_GAMEDVR_TONEMAP flag when creating an HDR swap chain; this creates a secondary SDR swap chain that’s automatically filled with tone mapped contents of the primary HDR swap chain using a compute shader when DXGIXPresentArray is called. The HDR swap chain is presented to the display; the SDR swap chain is used for GameDVR recording.
Note
For the highest-quality recording and best performance its recommended that titles perform tone mapping manually.
New APIs to override shader limits
You can now override the shader limits established by a currently-set pipeline state object (PSO) by using the SetGraphicsShaderLimitsX and SetComputeShaderLimitsX command-list extensions. The overridden limits will persist until the PSO is reset or a new PSO is set.
Compute command queue priorities
A new set of D3D12XBOX_COMMAND_QUEUE_FLAG_PRIORITY types allows for precise control of relative compute queue priorities. In addition, the D3D12_COMMAND_QUEUE_DESC priority is now respected and mapped to an appropriate GPU priority level.
Explicit resource decompression and compression state updates
To perform explicit decompression on resources, you can now use the new D3D12XBOX_COPY_FLAGS flags FORCE_PROPAGATE_COLOR_CLEAR, FORCE_GATHER_COLOR_FMASK, and FORCE_ELIMINATE_DCC (in addition to the existing FORCE_DECOMPRESS flags). In addition, you can use the SetResourceCompressionStateX API to update a resource’s tracked compression state.
Subresource decompression on ResourceBarrier transitions
ResourceBarrier now supports decompression and compression restoration at subresource granularity. Decompression operations are now limited to only the subresource specified in a transition when ALL_SUBRESOURCES is not specified. You can use this to target individual array slices, or to target only depth or stencil in a combined resource. Note that the current compression state of a resource will not be altered by subresource transitions.
Xbox Hang Investigation Tool (XHIT) improvements
Xbox Hang Investigation Tool (XHIT) has been improved for all Xbox One hardware. We’ve upgraded bucketization inside .xhit files, collected various extra information, and improved integration with PIX for better GPU hang diagnosis.
Xbox Hang Investigation Tool (XHIT) now provides more information about SDMA and Async Compute, beyond graphics command buffers.
Title GPU hang recovery
Dev kits will now attempt to recover from GPU hangs without rebooting. The title will still be terminated, but can be relaunched much faster than with the old behavior of rebooting the whole console. Please note that some hangs may still require a full reboot to recover. Please provide feedback for this feature on the Xbox Developer Forums.
New D3D12XBOX_CREATE_DEVICE_PARAMETERS values
D3D12XBOX_CREATE_DEVICE_PARAMETERS has two extra fields to officially disable geometry and tessellation rings allocations.
New depth bias API
RSSetDepthBiasX allows setting of depth bias, overriding the PSO settings. When another PSO is set, that setting reverts to being taken from the PSO.
DirectXMath version 3.11
DirectXMath v3.11 is now available. This release adds AVX optimization of XMMatrixMultiply and XMMatrixMultiplyTranspose. For more information about DirectXMath v3.11, see https://github.com/Microsoft/DirectXMath/releases/tag/jun2017.
Breaking changes
NUI tools are no longer installed by default
NUI tools are no longer installed by default when installing a new recovery or running Provision (xbprovision.exe). After installing the XDK, you can deploy these tools manually from the following locations:
New flight stick API
The new FlightStick API supports flight stick devices for exclusive apps.
This release includes the following PIX improvements for Xbox One X dev kits. For more detailed information about all the new PIX features in this release, see Xbox One X: PIX Enhancements in the June 2017 XDK.
Memory captures now display the breakdown of physical and virtual memory usage by category
The Summary page of memory captures now includes a table that describes how much of the physical memory available to the Exclusive Partition is used by the legacy, title and tooling working sets. Information about the amount of memory required to store your title’s executable images and the amount of memory used by the system’s page table entries is included.
Memory captures now also include a table that provides details on committed virtual memory. This table categorizes virtual memory based on working set and page size.
The data for both of these tables is gathered at the beginning and at the end of your captures so that differences in memory usage over the lifetime of the capture can also be displayed.
The TitleMemoryStatus and ToolingMemoryStatus APIs now return data on page table entries
The amount of memory used by the system to store page table entries is now included in the TITLEMEMORYSTATUS and TOOLINGMEMORYSTATUS structures that are returned from the TitleMemoryStatus and ToolingMemoryStatus functions.
Data on allocations made using XMemAlloc is now included in memory captures
The memory profiler now includes an option to collect data on memory allocated using the XMemAlloc function. This data includes a graph of memory allocated and freed over time and a summary of the top allocations by size. The contents of the XALLOC_ATTRIBUTES structure and a full callstack are displayed for every allocation.
Shared Partition disk activity is included in File IO captures
The File IO profiler now includes an option to collect disk activity that occurs in the System Partition. This data helps you correlate disk access in the Exclusive Partition made within your title to disk activity that occurs in the System Partition. The data from the System Partition can be accessed in File IO captures by clicking the Open in WPA button on the filter bar.
Improved iteration times using Fast Title OS startup and the Xbox Transfer Device
PIX can utilize the high-speed Xbox Transfer Device that ships with Xbox One X dev kits to significantly reduce the time it takes to capture and analyze GPU data. Furthermore, PIX can now avoid restarting the title OS when starting analysis, which reduces the time it takes to analyze GPU captures even more.
System Monitor improvements
The System Monitor has been significantly enhanced and we’ve enabled combined collection of system monitor counters, continuous timing data, as well as a video clip of the running title. All of this can be saved into a new capture type.
GPU Capture Improvements
We’ve made the following improvements to GPU captures. See Xbox One X: PIX Enhancements in the June 2017 XDK for details.
CPU hotpath analysis in timing captures
Timing captures now include an analysis that identifies the set of events that represents the hotpath in terms of CPU time for a frame. Reducing the time taken by this set of events will have the most direct impact on frame time from a CPU perspective.
Data type tracking in Instruction Trace captures
Instruction trace captures now identify the data type in your title that is associated with each memory access. As you’re drilling through the virtual address space using the Memory Map tab, information about the types accessed, including a full layout of the type, is shown. The source and assembly code that triggered the access is provided. You’ll also see where in a cache line each instance of a type resides along with the set of fields within that type that have been accessed. Data type tracking helps you lay out your types to make optimal use of the memory caches.
Timing captures and Callgraph captures now identify Cross-OS calls
Cross-OS calls can take a significant amount of time, up to several milliseconds. These calls should be done on non-time-critical threads whenever possible. The Timeline tab on callgraph captures and timing captures include a new context switch view that helps you easily walk through all context switches and identify Cross-OS calls. The interface your title called that caused the Cross-OS call is provided. This view makes it easy to find Cross-OS calls that occur either more often than they need to, or are done on threads that are critical to overall frame time.
GPU events and hierarchical GPU timeline for timing captures
Timing captures now include a complete set of GPU events and hierarchical timeline lanes for the different graphic contexts. You can switch between CPU and GPU events using the drop-down list in the Events view. The API Queue and Hardware Queue drop-down lists let you select between the captured graphic contexts.
Suppress output on dev kits during analysis
We have added an option in the Settings menu to suppress output on the dev kit during GPU analysis. This is useful for analyzing captures without revealing details about the title on the dev kit.
Create sections of your package layout file from File IO captures
After profiling the startup of your title or the loading of a level, you can use the Usage tab to determine the set of files that belong in that chunk of your package layout. Once those files are identified, the File IO profiler can now generate the XML that defines that chunk. This section of XML can then be pasted into your layout file.
Merge multiple traces into a single analysis in File IO captures
The Usage tab in File IO captures now includes the ability to add existing traces to the file usage analysis. The ability to merge multiple traces in this way enables you to get a more complete picture of each file’s usage. It’s common to have different portions of an asset file touched by different playthroughs of a given level. Merging the data from multiple play-throughs provides a more accurate analysis of the set of data that is required for a given level.
ETW collection for CPU captures uses the Chuckwalla SSD
The ETW data collected during File IO, Memory, and Callgraph captures is now written to the developer SSD on a Xbox One X dev kit. Writing tracing data to the developer SSD drive will result in more accurate profiling, especially when analyzing your title’s File IO patterns.
Fast Iteration Mode is now on by default
Fast Iteration Mode is now the default for deployment and PIX capture and analysis. Fast Iteration Mode leaves the Title OS running when you exit your game—we shut down your game but not the OS. This significantly reduces start up time of any subsequent title launches. For more information, see Speeding up Deployment and Iteration Times.
PIX now uses XTD by default
If you have an XTD cable plugged in, PIX will use it for capture and analysis.
Additional RAM available on Xbox One X consoles
Titles that are running on Xbox One X dev kits or retail consoles now have the ability to access up to 9 gigabytes of RAM instead of the default 8 gigabytes. Xbox One X dev kits still have access to the upper 12 GB of debug memory, for a total of up to 21 GB of RAM. For more information about how to configure your title to use this memory, see Configuring Title Memory on Xbox One X.
You can now detect whether your title is running on Xbox One X or Xbox One/Xbox One S hardware
The new GetConsoleType function determines whether your title is running on Xbox One X or Xbox One/Xbox One S hardware.
Debug/Tooling Memory improvements
Titles running on a Xbox One X dev kit have access to an additional 12 gigabytes of “tooling” memory. This tooling memory can be used for a variety of purposes including profiling, tracing, storage of un-optimized assets, and so on. For more information about how to configure and use this memory, see Configuring and Accessing Extra Memory during Development.
New APIs to access the front panel on a Xbox One X dev kit
The new GetDefaultXboxFrontPanel function provides access to the front panel on a Xbox One X dev kit.
Note This API is supported only on Xbox One X dev kits that are running an exclusive app using the Xbox One XDK.
Support for multi-disc titles
The Xbox One console recovery can now install XVC files that span more than one Blu-Ray disc.
Get details about the available memory for the tooling working set
The new ToolingMemoryStatus function returns the total available memory for the tooling working set, the amount of memory already in use, and the peak memory usage.
Titles can now view the memory that is used for page tables
Titles can now see the memory used for page tables. This data is provided in additional fields on the structs returned by the TitleMemoryStatus and ToolingMemoryStatus APIs. This data is also collected and presented in PIX memory captures.
Threading updates
The following changes have been made to threading in the latest release of the Xbox One XDK:
Intelligent Delivery updates
The following updates have been made to Intelligent Delivery:
Improved XDK Transfer Device (XTD) reliability
The overall reliability of deployments and other operations using the XDK Transfer Device (XTD) has been improved. For more information about the XTD, see Introducing the Xbox One X Dev Kit.