The April 2014 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 April 2014 Xbox One XDK contains the latest tools and libraries for Xbox One.
Support for multiple build flavors in a package
The April 2014 XDK includes many fixes for issues that prevented developers from putting different build flavors (e.g. debug, profile, release) of the same EXE into a single package. As an example of what you can do no, if you use F5 launch your game from Visual Studio and then accept a game invite, the version of the game launched from Visual Studio will now respond to the invite instead of something else.
Development kits now have a notion of “default app” when responding to a protocol activation (which is used to activate apps in response to a game invite). In response to a protocol activation, we check to see if the currently running title supports that protocol and, if it does, pass that activation onto the currently running title. If no title is currently running that supports that protocol, the console will look for the default app that the developer has specified to respond to that activation. Developers can specify this default app using the new setdefaultapp switch added to xbapp.exe.
Usage: xbapp setdefaultapp <TITLEID> <AUMID>
Example:
xbapp setdefaultapp A1A2A3A4 MyApplication_8wekyb3d8bbwe!App_Debug
Dedicated dialog for adding friends
The April 2014 XDK features the SystemUI.ShowAddRemoveFriendAsync Method, a new API that enables titles to provide Add Friend buttons directly in their title experience. In the dialog that appears, users can choose to add the person as a Friend, a Favorite or to cancel. If the person is already on their friends list, the dialog asks the user if they want to change their relationship.
Dedicated dialog for messaging
The SystemUI.ShowComposeMessageAsync Method is a new API available for use in the April 2014 XDK. This API allows developers to bring up the compose message screen to send messages though the console’s message application. This API also allows developer to pass in text to pre-populate the compose box and enter a list of pre-selected recipients.
Updates to Kinect Studio
In the March 2014 XDK, we introduced compression of Kinect Studio raw recordings (.xrf) via KSConvert. With the April 2014 XDK you can now selectively remove Personally Identifiable Information and the color streams as part of the conversion process.
Auto-insert of signature for outbound HTTPS requests
In the April 2014 XDK, developers can now rely on auto-insert of signature for outbound HTTPS requests to Xbox LIVE and developer defined relying parties. For more information, see the Networking topic.
More memory is now available for title development
A new API provides access to 768 MB for use by tools during title development. The amount of memory reserved for tools when profiling mode is enabled (via xbConfig or the PIX user interface) has been increased from 512 MB to 1.25 GB. DebugMemGetRegion is a new API that gives access to 768 MB of this memory for use in custom tools.
CPU Instruction Tracing in PIX
PIX contains a new profiling option that traces individual CPU instructions. The output includes instruction summary statistics and a listing of the specific instructions that were executed during the capture. Note that Instruction Tracing is being released as a preview feature with the April 2014 XDK.
PIX user interface update
PIX has undergone a significant user interface update in the April 2014 XDK to improve usability across common workflows and enhance its aesthetic look and feel. An FAQ for the new UI is listed at the end of this What’s New document. Key new functionality includes:
PIX: Asynchronous compute context and DMA engine timing data
System Timing Captures in PIX now capture timing data for usage of the DMA engines and GPU asynchronous compute contexts. This timing data will appear in the Events and Timeline views to help you visualize usage and diagnose synchronization issues between these GPU engines, the CPU, and the GPU rendering core.
PIX mesh view enhancements
The following features have been added to the Mesh view:
Ability to disable wireless networking and wireless accessory communication via tools
With the April 2014 XDK release, you may disable wireless communications during development. This can be useful if you are in an environment with many consoles and other wireless accessories in close proximity. See the WirelessRadioSettings option under the xbConfig.exe topic for more information.
New xbConfig settings
More developer settings can now be manipulated remotely from a PC using xbConfig.exe:
Note There are two wireless radios, one for networking one for accessories, and both can be turned off.
Submission validator improvements
mx:ConnectedStorage element specifies a change in connected storage quota limit. This requires a certification exception. Contact your Developer Account Manager
Developer scratch drive is now created when the devkit boots
Prior to the April 2014 XDK, an exclusive title had to be run in order to create the developer scratch drive. When using the April 2014 XDK, the scratch drive is created automatically when the devkit boots, thereby saving a step in the devkit setup process.
Access to title memory status
The April 2014 XDK includes TitleMemoryStatus, a new API for gathering information about title memory usage and availability.
Profile Guided Optimization (PGO) is now available
PGO is now enabled for the Xbox One. For information on using PGO to optimize your title please contact your Microsoft account manager.
Multimedia improvements
Note The new April 2014 XDK video features do not affect anything in the shared title partition and do not impact titles using exclusive title software video encode/decode, nor titles without video functionality. Exclusive title video processing and rendering in an immediate context is not impacted. For reference purposes, the April 2014 XDK ATG samples (MP4Reader and GamepadDemoE3) are updated to call these new exclusive title video processing APIs.
New onchip mode for geometry shaders
This release includes support for onchip geometry shader mode, which causes subgroup data to be stored to local data store (LDS) memory. For additional details on this shader mode, see the remarks section of the D3D11X_GS_PARAMETERS Structure topic.
Graphics context fast semantics
Fast semantics is being introduced with the April 2014 XDK as a graphics context option for an exclusive title to assume synchronization, resource management, and state tracking responsibilities from the Monolithic runtime in exchange for improved CPU performance. Fast semantics may be specified in the creation of an immediate or deferred context, and will impose a new set of restrictions on the use of the context (see the introduction for a full listing) while improving its efficiency. A set of new APIs has also been added to facilitate continued operation under fast semantics, including ID3D11DeviceContextX::InsertWaitOnPresent, ID3D11DeviceContextX::SetShaderResourceViewMinLOD, ID3D11DeviceContextX::IASetPrimitiveResetIndex, and a number of decompression routines. Note that fast semantics is being released as a preview feature with the XDK. We will be recommending that all titles switch to using fast semantics.
Descriptors as an alternative to view and state objects
A set of descriptors have been defined for the April 2014 XDK to serve as more compact alternatives to view (and state) objects in binding resources to the GPU. Constant buffer view, vertex buffer view, shader resource view, unordered access view, and sampler state descriptors provide better cache efficiency, support arbitrary placement, and may be composed in forms supporting full GPU extensions not available through standard object creation. The new ComposeView and ComposeState APIs can be used to initialize descriptors with no memory allocation performed. Descriptors are set on a context using the SetFastResources and SetFastResourcesFromBatch APIs, with a descriptor pointer being used in place of the traditional object/state pointer of similar type.
Improved control over resource decompression
With the April 2014 XDK, new APIs are being previewed to allow for the explicit decompression of resources, and for the ability to query resources for their compression status. The DecompressResource API can be used to decompress render targets and depth/stencil buffers, propagate indirect colors from fast clear operations, and perform FMask bit-plane gathering. The GetResourceCompression API will inform on what forms of compression are currently applied to a resource. The XDK also brings a set of new clear flags to prevent compression from being applied during and after the clear, and a set of new resource creation flags to prevent render targets and depth buffers from ever having compression applied during their lifetimes.
New controls for improved scaler quality
Titles can now choose from seven different fixed types of upscaling kernels for the scaler: bilinear, four tap sinc, four, six, eight and ten tap Lanczos, and six tap band limited Lanczos (christened “NICE Filter” by Jim Blinn). The kernel can be chosen using the Flags parameter for Present or DXGIXPresentArray.
New D3D11.X APIs
SetPriority sets the priority for an Asynchronous Compute context. WriteValueBottomOfPipe has the GPU write a value to a specified location. CopyMemoryToMemory and FillMemoryWithValue operate on specifiable memory ranges rather than on D3D resources. StartThreadTrace, StopThreadTrace and InsertThreadTraceMarker control GPU Sequencer raw trace captures. D3D11X_CREATE_DEVICE_PARAMETERS has been expanded to allow titles to control D3D’s ring-buffer total allocation sizes and segment sizes.
HLSL tool improvements
The April 2014 XDK features the following improvements to the HLSL tools:
Disable shader object compression: __XBOX_DISABLE_SHADER_OBJECT_COMPRESSION
This new define permits disable of shader object compression. By default shader objects are compressed before storage in DXBC. If shaders are also compressed by application then this secondary compression is redundant. Disable of shader compression results in a size increase of 3x, but a 9x speedup in object instantiation.
Extended UAV types
D3dcompiler has new define, __XBOX_ENABLE_EXTENDED_TYPED_UAV, used to permit additional types and sizes for unordered-access view loads.
New __XB_MakeUniform intrinsic
This new intrinsic loads a value into scalar register, implicitly declaring it wave invariant. This can be used to improve codegen for wave invariant expressions by moving work from vector to scalar unit.
Cube intrinsics
The new set of cube intrinsics provide access to cube instructions. The new intrinsics are:
float __XB_Cube_ID(float f1, float f2, float f3)
Performs:
if (fabs(f3) >= fabs(f1) && fabs(f3) >= fabs(f2)) return f3 < 0 ? 5 : 4;
if (fabs(f2) >= fabs(f1) return f2 < 0 ? 3 : 2;
return f1 < 0 ? 1 : 0
float __XB_Cube_MA(float f1, float f2, float f3)
Performs:
if (fabs(f3) >= fabs(f1) && fabs(f3) >= fabs(f2)) return 2*f3;
if (fabs(f2) >= fabs(f1) return 2*f2;
return 2*f1;
float __XB_Cube_SC(float f1, float f2, float f3)
Performs:
if (fabs(f3) >= fabs(f1) && fabs(f3) >= fabs(f2)) return fabs(f3);
if (fabs(f2) >= fabs(f1) return fabs(f2);
return fabs(f1);
float __XB_Cube_TC(float f1, float f2, float f3)
Performs:
if (fabs(f3) >= fabs(f1) && fabs(f3) >= fabs(f2)) return –f2;
if (fabs(f2) >= fabs(f1) return f2 < 0 ? –f3 : f3;
return –f2;