What’s New in the August 2016 Xbox One XDK

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

What’s new in the August 2016 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

Developer Tools

Graphics

PIX

Developer Tools

New command-line tool and APIs for generating full callstacks from your title
The new Symbol Proxy (xbSymbolProxy.exe) command-line tool sets up your PC as a symbol server proxy for your development console. The new GetSymbolFromAddress and GetSourceLineFromAddress APIs use the address of a function to retrieve the symbol name and source file information. Used together, these features allow you to generate full callstacks when errors occur in your title, without resorting to parsing MAP files or other custom techniques.

Improvements to the xbdbgmon.exe command-line tool
The Debug String Monitoring (xbdbgmon.exe) command-line tool can now be run in a mode that offers the following new capabilities:

Development kit system update configuration
Developer Home on the Console (Dev Home) now contains a setting that controls how the development kit is updated. Changes to this setting can take up to 24 hours to take effect. For information about accessing this setting programmatically, see the developer settings REST API reference topic on MSDN.

The system update setting can be set to one of the following options:

Graphics

Support for 4K swapchains
Exclusive apps can now create and present up to 3840×2160 swapchains. When using the DXGIXPresentArray function, each member of the source rect is limited to multiples of four. The destination rect is assumed to be in a 3840×2160 virtual space, so the scale factor must be set such that the destination rect is fully contained within this virtual space. As with 1920×1080 swapchains, the destination virtual space is automatically scaled up or down to match the resolution of the display mode on the television. There can be a maximum of three buffers in the swapchain (that is, it can be at the most triple-buffered).

New API to query the GPU’s clock frequency
The new ID3D12Device::GetGpuHardwareConfigurationX and ID3D11DeviceX::GetGpuHardwareConfiguration methods retrieve the GPU’s clock frequency.

Important This API is intended to supersede and replace usage of the #define value D3D11X_XBOX_GPU_CLOCK_FREQUENCY (or any other hardcoded constants that represent the GPU’s clock frequency of 853 megahertz). If your app uses this constant, you should replace all instances of the constant with a call to the new API.

Shader compiler updates
The following updates have been made to the shader compiler:

Asynchronous execution of command lists
You can now execute a command list before it is closed, and then continue to record more commands to the list. For more information, see the Remarks section of the ID3D12CommandQueue::ExecuteCommandLists method, and note the new method ID3D12Device::CreateCommandListX.

Debug filtering
You can now filter validation errors at the granularity of a DEBUG output message. For more information, see the ID3D12Device::SetDebugErrorFilterX method.

Fast low-level blitting of GPU page tables
Fast low-level blitting of GPU page tables is now available. For more information, see the Remarks section of the ID3D12CommandQueue::CopyPageMappingsX method.

Efficient creation of views from a resource
The new ID3D12Device::CreatePlacedRawShaderResourceViewX and ID3D12Device::CreatePlacedRawUnorderedAccessViewX methods create the associated views directly from a resource and resource view description, without creating an intermediate ID3D12Resource object.

PIX

New connection workflow
The Home tab (previously named the File tab) contains a new Connect option that allows you to set up connections to Xbox One development consoles and specify the console to use when analyzing GPU captures. In addition, the capture buttons now include options that you can expand and configure without taking a capture. To take a capture, press the icon in the panel for the appropriate capture type.

Redesigned System Monitor
The System Monitor for Xbox One development console connections now displays live GPU, CPU, D3D, and network counters by default. You still have the ability to add and remove displayed counters. Also, you can now group counters into separate graph views for a better overview. To add a new graph, press the Add Graph button, add the counters you want to monitor from the Counters list, and then give the new graph a title by editing the default text.

Unified shader editing and optimization experience
You can now edit and optimize shaders directly from the Pipeline view or the Shader Debugger view. To optimize a shader, press the Optimize Shader button or manually edit the HLSL code. You can apply and disable edits from the Edit and Continue view.

To compare the original HLSL with the edited shader, select the Diff with Original checkbox. Your computer must have the WinDiff utility installed to use this feature.

Note Due to these updates, the dedicated Shader Edit and Continue view in the Tools tab is no longer needed and has been removed from the default layout.

Improved GPU capture performance
This version of PIX significantly reduces the GPU capture time for the following types of titles:

Idle Time timeline
The Timeline view now displays an Idle Time lane that highlights parts of the frame in which the GPU is idle. Although you can infer this information from existing views, this new lane makes it easy to spot opportunities for better GPU utilization.

UV atlas details
The new Details view for SRV textures displays UV atlas mappings. This lets you see how vertices are mapped to textures. You can display either a vertex shader input buffer or a vertex shader output buffer. If you display an input buffer, you can select the DXGI format and the offset of the buffer. You can specify the sampler description of an input or output buffer from any of the sampler descriptions used in the draw call.

Additional title warnings for D3D12.x issues
PIX now includes the following title warnings to help you troubleshoot Direct3D 12.x issues in your title:

Improved Resource Table performance
The Resource Table view now populates almost instantaneously.

New Counters timeline
The Overview tab now contains a Counters timeline that allows you to graph selected counters from the Events view over time.

Updated state and Command Disassembly views
By default, the GPU State, GPU D3D State, and Command Disassembly views now display a diff using the previous draw/dispatch. To revert to the previous behavior of diffing against the previous GPU event of any type, use the checkbox provided in those views.

Profiling memory counters in System Monitor
PIX now includes System Monitor counters for profiling memory usage.

Events view and Timeline usability enhancements
The following usability improvements have been made to the Events view and the Timeline:

New timing columns in Events view
The new EOP Duration column in the Events view displays the length of API calls in the Graphics EOP (end-of-pipe) timeline (that is, the duration between one end-of-pipe and the following end-of-pipe). Additionally, the Start Time column has been renamed to EOP Start Time to clarify its meaning and usage.

Note The EOP Duration column replaces the Analysis Measured Duration column from previous releases of PIX.

To understand when graphics operations entered and exited the pipeline, use the Execution Duration timeline as well as the corresponding Execution Duration and Execution Start Time columns in the Events view.

New pixel selection for render targets and textures
The new Pixel Details control allows you to find specific pixels for inspection or debugging. This control (located in the resource viewer in the Pipeline tab) lets you enter coordinates directly, offers handy keyboard navigation, and displays a zoomed view of the image.

New API object table
API object references are now collected in the new API Object Table view and linked from the appropriate fields in the Event Details view. If a specified event references API objects such as heaps, resources, or pipeline states, these objects appear as links in the Event Details view. The API Object Table view lists the type and contents of all captured API objects.

Additional PIX warnings
The Warnings section of the File Info view now displays warnings about excessive D3D12 resource transitions that can slow down your title. Additionally, PIX now warns about captures that do not contain API data, as these captures offer only limited functionality.

Support for tracking D3D12 synchronization
To help you understand D3D12 synchronization, PIX now displays arrows between waits and the corresponding signals/writes on the relevant timelines when either of the events is selected. This works for CPU/GPU and GPU/GPU synchronization. In addition, a new option in the Timeline Settings drop-down menu displays all synchronization correlations for the capture.

Improved handling of buffer formats
The Pipeline and Memory views now display a variety of supported formats for a data buffer. A new button in these views resets the buffer format to the native format that was captured.

To customize buffer formats for a specific resource, open a pinned view of the resource. This allows you to apply specific formats to the pinned view without changing the defaults for the Pipeline view itself.

Improved resource history
Resource history (when the resource was read from or written to) is now displayed in the Resource Table view; resource history was previously displayed in the resource viewer in the Pipeline view. The Resource Table view shows a complete overview of all the resources in the capture. To select the type of resources to display, select the type in the drop-down menu. The Resource History table on the right side of the UI shows the complete history of the resource that is currently selected. This functionality is also available for aliased resources. To find previous/next reads, use R+the arrow keys. To find previous/next writes, use W+the arrow keys.

New Refresh button for resources
The Pipeline view now contains a Refresh button that retrieves a resource again, avoiding any PIX caching. This is useful for investigating non-deterministic captures.

File I/O summary tab
File I/O captures now include a Summary tab that provides basic statistics about the capture, including the number of files accessed, the average throughput achieved while the disk was in use, and the total amount of data read.

F1 help for CPU capture types
While viewing a function summary, callgraph, instruction trace, memory, file I/O, or hardware instruction capture, you can now use F1 to display the help documentation for that capture type.

Instruction cache simulation added to instruction traces
The cache simulation feature in instruction traces now includes a simulation of the instruction caches. Statistics are provided for instruction cache hit and miss rates and the average number of reads per line load. These new statistics help you determine your overall instruction cache utilization. Modeling the instruction cache also increases the accuracy of the data produced by the L1-D and L2 cache simulation.

Instruction trace captures can now be triggered programmatically
You can now call the PIXBeginCapture and PIXEndCapture functions to start and stop instruction trace captures. This allows you to easily capture the specific portion of your title that you want to analyze.

Improvements to the memory layout visualization tab in instruction trace captures
The Memory tab in instruction trace captures now includes a visualization that shows which regions of the address space a selected function touches, as well as a mapping between individual cache lines and the functions that touch them. This will help you quickly drill into the portions of your program that might be using memory inefficiently.

New API for creating a scoped PIX event
The new PIXScopedEvent function creates a PIX event that will begin when the API is called and will end when execution leaves the enclosing scope. This new API makes it easier to match up your begin/end event pairs.

Function Summary and Callgraph captures now include inlined function analysis
PIX now uses information in your title’s PDBs to analyze which inlined functions are most likely to impact title performance.

Note

  Each inlined function is assigned a weight based on factors such as the number of times a given function is inlined and the call counts of each containing function. The PIX instrumented CPU profiler cannot directly determine the number of times an inlined function is called because inlined functions do not have an entry and exit that can be hooked.