What’s New in the March 2015 Xbox One XDK

The March 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:

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 March 2015 Xbox One XDK contains the latest tools and libraries for Xbox One.

What’s new in the March 2015 XDK

Roadmap

The Xbox One Developer Roadmap on the XGD site has been updated with projections of developer-facing feature work from the October XDK through Q1 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.

Table of Contents

Developer Tools

Graphics

PIX

Developer Tools

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

Profiles tab
You can use the new Profiles tab to manage user accounts on a console. You can add, remove, sign in, and sign out users and guests. In addition, you can set a user as the default user on a console.

Group Remote Control tab
The new Group Remote Control tab shows a live view of what is happening on each console in a group. You can send gamepad input to all consoles in the group by using a USB gamepad connected to your development PC, the on-screen gamepad in Xbox One Manager, or a gamepad input macro.

Console tools now included in the recovery
  Starting with the March 2015 Recovery, the SystemTools.XVD file is included in the console recovery and updated through System Update instead of being provisioned as part of the Xbox One XDK installation. In general, this change will not affect developers. However, the SYSTEM version number in the Connect (xbconnect.exe) output will now match the HOST version number and not the TITLE version number of the local Xbox One XDK.

Important Because this change is in the console recovery, it affects all versions of the Xbox One XDK, not only the March 2015 Xbox One XDK.

The xbTrace command-line tool now captures advanced multiplayer network traces
  You can now capture network traces that include advanced networking operations (such as multiplayer) by using the Trace (xbtrace.exe) command-line tool. These traces are the same as those that are captured when passing the TraceType.AdvancedMultiplayer setting to the TraceManager.StartAsync method. These advanced network traces contain information that Microsoft can use to help you debug multiplayer issues in your title.

New Console Performance Display feature provides low-level performance information about the console and your title
  Starting with the March 2015 Recovery, development consoles for exclusive apps can display performance information about the console and your title. To view this information, attach a USB keyboard to the console and then reboot the console. When the reboot is complete, press F12 to show the performance display and then press F1 to see the list of available options. Available information includes console I/O performance and CPU utilization graphs, as well as title uptime, available memory, handles, threads, and processes. For more information, see Console Performance Display.

Note Console Performance Display is a new feature in the Xbox One XDK. Please submit feedback for this feature on the Entertainment Developer Forum or at Xbox One Developer Feedback.

Graphics

Placement APIs and ESRAM support added (D3D12.x Preview)
Placement APIs (such as CreatePlacedResourceX) and ESRAM support (see xgmemory.h) are now available.

The XGMemory API is new for the March 2015 XDK. This library can be found in xgmemory.h; the full implementation can be found in that header and the corresponding xgmemory.inl file. XGMemory is a helper library that manages dynamic mappings for resource memory, in particular mixed ESRAM and system memory layouts for render targets. XGMemory is used to flexibly allocate and reuse a fixed set of ESRAM and system memory pages across one or more layouts. Each layout is a unique virtual address range where multiple resources can be placed for rendering.

Limited support for ID3D12Device::CreateCommandSignature and ID3D12CommandList::ExecuteIndirect added (D3D12.x Preview)
The ID3D12Device::CreateCommandSignature and ID3D12CommandList::ExecuteIndirect methods will work only if the command signature exactly conforms to the operation of the D3D11.x ID3D11DeviceContextX MultiDraw*Indirect methods (such as ID3D11DeviceContextX::MultiDrawInstancedIndirect). Specifically, the command signature must conform to the following:

PIX

Collection of Performance Monitor Counters is now optional in Function Summary and Callgraph captures
The process of gathering the profiling data that is displayed in PIX Timing Captures introduces overhead that can sometimes change the behavior of your title enough that it is difficult to profile exactly what you intend to. PIX now has an option to skip the collection of Performance Monitor Counters (PMCs) in order to reduce the overhead introduced by the profilers. In many cases, skipping PMC collection reduces overhead by 25–35%.

The memory profiler can now be used to track all memory allocations
The memory profiler has been enhanced to profile all memory allocations, not just those allocations that do not have a corresponding free (memory leaks). The ability to see all allocations will help you identify code in your title where you are unintentionally allocating memory. PIX provides full callstacks for all allocations and frees.

Values reported by PIXSetMarker can be charted in timing captures
Timing captures have been enhanced to support extracting and charting arbitrary data provided by title code. Title code can call the PIXSetMarker function to provide a value. A new context menu item in the Timing Capture event list allows these values to be displayed in a new column in the events list and graphed on the timeline.

Dynamic PIX Brackets can report Performance Monitor Counter values that can be viewed in Timing Capture
Dynamic PIX brackets added from Function Summary Capture or Callgraph Capture have been improved to optionally collect PMC values. The Settings pane allows you to choose which CPU, L2 Interface, and Northbridge counters to record with every dynamic PIX bracket. Combined with support for displaying and graphing marker values in PIX Function Summary Captures, this provides a powerful new way to visually correlate hardware performance metrics with other events in your title.

D3D12 updates
The following PIX features have been added for D3D12 titles:

D3D12 reports redundant changing of the render state
The Basic Information experiment in Dr. PIX has been enhanced to report redundant changing of the render state. The experiment analyzes the API calls that occur between two draw calls and reports calls that redundantly set the render state. It highlights when the same state is set more than once, as well as when a state is overwritten before it is ever used.

Note The March 2015 Developer Preview release implements this feature only for D3D12.

Async compute support (Preview)
PIX can now capture async compute events and counters as part of GPU capture. Async compute data is available through the Events view. To view async compute events, use the context selector in the Events view and select the GPU queue to inspect.

Because async compute tasks can span multiple frames, GPU capture now offers the ability to capture up to ten consecutive frames.

Async compute captures can be enabled and disabled from the GPU Capture section in the Settings screen.

Note This is a preview release of async compute capture support. Please submit feedback for this feature on the Entertainment Developer Forum or at Xbox One Developer Feedback.

Mesh rotation in vertex shader output
The Vertex Shader Output view now supports rotation of the output for easier inspection.