March 2024 GDK Update 7 Public Release
March 2024 Microsoft Game Development Kit (GDK) release notes (Update 7)
Introduction
Welcome to the March 2024 Microsoft Game Development Kit with Xbox Extensions (GDKX) Update 6 release. You can use the GDKX to develop games that can be certified and approved for release on Windows 11 PCs, Windows 10 PCs, Xbox One, and Xbox Series X|S consoles by using a shared codebase.
- The March 2024 GDKX can be installed side-by-side with GDKXs from November 2019 and later.
- You can download GDKX releases from https://aka.ms/gdkdl.
- The release notes for all GDKX releases are at https://aka.ms/gdkreleasenotes.
About this document
We have organized this document into the following sections.
- What's new
- Release notes:
- Documentation
NOTE: Release notes have a number after their descriptions, such as [12345678]. This number represents an internal ID that Microsoft uses to track the work and history relating to the item. This number can be useful to your developer account manager if you have questions about a particular release note.
What's new in the March 2024 Microsoft Game Development Kit
- The GDKX and the GDK are released in two types: Major (focused on features, three times a year) and Updates (focused on fixes, as often as needed by partners).
- To view the full What's new section, see the online version of What's new.
- To view release notes for previous versions, see release notes posts on the GDK forums, or view the release notes in the online documentation at GDK release notes.
March 2024 GDK Update 7
Issue fixes
Tools
Fixed an issue that prevented users with work accounts from signing in to the Store Association Wizard in the Microsoft Game Config Editor. [54196987]
Media
Fixed an issue where a thread object wasn't getting released correctly in the H264 decoder Media Foundation Transform (MFT). This caused a memory leak. [54112698]
Fixed an issue where pending decoder fence waits could cause memory corruption when the decoder Media Foundation Transform (MFT) or Source Reader was being released. The memory corruption could result in the title crashing when attempting to playback video. [53842023]
System
Fixed an issue that resulted in graphics page protections losing execute permissions during GPU captures. This issue was masked by using the default heap. [53863936]
March 2024 GDK Update 6
Notifications
Microsoft Azure PlayFab Party
The March 2024 GDK Update 5 changed the encoding of PlayFab Party headers from UTF-8 to UTF-16 LE BOM, which is unsupported by some build infrastructures. This update reverts PlayFab Party headers back to UTF-8 encoding. [53843657]
March 2024 GDK Update 5
Notifications
Setup
The GDK installer now detects an already-installed .NET 8 runtime and no longer installs an older version of the .NET runtime. [53339292]
Microsoft Azure PlayFab Party
The March 2024 GDK Update 5 includes the 1.10.1 release of PlayFab Party. This update includes all the changes from the 1.10.0 release that are described in the PlayFab Party Release Notes and the following issue fix.
- Fixed an issue where the PlayFab Party library could crash when establishing direct peer connections in networks with three or more devices.
[53520669]
Issue fixes
Networking
Fixed a Transmission Control Protocol (TCP) reception regression that incorrectly allocated temporary queue buffers from system partition memory instead of the title partition when title-provided buffers were unavailable. This regression potentially reduced download performance under default
XNetworkingConfigurationSetting
values. [52267705]
Media
Fixed an issue that caused a small memory leak during the initialization of the H264/HEVC decoder Media Foundation transforms (MFTs). [53390307]
Graphics
Fixed an issue where the debug layer incorrectly reported invalid flags in the
GetResourceAllocationInfo
API when using the newD3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE
flag to create an acceleration structure. [53520985]
Audio
Fixed an issue where a title could crash or stop responding when using the XAPU API for an Opus decode. [53671496]
March 2024 GDK Update 4
Notifications
Graphics
D3D12XBOX_COMPUTE_SHADER_LIMITS_DESC.MaxWavesPerSa
has been renamed toD3D12XBOX_COMPUTE_SHADER_LIMITS_DESC.MaxWavesPerSe
. The previous name has been retained in a union. The clamp values have been fixed to allow proper per-SE maximum values. This limit has always been per-SE, despite the incorrect name. [52844031]
System
The
XGameSave
RPC transfer buffer now has a maximum size of 500 KB instead of being based on blob size. This minimizes memory defragmentation. [52989092]
Issue fixes
PIX
Fixed an issue where switching to using enhanced barrier APIs caused PIX to display all constant buffers as acceleration structures by default. [51803911]
Fixed an issue in PIX where using
DispatchRays
(DirectX Raytracing (DXR)) withinExecuteIndirect
caused the Pipeline view to appear empty except for heaps. [52413175]
Fixed an issue that caused PIX to leak memory when video frames were captured in Timing Captures. [52880909]
Graphics
Fixed an issue where a rare assertion failure in XDXROfflineBVH.dll would occur when building an offline bottom-level acceleration structure (BLAS). [52560914]
Memory
Fixed an issue where some management threads in the kernel memory system would never exit. This could affect performance in some titles with system threads consuming significant CPU time on CPU5,6 (or CPU12,13 for simultaneous multithreading (SMT)). [52991454]
March 2024 GDK Update 3
Issue fixes
PIX
Fixed an issue that caused PIX to occasionally stop responding when closing a Timing Capture. [51788534]
Fixed an issue in PIX where it might crash when selecting the memory pie chart in the Live view if the API object table was set to Summary. [51483482]
Fixed an issue where switching to using enhanced barrier APIs caused PIX to display all constant buffers as acceleration structures by default. [51803911]
Multiplayer
Fixed an issue where Microsoft Azure PlayFab Party could stop responding during shutdown. [51753450]
Game Chat 2
Fixed an issue that caused a crash in Game Chat 2 that could occur after the user changed their console language setting. [51969958]
Graphics
Fixed an issue where offline BVH Dehydration (introduced in the March 2024 GDK) can silently fail when the bounding volume hierarchy (BVH) has a very small number of triangles. [52070116]
March 2024 GDK Update 2
Notifications
Graphics
Increased the performance of the crossover threshold when switching from a bitonic sort to a radix sort in the bounding volume hierarchy (BVH) builder. [51016726]
Redundant root signature and pipeline state changes have been removed from the bitonic sort system. [51016708]
The raytracing batched BVH builder has been optimized to allow for concurrent sort dispatches and to minimize barriers. This can significantly improve GPU utilization and reduce BVH build times for batched builds. [51016687]
Issue fixes
System
Fixed an issue where the use of
XLaunchNewGame
combined with theXGameSaveFiles
API set would result in a sharing violation error and the inability to access saved content after launching a new game. [50917018]
Fixed an issue where crash dumps might not be collected if there wasn't enough title memory available. [50984583]
Fixed a crash in the
xmem
component when a fence is allocated or freed in titles that are using the 2310 or later GDK. [50484695]
Fixed an issue that could cause the title to crash when resuming if downloadable content (DLC) was added to the console while the title was suspended. [51134872]
Graphics
Fixed a resource leak that occurred when destroying the Direct3D device with raytracing enabled. [51016662]
Networking
Fixed an issue in
xCurl
where crashes could occur when concurrent calls were made tocurl_multi_cleanup
andcurl_multi_info_read
for the samemulti
handle. [50672912]
March 2024 GDK Update 1
Notifications
Performance Investigator for Xbox (PIX)
Significantly increased the speed at which the PIX Pipeline States view opens. [49821805]
Shader compiler
Improved the performance of Raster order views (ROVs):
- Reduced the size of the ROV-critical section. Turn this optimization off by using
__XBOX_DISABLE_ROV_AGGRESSIVE_HOIST_OR_SINK
.__DISABLE_ROV_INTRAWAVE_OVERLAP_HANDLING
is now on by default. ROVs generally perform better when intra-wave overlap is handled by the hardware instead of the shader. Turn this flag off by setting the define to 0.[50346707]
Issue fixes
Graphics
Fixed a potential crash in the validation layer when the context of a Draw was being evaluated while binding more render target views (RTVs) than were listed in the pipeline state object (PSO) with mismatched formats. [50347560]
Fixed a regression in
XGTextureAddressComputer:: GetResourceLayout
andXGTextureAddressComputer:: GetMipLevelOffsetBytes
that caused 0OffsetBytes
to be returned for tail mips. For more information about the use of theOffsetBytes
field, see the updatedXG_MIPLEVEL_LAYOUT
article in the GDK documentation. [49801258]
PIX
Fixed an issue that could cause a failure of the addition of data to the memory allocation stack tree in PIX Timing Captures. This failure could cause the "Connection interrupted" error message to appear. [49802320]
Fixed an issue that caused the call stacks for context switches to be displayed incorrectly in the Element Details view of PIX Timing Captures. [50260476]
Fixed an issue where PIX couldn't retrieve a capture from the console if it's rebooted before saving the capture when using the new Local mode option for GPU captures. [50570617]
Xbox services
Fixed an issue that was introduced in the March 2024 GDK where Zlib symbols were unintentionally exposed by libHttpClient.lib. This exposure caused a multiple definition linker error for titles that used XSAPI and the Zlib library. [49770335]
Shader compiler
Fixed an issue where using Raster order view (ROV) might cause a GPU hang in some cases. [50307272]
Networking
Fixed a regression in XCurl where specifying
CURLOPT_INFILESIZE
on a curl request with the Transfer-encoding: chunked header caused the request to skip sending the final empty chunk. The request would then fail. [49704250]
System
Fixed an issue that would result in
FAIL_FAST_FATAL_APP_EXIT_8000ffff_xgameruntime.dll!OnRuntimeDisconnected
during heavy thread pool usage. [50485921]
Fixed an issue where invoking
XLaunchNewGame
orXLaunchRestartOnCrash
after Quick Resume caused a crash. [50563258]
Fixed an issue in hang reporting that prevented Event Tracing for Windows (ETW) sample traces from being collected on retail (non-Development Kit) consoles. A greater portion of hang .cab files with event trace log (ETL) files in them are now visible. [50223457]
March 2024 GDK
Breaking changes
Input
As of the March 2024 GDK release, the GDK installer no longer installs the
GameInput
libraries.If you're targeting PC, add the
Microsoft.GameInput
NuGet package (https://www.nuget.org/packages/Microsoft.GameInput/) to your solution. Run the NuGet package'sGameInput
redistributable MSI to ensure that you have the latest runtime. Although the runtime is included in Windows May 2020 Updates and later, running the MSI will ensure that you have the latest version.
Include this redistributable in game installers to ensure thatGameInput
is available on all supported versions of Windows.[48906759]
Notifications
Memory
The Xbox Series S has had an update to its system memory.
- Additional memory: 574 MiB of extra system memory has been allocated for Xbox Series S consoles. This enhancement is specifically designed for developers who adopt the new Series S Advanced memory model.
- Series S Advanced memory model: You can enable the new mode with the additional memory by setting
<XboxLockhartTitleMemory>Advanced</XboxLockhartTitleMemory>
in the game configuration file. The standard memory model remains unchanged, providing 7,998 MiB of memory. 7,904 MiB of this memory is "GPU Optimal Bandwidth" memory. However, the advanced model expands this to 8,572 MiB available to the title. 8,032 MiB of this memory is "GPU Optimal Bandwidth" memory.- Concurrency exception: The Series S Advanced memory model functions similarly to the Xbox Series X model but with one exception. Titles that use the Series S Advanced memory model that also launch separate external experiences via URL (such as web browsers) can no longer run concurrently with the system's web browser. In such cases, the title will be suspended for the duration of those external experiences, resuming when the user returns to the title.
[45173058]
Graphics
Bounding volume hierarchy (BVH) Viewer
Enhanced the developer experience with the BVH Viewer:
Added a new feature that allows the BVH Viewer Screen-Space heatmap to be isolated to the selected object.
Added a toggle for Left-/Right-Handed camera behavior and global settings for Y/Z-Up and Handedness.
Added an experimental top-level acceleration structure (TLAS) modification tool.
Improved the UI.
Improved performance.
[46719382]
Added multiple fixes/improvements/features to the PIX BVH Viewer:
New coloring (Color By) and culling (Show Only) modes. They're available in the Leaves panel and provide various modes such as the following for coloring the rendered geometry.
Color bottom-level acceleration structure (BLAS) instances by their computed surface-area heuristic (SAH) cost.
Cull (filter) visible geometry by the SAH value threshold.
Color triangles by branches in the TLAS or BLAS.
Cull (filter) items in the selected TLAS branch of a tree.
The hierarchy display is now on by default. This shows the instance bounds and internal BLAS nodes of the selected instance.
Selecting objects now respects visibility settings. Hidden objects can't be selected.
Camera motion is now frame-rate independent.
The aspect ratio is now restored when you reset the camera in PIX.
Removed the
Path
display mode in favor of the more usefulBLAS Branch
andTLAS Branch
modes.The Info and XDXR Options panels are now open by default.
Added improvements to the UI layout, latency, and display sharpness.
[47665570]
Added a new experimental
TLAS Modification
system to the PIX BVH Viewer. This new system enables you to remove instances or edit instance flags, and then view the resulting BVH and timings.For more information, see the PIX BVH Viewer documentation.
[47916783]
Final dispatches of batched BVH builds are now marked so that it's easier to view each BLAS build event in PIX. [49040902]
Raytracing
Added a new member,
IsolateSARatio
, to theD3D12XBOX_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_PARAMS3
structure. This member exposes an internal BVH build parameter that's used to split large instances into a different branch of the BVH.
This parameter is described in the GDK documentation.[48144720]
For Xbox DXR (XDXR) Standalone Traversal (Inline Raytracing), the global
InlineAHS
andInlineIS
systems have been deprecated and replaced with a high-level shader language (HLSL) 2021 template-based system.
The new system allows multipleInlineAHS
orInlineIS
functions within a single source file.
Additionally, the new system enables carrying state along with the function and allows for a very simple translation from PC-style DirectX Raytracing (DXR) 1.1 Inline Raytracing . This results in up to 20% faster traversal performance when you use manyNON_OPAQUE
objects.[48144727]
Added an Xbox-specific offline statistic type,
D3D12XBOX_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_OFFLINE_STATISTICS
, to the raytracing post-build information types.This statistic type returns objective metrics about the BLAS (for example, num triangles, leaves, and links to leaves) and returns a score function. It's currently the surface-area heuristic (SAH), which is computed on the BLAS.
This statistic type is currently available only when using the offline BVH builder but not available for runtime builds.
You can use this statistic to check things like:
- The ratio of triangles to leaves to see how well the vertex/index data is being compressed into a BLAS.
- The SAH for a very rough heuristic of potential trace performance. A higher SAH likely indicates more expensive tracing, but it might under- or over-report and can't always be directly compared between different objects. Thresholding on a high SAH value (dependent on the type of content) allows you to flag potentially problematic meshes.
[46890984]
Shader compiler
Added a new compiler option,
__XBOX_MAX_PRESERVED_INPUTS
, in NewBE. This option allows you to cap the number of preserved inputs. Currently, it only works for pixel shader (PS) inputs.When the compiler uses the
/D__XBOX_MAX_PRESERVED_INPUTS=N
option, it preserves PS inputs from 0 to n-1.
The number of preserved inputs is counted by specifying the number of DirectX Shader Compiler (DXC) input registers (Register column) in the Input signature output by DXC.This new compiler option could reduce context rolls and improve performance by allowing the draw calls to fall into different preserved PS inputs groups.
Added an extra compiler option:
__XBOX_PRINT_PS_INPUTS_PRESERVED_INFO
. It prints out the detailed PS inputs preserved information and helps diagnose the problems in PS inputs preserve.[45264549]
PIX
Added improvements to the BVH Viewer navigation camera:
- Added a toggle for Left-/Right-Handed camera behavior.
- Added global settings for Y/Z-Up and Handedness in the Settings page. When these settings are selected, they're used for all captures by default.
[43667025]
Added
InstanceID
,InstanceMask
,InstanceContributionToHitGroupIndex
, andFlags
to the Instance information display in the PIX BVH Viewer. [46639272]
Added an experimental tool to the PIX BVH Viewer that allows modification of TLAS instances and flags while you view a
DispatchRays
event or anInline Raytracing Dispatch
event. You can see the timing and heatmap changes caused by removing an instance or by modifying its flags. [47916902]
The PIX BVH Viewer now has fields that show the camera position in the top bar of the UI. You can edit these fields to set the camera to a particular location. [48002291]
You can now isolate the PIX BVH Viewer Screen-Space heatmap to the selected object to examine individual costs. There is a toggle for this behavior in the UI. [48038412]
Issue fixes
System
Fixed an issue in the task queue to avoid a race condition that could cause a title to crash with a failfast error when the title is suspended. [49474469]
Graphics
Fixed an issue that caused the name of the Timing Capture Metrics View configurations to be truncated in the PIX UI. [48245350]
Fixed an issue that occurred when viewing some scaled BLAS build events in the PIX BVH Viewer. [49025842]
Fixed an issue where
DispatchRays
in anExecuteIndirect
command could reset vertex buffer bindings that were set prior to theDispatchRays
call. [48576329]
Added support for rasterizer ordered views (ROVs) to the Xbox Series X|S driver and shader compiler. For more information, see DirectX-Specs | Engineering specs for DirectX features (microsoft.github.io). [23503290]
Fixed an issue where
DXGI_FORMAT_R10G10B10_SNORM_A2_UNORM
would treat the alpha component asSNORM
instead ofUNORM
when reading through the Texture Data (TD) on Xbox Series X|S consoles. [45212130]
Fixed an issue where stack memory was corrupted when
XGBVHComputer::DecompressBVH_BatchedGPU
was called and more than 64 BLASs were passed into it. [47481429]
Fixed an issue where the
ID3D12GraphicsCommandList::ReadGDSX
function returned incorrect data. [48868832]
PIX
Fixed an issue that could cause the compiler to generate an
s_cbranch_vccz
instruction that branches on an undefinedvcc
value. [48762450]
Xbox Manager (XBOM)
Fixed an issue in XBOM where re-mapping default bindings to other controllers' commands could result in XBOM becoming unusable the next time it's started. [49490188]
Documentation
Offline documentation for the March 2024 release of the GDKX is installed on your development PC by the GDKX Setup program. After running Setup, the Help file for the GDKX (gdk.chm) is in C:\Program Files (x86)\Microsoft GDK\Documentation.
- The online GDKX documentation is at http://aka.ms/gdkonline.