The December 2012 release of the Durango XDK from Microsoft contains the following new features, tools, and documentation. For features that shipped in a previous release of the Durango XDK, see the What’s New document for that release. (See Features Introduced in Previous Releases.)
The most recent release notes for and updates to the Durango XDK can always be found on Durango 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.
The Durango developer support group sends e-mail to Durango developers whenever a new Durango XDK is released. Also, you can check with your account manager for the latest information about upcoming Durango XDK releases.
With the release of this XDK, versions of the Durango XDK released before August 2012 are retired. We retain for download the three most recent releases of the XDK; however, you are encouraged to update to each new release when it becomes available, in order to get the most recent bug fixes and new features.
Significant Architecture Changes in December 2012 XDK
The December 2012 release of the Durango XDK introduces a number of changes, including partitioning between games and the underlying system for greater reliability and security. To move your game code to the December 2012 release requires some changes to your code, and performance characteristics are different. All future releases of the Durango XDK will build on the changes introduced in this release, so we encourage you to immediately explore the key changes required to get your code ready, and to transition main-line development after your title is successfully building, deploying, and running.
For details, see “December 2012 XDK Migration: Best Practices,” a whitepaper, available on the Xbox Game Developer (XGD) site.
Multiple build configurations in a single deployment
In the July 2012 release of the XDK, we added the Isolate Configurations property that allowed you to build more than one configuration (Debug, Release, and so on) into the same build directory on your development PC. This was helpful, but it didn’t solve the end-to-end requirement of being able to launch the different configurations from the same deployment—that is, you could only launch the last configuration that you built.
In this release, we’ve fixed that: projects can be configured so that, after deployment to the console, multiple configurations show up in the Launcher and can be started in all of the usual ways.
For more information, see How to: Enable Multiple Build Configurations in a Single Deployment.
New Deploy action from Visual Studio
In this release of the XDK, we’ve enabled Deploy, a menu item for Durango projects in Visual Studio. You can now deploy your game to an Alpha kit without running it.
Code generation has been improved
In this release of the XDK, we’re shipping an improved compiler that generates code that’s better optimized for Durango. The changes in this release include improved vectorization of integer conversions and shifts, and better optimization of loops.
XDK Installer no longer requires Visual Studio as a prerequisite
In the December 2012 release of the XDK, the XDK Installer no longer requires Visual Studio as a prerequisite. This change is to support scenarios where you want to use XDK tools that do not require Visual Studio, such as Visual Gesture Builder and the Durango command-line tools.
If you install the XDK on a development PC that doesn’t have Visual Studio, and then you later install Visual Studio on that PC, you’ll find that Durango apps don’t appear in the New Project wizard’s list of apps. To make Durango apps appear in the New Project wizard, go to Programs and Features in Control Panel, and repair the Durango XDK installation.
Control which GPU hardware stages have shaders precompiled
With the December 2012 release of the XDK, developers can now control which GPU hardware stages have their shaders precompiled. In this way, developers can exert some control over the size of precompiled shaders vs. run-time initialization.
The new behavior is communicated via defines, either presented on the fxc command line (-D) or the define array that’s passed to D3DCompile.
For more information, see Shaders and the FXC Shader Compiler.
Updated user-mode graphics driver support for hardware GPU optimizations
In the December 2012 release of the XDK, we have updated the user-mode graphics driver to support several hardware GPU optimizations. These optimizations include the following:
The new behavior is communicated via defines, either presented on the fxc command line (-D) or via the define array that is passed to D3DCompile.
Only HDMI Output Supported
With the December 2012 release of the XDK, Durango Alpha kits will support only HDMI output; DVI output is no longer supported. This is in keeping with the plans for the retail console, which will support only HDMI output. Furthermore, while the retail console will support multiple output formats, as an interim step for the December release, Alpha kits will only support the 1080p output format. More specifically, 1920x1080, 60 Hz progressive timing (148.5 MHz VIC=16), 24 bpp YCbCr color, and stereo audio are enabled at boot time. This video mode is the one most commonly supported by televisions that advertise 1080p support. HDCP is not enabled. We strongly recommend that you use an HDMI cable and not an HDMI-to-DVI cable or converter.
PIX: System Timing Captures and User-Defined Events
In this release, we have added two new features to PIX: system timing captures and user-defined events. If you have used PIX on Xbox 360, these features will be familiar to you.
System timing captures collect low-overhead run-time timing data from CPU and GPU events. This view allows you to inspect fine-grained details about the performance of both CPU and GPU code, and correlate interactions between the two. It is a necessary complement to GPU captures, which contain deep context about a given frame but have no true run-time performance data. For this release, system timing captures only contain user-defined CPU events; GPU events and System-defined CPU events will be added in a future release.
User-defined events are supported in system timing captures via PIX events. PIX events are a lightweight method of performance instrumentation enabled by the Durango OS. If you have developed for Xbox 360, you have probably already used PIX events extensively in your codebase; as of this release, you will now be able to exercise that investment on Durango, too.
PIX: Preview of System Monitor
System Monitor is a real-time profiling monitor that displays performance counters streamed from the development kit in real time. It shows high-level information about the absolute performance of your title that will help you decide where to do deeper analysis and optimization. For this release, System Monitor ships in preview form as a separate executable from PIX and supports a limited set of CPU and GPU software counters. In future releases, System Monitor will be integrated into PIX and add numerous CPU, GPU, and system hardware counters.
PIX: HLSL Source for Shaders
The Resource Browser in PIX now displays the HLSL source used to produce GPU instructions for shaders, along with the GPU instructions shown in previous releases. The shader view in the Resource Browser lists all files used during compilation and allows you to view content on a per-file basis. This feature requires that shaders are compiled with debug information.
Visual Studio Graphics Diagnostics: Capture from PIX and Compute Shader Debugging
PIX now supports Capture to VSGLOG, a capture type that produces a log file, from Graphics Diagnostics in Visual Studio, that can be debugged on the development PC. This replaces previous support for programmatic capture and the need to transfer capture files from the development kit to the PC. Previous API limitations are still in place, however, because the capture is debugged in the context of the development PC, an environment defined by the version of Windows running on the computer and the feature level of the DirectX graphics hardware in it.
Visual Studio Graphics Diagnostics has also been updated in this release with several stability improvements and support for debugging of Compute Shaders. You can now use the Pipeline Viewer window for Dispatch calls selected in the Event List to select a Compute Shader instance, and then launch trace-based debugging.
NUI Speech: expanded WinRT APIs and a new tool set
In this release, NUI Speech includes expanded WinRT APIs to support continuous recognition and returning pronunciations with the recognition results.
Also, in this release we introduce the SpeechLab tool set. The tool set includes two tools. The first SpeechLab is a tool that you use on your development PC to author, validate and tune grammars. The second SpeechLab tool runs on your Alpha kit to test a grammar and capture log information to be used for tuning it.
Introducing the NUI Face API
In this release, we introduce the NUI Face API, a pay-to-play library that provides face detection, alignment, and orientation tracking. Titles can use these capabilities in a variety of scenarios, including controlling a first-person camera and overlaying virtual props on a player’s face in an image.